## org.exist.storage
Class NativeBroker

    java.lang.Object
      java.util.Observable
          org.exist.storage.DBBroker
              org.exist.storage.NativeBroker

Direct Known Subclasses:
  NativeClusterBroker

public class NativeBroker
extends DBBroker

Main class for the native XML storage backend. By "native" it is meant file-based, embedded backend. Provides access to all low-level operations required by the database. Extends `DBBroker`. Observer Design Pattern: role : this class is the subject (alias observable) for various classes that generate indices for the database content :

Author:
  Wolfgang Meier

Nested Class Summary
`static class` `NativeBroker.NodeRef`

Field Summary
`static int` `BUFFERS` default buffer size setting
`static java.lang.String` `COLLECTIONS_DBX`
`static byte` `COLLECTIONS_DBX_ID`
`static java.lang.String` `DEFAULT_DATA_DIR`
`static int` `DEFAULT_INDEX_DEPTH`
`static int` `DEFAULT_MIN_MEMORY`
`static int` `DEFAULT_NODES_BEFORE_MEMORY_CHECK` check available memory after storing DEFAULT_NODES_BEFORE_MEMORY_CHECK nodes
`static int` `DEFAULT_PAGE_SIZE`
`static double` `DEFAULT_VALUE_CACHE_GROWTH`
`static double` `DEFAULT_VALUE_KEY_THRESHOLD`
`static double` `DEFAULT_VALUE_VALUE_THRESHOLD`
`static double` `DEFAULT_WORD_CACHE_GROWTH`
`static double` `DEFAULT_WORD_KEY_THRESHOLD`
`static double` `DEFAULT_WORD_VALUE_THRESHOLD`
`static java.lang.String` `DOM_DBX`
`static byte` `DOM_DBX_ID`
`static java.lang.String` `ELEMENTS_DBX`
`static byte` `ELEMENTS_DBX_ID`
`static byte` `PREPEND_DB_ALWAYS`
`static byte` `PREPEND_DB_AS_NEEDED`
`static byte` `PREPEND_DB_NEVER`
`static java.lang.String` `PROPERTY_INDEX_DEPTH`
`static java.lang.String` `PROPERTY_MIN_FREE_MEMORY`
`static java.lang.String` `PROPERTY_PAGE_SIZE`
`static long` `TEMP_FRAGMENT_TIMEOUT`
`static java.lang.String` `VALUES_DBX`
`static byte` `VALUES_DBX_ID`
`static java.lang.String` `VALUES_QNAME_DBX`
`static byte` `VALUES_QNAME_DBX_ID`
`static java.lang.String` `WORDS_DBX`
`static byte` `WORDS_DBX_ID`

Fields inherited from class org.exist.storage.DBBroker
`COLLECTION_CONFIG_FILENAME, CONFIG_COLLECTION, customProperties, MATCH_EXACT, MATCH_REGEXP, MATCH_WILDCARDS, NATIVE, NATIVE_CLUSTER, PROPERTY_XUPDATE_CONSISTENCY_CHECKS, PROPERTY_XUPDATE_FRAGMENTATION_FACTOR, PROPERTY_XUPDATE_GROWTH_FACTOR, ROOT_COLLECTION, ROOT_COLLECTION_NAME, SYSTEM_COLLECTION, TEMP_COLLECTION`

Constructor Summary
`NativeBroker(BrokerPool pool, Configuration config)` initialize database; read configuration, etc.

