Package diva.gui

Class MultipageParser

  • All Implemented Interfaces:
    XmlHandler

    public class MultipageParser
    extends HandlerBase
    Parse all pages of a multi-page document from a file. The document parser must be provided with a model parser that is used to parse the app-specific model on a single page.
    Version:
    $Id$
    Author:
    Heloise Hse, Michael Shilman
    Pt.AcceptedRating:
    Red
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String DTD_1
      The DTD for multipage models.
      static java.lang.String DTD_URL
      The URL where the DTD is stored.
      static java.lang.String MULTIPAGE_TAG
      The string constant that specifies the start and end of a document.
      static java.lang.String PAGE_NUM_TAG
      The string constant that specifies the page number of a page.
      static java.lang.String PAGE_TAG
      The string constant that specifies the start and end of a sheet in a document.
      static java.lang.String PAGE_TITLE_TAG
      The string constant that specifies the title attribute of a page.
      static java.lang.String PUBLIC_ID
      The public identity of the sketch dtd file.
      static java.lang.String TITLE_TAG
      The string constant that specifies the title attribute of a document.
    • Constructor Summary

      Constructors 
      Constructor Description
      MultipageParser​(ModelParser pageParser)
      Create a MultipageParser with the specified model parser which is used to parse the content of a page.
    • Field Detail

      • PUBLIC_ID

        public static final java.lang.String PUBLIC_ID
        The public identity of the sketch dtd file.
        See Also:
        Constant Field Values
      • DTD_URL

        public static final java.lang.String DTD_URL
        The URL where the DTD is stored.
        See Also:
        Constant Field Values
      • DTD_1

        public static final java.lang.String DTD_1
        The DTD for multipage models.
        See Also:
        Constant Field Values
      • TITLE_TAG

        public static final java.lang.String TITLE_TAG
        The string constant that specifies the title attribute of a document.
        See Also:
        Constant Field Values
      • MULTIPAGE_TAG

        public static final java.lang.String MULTIPAGE_TAG
        The string constant that specifies the start and end of a document.
        See Also:
        Constant Field Values
      • PAGE_TAG

        public static final java.lang.String PAGE_TAG
        The string constant that specifies the start and end of a sheet in a document.
        See Also:
        Constant Field Values
      • PAGE_TITLE_TAG

        public static final java.lang.String PAGE_TITLE_TAG
        The string constant that specifies the title attribute of a page. This is an optional attribute.
        See Also:
        Constant Field Values
      • PAGE_NUM_TAG

        public static final java.lang.String PAGE_NUM_TAG
        The string constant that specifies the page number of a page.
        See Also:
        Constant Field Values
    • Constructor Detail

      • MultipageParser

        public MultipageParser​(ModelParser pageParser)
        Create a MultipageParser with the specified model parser which is used to parse the content of a page.
    • Method Detail

      • attribute

        public void attribute​(java.lang.String name,
                              java.lang.String value,
                              boolean isSpecified)
                       throws java.lang.Exception
        Handle an attribute value assignment. The attribute and its value are temporary saved in a hash table. They are later retrieved in startElement or endElement.
        Specified by:
        attribute in interface XmlHandler
        Overrides:
        attribute in class HandlerBase
        Parameters:
        name - The name of the attribute.
        value - The value of the attribute, or null if the attribute is #IMPLIED.
        isSpecified - True if the value was specified, false if it was defaulted from the DTD.
        Throws:
        java.lang.Exception - Derived methods may throw exceptions.
        See Also:
        XmlHandler.attribute(java.lang.String, java.lang.String, boolean)
      • charData

        public void charData​(char[] chars,
                             int offset,
                             int length)
                      throws java.lang.Exception
        Handle character data. The page content is buffered in a character array by XML parser which invokes this method. In this method, the model parser gets called to parse the data in the array.
        Specified by:
        charData in interface XmlHandler
        Overrides:
        charData in class HandlerBase
        Parameters:
        chars - The character data.
        offset - The starting position in the array.
        length - The number of characters available.
        Throws:
        java.lang.Exception - Derived methods may throw exceptions.
        See Also:
        XmlHandler.charData(char[], int, int)
      • endElement

        public void endElement​(java.lang.String name)
                        throws java.lang.Exception
        Handle the end of an element. If this is the end of a page, add the current page to the document.
        Specified by:
        endElement in interface XmlHandler
        Overrides:
        endElement in class HandlerBase
        Parameters:
        name - The element type name.
        Throws:
        java.lang.Exception - Derived methods may throw exceptions.
        See Also:
        XmlHandler.endElement(java.lang.String)
      • startElement

        public void startElement​(java.lang.String name)
                          throws java.lang.Exception
        Handle the start of an element. If this is the start of a page, create a Page object and set its label (retrieve from _currentAttributes table)
        Specified by:
        startElement in interface XmlHandler
        Overrides:
        startElement in class HandlerBase
        Parameters:
        name - The element type name.
        Throws:
        java.lang.Exception - Derived methods may throw exceptions.
        See Also:
        XmlHandler.startElement(java.lang.String)
      • resolveEntity

        public java.lang.Object resolveEntity​(java.lang.String publicID,
                                              java.lang.String systemID)
        Resolve an external entity. If the first argument is the name of the MoML PUBLIC DTD ("-//UC Berkeley//DTD multipage 1//EN"), then return a StringReader that will read the locally cached version of this DTD (the public variable DTD_1). Otherwise, return null, which has the effect of deferring to Aelfred for resolution of the URI. Derived classes may return a modified URI (a string), an InputStream, or a Reader. In the latter two cases, the input character stream is provided.
        Specified by:
        resolveEntity in interface XmlHandler
        Overrides:
        resolveEntity in class HandlerBase
        Parameters:
        publicID - The public identifier, or null if none was supplied.
        systemID - The system identifier.
        Returns:
        Null, indicating to use the default system identifier.
        See Also:
        XmlHandler.resolveEntity(java.lang.String, java.lang.String)
      • parse

        public void parse​(java.io.Reader reader,
                          MultipageModel multi)
                   throws java.lang.Exception
        Parse the file (from reader) into the given multipage data structure.
        Throws:
        java.lang.Exception