org.apache.openjpa.jdbc.schema
Class XMLSchemaParser

java.lang.Object
  extended by org.xml.sax.helpers.DefaultHandler
      extended by org.apache.openjpa.lib.meta.XMLMetaDataParser
          extended by org.apache.openjpa.jdbc.schema.XMLSchemaParser
All Implemented Interfaces:
SchemaParser, org.apache.openjpa.lib.meta.MetaDataParser, org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler, org.xml.sax.ext.LexicalHandler

public class XMLSchemaParser
extends org.apache.openjpa.lib.meta.XMLMetaDataParser
implements SchemaParser

Custom SAX parser used to parse Schema objects. The parser will place all parsed schemas into the current SchemaGroup, set via the setSchemaGroup(org.apache.openjpa.jdbc.schema.SchemaGroup) method. This allows parsing of multiple files into a single schema group. The parser deserializes from the following XML format:
<!ELEMENT schemas (schema)+>
<!ELEMENT schema (table|sequence)+>
<!ATTLIST schema name CDATA #IMPLIED>
<!ELEMENT table (column|index|pk|fk|unique)+>
<!ATTLIST table name CDATA #REQUIRED>
<!ELEMENT column EMPTY>
<!ATTLIST column name CDATA #REQUIRED>
<!ATTLIST column type (array|bigint|binary|bit|blob|char|clob |date|decimal|distinct|double|float|integer|java_object |longvarbinary|longvarchar|null|numeric|other|real|ref|smallint|struct |time|timstamp|tinyint|varbinary|varchar) #REQUIRED>
<!ATTLIST column type-name CDATA #IMPLIED>
<!ATTLIST column size CDATA #IMPLIED>
<!ATTLIST column decimal-digits CDATA #IMPLIED>
<!ATTLIST column not-null (true|false) "false">
<!ATTLIST column default CDATA #IMPLIED>
<!ATTLIST column auto-assign (true|false) "false">
<!ELEMENT index (on)*>
<!ATTLIST index name CDATA #REQUIRED>
<!ATTLIST index column CDATA #IMPLIED>
<!ATTLIST index unique (true|false) "false">
<!ELEMENT on EMPTY>
<!ATTLIST on column CDATA #REQUIRED>
<!ELEMENT pk (on)*>
<!ATTLIST pk name CDATA #IMPLIED>
<!ATTLIST pk column CDATA #IMPLIED>
<!ELEMENT fk (join)*>
<!ATTLIST fk name CDATA #IMPLIED>
<!ATTLIST fk deferred (true|false) "false">
<!ATTLIST fk column CDATA #IMPLIED>
<!ATTLIST fk to-table CDATA #REQUIRED>
<!ATTLIST fk delete-action (cascade|default|restrict|none|null) "none">
<!ATTLIST fk update-action (cascade|default|restrict|none|null) "none">
<!ELEMENT unique (on)*>
<!ATTLIST unique name CDATA #IMPLIED>
<!ATTLIST unique column CDATA #IMPLIED>
<!ATTLIST unique deferred (true|false) "false">
<!ELEMENT join EMPTY>
<!ATTLIST join column CDATA #IMPLIED>
<!ATTLIST join value CDATA #IMPLIED>
<!ATTLIST join to-column CDATA #REQUIRED>
<!ELEMENT sequence EMPTY>
<!ATTLIST sequence name CDATA #REQUIRED>
<!ATTLIST sequence initial-value CDATA #IMPLIED>
<!ATTLIST sequence increment CDATA #IMPLIED>
<!ATTLIST sequence allocate CDATA #IMPLIED>
Schema parsers are not threadsafe.

Author:
Abe White

Constructor Summary
XMLSchemaParser(JDBCConfiguration conf)
          Constructor.
 
Method Summary
protected  void endElement(java.lang.String name)
           
protected  void finish()
          Parse the schema relating to the given class.
 boolean getDelayConstraintResolve()
          Delay resolution of foreign key constraints until SchemaParser.resolveConstraints() is called.
protected  java.io.Reader getDocType()
           
 SchemaGroup getSchemaGroup()
          Return the current schema group.
