edu.uky.rch.ept.data.filesystem
Class FileSystemXPathEngine

java.lang.Object
  extended byedu.uky.rch.ept.data.DataSourceDriver
      extended byedu.uky.rch.ept.data.filesystem.FileSystemXPathEngine
All Implemented Interfaces:
ICollectionAccessMethods, IConcurrentXMLAccessMethods, IDataAccessMethods, IDataSourceDriver, IDTDAccessMethods, IGenericResourceAccessMethods, IImageAccessMethods, ITextAccessMethods, IXMLAccessMethods

public class FileSystemXPathEngine
extends DataSourceDriver

Implements an ARCHway datasource driver to provide access to the local file system.

Author:
Sandeep Bodapati <sbodapati@uky.edu>, Neil Moore <neil@cs.uky.edu>

Nested Class Summary
static class FileSystemXPathEngine.Interval
           
 
Field Summary
 
Fields inherited from interface edu.uky.rch.ept.data.IDataAccessMethods
EOF, RT_DOCUMENT, RT_NODELIST, RT_STRINGS
 
Constructor Summary
FileSystemXPathEngine()
          Instantiates the driver.
 
Method Summary
 boolean canRead(String address)
          Check if the resource specified by the address can be read.
 boolean canWrite(String address)
          Check if the resource specified by the address can be written to.
 boolean createCollection(String address)
          Creates a collection specified by the address.
 boolean deleteCollection(String address, boolean force)
          Deletes the collection specified by the address.
 boolean deleteCXML(String address, String dtdID, String location)
          Removes the node at the specified location in the resource.
 boolean deleteResource(String address)
          Delete a resource if it exists.
 boolean deleteXML(String address, String location)
          Deletes the node pointed to by the xpath, from the xml resource.
 IAddressSelector getAddressSelector()
          Returns a new address selector for this data source.
 ResourceList getCollectionContents(String collectionAddress)
          Returns a ResourceList containing resource descriptors for each of the resources and collections in the specified collection.
 String getCXML(String address, String[] dtdIDs)
          Combine the specified hierarchies of the CXML content and return the result as a pseudo-XML string.
 String getDTD(String ID)
          Retrieves the specified DTD
 org.eclipse.swt.graphics.ImageData getImage(String address)
          Retrieves the Image from the specified address
 BufferedInputStream getInputStream(String address)
          Create and return a BufferedInputStream for the resource.
 BufferedOutputStream getOutputStream(String address)
          Create and return a BufferedOutputStream for the resource.
 BufferedOutputStream getOutputStream(String address, boolean append)
          Create and return a (possibly append-only) BufferedOutputStream for the resource.
 String getText(String address, int beginIndex, int endIndex)
          Retrieves the specified text data from the resource at the given address.
 String getXML(String address)
          Retrieves the XML data from the specified address.
 org.dom4j.Document getXMLDocument(String address)
          Retrieves the XML data from the specified address.
 void insertCXML(String address, String dtdID, String locate, org.dom4j.Node newContent)
          Inserts the given XML node into the CXML resource at the indicated location.
 void insertText(String address, int atIndex, String newContent)
          Inserts the new text content into the resource starting at the index specified.
 void insertXML(String address, String location, org.dom4j.Node newContent)
          Inserts the given xml node into the xml resource immediately after the node specified by the xpath.
 void insertXML(String address, String dtdID, String xpath, org.dom4j.Node newContent)
           
 boolean isCollection(String address)
          Returns true if the specified address points to a collection.
 Object queryCXML(String address, String[] dtdIDs, String query, short returnType)
          Executes the given query on the CXML resource and returns the results as a list of org.dom4j.Nodes.
 Object queryXML(String address, String query, short returnType)
          Executes the given query on the XML resource and returns the results in the format specified by the returnType parameter.
 boolean renameResource(String srcAddress, String destAddress, boolean force)
          Move or rename a resource from one address to another.
 void replaceCXML(String address, String dtdID, String location, org.dom4j.Node newContent)
          Replaces the node at the specified location in the resource with a new node at the same location.
 void replaceCXMLContent(String xmlResourceAddress, int beginIndex, int endIndex, String newContent)
          (unimplemented) Treats a CXML resource as text resource (all tags are treated as though they did not exist) and replaces the text from beginIndex to endIndex-1 with the new text content.
 void replaceText(String address, int beginIndex, int endIndex, String newContent)
          Replaces the specified text with the new content.
 void replaceXML(String address, String location, org.dom4j.Node newContent)
          Replaces the specified node in the resource with the new node.
 void replaceXML(String address, String dtdID, String xpath, org.dom4j.Node newContent)
           
 void replaceXMLContent(String address, int beginIndex, int endIndex, String newContent)
          Treats an xml resource as text resource (all tags are ignored as if they didnt exist) and replaces the text from beginIndex to endIndex-1 with the new text content.
 ResourceList scanCollection(String address, Pattern pattern, boolean includeCollections)
          Returns a ResourceList containing resource descriptors for each of the resources (and possibly collections) located within the specified collection which match the given pattern.
 boolean storeCXML(String address, String[] dtdIDs, String content, boolean force)
          Creates a new CXML resource.
 boolean storeDTD(String ID, String content, boolean force)
          Creates a new DTD resource with the given content.
 boolean storeImage(String address, URL source, boolean force)
          Imports the image from the source & stores it at the given address.
 boolean storeResource(String address, BufferedInputStream source, boolean force)
          Create a new resource with the content from the source.
 boolean storeText(String address, String content, boolean force)
          Creates a new text resource and writes the given content into it.
 boolean storeXML(String address, org.dom4j.Document content, boolean force)
          Creates a new XML resource with the given content, reindented for readability.
 boolean storeXML(String address, org.dom4j.Document content, boolean force, boolean indent)
          Creates a new XML resource with the given content, possibly reindented.
 boolean storeXML(String address, String[] dtdIDs, String content, boolean force)
           
 
