diva.gui
Class MultipageParser

java.lang.Object
  extended by com.microstar.xml.HandlerBase
      extended by diva.gui.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: MultipageParser.java 40105 2005-12-14 04:59:16Z cxh $
Author:
Heloise Hse, Michael Shilman
Accepted Rating:
Red

Field Summary
private  java.util.HashMap _currentAttributes
          Keeps the attributes and their values.
private  Page _currentPage
          A reference to the current page that's being parsed.
private  ModelParser _modelParser
          Model parser is used to parse the content of a page.
private  MultipageModel _multi
          The document object that the parser is supposed to parse into.
private  XmlParser _parser
          The parser driver.
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
MultipageParser(ModelParser pageParser)
          Create a MultipageParser with the specified model parser which is used to parse the content of a page.
 
Method Summary
 void attribute(java.lang.String name, java.lang.String value, boolean isSpecified)
          Handle an attribute value assignment.
 void charData(char[] chars, int offset, int length)
          Handle character data.
 void endElement(java.lang.String name)
          Handle the end of an element.
 void parse(java.io.Reader reader, MultipageModel multi)
          Parse the file (from reader) into the given multipage data structure.
 java.lang.Object resolveEntity(java.lang.String publicID, java.lang.String systemID)
          Resolve an external entity.
 void startElement(java.lang.String name)
          Handle the start of an element.
 
Methods inherited from class com.microstar.xml.HandlerBase
doctypeDecl, endDocument, endExternalEntity, error, ignorableWhitespace, processingInstruction, startDocument, startExternalEntity
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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

_modelParser

private ModelParser _modelParser
Model parser is used to parse the content of a page.


_parser

private XmlParser _parser
The parser driver.


_multi

private MultipageModel _multi
The document object that the parser is supposed to parse into.


_currentPage

private Page _currentPage
A reference to the current page that's being parsed.


_currentAttributes

private java.util.HashMap _currentAttributes
Keeps the attributes and their 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 - The handler may throw any exception.
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 - The handler may throw any exception.
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 - The handler may throw any exception.
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 - The handler may throw any exception.
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