Method Summary
`void` `addContentLoadingObserver(ContentLoadingObserver observer)` Observer Design Pattern: add an observer.
`void` `addObserver(java.util.Observer o)`
`void` `checkXMLResourceConsistency(DocumentImpl doc)` consistency Check of the database; useful after XUpdates; called if xupdate.consistency-checks is true in configuration
`void` `checkXMLResourceTree(DocumentImpl doc)` consistency Check of the database; useful after XUpdates; called by `checkXMLResourceConsistency(DocumentImpl)`
`void` `cleanUpTempCollection()` remove temporary collection
`void` `cleanUpTempResources()` remove all documents from temporary collection
`void` `cleanUpTempResources(java.util.List docs)` remove from the temporary collection of the database a given list of Documents.
`void` `clearContentLoadingObservers()` Remove all observers
`void` `closeDocument()`
`void` `copyCollection(Txn transaction, Collection collection, Collection destination, XmldbURI newName)` Copy a collection to the destination collection and rename it.
`void` `copyXMLResource(Txn transaction, DocumentImpl doc, Collection destination, XmldbURI newName)` Copy a resource to the destination collection and rename it.
`void` `defragXMLResource(Txn transaction, DocumentImpl doc)` Defragment pages of this document.
`void` `deleteObservers()`
`void` `dropCollectionIndex(Collection collection)`
`void` `endElement(StoredNode node, NodePath currentPath, java.lang.String content, long oldAddress)` Update indexes for the given element node.
`void` `endRemove()` Takes care of actually remove entries from the indices; must be called after one or more call to `removeNode(Txn, StoredNode, NodePath, String)`.
`void` `flush()` Flush all data that has not been written before.
`DocumentSet` `getAllXMLResources(DocumentSet docs)` Adds all the documents in the database to the specified DocumentSet.
`int` `getBackendType()`
`byte[]` `getBinaryResource(BinaryDocument blob)` Retrieve the binary data stored under the resource descriptor BinaryDocument.
`Collection` `getCollection(XmldbURI name)` Returns the database collection identified by the specified path.
`Collection` `getCollection(XmldbURI name, long addr)` Returns the database collection identified by the specified path.
`void` `getCollectionResources(Collection collection)`
`DOMFile` `getDOMFile()`
`java.util.Iterator` `getDOMIterator(StoredNode node)` Return a `DOMFileIterator` starting at the specified node.
`ElementIndex` `getElementIndex()`
`short` `getFreeCollectionId(Txn transaction)` Get the next free collection id.
`int` `getFreeResourceId(Txn transaction)` Get the next unused document id.
`IndexSpec` `getIndexConfiguration()`
`short` `getNextCollectionId(Txn transaction)` Get the next available unique collection id.
`int` `getNextResourceId(Txn transaction, Collection collection)` get next Free Doc Id
`java.util.Iterator` `getNodeIterator(StoredNode node)` Return a `NodeIterator` starting at the specified node.
`NodeSet` `getNodesEqualTo(NodeSet context, DocumentSet docs, int relation, int truncation, java.lang.String expr, java.text.Collator collator)` Find all Nodes whose string value is equal to expr in the document set.
`java.lang.String` `getNodeValue(StoredNode node, boolean addWhitespace)` Get the string value of the specified node.
`Collection` `getOrCreateCollection(Txn transaction, XmldbURI name)` Returns the database collection identified by the specified path.
`int` `getPageSize()`
`NativeValueIndexByQName` `getQNameValueIndex()`
`void` `getResourceMetadata(DocumentImpl doc)`
`Serializer` `getSerializer()` Get an instance of the Serializer used for converting nodes back to XML.
`BTree` `getStorage(byte id)`
`byte[]` `getStorageFileIds()`
`TextSearchEngine` `getTextEngine()` Get the TextSearchEngine associated with this broker.
`NativeValueIndex` `getValueIndex()`
`org.w3c.dom.Document` `getXMLResource(XmldbURI fileName)` get a document by its file name.
`DocumentImpl` `getXMLResource(XmldbURI fileName, int lockMode)` Return the document stored at the specified path.
`DocumentSet` `getXMLResourcesByDoctype(java.lang.String doctypeName, DocumentSet result)` Get all the documents in this database matching the given document-type's name.
`void` `indexNode(Txn transaction, StoredNode node, NodePath currentPath)` Index a single node, which has been added through an XUpdate operation.
`void` `indexNode(Txn transaction, StoredNode node, NodePath currentPath, boolean repairMode)`
`void` `insertNodeAfter(Txn transaction, StoredNode previous, StoredNode node)` Physically insert a node into the DOM storage.
`boolean` `isReadOnly()` Is the database running read-only? Returns false by default.
`void` `moveCollection(Txn transaction, Collection collection, Collection destination, XmldbURI newName)` Move a collection and all its subcollections to another collection and rename it.
`void` `moveXMLResource(Txn transaction, DocumentImpl doc, Collection destination, XmldbURI newName)` move Resource to another collection, with possible rename
`Serializer` `newSerializer()`
`StoredNode` `objectWith(org.w3c.dom.Document doc, NodeId nodeId)` Get a node with given owner document and id from the database.
`StoredNode` `objectWith(NodeProxy p)`
`Collection` `openCollection(XmldbURI name, int lockMode)` Open a collection for reading or writing.
`Collection` `openCollection(XmldbURI name, long addr, int lockMode)` Get collection object.
`XmldbURI` `prepend(XmldbURI uri)`
`void` `readBinaryResource(BinaryDocument blob, java.io.OutputStream os)`
`void` `reindexCollection(Collection collection, boolean repairMode)`
`void` `reindexCollection(Txn transaction, Collection collection, boolean repairMode)`
`void` `reindexCollection(XmldbURI collectionName)` Reindex a collection.
`void` `removeAllNodes(Txn transaction, StoredNode node, NodePath currentPath)`
`void` `removeBinaryResource(Txn transaction, BinaryDocument blob)` Completely delete this binary document (descriptor and binary data).
`boolean` `removeCollection(Txn transaction, Collection collection)` Remove the collection and all its subcollections from the database.
`void` `removeContentLoadingObserver(ContentLoadingObserver observer)` Observer Design Pattern: remove an observer.
`void` `removeNode(Txn transaction, StoredNode node, NodePath currentPath, java.lang.String content)` Removes the Node Reference from the database.
`void` `removeXMLResource(Txn transaction, DocumentImpl document, boolean freeDocId)`
`void` `repair()`
`void` `saveCollection(Txn transaction, Collection collection)` Saves the specified collection to storage.
`void` `shutdown()` Shut down the database instance.
`void` `storeBinaryResource(Txn transaction, BinaryDocument blob, byte[] data)` Stores the given data under the given binary resource descriptor (BinaryDocument).
`void` `storeBinaryResource(Txn transaction, BinaryDocument blob, java.io.InputStream is)` Stores the given data under the given binary resource descriptor (BinaryDocument).
`void` `storeNode(Txn transaction, StoredNode node, NodePath currentPath, boolean fullTextIndex)` Store a node into the database.
`DocumentImpl` `storeTempResource(DocumentImpl doc)` store into the temporary collection of the database a given in-memory Document
`void` `storeXMLResource(Txn transaction, DocumentImpl doc)` store Document entry into its collection.
`void` `sync(int syncEvent)` Sync dom and collection state data (pages) to disk.
`void` `updateNode(Txn transaction, StoredNode node)` Update a node's data.