Methods inherited from class edu.uky.rch.ept.data.DataSourceDriver
getName, getProtocolIdentifier, getWizardPageClass, setName, setProtocolIdentifier, setWizardPageClass, stripProtocolFromAddress, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

FileSystemXPathEngine

public FileSystemXPathEngine()
Instantiates the driver.

Method Detail

canRead

public boolean canRead(String address)
                throws MalformedAddressException
Description copied from interface: IGenericResourceAccessMethods
Check if the resource specified by the address can be read.

Parameters:
address - address of the resource
Returns:
true if the resource exists and can be read, false otherwise.
Throws:
MalformedAddressException

canWrite

public boolean canWrite(String address)
                 throws MalformedAddressException
Description copied from interface: IGenericResourceAccessMethods
Check if the resource specified by the address can be written to.

Returns:
true if the resource can be created if it doesnt already exist or written to if it exists; false otherwise.
Throws:
MalformedAddressException

isCollection

public boolean isCollection(String address)
                     throws MalformedAddressException
Description copied from interface: ICollectionAccessMethods
Returns true if the specified address points to a collection.

Parameters:
address - the address to check
Returns:
true if the address points to an existing collection
Throws:
MalformedAddressException

createCollection

public boolean createCollection(String address)
                         throws MalformedAddressException,
                                IOException
Description copied from interface: ICollectionAccessMethods
Creates a collection specified by the address.

Parameters:
address - address of the collection
Returns:
true if the collection did not exist and was succesfully created, false otherwise.
Throws:
MalformedAddressException
IOException

deleteCollection

public boolean deleteCollection(String address,
                                boolean force)
                         throws MalformedAddressException
Description copied from interface: ICollectionAccessMethods
Deletes the collection specified by the address.

