org.onemind.commons.java.xml.digest
Class SaxDigesterHandler

java.lang.Object
  extended by org.xml.sax.helpers.DefaultHandler
      extended by org.onemind.commons.java.xml.digest.SaxDigesterHandler
All Implemented Interfaces:
org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler

public class SaxDigesterHandler
extends org.xml.sax.helpers.DefaultHandler

The SaxDigesterHandler use digesters to digest the elements in the xml. The digesters can be added using the addDigester(). By default the sequential digester list is used.

Version:
$Id: SaxDigesterHandler.java,v 1.3 2005/01/30 06:31:37 thlee Exp $ $Name: $
Author:
TiongHiang Lee (thlee@thinklient.org)

Field Summary
private  java.util.Map _digesters
          the map contains subdigesters
private  java.util.List _elementPath
          keep track of the path for current element
private static java.util.logging.Logger _logger
          the logger *
 
Constructor Summary
SaxDigesterHandler()
          Constructor
 
Method Summary
 void addDigester(ElementDigester dig)
          Adding a digester to the root path
 void addDigester(java.lang.String path, ElementDigester dig)
          Add a digester for the path
 void addSubDigester(ElementDigester dig)
          Add a subdigester to current element path
 void addSubDigester(java.lang.String prefixPath, ElementDigester dig)
          Add a sub digester at a path of current path + prefixPath
private  java.lang.String appendElementPath(java.lang.String name)
          Append the name to the element path and return the new path string
 void characters(char[] ch, int start, int length)
          
 void endDocument()
          
 void endElement(java.lang.String uri, java.lang.String localName, java.lang.String qName)
          
 java.lang.String getCurrentPath()
          Get the current element path
private  ElementDigester getDigester(java.lang.String path)
          Get the digester for particular path
 void parse(java.io.InputStream stream)
          Parse an input
private  java.lang.String removeElementPath(java.lang.String qname)
          Remove the element path
private  void startDigest(java.lang.String path, org.xml.sax.Attributes attr)
          Call start of particular element digester, if there's any
 void startDocument()
          
 void startElement(java.lang.String namespaceURI, java.lang.String lName, java.lang.String qName, org.xml.sax.Attributes attrs)
          
 
Methods inherited from class org.xml.sax.helpers.DefaultHandler
endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, setDocumentLocator, skippedEntity, startPrefixMapping, unparsedEntityDecl, warning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_logger

private static final java.util.logging.Logger _logger
the logger *


_digesters

private java.util.Map _digesters
the map contains subdigesters


_elementPath

private java.util.List _elementPath
keep track of the path for current element

Constructor Detail

SaxDigesterHandler

public SaxDigesterHandler()
Constructor

Method Detail

addDigester

public void addDigester(ElementDigester dig)
Adding a digester to the root path

Parameters:
dig - the digester

addDigester

public void addDigester(java.lang.String path,
                        ElementDigester dig)
Add a digester for the path

Parameters:
path - the path
dig - the digester

addSubDigester

public void addSubDigester(ElementDigester dig)
Add a subdigester to current element path

Parameters:
dig - the digester

addSubDigester

public void addSubDigester(java.lang.String prefixPath,
                           ElementDigester dig)
Add a sub digester at a path of current path + prefixPath

Parameters:
prefixPath - the prefix path
dig - the digester

appendElementPath

private java.lang.String appendElementPath(java.lang.String name)
Append the name to the element path and return the new path string

Parameters:
name - the name of new element
Returns:
the new path string

characters

public void characters(char[] ch,
                       int start,
                       int length)
                throws org.xml.sax.SAXException

Specified by:
characters in interface org.xml.sax.ContentHandler
Overrides:
characters in class org.xml.sax.helpers.DefaultHandler
Throws:
org.xml.sax.SAXException

endDocument

public void endDocument()
                 throws org.xml.sax.SAXException

Specified by:
endDocument in interface org.xml.sax.ContentHandler
Overrides:
endDocument in class org.xml.sax.helpers.DefaultHandler
Throws:
org.xml.sax.SAXException

endElement

public void endElement(java.lang.String uri,
                       java.lang.String localName,
                       java.lang.String qName)
                throws org.xml.sax.SAXException

Specified by:
endElement in interface org.xml.sax.ContentHandler
Overrides:
endElement in class org.xml.sax.helpers.DefaultHandler
Throws:
org.xml.sax.SAXException

getCurrentPath

public java.lang.String getCurrentPath()
Get the current element path

Returns:
the path, or null if at start of document

getDigester

private ElementDigester getDigester(java.lang.String path)
Get the digester for particular path

Parameters:
path - the path
Returns:
the digester, or null if there's none found

removeElementPath

private java.lang.String removeElementPath(java.lang.String qname)
Remove the element path

Parameters:
qname - the element name is being removed
Returns:
the path string before the path is removed

startDocument

public void startDocument()
                   throws org.xml.sax.SAXException

Specified by:
startDocument in interface org.xml.sax.ContentHandler
Overrides:
startDocument in class org.xml.sax.helpers.DefaultHandler
Throws:
org.xml.sax.SAXException

startDigest

private void startDigest(java.lang.String path,
                         org.xml.sax.Attributes attr)
                  throws org.xml.sax.SAXException
Call start of particular element digester, if there's any

Parameters:
attr - the attribute
path - the path
Throws:
org.xml.sax.SAXException

startElement

public void startElement(java.lang.String namespaceURI,
                         java.lang.String lName,
                         java.lang.String qName,
                         org.xml.sax.Attributes attrs)
                  throws org.xml.sax.SAXException

Specified by:
startElement in interface org.xml.sax.ContentHandler
Overrides:
startElement in class org.xml.sax.helpers.DefaultHandler
Throws:
org.xml.sax.SAXException

parse

public void parse(java.io.InputStream stream)
           throws javax.xml.parsers.ParserConfigurationException,
                  org.xml.sax.SAXException,
                  java.io.IOException
Parse an input

Parameters:
stream - the stream
Throws:
javax.xml.parsers.ParserConfigurationException
org.xml.sax.SAXException
java.io.IOException