Methods inherited from class org.exist.storage.DBBroker
`backupSymbolsTo, decReferenceCount, endElement, getBrokerPool, getConfiguration, getDOMIterator, getId, getReferenceCount, getSymbols, getUser, getXQueryService, incReferenceCount, indexNode, isCaseSensitive, removeXMLResource, setId, setUser, storeNode, toString`

Methods inherited from class java.util.Observable
`countObservers, deleteObserver, hasChanged, notifyObservers, notifyObservers`

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Field Detail

### PREPEND_DB_ALWAYS

    public static final byte PREPEND_DB_ALWAYS

See Also:
  Constant Field Values

### PREPEND_DB_NEVER

    public static final byte PREPEND_DB_NEVER

See Also:
  Constant Field Values

### PREPEND_DB_AS_NEEDED

    public static final byte PREPEND_DB_AS_NEEDED

See Also:
  Constant Field Values

### COLLECTIONS_DBX_ID

    public static final byte COLLECTIONS_DBX_ID

See Also:
  Constant Field Values

### ELEMENTS_DBX_ID

    public static final byte ELEMENTS_DBX_ID

See Also:
  Constant Field Values

### VALUES_DBX_ID

    public static final byte VALUES_DBX_ID

See Also:
  Constant Field Values

### WORDS_DBX_ID

    public static final byte WORDS_DBX_ID

See Also:
  Constant Field Values

### DOM_DBX_ID

    public static final byte DOM_DBX_ID

See Also:
  Constant Field Values

### VALUES_QNAME_DBX_ID

    public static final byte VALUES_QNAME_DBX_ID

See Also:
  Constant Field Values

### ELEMENTS_DBX

    public static final java.lang.String ELEMENTS_DBX

See Also:
  Constant Field Values

### VALUES_DBX

    public static final java.lang.String VALUES_DBX

See Also:
  Constant Field Values

### VALUES_QNAME_DBX

    public static final java.lang.String VALUES_QNAME_DBX

See Also:
  Constant Field Values

### DOM_DBX

    public static final java.lang.String DOM_DBX

See Also:
  Constant Field Values

### COLLECTIONS_DBX

    public static final java.lang.String COLLECTIONS_DBX

See Also:
  Constant Field Values

### WORDS_DBX

    public static final java.lang.String WORDS_DBX

See Also:
  Constant Field Values

### PROPERTY_PAGE_SIZE

    public static final java.lang.String PROPERTY_PAGE_SIZE

See Also:
  Constant Field Values

### PROPERTY_MIN_FREE_MEMORY

    public static final java.lang.String PROPERTY_MIN_FREE_MEMORY

See Also:
  Constant Field Values

### PROPERTY_INDEX_DEPTH

    public static final java.lang.String PROPERTY_INDEX_DEPTH

See Also:
  Constant Field Values

### DEFAULT_DATA_DIR

    public static final java.lang.String DEFAULT_DATA_DIR

See Also:
  Constant Field Values

### DEFAULT_PAGE_SIZE

    public static final int DEFAULT_PAGE_SIZE

See Also:
  Constant Field Values

### DEFAULT_INDEX_DEPTH

    public static final int DEFAULT_INDEX_DEPTH