Parameters:
address - address of the collection
force - if true, then the collection will be deleted even if it contains resources and other sub-collections. Use with caution, as all resources contained within the collection will be deleted
Returns:
true if the collection existed and was succesfully deleted, false otherwise.
Throws:
MalformedAddressException

deleteResource

public boolean deleteResource(String address)
                       throws MalformedAddressException
Description copied from interface: IGenericResourceAccessMethods
Delete a resource if it exists.

Parameters:
address - address of the resource
Returns:
true if the resource existed and was succesfully deleted, false otherwise
Throws:
MalformedAddressException

getText

public String getText(String address,
                      int beginIndex,
                      int endIndex)
               throws MalformedAddressException,
                      ResourceNotFoundException,
                      IOException
Description copied from interface: ITextAccessMethods
Retrieves the specified text data from the resource at the given address. The text data is read starting from the beginIndex to the character at index endIndex-1. Thus the length of the substring returned is endIndex-beginIndex. If endIndex is EOF, then the contents will be read till the end of the resource.

Parameters:
address - address of the resource
beginIndex - the beginning index, inclusive.
endIndex - the endIndex, exclusive.
Returns:
the specified text data from the resource
Throws:
ResourceNotFoundException - if the resource doesnt exist
MalformedAddressException
IOException

storeText

public boolean storeText(String address,
                         String content,
                         boolean force)
                  throws MalformedAddressException,
                         IOException
Description copied from interface: ITextAccessMethods
Creates a new text resource and writes the given content into it.

Parameters:
address - the address of the resource
content - the data to be written
force - if true then the resource is overwritten if it already exists
Returns:
true if the resource did not exist and was created successfully, false otherwise
Throws:
MalformedAddressException
IOException

insertText

public void insertText(String address,
                       int atIndex,
                       String newContent)
                throws MalformedAddressException,
                       ResourceNotFoundException,
                       IndexOutOfBoundsException,
                       IOException
Description copied from interface: ITextAccessMethods
Inserts the new text content into the resource starting at the index specified. If atIndex is greater than the length of the resource or is EOF, the new text will be appended to the resource

Parameters:
address - the address of the resource
atIndex - offset from the beginning of the resource
newContent - text to be inserted
Throws:
ResourceNotFoundException - if the resource doesnt exist
IndexOutOfBoundsException - if the atIndex is negative and not EOF
MalformedAddressException
IOException

replaceText

public void replaceText(String address,
                        int beginIndex,
                        int endIndex,
                        String newContent)
                 throws MalformedAddressException,
                        ResourceNotFoundException,
                        IndexOutOfBoundsException,
                        IOException
Description copied from interface: ITextAccessMethods
Replaces the specified text with the new content. The text that is replaced starts from beginIndex and ends at endIndex-1. If endIndex is EOF, then the text till the end of the resource will be replaced.

Parameters:
address - address of the resource
beginIndex - beginning index, inclusive
endIndex - end index, exclusive
newContent - new content to replace the text
Throws:
IndexOutOfBoundsException - if the beginIndex is negative, or beginIndex is larger than endIndex and endIndex is not EOF.
ResourceNotFoundException - if the resource doesnt exist
MalformedAddressException
IOException

getXMLDocument

public org.dom4j.Document getXMLDocument(String address)
                                  throws MalformedAddressException,
                                         ResourceNotFoundException,
                                         IOException
Description copied from interface: IXMLAccessMethods
Retrieves the XML data from the specified address.

Parameters:
address - address of the xml resource
Returns:
a Document object built from the data in the resource
Throws:
ResourceNotFoundException - if the resource doesnt exist
MalformedAddressException
IOException

getXML

public String getXML(String address)
              throws MalformedAddressException,
                     ResourceNotFoundException,
                     IOException
Description copied from interface: IXMLAccessMethods
Retrieves the XML data from the specified address.

Parameters:
address - address of the xml resource
Returns:
a String object containing the data from the resource
Throws:
ResourceNotFoundException - if the resource doesnt exist
MalformedAddressException
IOException