protected  void reset()
           
 void resolveConstraints()
          If this parser is in delayed resolve mode, resolve all constraints.
 void setDelayConstraintResolve(boolean delay)
          Delay resolution of foreign key constraints until SchemaParser.resolveConstraints() is called.
 void setSchemaGroup(SchemaGroup group)
          Set the current schema group; this clears all state from the last group.
protected  boolean startElement(java.lang.String name, org.xml.sax.Attributes attrs)
           
 
Methods inherited from class org.apache.openjpa.lib.meta.XMLMetaDataParser
addComments, addResult, characters, clear, comment, currentClassLoader, currentComments, currentDepth, currentLocation, currentText, endCDATA, endDTD, endElement, endEntity, error, fatalError, getClassLoader, getException, getException, getLexicalHandler, getLocation, getLog, getParseComments, getParseText, getResults, getSchemaSource, getSourceFile, getSourceIsSystemId, getSourceName, getSuffix, ignoreContent, isCaching, isValidating, parse, parse, parse, parse, parse, parse, parsed, parseNewResource, setCaching, setClassLoader, setDocumentLocator, setLexicalHandler, setLocation, setLog, setParseComments, setParseText, setSourceIsSystemId, setSuffix, setValidating, startCDATA, startDTD, startElement, startEntity
 
Methods inherited from class org.xml.sax.helpers.DefaultHandler
endDocument, endPrefixMapping, ignorableWhitespace, notationDecl, processingInstruction, resolveEntity, skippedEntity, startDocument, startPrefixMapping, unparsedEntityDecl, warning
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.openjpa.lib.meta.MetaDataParser
clear, getResults, parse, parse, parse, parse, parse, parse, setClassLoader
 

Constructor Detail

XMLSchemaParser

public XMLSchemaParser(JDBCConfiguration conf)
Constructor. Supply configuration.

Method Detail

getDelayConstraintResolve

public boolean getDelayConstraintResolve()
Description copied from interface: SchemaParser
Delay resolution of foreign key constraints until SchemaParser.resolveConstraints() is called. This allows you to parse multiple resources where a foreign key in one resource might refer to a table in another.

Specified by:
getDelayConstraintResolve in interface SchemaParser

setDelayConstraintResolve

public void setDelayConstraintResolve(boolean delay)
Description copied from interface: SchemaParser
Delay resolution of foreign key constraints until SchemaParser.resolveConstraints() is called. This allows you to parse multiple resources where a foreign key in one resource might refer to a table in another.

Specified by:
setDelayConstraintResolve in interface SchemaParser

resolveConstraints

public void resolveConstraints()
Description copied from interface: SchemaParser
If this parser is in delayed resolve mode, resolve all constraints.

Specified by:
resolveConstraints in interface SchemaParser

getSchemaGroup

public SchemaGroup getSchemaGroup()
Description copied from interface: SchemaParser
Return the current schema group.

Specified by:
getSchemaGroup in interface SchemaParser

setSchemaGroup

public void setSchemaGroup(SchemaGroup group)
Description copied from interface: SchemaParser
Set the current schema group; this clears all state from the last group.

Specified by:
setSchemaGroup in interface SchemaParser

finish

protected void finish()
Parse the schema relating to the given class. The schemas will be added to the current schema group.

Overrides:
finish in class org.apache.openjpa.lib.meta.XMLMetaDataParser

reset

protected void reset()
Overrides:
reset in class org.apache.openjpa.lib.meta.XMLMetaDataParser

getDocType

protected java.io.Reader getDocType()
                             throws java.io.IOException
Overrides:
getDocType in class org.apache.openjpa.lib.meta.XMLMetaDataParser
Throws:
java.io.IOException

startElement

protected boolean startElement(java.lang.String name,
                               org.xml.sax.Attributes attrs)
                        throws org.xml.sax.SAXException
Specified by:
startElement in class org.apache.openjpa.lib.meta.XMLMetaDataParser
Throws:
org.xml.sax.SAXException

endElement

protected void endElement(java.lang.String name)
Specified by:
endElement in class org.apache.openjpa.lib.meta.XMLMetaDataParser


Copyright © 2006 Apache Software Foundation. All Rights Reserved.