See Also:
  Constant Field Values

### DEFAULT_MIN_MEMORY

    public static final int DEFAULT_MIN_MEMORY

See Also:
  Constant Field Values

### TEMP_FRAGMENT_TIMEOUT

    public static final long TEMP_FRAGMENT_TIMEOUT

See Also:
  Constant Field Values

### BUFFERS

    public static final int BUFFERS

  default buffer size setting

  See Also:
    Constant Field Values

### DEFAULT_NODES_BEFORE_MEMORY_CHECK

    public static final int DEFAULT_NODES_BEFORE_MEMORY_CHECK

  check available memory after storing DEFAULT_NODES_BEFORE_MEMORY_CHECK nodes

  See Also:
    Constant Field Values

### DEFAULT_VALUE_CACHE_GROWTH

    public static final double DEFAULT_VALUE_CACHE_GROWTH

See Also:
  Constant Field Values

### DEFAULT_VALUE_KEY_THRESHOLD

    public static final double DEFAULT_VALUE_KEY_THRESHOLD

See Also:
  Constant Field Values

### DEFAULT_VALUE_VALUE_THRESHOLD

    public static final double DEFAULT_VALUE_VALUE_THRESHOLD

See Also:
  Constant Field Values

### DEFAULT_WORD_CACHE_GROWTH

    public static final double DEFAULT_WORD_CACHE_GROWTH

See Also:
  Constant Field Values

### DEFAULT_WORD_KEY_THRESHOLD

    public static final double DEFAULT_WORD_KEY_THRESHOLD

See Also:
  Constant Field Values

### DEFAULT_WORD_VALUE_THRESHOLD

    public static final double DEFAULT_WORD_VALUE_THRESHOLD

See Also:
  Constant Field Values

Constructor Detail

### NativeBroker

    public NativeBroker(BrokerPool pool,
                        Configuration config)
                 throws EXistException

  initialize database; read configuration, etc.

Method Detail

### addObserver

    public void addObserver(java.util.Observer o)

### deleteObservers

    public void deleteObservers()

### clearContentLoadingObservers

    public void clearContentLoadingObservers()

  Remove all observers

### addContentLoadingObserver

    public void addContentLoadingObserver(ContentLoadingObserver observer)

  Observer Design Pattern: add an observer.

### removeContentLoadingObserver

    public void removeContentLoadingObserver(ContentLoadingObserver observer)

  Observer Design Pattern: remove an observer.

### endElement

    public void endElement(StoredNode node,
                           NodePath currentPath,
                           java.lang.String content,
                           long oldAddress)

  Update indexes for the given element node. This method is called when the indexer encounters a closing element tag. It updates any range indexes defined on the element value and adds the element id to the structural index.

  Specified by:
    `endElement` in class `DBBroker`
  Parameters:
    `node` - the current element node
    `currentPath` - node path leading to the element
    `content` - contains the string value of the element. Needed if a range index is defined on it.
    `oldAddress` - when copying a node, contains the storage address of the old node.

### endRemove

    public void endRemove()

  Takes care of actually remove entries from the indices; must be called after one or more call to `removeNode(Txn, StoredNode, NodePath, String)`.

  Specified by:
    `endRemove` in class `DBBroker`

### getBackendType

    public int getBackendType()

  Specified by:
    `getBackendType` in class `DBBroker`

### isReadOnly

    public boolean isReadOnly()

  Description copied from class: `DBBroker`
  Is the database running read-only? Returns false by default. Storage backends should override this if they support read-only mode.

  Overrides:
    `isReadOnly` in class `DBBroker`
  Returns:
    boolean

### getPageSize

    public int getPageSize()

  Specified by:
    `getPageSize` in class `DBBroker`

### getDOMFile

    public DOMFile getDOMFile()

### getStorage

    public BTree getStorage(byte id)

### getStorageFileIds

    public byte[] getStorageFileIds()

### getIndexConfiguration

    public IndexSpec getIndexConfiguration()

  Specified by:
    `getIndexConfiguration` in class `DBBroker`

### getSerializer

    public Serializer getSerializer()

  Description copied from class: `DBBroker`
  Get an instance of the Serializer used for converting nodes back to XML. Subclasses of DBBroker may have specialized subclasses of Serializer to convert a node into an XML-string

  Specified by:
    `getSerializer` in class `DBBroker`

### newSerializer

    public Serializer newSerializer()

  Specified by:
    `newSerializer` in class `DBBroker`

### getElementIndex

    public ElementIndex getElementIndex()

  Specified by:
    `getElementIndex` in class `DBBroker`

### getValueIndex

    public NativeValueIndex getValueIndex()

  Specified by:
    `getValueIndex` in class `DBBroker`