storeXML

public boolean storeXML(String address,
                        org.dom4j.Document content,
                        boolean force,
                        boolean indent)
                 throws MalformedAddressException,
                        IOException
Description copied from interface: IXMLAccessMethods
Creates a new XML resource with the given content, possibly reindented. This method is to be used for xml resources that do not have concurrent hierarchies.

Parameters:
address - the address of the resource
content - the Document to be written
force - if true then the resource is overwritten if it already exists
indent - if true reindent the document, compressing contiguous sequences of whitespace characters in content.
Returns:
true if the resource did not exist and was created successfully, false otherwise
Throws:
MalformedAddressException
IOException

storeXML

public boolean storeXML(String address,
                        org.dom4j.Document content,
                        boolean force)
                 throws MalformedAddressException,
                        IOException
Description copied from interface: IXMLAccessMethods
Creates a new XML resource with the given content, reindented for readability. Use IXMLAccessMethods.storeXML(String, Document, boolean, boolean) instead to preserve whitespace. This method is to be used for XML resources that do not have concurrent hierarchies.

Parameters:
address - the address of the resource.
content - the Document to be written
force - if true then the resource is overwritten if it already exists
Returns:
true if the resource did not exist and was created successfully, false otherwise
Throws:
MalformedAddressException
IOException

storeXML

public boolean storeXML(String address,
                        String[] dtdIDs,
                        String content,
                        boolean force)
                 throws MalformedAddressException,
                        IOException
Throws:
MalformedAddressException
IOException

insertXML

public void insertXML(String address,
                      String dtdID,
                      String xpath,
                      org.dom4j.Node newContent)
               throws MalformedAddressException,
                      ResourceNotFoundException,
                      IOException,
                      InvalidNodePathException
Throws:
MalformedAddressException
ResourceNotFoundException
IOException
InvalidNodePathException

replaceXML

public void replaceXML(String address,
                       String dtdID,
                       String xpath,
                       org.dom4j.Node newContent)
                throws MalformedAddressException,
                       ResourceNotFoundException,
                       InvalidNodePathException,
                       IOException
Throws:
MalformedAddressException
ResourceNotFoundException
InvalidNodePathException
IOException

replaceXMLContent

public void replaceXMLContent(String address,
                              int beginIndex,
                              int endIndex,
                              String newContent)
                       throws MalformedAddressException,
                              ResourceNotFoundException,
                              IndexOutOfBoundsException,
                              IOException
Description copied from interface: IXMLAccessMethods
Treats an xml resource as text resource (all tags are ignored as if they didnt exist) and replaces the text from beginIndex to endIndex-1 with the new text content. If endIndex is EOF, the text till the end of the resource will be replaced.

Parameters:
address - address of the resource
beginIndex - beginIndex, inclusive
endIndex - endIndex, exclusive
newContent - new text content
Throws:
ResourceNotFoundException - if the resource doesnt exist
IndexOutOfBoundsException - if the beginIndex is negative, or beginIndex is larger than endIndex and endIndex is not EOF.
MalformedAddressException
IOException

getDTD

public String getDTD(String ID)
              throws MalformedAddressException,
                     ResourceNotFoundException,
                     IOException
Description copied from interface: IDTDAccessMethods
Retrieves the specified DTD

Parameters:
ID - identifier of the DTD
Returns:
a String object containing the DTD contents from the resource
Throws:
ResourceNotFoundException - if the resource doesnt exist
MalformedAddressException
IOException

storeDTD

public boolean storeDTD(String ID,
                        String content,
                        boolean force)
                 throws MalformedAddressException,
                        IOException
Description copied from interface: IDTDAccessMethods
Creates a new DTD resource with the given content. All DTDs are to be stored in a collection named 'DTDs' which should be in the root of the project structure. For example is the ID is 'cotlib.damage', then the corresponding resource should be created at and named as in "DTDs/cotlib.damage.dtd" from the project's root.

