il.co.iter.dbdom
Class DBDOMImplementation

java.lang.Object
  |
  +--il.co.iter.dbdom.DBDOMImplementation
All Implemented Interfaces:
DOMImplementation

public class DBDOMImplementation
extends java.lang.Object
implements DOMImplementation

The DOMImplementation interface provides a number of methods for performing operations that are independent of any particular instance of the document object model.

See also the Document Object Model (DOM) Level 2 Core Specification.


Constructor Summary
DBDOMImplementation(java.sql.Connection con)
          Constructs a client connection to a DOM stored in a DBDOM database.
 
Method Summary
 void commit()
          Non-DOM Encapsulates Connection.commit()
 Document createDocument(java.lang.String namespaceURI, java.lang.String qualifiedName, DocumentType doctype)
          Not Implemented Creates an XML Document object of the specified type with its document element.
 DocumentType createDocumentType(java.lang.String qualifiedName, java.lang.String publicId, java.lang.String systemId)
          Not Implemented Creates an empty DocumentType node.
 DBDocument createNamedDocument(java.lang.String name)
          Non-DOM Cretes a new document in the database.
 boolean getAutoCommit()
          Non-DOM Encapsulates Connection.getAutoCommit()
protected  java.sql.Connection getConnection()
          Non-DOM Returns a reference to the database connection.
 NamedNodeMap getDocuments()
          Non-DOM Returns a map of all documents stored in a DBDOM database.
protected  java.lang.RuntimeException getSqlOrDomException(java.sql.SQLException sqle)
          Non-DOM Decides if an SQLException was caused by DOMExeption in the database.
protected  java.util.Map getStatements()
          Non-DOM Returns a map of all known statements.
 boolean hasFeature(java.lang.String feature, java.lang.String version)
          Test if the DOM implementation implements a specific feature.
protected  boolean nodeExists(long id)
          Non-DOM Tests whether or not a node with the specified id is found in the database
protected  Node retrieveNode(long id)
          Non-DOM Attmpts to read a node from the database.
 void rollback()
          Non-DOM Encapsulates Connection.rollback()
 void setAutoCommit(boolean autoCommit)
          Non-DOM Encapsulates Connection.setAutoCommit(boolean)
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DBDOMImplementation

public DBDOMImplementation(java.sql.Connection con)
                    throws DBDOMException
Constructs a client connection to a DOM stored in a DBDOM database.

The connection is expected to be live, and to a database that has a schema compliant with DBDOM. The constructor tests this.

Method Detail

hasFeature

public boolean hasFeature(java.lang.String feature,
                          java.lang.String version)
Test if the DOM implementation implements a specific feature.
Specified by:
hasFeature in interface DOMImplementation
Parameters:
featureThe - name of the feature to test (case-insensitive). The values used by DOM features are defined throughout the DOM Level 2 specifications and listed in the section. The name must be an XML name. To avoid possible conflicts, as a convention, names referring to features defined outside the DOM specification should be made unique by reversing the name of the Internet domain name of the person (or the organization that the person belongs to) who defines the feature, component by component, and using this as a prefix. For instance, the W3C SVG Working Group defines the feature "org.w3c.dom.svg".
versionThis - is the version number of the feature to test. In Level 2, the string can be either "2.0" or "1.0". If the version is not specified, supporting any version of the feature causes the method to return true.
Returns:
true if the feature is implemented in the specified version, false otherwise.

createDocumentType

public DocumentType createDocumentType(java.lang.String qualifiedName,
                                       java.lang.String publicId,
                                       java.lang.String systemId)
                                throws DOMException
Not Implemented Creates an empty DocumentType node. Entity declarations and notations are not made available. Entity reference expansions and default attribute additions do not occur. It is expected that a future version of the DOM will provide a way for populating a DocumentType.
HTML-only DOM implementations do not need to implement this method.
Specified by:
createDocumentType in interface DOMImplementation
Parameters:
qualifiedNameThe - qualified name of the document type to be created.
publicIdThe - external subset public identifier.
systemIdThe - external subset system identifier.
Returns:
A new DocumentType node with Node.ownerDocument set to null.
Throws:
DOMException - INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an illegal character.
NAMESPACE_ERR: Raised if the qualifiedName is malformed.
Since:
DOM Level 2

createDocument

public Document createDocument(java.lang.String namespaceURI,
                               java.lang.String qualifiedName,
                               DocumentType doctype)
                        throws DOMException
Not Implemented Creates an XML Document object of the specified type with its document element. HTML-only DOM implementations do not need to implement this method.
Specified by:
createDocument in interface DOMImplementation
Parameters:
namespaceURIThe - namespace URI of the document element to create.
qualifiedNameThe - qualified name of the document element to be created.
doctypeThe - type of document to be created or null. When doctype is not null, its Node.ownerDocument attribute is set to the document being created.
Returns:
A new Document object.
Throws:
DOMException - INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an illegal character.
NAMESPACE_ERR: Raised if the qualifiedName is malformed, if the qualifiedName has a prefix and the namespaceURI is null, or if the qualifiedName has a prefix that is "xml" and the namespaceURI is different from " http://www.w3.org/XML/1998/namespace" .
WRONG_DOCUMENT_ERR: Raised if doctype has already been used with a different document or was created from a different implementation.
Since:
DOM Level 2

getSqlOrDomException

protected java.lang.RuntimeException getSqlOrDomException(java.sql.SQLException sqle)
Non-DOM Decides if an SQLException was caused by DOMExeption in the database. This method looks at an SQLException and decides if it was thrown by the database because a DOMException occured, or because a genuine SQLException was thrown.

Because DOMExceptions are implemented in the database as usual exceptions, the only way to let the client know that a DOMException occured is to include a flag in the message of the exception.

DBDOMExceptions include a delimiter in their message the format of the message is <domExceptionPrefix> <code> <message>

The value of domExceptionPrefix is read from the database when this object is constructed

Note: although it would make sense for this method to be in DBDOMException, it is inadvisable, because domExceptionPrefix needs to be read from the database. DBDOMException does not hold a refernce to the database (let alone a static one), nor to DBDOMImplementation.

Parameters:
sqle - SQLException to be examined.
Returns:
either a DOMException or an SQLException.

getConnection

protected java.sql.Connection getConnection()
Non-DOM Returns a reference to the database connection.

getStatements

protected java.util.Map getStatements()
Non-DOM Returns a map of all known statements.

retrieveNode

protected Node retrieveNode(long id)
Non-DOM Attmpts to read a node from the database.

References to retrieved DBNodes are kept in a private WeakHashMap. First, this method tries to get the DBNode from the WeakHashMap; if that fails, a JDBC read is performed.

This method's retrun type may need to be modified to DBNode.

Parameters:
id - id of the Node in the database
Returns:
a DBNode

nodeExists

protected boolean nodeExists(long id)
Non-DOM Tests whether or not a node with the specified id is found in the database

createNamedDocument

public DBDocument createNamedDocument(java.lang.String name)
Non-DOM Cretes a new document in the database. This document can be passed as a parameter to DBDOMParser to be populated.

getDocuments

public NamedNodeMap getDocuments()
Non-DOM Returns a map of all documents stored in a DBDOM database.

setAutoCommit

public void setAutoCommit(boolean autoCommit)
Non-DOM Encapsulates Connection.setAutoCommit(boolean)

getAutoCommit

public boolean getAutoCommit()
Non-DOM Encapsulates Connection.getAutoCommit()

commit

public void commit()
Non-DOM Encapsulates Connection.commit()

rollback

public void rollback()
Non-DOM Encapsulates Connection.rollback()