### getQNameValueIndex

    public NativeValueIndexByQName getQNameValueIndex()

  Specified by:
    `getQNameValueIndex` in class `DBBroker`

### getTextEngine

    public TextSearchEngine getTextEngine()

  Description copied from class: `DBBroker`
  Get the TextSearchEngine associated with this broker. Every subclass of DBBroker will have it's own implementation of TextSearchEngine.

  Specified by:
    `getTextEngine` in class `DBBroker`

### getDOMIterator

    public java.util.Iterator getDOMIterator(StoredNode node)

  Description copied from class: `DBBroker`
  Return a `DOMFileIterator` starting at the specified node.

  Overrides:
    `getDOMIterator` in class `DBBroker`

### getNodeIterator

    public java.util.Iterator getNodeIterator(StoredNode node)

  Description copied from class: `DBBroker`
  Return a `NodeIterator` starting at the specified node.

  Overrides:
    `getNodeIterator` in class `DBBroker`
  Parameters:
    `node` -
  Returns:
    NodeIterator of node.

### cleanUpTempCollection

    public void cleanUpTempCollection()

  remove temporary collection

  Specified by:
    `cleanUpTempCollection` in class `DBBroker`

### prepend

    public XmldbURI prepend(XmldbURI uri)

### getOrCreateCollection

    public Collection getOrCreateCollection(Txn transaction,
                                            XmldbURI name)
                                     throws PermissionDeniedException

  Description copied from class: `DBBroker`
  Returns the database collection identified by the specified path. If the collection does not yet exist, it is created - including all ancestors. The path should be absolute, e.g. /db/shakespeare.

  Overrides:
    `getOrCreateCollection` in class `DBBroker`
  Returns:
    collection or null if no collection matches the path
  Throws:
    `PermissionDeniedException`

### getCollection

    public Collection getCollection(XmldbURI name)

  Description copied from class: `DBBroker`
  Returns the database collection identified by the specified path. The path should be absolute, e.g. /db/shakespeare.

  Specified by:
    `getCollection` in class `DBBroker`
  Returns:
    collection or null if no collection matches the path

### getCollection

    public Collection getCollection(XmldbURI name,
                                    long addr)

  Description copied from class: `DBBroker`
  Returns the database collection identified by the specified path. The storage address is used to locate the collection without looking up the path in the btree.

  Specified by:
    `getCollection` in class `DBBroker`
  Returns:
    Database collection

### openCollection

    public Collection openCollection(XmldbURI name,
                                     int lockMode)

  Description copied from class: `DBBroker`
  Open a collection for reading or writing. The collection is identified by its absolute path, e.g. /db/shakespeare. It will be loaded and locked according to the lockMode argument. The caller should take care to release the collection lock properly.

  Specified by:
    `openCollection` in class `DBBroker`
  Parameters:
    `name` - The collection path
    `lockMode` - one of the modes specified in class `Lock`
  Returns:
    collection or null if no collection matches the path

### openCollection

    public Collection openCollection(XmldbURI name,
                                     long addr,
                                     int lockMode)

  Get collection object. If the collection does not exist, null is returned.

  Parameters:
    `name` - collection name
  Returns:
    The collection value

### copyCollection

    public void copyCollection(Txn transaction,
                               Collection collection,
                               Collection destination,
                               XmldbURI newName)
                        throws PermissionDeniedException,
                               LockException

  Description copied from class: `DBBroker`
  Copy a collection to the destination collection and rename it.

  Specified by:
    `copyCollection` in class `DBBroker`
  Parameters:
    `collection` - the resource to move
    `destination` - the destination collection
    `newName` - the new name the resource should have in the destination collection
  Throws:
    `PermissionDeniedException`
    `LockException`

### moveCollection

    public void moveCollection(Txn transaction,
                               Collection collection,
                               Collection destination,
                               XmldbURI newName)
                        throws PermissionDeniedException,
                               LockException

  Description copied from class: `DBBroker`
  Move a collection and all its subcollections to another collection and rename it. Moving a collection just modifies the collection path and all resource paths. The data itself remains in place.

  Specified by:
    `moveCollection` in class `DBBroker`
  Parameters:
    `collection` - the collection to move
    `destination` - the destination collection
    `newName` - the new name the collection should have in the destination collection
  Throws:
    `PermissionDeniedException`
    `LockException`

### removeCollection

    public boolean removeCollection(Txn transaction,
                                    Collection collection)
                             throws PermissionDeniedException

  Description copied from class: `DBBroker`
  Remove the collection and all its subcollections from the database.

  Specified by:
    `removeCollection` in class `DBBroker`
  Throws:
    `PermissionDeniedException`

### saveCollection

    public void saveCollection(Txn transaction,
                               Collection collection)
                        throws PermissionDeniedException

  Saves the specified collection to storage. Collections are usually cached in memory. If a collection is modified, this method needs to be called to make the changes persistent. Note: appending a new document to a collection does not require a save.

  Specified by:
    `saveCollection` in class `DBBroker`
  Parameters:
    `transaction` -
    `collection` - Collection to store
  Throws:
    `PermissionDeniedException`

### getFreeCollectionId

    public short getFreeCollectionId(Txn transaction)
                              throws ReadOnlyException

  Get the next free collection id. If a collection is removed, its collection id is released so it can be reused.

  Returns:
    next free collection id.
  Throws:
    `ReadOnlyException`

### getNextCollectionId

    public short getNextCollectionId(Txn transaction)
                              throws ReadOnlyException

  Get the next available unique collection id.

  Returns:
    next available unique collection id
  Throws:
    `ReadOnlyException`

### reindexCollection

    public void reindexCollection(XmldbURI collectionName)
                           throws PermissionDeniedException

  Description copied from class: `DBBroker`
  Reindex a collection.

  Specified by:
    `reindexCollection` in class `DBBroker`
  Parameters:
    `collectionName` -
  Throws:
    `PermissionDeniedException` - public abstract void reindexCollection(String collectionName) throws PermissionDeniedException;

### reindexCollection

    public void reindexCollection(Collection collection,
                                  boolean repairMode)
                           throws PermissionDeniedException

  Throws:
    `PermissionDeniedException`

### reindexCollection

    public void reindexCollection(Txn transaction,
                                  Collection collection,
                                  boolean repairMode)
                           throws PermissionDeniedException

  Throws:
    `PermissionDeniedException`

### dropCollectionIndex

    public void dropCollectionIndex(Collection collection)
                             throws PermissionDeniedException

  Throws:
    `PermissionDeniedException`

### storeTempResource

    public DocumentImpl storeTempResource(DocumentImpl doc)
                                   throws EXistException,
                                          PermissionDeniedException,
                                          LockException

  store into the temporary collection of the database a given in-memory Document

  Specified by:
    `storeTempResource` in class `DBBroker`
  Parameters:
    `doc` -
  Throws:
    `PermissionDeniedException`
    `LockException`
    `EXistException`

### cleanUpTempResources

    public void cleanUpTempResources()

  remove all documents from temporary collection

  Specified by:
    `cleanUpTempResources` in class `DBBroker`

### cleanUpTempResources

    public void cleanUpTempResources(java.util.List docs)

  remove from the temporary collection of the database a given list of Documents.

  Specified by:
    `cleanUpTempResources` in class `DBBroker`
  Parameters:
    `docs` -

### storeXMLResource

    public void storeXMLResource(Txn transaction,
                                 DocumentImpl doc)

  store Document entry into its collection.

  Specified by:
    `storeXMLResource` in class `DBBroker`
  Parameters:
    `doc` - the document's metadata to store.

### storeBinaryResource

    public void storeBinaryResource(Txn transaction,
                                    BinaryDocument blob,
                                    byte[] data)

  Description copied from class: `DBBroker`
  Stores the given data under the given binary resource descriptor (BinaryDocument).

  Specified by:
    `storeBinaryResource` in class `DBBroker`
  Parameters:
    `blob` - the binary document descriptor
    `data` - the document binary data

### storeBinaryResource

    public void storeBinaryResource(Txn transaction,
                                    BinaryDocument blob,
                                    java.io.InputStream is)

  Description copied from class: `DBBroker`
  Stores the given data under the given binary resource descriptor (BinaryDocument).

  Specified by:
    `storeBinaryResource` in class `DBBroker`
  Parameters:
    `blob` - the binary document descriptor
    `is` - the document binary data as input stream

### getXMLResource

    public org.w3c.dom.Document getXMLResource(XmldbURI fileName)
                                        throws PermissionDeniedException

  get a document by its file name. The document's file name is used to identify a document.

  Specified by:
    `getXMLResource` in class `DBBroker`
  Parameters:
    `fileName` - absolute file name in the database; name can be given with or without the leading path /db/shakespeare.
  Returns:
    The document value
  Throws:
    `PermissionDeniedException`

### getXMLResource

    public DocumentImpl getXMLResource(XmldbURI fileName,
                                       int lockMode)
                                throws PermissionDeniedException

  Description copied from class: `DBBroker`
  Return the document stored at the specified path. The path should be absolute, e.g. /db/shakespeare/plays/hamlet.xml, with the specified lock.

  Specified by:
    `getXMLResource` in class `DBBroker`
  Returns:
    the document or null if no document could be found at the specified location.
  Throws:
    `PermissionDeniedException`

### getBinaryResource

    public byte[] getBinaryResource(BinaryDocument blob)

  Description copied from class: `DBBroker`
  Retrieve the binary data stored under the resource descriptor BinaryDocument.

  Specified by:
    `getBinaryResource` in class `DBBroker`
  Parameters:
    `blob` - the binary document descriptor
  Returns:
    the document binary data

### readBinaryResource

    public void readBinaryResource(BinaryDocument blob,
                                   java.io.OutputStream os)

  Specified by:
    `readBinaryResource` in class `DBBroker`

### getCollectionResources

    public void getCollectionResources(Collection collection)

  Specified by:
    `getCollectionResources` in class `DBBroker`

### getXMLResourcesByDoctype

    public DocumentSet getXMLResourcesByDoctype(java.lang.String doctypeName,
                                                DocumentSet result)

  Get all the documents in this database matching the given document-type's name.

  Specified by:
    `getXMLResourcesByDoctype` in class `DBBroker`
  Returns:
    The documentsByDoctype value

### getAllXMLResources

    public DocumentSet getAllXMLResources(DocumentSet docs)

  Adds all the documents in the database to the specified DocumentSet.

  Specified by:
    `getAllXMLResources` in class `DBBroker`
  Parameters:
    `docs` - a (possibly empty) document set to which the found documents are added.

### getResourceMetadata

    public void getResourceMetadata(DocumentImpl doc)

  Specified by:
    `getResourceMetadata` in class `DBBroker`

### copyXMLResource

    public void copyXMLResource(Txn transaction,
                                DocumentImpl doc,
                                Collection destination,
                                XmldbURI newName)
                         throws PermissionDeniedException,
                                LockException

  Description copied from class: `DBBroker`
  Copy a resource to the destination collection and rename it.

  Specified by:
    `copyXMLResource` in class `DBBroker`
  Parameters:
    `doc` - the resource to copy
    `destination` - the destination collection
    `newName` - the new name the resource should have in the destination collection
  Throws:
    `LockException`
    `PermissionDeniedException`

### moveXMLResource

    public void moveXMLResource(Txn transaction,
                                DocumentImpl doc,
                                Collection destination,
                                XmldbURI newName)
                         throws PermissionDeniedException,
                                LockException

  move Resource to another collection, with possible rename

  Specified by:
    `moveXMLResource` in class `DBBroker`
  Parameters:
    `doc` - the resource to move
    `destination` - the destination collection
    `newName` - the new name the resource should have in the destination collection
  Throws:
    `PermissionDeniedException`
    `LockException`

### removeXMLResource

    public void removeXMLResource(Txn transaction,
                                  DocumentImpl document,
                                  boolean freeDocId)
                           throws PermissionDeniedException

  Specified by:
    `removeXMLResource` in class `DBBroker`
  Throws:
    `PermissionDeniedException`

### removeBinaryResource

    public void removeBinaryResource(Txn transaction,
                                     BinaryDocument blob)
                              throws PermissionDeniedException

  Description copied from class: `DBBroker`
  Completely delete this binary document (descriptor and binary data).

  Specified by:
    `removeBinaryResource` in class `DBBroker`
  Parameters:
    `blob` - the binary document descriptor
  Throws:
    `PermissionDeniedException` - if you don't have the right to do this

### getFreeResourceId

    public int getFreeResourceId(Txn transaction)
                          throws ReadOnlyException

  Get the next unused document id. If a document is removed, its doc id is released, so it can be reused.

  Returns:
    Next unused document id
  Throws:
    `ReadOnlyException`

### getNextResourceId

    public int getNextResourceId(Txn transaction,
                                 Collection collection)

  get next Free Doc Id

  Specified by:
    `getNextResourceId` in class `DBBroker`

### defragXMLResource

    public void defragXMLResource(Txn transaction,
                                  DocumentImpl doc)

  Description copied from class: `DBBroker`
  Defragment pages of this document. This will minimize the number of split pages.

  Specified by:
    `defragXMLResource` in class `DBBroker`
  Parameters:
    `doc` - to defrag

### checkXMLResourceConsistency

    public void checkXMLResourceConsistency(DocumentImpl doc)
                                     throws EXistException

  consistency Check of the database; useful after XUpdates; called if xupdate.consistency-checks is true in configuration

  Specified by:
    `checkXMLResourceConsistency` in class `DBBroker`
  Throws:
    `EXistException`

### checkXMLResourceTree

    public void checkXMLResourceTree(DocumentImpl doc)

  consistency Check of the database; useful after XUpdates; called by `checkXMLResourceConsistency(DocumentImpl)`

  Specified by:
    `checkXMLResourceTree` in class `DBBroker`
  Parameters:
    `doc` -

### storeNode

    public void storeNode(Txn transaction,
                          StoredNode node,
                          NodePath currentPath,
                          boolean fullTextIndex)

  Store a node into the database. This method is called by the parser to write a node to the storage backend.

  Specified by:
    `storeNode` in class `DBBroker`
  Parameters:
    `node` - the node to be stored
    `currentPath` - path expression which points to this node's element-parent or to itself if it is an element (currently used by the Broker to determine if a node's content should be fulltext-indexed). @param index switch to activate fulltext indexation

### updateNode

    public void updateNode(Txn transaction,
                           StoredNode node)

  Description copied from class: `DBBroker`
  Update a node's data. To keep nodes in a correct sequential order, it is sometimes necessary to update a previous written node. Warning: don't use it for other purposes.

  Specified by:
    `updateNode` in class `DBBroker`
  Parameters:
    `node` - Description of the Parameter

### insertNodeAfter

    public void insertNodeAfter(Txn transaction,
                                StoredNode previous,
                                StoredNode node)

  Physically insert a node into the DOM storage.

  Specified by:
    `insertNodeAfter` in class `DBBroker`

### removeNode

    public void removeNode(Txn transaction,
                           StoredNode node,
                           NodePath currentPath,
                           java.lang.String content)

  Removes the Node Reference from the database. The index will be updated later, i.e. after all nodes have been physically removed. See `endRemove()`. removeNode() just adds the node ids to the list in elementIndex for later removal.

  Specified by:
    `removeNode` in class `DBBroker`

### removeAllNodes

    public void removeAllNodes(Txn transaction,
                               StoredNode node,
                               NodePath currentPath)

  Specified by:
    `removeAllNodes` in class `DBBroker`

### indexNode

    public void indexNode(Txn transaction,
                          StoredNode node,
                          NodePath currentPath)

  Index a single node, which has been added through an XUpdate operation. This method is only called if inserting the node is possible without changing the node identifiers of sibling or parent nodes. In other cases, reindex will be called.

  Specified by:
    `indexNode` in class `DBBroker`

### indexNode

    public void indexNode(Txn transaction,
                          StoredNode node,
                          NodePath currentPath,
                          boolean repairMode)

### getNodeValue

    public java.lang.String getNodeValue(StoredNode node,
                                         boolean addWhitespace)

  Description copied from class: `DBBroker`
  Get the string value of the specified node. If addWhitespace is set to true, an extra space character will be added between adjacent elements in mixed content nodes.

  Overrides:
    `getNodeValue` in class `DBBroker`

### getNodesEqualTo

    public NodeSet getNodesEqualTo(NodeSet context,
                                   DocumentSet docs,
                                   int relation,
                                   int truncation,
                                   java.lang.String expr,
                                   java.text.Collator collator)

  Description copied from class: `DBBroker`
  Find all Nodes whose string value is equal to expr in the document set.

  Specified by:
    `getNodesEqualTo` in class `DBBroker`
  Parameters:
    `context` - the set of nodes to process
    `docs` - the current set of documents
    `relation` - less-than, equal etc. One of the constants specified in `Constants`
    `expr` - the string value to search for

### objectWith

    public StoredNode objectWith(org.w3c.dom.Document doc,
                                 NodeId nodeId)

  Description copied from class: `DBBroker`
  Get a node with given owner document and id from the database.

  Specified by:
    `objectWith` in class `DBBroker`
  Parameters:
    `doc` - the document the node belongs to
    `nodeId` - the node's unique identifier

### objectWith

    public StoredNode objectWith(NodeProxy p)

  Specified by:
    `objectWith` in class `DBBroker`

### repair

    public void repair()
                throws PermissionDeniedException

  Specified by:
    `repair` in class `DBBroker`
  Throws:
    `PermissionDeniedException`

### flush

    public void flush()

  Description copied from class: `DBBroker`
  Flush all data that has not been written before.

  Overrides:
    `flush` in class `DBBroker`

### sync

    public void sync(int syncEvent)

  Description copied from class: `DBBroker`
  Sync dom and collection state data (pages) to disk. In case of `Sync.MAJOR_SYNC`, sync all states (dom, collection, text and element) to disk.

  Specified by:
    `sync` in class `DBBroker`
  Parameters:
    `syncEvent` - Sync.MAJOR_SYNC or Sync.MINOR_SYNC

### shutdown

    public void shutdown()

  Description copied from class: `DBBroker`
  Shut down the database instance. All open files, jdbc connections etc. should be closed.

  Overrides:
    `shutdown` in class `DBBroker`

### closeDocument

    public void closeDocument()

  Overrides:
    `closeDocument` in class `DBBroker`

Copyright (C) Wolfgang Meier. All rights reserved.