Parameters:
ID - the identifier for the DTD
content - DTD content
force - if true, then the resource is overwritten if it already exists
Returns:
true if the resource did not exist and was created successfully, false otherwise
Throws:
MalformedAddressException
IOException

getImage

public org.eclipse.swt.graphics.ImageData getImage(String address)
                                            throws MalformedAddressException,
                                                   ResourceNotFoundException,
                                                   IOException
Description copied from interface: IImageAccessMethods
Retrieves the Image from the specified address

Parameters:
address - address of the Image
Returns:
an ImageData object corresponding to the image
Throws:
ResourceNotFoundException - if the resource doesnt exist
MalformedAddressException
IOException

storeImage

public boolean storeImage(String address,
                          URL source,
                          boolean force)
                   throws MalformedAddressException,
                          ResourceNotFoundException,
                          IOException
Description copied from interface: IImageAccessMethods
Imports the image from the source & stores it at the given address.

Parameters:
address - the address of the resource
source - URL pointing to the image to be imported
force - if true, then the resource is overwritten if it already exists
Returns:
true if the resource did not exist and was created successfully, false otherwise
Throws:
MalformedAddressException
ResourceNotFoundException
IOException

getCollectionContents

public ResourceList getCollectionContents(String collectionAddress)
                                   throws MalformedAddressException,
                                          ResourceNotFoundException,
                                          IOException
Description copied from interface: ICollectionAccessMethods
Returns a ResourceList containing resource descriptors for each of the resources and collections in the specified collection.

There is no guarantee that the resource descriptors in the resulting resourcelist will appear in any specific order; they are not, in particular, guaranteed to appear in alphabetical order of resource names.

Parameters:
collectionAddress - path to the collection
Returns:
a ResourceList with ResourceDescriptors pointing to the resources and collections in the specified collection. The ResourceList will be empty if the collection is empty.
Throws:
ResourceNotFoundException - if the specified collection doesnt exist
MalformedAddressException
IOException

scanCollection

public ResourceList scanCollection(String address,
                                   Pattern pattern,
                                   boolean includeCollections)
                            throws MalformedAddressException,
                                   ResourceNotFoundException,
                                   IOException
Description copied from interface: ICollectionAccessMethods
Returns a ResourceList containing resource descriptors for each of the resources (and possibly collections) located within the specified collection which match the given pattern. Unlike ICollectionAccessMethods.getCollectionContents(java.lang.String), this method perfoms a recursive search.

There is no guarantee that the resource descriptors in the resulting resourcelist will appear in any specific order; they are not, in particular, guaranteed to appear in alphabetical order of resource names.

Parameters:
address - path to the collection
pattern - pattern to match against
includeCollections -
Returns:
a ResourceList with ResourceDescriptors pointing to the resources with addresses matching the pattern which are located within the specified collection. The ResourceList will be empty if the collection is empty.
Throws:
ResourceNotFoundException - if the specified collection doesnt exist
MalformedAddressException
IOException

getInputStream

public BufferedInputStream getInputStream(String address)
                                   throws MalformedAddressException,
                                          ResourceNotFoundException,
                                          IOException
Description copied from interface: IGenericResourceAccessMethods
Create and return a BufferedInputStream for the resource.

Parameters:
address - address of the resource
Returns:
the BufferedInputStream
Throws:
IOException - if there was an error opening the stream
ResourceNotFoundException - if the resource did not exist
MalformedAddressException - if the specified address is invalid

getOutputStream

public BufferedOutputStream getOutputStream(String address)
                                     throws MalformedAddressException,
                                            ResourceNotFoundException,
                                            IOException
Description copied from interface: IGenericResourceAccessMethods
Create and return a BufferedOutputStream for the resource.

