org.priha.xml
Class XMLImport

java.lang.Object
  extended by org.xml.sax.helpers.DefaultHandler
      extended by org.priha.xml.XMLImport
All Implemented Interfaces:
org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler

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

Does the chunky work of importing stuff into the repository. Always requires a Session within which the stuff is sent to the repo; however, you can either ask the importer to commit stuff on its own, or just skip it.


Constructor Summary
XMLImport(SessionImpl session, boolean immediateCommit, Path startPath, int uuidBehavior)
           
 
Method Summary
 void characters(char[] ch, int start, int length)
          Parse the character data coming in; that is, create the Values which are put into the properties.
 void doImport(java.io.InputStream xmlDoc)
           
 void endElement(java.lang.String uri, java.lang.String localName, java.lang.String qName)
           
 void startElement(java.lang.String uri, java.lang.String localName, java.lang.String qName, org.xml.sax.Attributes attrs)
           
 void startPrefixMapping(java.lang.String prefix, java.lang.String uri)
           
 
Methods inherited from class org.xml.sax.helpers.DefaultHandler
endDocument, endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, setDocumentLocator, skippedEntity, startDocument, unparsedEntityDecl, warning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

XMLImport

public XMLImport(SessionImpl session,
                 boolean immediateCommit,
                 Path startPath,
                 int uuidBehavior)
          throws javax.jcr.RepositoryException
Throws:
javax.jcr.RepositoryException
Method Detail

doImport

public void doImport(java.io.InputStream xmlDoc)
              throws javax.xml.parsers.ParserConfigurationException,
                     org.xml.sax.SAXException,
                     java.io.IOException
Throws:
javax.xml.parsers.ParserConfigurationException
org.xml.sax.SAXException
java.io.IOException

startElement

public void startElement(java.lang.String uri,
                         java.lang.String localName,
                         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

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

startPrefixMapping

public void startPrefixMapping(java.lang.String prefix,
                               java.lang.String uri)
                        throws org.xml.sax.SAXException
Specified by:
startPrefixMapping in interface org.xml.sax.ContentHandler
Overrides:
startPrefixMapping in class org.xml.sax.helpers.DefaultHandler
Throws:
org.xml.sax.SAXException

characters

public void characters(char[] ch,
                       int start,
                       int length)
                throws org.xml.sax.SAXException
Parse the character data coming in; that is, create the Values which are put into the properties.

Unfortunately, this method handles Binary properties by reading them completely into memory as a String, and turning that into a byte array, essentially taking 3x the amount of memory that what it should. Better solutions are welcomed...

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