Parameters:
address - address of the resource
Returns:
the BufferedOutputStream
Throws:
IOException - if there was an error opening the stream
ResourceNotFoundException - if the resource did not exist and cannot be created
MalformedAddressException - if the specified address is invalid

getOutputStream

public BufferedOutputStream getOutputStream(String address,
                                            boolean append)
                                     throws MalformedAddressException,
                                            ResourceNotFoundException,
                                            IOException
Description copied from interface: IGenericResourceAccessMethods
Create and return a (possibly append-only) BufferedOutputStream for the resource.

Parameters:
address - address of the resource
Returns:
the BufferedOutputStream
Throws:
IOException - if there was an error opening the stream.
ResourceNotFoundException - if the resource did not exist and cannot be created
MalformedAddressException - if the specified address is invalid

renameResource

public boolean renameResource(String srcAddress,
                              String destAddress,
                              boolean force)
                       throws ResourceNotFoundException,
                              MalformedAddressException,
                              IOException
Description copied from interface: IGenericResourceAccessMethods
Move or rename a resource from one address to another.

Parameters:
srcAddress - the current address of the resource
destAddress - the new address of the resource
force - if true, the resource at destAddress is overwritten if it already exists
Returns:
true if the resource was successfully renamed, false otherwise. Renaming always fails if the source and destination addresses have different protocols. If they have the same protocol but belong to different projects, the data source driver for that protocol may or may not permit the renaming.
Throws:
ResourceNotFoundException
MalformedAddressException
IOException

storeResource

public boolean storeResource(String address,
                             BufferedInputStream source,
                             boolean force)
                      throws MalformedAddressException,
                             IOException
Description copied from interface: IGenericResourceAccessMethods
Create a new resource with the content from the source.

Parameters:
address - address of the new resource
source - a BufferedInputStream from which to read the content
force - if true then the resource is overwritten if it already exists
Returns:
true if the resource did not exist and was created successfully, false otherwise
Throws:
MalformedAddressException
IOException

insertCXML

public void insertCXML(String address,
                       String dtdID,
                       String locate,
                       org.dom4j.Node newContent)
                throws MalformedAddressException,
                       ResourceNotFoundException,
                       InvalidNodePathException,
                       IOException
Description copied from interface: IConcurrentXMLAccessMethods
Inserts the given XML node into the CXML resource at the indicated location. The location takes the form "[[beg:end]]", where beg and end are the integer coordinates of the node, used to position it with respect to other nodes.

Parameters:
address - address of the resource.
dtdID - identifier of the corresponding DTD.
locate - location for the new node, as specified above.
newContent - new node, which should be either an org.dom4j.Element or an org.dom4j.Text. The node's content is ignored; only the top-level node itself is used.
Throws:
InvalidNodePathException - if the given location is invalid.
ResourceNotFoundException - if the resource doesnt exist
MalformedAddressException
IOException

getCXML

public String getCXML(String address,
                      String[] dtdIDs)
               throws MalformedAddressException,
                      ResourceNotFoundException,
                      IOException
Description copied from interface: IConcurrentXMLAccessMethods
Combine the specified hierarchies of the CXML content and return the result as a pseudo-XML string. If dtdIDs[] is null or an empty array, combine all the hierarchies. If dtdIDs contains a single DTD and the document is well-formed with respect to that DTD, the result will be proper XML.

Parameters:
address - address of the CXML resource.
dtdIDs - an array of DTD identifiers, specifying which hierarchies to combine. If this parameter is null or empty, all the hierarchies are combined.
Returns:
a String with the combined hierarchies.
Throws:
ResourceNotFoundException - if the resource doesn't exist
MalformedAddressException
IOException

storeCXML

public boolean storeCXML(String address,
                         String[] dtdIDs,
                         String content,
                         boolean force)
                  throws MalformedAddressException,
                         IOException
Description copied from interface: IConcurrentXMLAccessMethods
Creates a new CXML resource. This method parses the given content to handle the concurrent hierarchies and creates the required xml resource. The different hierarchies to be handled are specified by the identifiers referred to by the array of DTD identifiers. Note: currently, content should be the empty string; if not, that content will not be located properly with respect to other nodes. This will be fixed.

Parameters:
address - the address at which to store the CXML resource
dtdIDs - an array of DTD identifiers
content - the CXML data to be written (currently, the empty string)
force - flag indicating whether the resource should be overwritten if it already exists.
Returns:
true if the resource was created successfully, false otherwise.
Throws:
MalformedAddressException
IOException

deleteCXML

public boolean deleteCXML(String address,
                          String dtdID,
                          String location)
                   throws MalformedAddressException,
                          ResourceNotFoundException,
                          InvalidNodePathException,
                          IOException
Description copied from interface: IConcurrentXMLAccessMethods
Removes the node at the specified location in the resource. The location takes the form "[[beg:end]]|tag", where beg and end are the integer coordinates of the node (the coordinates passed to IConcurrentXMLAccessMethods.insertCXML(java.lang.String, java.lang.String, java.lang.String, org.dom4j.Node) when the node was originally inserted) and tag is the tag name of the node to be removed (or "st:string" to remove text content).

Parameters:
address - address of the resource
dtdID - identifier of the corresponding DTD.
location - location and tag name of an existing node, as specified above.
Returns:
true if the node existed and was succesfully deleted, false otherwise.
Throws:
InvalidNodePathException - if the location is invalid.
ResourceNotFoundException - if the resource doesnt exist
MalformedAddressException
IOException

replaceCXMLContent

public void replaceCXMLContent(String xmlResourceAddress,
                               int beginIndex,
                               int endIndex,
                               String newContent)
                        throws MalformedAddressException,
                               ResourceNotFoundException,
                               IndexOutOfBoundsException,
                               IOException
Description copied from interface: IConcurrentXMLAccessMethods
(unimplemented) Treats a CXML resource as text resource (all tags are treated as though they did not exist) and replaces the text from beginIndex to endIndex-1 with the new text content. If endIndex is EOF, the text till the end of the resource will be replaced.

Parameters:
xmlResourceAddress - address of the resource
beginIndex - beginIndex, inclusive
endIndex - endIndex, exclusive
newContent - new text content
Throws:
ResourceNotFoundException - if the resource doesnt exist
IndexOutOfBoundsException - if the beginIndex is negative, or beginIndex is larger than endIndex and endIndex is not EOF.
MalformedAddressException
IOException

replaceCXML

public void replaceCXML(String address,
                        String dtdID,
                        String location,
                        org.dom4j.Node newContent)
                 throws MalformedAddressException,
                        ResourceNotFoundException,
                        InvalidNodePathException,
                        IOException
Description copied from interface: IConcurrentXMLAccessMethods
Replaces the node at the specified location in the resource with a new node at the same location. The location is of the same form as the similarly-named parameter to IConcurrentXMLAccessMethods.deleteCXML(java.lang.String, java.lang.String, java.lang.String).

Parameters:
address - address of the resource.
dtdID - identifier of the corresponding DTD.
location - location and tag name of an existing node, as specified by IConcurrentXMLAccessMethods.deleteCXML(java.lang.String, java.lang.String, java.lang.String).
newContent - the node to replace the deleted node; this should be as the argument to IConcurrentXMLAccessMethods.insertCXML(java.lang.String, java.lang.String, java.lang.String, org.dom4j.Node).
Throws:
InvalidNodePathException - if the given location is invalid.
ResourceNotFoundException - if the resource doesnt exist.
MalformedAddressException
IOException

queryCXML

public Object queryCXML(String address,
                        String[] dtdIDs,
                        String query,
                        short returnType)
                 throws MalformedAddressException,
                        ResourceNotFoundException,
                        MalformedQueryException,
                        IOException,
                        InvalidTypeException
Description copied from interface: IConcurrentXMLAccessMethods
Executes the given query on the CXML resource and returns the results as a list of org.dom4j.Nodes. Each such node is either an Element or a Text object. The query is of the form "op[[from:to]] where from and to are the coordinates of the context range (these are the same coordinates used by IConcurrentXMLAccessMethods.insertCXML(java.lang.String, java.lang.String, java.lang.String, org.dom4j.Node)). op indicates the type of query to perform, and may be one of:

Parameters:
address - address of the XML resource
dtdIDs - an array of DTD identifiers, specifying which of the hierarchies to consider for the query. If this parameter is null or empty, then all the hierarchies are considered.
query - the query, as specified above.
returnType - return type. This argument is currently ignored.
Returns:
an object containing the result of the query. The object is currently always a List of dom4j Element and Text nodes.
Throws:
InvalidTypeException - if the return type specified is unrecognized (should never happen)
MalformedQueryException - if the query is malformed
ResourceNotFoundException - if the resource doesnt exist
MalformedAddressException
IOException

insertXML

public void insertXML(String address,
                      String location,
                      org.dom4j.Node newContent)
               throws MalformedAddressException,
                      ResourceNotFoundException,
                      InvalidNodePathException,
                      IOException
Description copied from interface: IXMLAccessMethods
Inserts the given xml node into the xml resource immediately after the node specified by the xpath.

Parameters:
address - address of the resource
location - valid path to a node
newContent - new node
Throws:
ResourceNotFoundException - if the resource doesnt exist
InvalidNodePathException - if the given xpath does not point to a node (valid location)
MalformedAddressException
IOException

deleteXML

public boolean deleteXML(String address,
                         String location)
                  throws MalformedAddressException,
                         ResourceNotFoundException,
                         InvalidNodePathException,
                         IOException
Description copied from interface: IXMLAccessMethods
Deletes the node pointed to by the xpath, from the xml resource.

Parameters:
address - address of the resource
location - valid path to an existing node in the resource
Returns:
true if the node existed and was succesfully deleted, false otherwise
Throws:
ResourceNotFoundException - if the resource doesnt exist
InvalidNodePathException - if the given xpath does not point to a node (valid location) in the resource
MalformedAddressException
IOException

replaceXML

public void replaceXML(String address,
                       String location,
                       org.dom4j.Node newContent)
                throws MalformedAddressException,
                       ResourceNotFoundException,
                       InvalidNodePathException,
                       IOException
Description copied from interface: IXMLAccessMethods
Replaces the specified node in the resource with the new node.

Parameters:
address - address of the resource
location - valid path to an existing node in the resource
newContent - new node
Throws:
InvalidNodePathException - if the given xpath does not point to a node (valid location) in the resource
ResourceNotFoundException - if the resource doesnt exist
MalformedAddressException
IOException

queryXML

public Object queryXML(String address,
                       String query,
                       short returnType)
                throws MalformedAddressException,
                       ResourceNotFoundException,
                       MalformedQueryException,
                       IOException,
                       InvalidTypeException
Description copied from interface: IXMLAccessMethods
Executes the given query on the XML resource and returns the results in the format specified by the returnType parameter.

Parameters:
address - address of the XML resource
query - the query
returnType - return type.

The following values are valid for the return type:

  • RT_DOCUMENT - Returns a Document object
  • RT_NODELIST - Returns a list of Nodes
  • RT_STRINGS - Returns a String array

Returns:
an object containing the result of the query. The type of object is decided by the returnType parameter.
Throws:
MalformedQueryException - if the query is malformed
ResourceNotFoundException - if the resource doesnt exist
InvalidTypeException - if the return type specified is unrecognized
MalformedAddressException
IOException

getAddressSelector

public IAddressSelector getAddressSelector()
Description copied from interface: IDataSourceDriver
Returns a new address selector for this data source.

Returns: