|
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.util.Observable
org.exist.storage.DBBroker
org.exist.storage.NativeBroker
public class NativeBroker
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 :
Nested Class Summary | |
---|---|
static class |
NativeBroker.NodeRef
|
Field Summary | |
---|---|
static int |
BUFFERS
default buffer size setting |
static byte |
COLLECTIONS_DBX_ID
|
static 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 byte |
DOM_DBX_ID
|
static byte |
ELEMENTS_DBX_ID
|
static String |
INDEX_DEPTH_ATTRIBUTE
|
static int |
OFFSET_COLLECTION_ID
|
static int |
OFFSET_VALUE
|
static String |
PAGE_SIZE_ATTRIBUTE
|
static byte |
PREPEND_DB_ALWAYS
|
static byte |
PREPEND_DB_AS_NEEDED
|
static byte |
PREPEND_DB_NEVER
|
static String |
PROPERTY_INDEX_DEPTH
|
static long |
TEMP_FRAGMENT_TIMEOUT
|
static byte |
VALUES_DBX_ID
|
Constructor Summary | |
---|---|
NativeBroker(BrokerPool pool,
Configuration config)
initialize database; read configuration, etc. |
Method Summary | |
---|---|
void |
addObserver(Observer o)
|
void |
backupToArchive(RawDataBackup backup)
|
void |
checkAvailableMemory()
check available memory |
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 |
cleanUpTempResources()
remove all documents from temporary collection |
void |
cleanUpTempResources(boolean forceRemoval)
remove all documents from temporary collection |
void |
closeDocument()
|
void |
copyCollection(Txn transaction,
Collection collection,
Collection destination,
XmldbURI newUri)
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(Txn transaction,
Collection collection)
|
void |
endElement(StoredNode node,
NodePath currentPath,
String content,
boolean remove)
Update indexes for the given element node. |
void |
endRemove(Txn transaction)
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. |
byte[] |
getBinaryResource(BinaryDocument blob)
Retrieve the binary data stored under the resource descriptor BinaryDocument. |
Collection |
getCollection(XmldbURI uri)
Returns the database collection identified by the specified path. |
void |
getCollectionResources(Collection collection)
|
void |
getCollectionsFailsafe(BTreeCallback callback)
|
int |
getDefaultIndexDepth()
|
DOMFile |
getDOMFile()
|
ElementIndex |
getElementIndex()
|
int |
getFreeCollectionId(Txn transaction)
Get the next free collection id. |
int |
getFreeResourceId(Txn transaction)
Get the next unused document id. |
IndexSpec |
getIndexConfiguration()
|
int |
getNextCollectionId(Txn transaction)
Get the next available unique collection id. |
int |
getNextResourceId(Txn transaction,
Collection collection)
Get a new document id that does not yet exist within the collection. |
int |
getNextResourceId(Txn transaction,
Collection collection,
boolean reuseOld)
get next Free Doc Id |
Iterator |
getNodeIterator(StoredNode node)
Return a NodeIterator starting at the
specified node. |
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. |
void |
getResourceMetadata(DocumentImpl document)
|
void |
getResourcesFailsafe(BTreeCallback callback)
|
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()
|
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(String doctypeName,
DocumentSet result)
Get all the documents in this database matching the given document-type's name. |
EmbeddedXMLStreamReader |
getXMLStreamReader(NodeProxy proxy,
boolean reportAttributes)
|
EmbeddedXMLStreamReader |
getXMLStreamReader(StoredNode node,
boolean reportAttributes)
|
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,
int 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(Document doc,
NodeId nodeId)
Get a node with given owner document and id from the database. |
StoredNode |
objectWith(NodeProxy p)
|
Collection |
openCollection(XmldbURI uri,
int lockMode)
Open a collection for reading or writing. |
XmldbURI |
prepend(XmldbURI uri)
|
void |
readBinaryResource(BinaryDocument blob,
OutputStream os)
|
void |
reindexCollection(Collection collection,
int mode)
|
void |
reindexCollection(Txn transaction,
Collection collection,
int mode)
|
void |
reindexCollection(XmldbURI collectionName)
Reindex a collection. |
void |
removeAllNodes(Txn transaction,
StoredNode node,
NodePath currentPath,
StreamListener listener)
|
void |
removeBinaryResource(Txn transaction,
BinaryDocument blob)
Completely delete this binary document (descriptor and binary data). |
boolean |
removeCollection(Txn transaction,
Collection collection)
Removes a collection and all child collections and resources |
void |
removeNode(Txn transaction,
StoredNode node,
NodePath currentPath,
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,
InputStream is)
Stores the given data under the given binary resource descriptor (BinaryDocument). |
void |
storeNode(Txn transaction,
StoredNode node,
NodePath currentPath,
IndexSpec indexSpec,
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 The in-memory Document is stored without a transaction and is not journalled, if there is no temporary collection, this will first be created with a transaction |
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,
boolean reindex)
Update a node's data. |
Methods inherited from class org.exist.storage.DBBroker |
---|
addContentLoadingObserver, clearContentLoadingObservers, decReferenceCount, endElement, getBrokerPool, getConfiguration, getId, getIndexController, getReferenceCount, getUser, getXQueryService, incReferenceCount, indexNode, initIndexModules, removeContentLoadingObserver, 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 |
---|
public static final byte PREPEND_DB_ALWAYS
public static final byte PREPEND_DB_NEVER
public static final byte PREPEND_DB_AS_NEEDED
public static final byte COLLECTIONS_DBX_ID
public static final byte ELEMENTS_DBX_ID
public static final byte VALUES_DBX_ID
public static final byte DOM_DBX_ID
public static final String PAGE_SIZE_ATTRIBUTE
public static final String INDEX_DEPTH_ATTRIBUTE
public static final String PROPERTY_INDEX_DEPTH
public static final String DEFAULT_DATA_DIR
public static final int DEFAULT_INDEX_DEPTH
public static final int DEFAULT_MIN_MEMORY
public static final long TEMP_FRAGMENT_TIMEOUT
public static final int BUFFERS
public static final int DEFAULT_NODES_BEFORE_MEMORY_CHECK
public static int OFFSET_COLLECTION_ID
public static int OFFSET_VALUE
Constructor Detail |
---|
public NativeBroker(BrokerPool pool, Configuration config) throws EXistException
EXistException
Method Detail |
---|
public void addObserver(Observer o)
addObserver
in class Observable
public void deleteObservers()
deleteObservers
in class Observable
public void endElement(StoredNode node, NodePath currentPath, String content, boolean remove)
endElement
in class DBBroker
node
- the current element nodecurrentPath
- node path leading to the elementcontent
- contains the string value of the element. Needed if a range index
is defined on it.public void endRemove(Txn transaction)
removeNode(Txn, StoredNode, NodePath, String)
.
endRemove
in class DBBroker
public boolean isReadOnly()
DBBroker
isReadOnly
in class DBBroker
public DOMFile getDOMFile()
public BTree getStorage(byte id)
public byte[] getStorageFileIds()
public int getDefaultIndexDepth()
public void backupToArchive(RawDataBackup backup) throws IOException
backupToArchive
in class DBBroker
IOException
public IndexSpec getIndexConfiguration()
getIndexConfiguration
in class DBBroker
public ElementIndex getElementIndex()
getElementIndex
in class DBBroker
public NativeValueIndex getValueIndex()
getValueIndex
in class DBBroker
public TextSearchEngine getTextEngine()
DBBroker
getTextEngine
in class DBBroker
public EmbeddedXMLStreamReader getXMLStreamReader(StoredNode node, boolean reportAttributes) throws IOException, XMLStreamException
getXMLStreamReader
in class DBBroker
IOException
XMLStreamException
public EmbeddedXMLStreamReader getXMLStreamReader(NodeProxy proxy, boolean reportAttributes) throws IOException, XMLStreamException
getXMLStreamReader
in class DBBroker
IOException
XMLStreamException
public Iterator getNodeIterator(StoredNode node)
DBBroker
NodeIterator
starting at the
specified node.
getNodeIterator
in class DBBroker
public Serializer getSerializer()
DBBroker
getSerializer
in class DBBroker
public Serializer newSerializer()
newSerializer
in class DBBroker
public XmldbURI prepend(XmldbURI uri)
public Collection getOrCreateCollection(Txn transaction, XmldbURI name) throws PermissionDeniedException, IOException
DBBroker
getOrCreateCollection
in class DBBroker
transaction
- The transaction, which registers the acquired write locks. The locks should be released on commit/abort.name
- The collection's URI
null
if no collection matches the path
PermissionDeniedException
IOException
public Collection getCollection(XmldbURI uri)
DBBroker
getCollection
in class DBBroker
public Collection openCollection(XmldbURI uri, int lockMode)
DBBroker
openCollection
in class DBBroker
uri
- The collection pathlockMode
- one of the modes specified in class
Lock
public void copyCollection(Txn transaction, Collection collection, Collection destination, XmldbURI newUri) throws PermissionDeniedException, LockException, IOException
DBBroker
copyCollection
in class DBBroker
transaction
- The transaction, which registers the acquired write locks. The locks should be released on commit/abort.collection
- The origin collectiondestination
- The destination parent collectionnewUri
- The new name of the collection
PermissionDeniedException
LockException
IOException
public void moveCollection(Txn transaction, Collection collection, Collection destination, XmldbURI newName) throws PermissionDeniedException, LockException, IOException
DBBroker
moveCollection
in class DBBroker
collection
- the collection to movedestination
- the destination collectionnewName
- the new name the collection should have in the destination
collection
PermissionDeniedException
LockException
IOException
public boolean removeCollection(Txn transaction, Collection collection) throws PermissionDeniedException, IOException
removeCollection
in class DBBroker
transaction
- the transaction to usecollection
- the collection to remove
PermissionDeniedException
IOException
public void saveCollection(Txn transaction, Collection collection) throws PermissionDeniedException, IOException
saveCollection
in class DBBroker
collection
- Collection to store
PermissionDeniedException
IOException
public int getFreeCollectionId(Txn transaction) throws ReadOnlyException
ReadOnlyException
public int getNextCollectionId(Txn transaction) throws ReadOnlyException
ReadOnlyException
public void reindexCollection(XmldbURI collectionName) throws PermissionDeniedException
DBBroker
reindexCollection
in class DBBroker
PermissionDeniedException
- public abstract void reindexCollection(String collectionName) throws
PermissionDeniedException;public void reindexCollection(Collection collection, int mode) throws PermissionDeniedException
PermissionDeniedException
public void reindexCollection(Txn transaction, Collection collection, int mode) throws PermissionDeniedException
PermissionDeniedException
public void dropCollectionIndex(Txn transaction, Collection collection) throws PermissionDeniedException
PermissionDeniedException
public DocumentImpl storeTempResource(DocumentImpl doc) throws EXistException, PermissionDeniedException, LockException
storeTempResource
in class DBBroker
doc
- The in-memory Document to store
EXistException
PermissionDeniedException
LockException
public void cleanUpTempResources()
cleanUpTempResources
in class DBBroker
public void cleanUpTempResources(boolean forceRemoval)
cleanUpTempResources
in class DBBroker
forceRemoval
- Should temporary resources be forcefully removedpublic void storeXMLResource(Txn transaction, DocumentImpl doc)
storeXMLResource
in class DBBroker
doc
- the document's metadata to store.public void storeBinaryResource(Txn transaction, BinaryDocument blob, byte[] data)
DBBroker
storeBinaryResource
in class DBBroker
blob
- the binary document descriptordata
- the document binary datapublic void storeBinaryResource(Txn transaction, BinaryDocument blob, InputStream is)
DBBroker
storeBinaryResource
in class DBBroker
blob
- the binary document descriptoris
- the document binary data as input streampublic Document getXMLResource(XmldbURI fileName) throws PermissionDeniedException
getXMLResource
in class DBBroker
fileName
- absolute file name in the database;
name can be given with or without the leading path /db/shakespeare.
PermissionDeniedException
public DocumentImpl getXMLResource(XmldbURI fileName, int lockMode) throws PermissionDeniedException
DBBroker
getXMLResource
in class DBBroker
PermissionDeniedException
public byte[] getBinaryResource(BinaryDocument blob)
DBBroker
getBinaryResource
in class DBBroker
blob
- the binary document descriptor
public void readBinaryResource(BinaryDocument blob, OutputStream os)
readBinaryResource
in class DBBroker
public void getCollectionResources(Collection collection)
getCollectionResources
in class DBBroker
public void getResourcesFailsafe(BTreeCallback callback)
getResourcesFailsafe
in class DBBroker
public void getCollectionsFailsafe(BTreeCallback callback)
getCollectionsFailsafe
in class DBBroker
public DocumentSet getXMLResourcesByDoctype(String doctypeName, DocumentSet result)
getXMLResourcesByDoctype
in class DBBroker
public DocumentSet getAllXMLResources(DocumentSet docs)
getAllXMLResources
in class DBBroker
docs
- a (possibly empty) document set to which the found
documents are added.public void getResourceMetadata(DocumentImpl document)
getResourceMetadata
in class DBBroker
public void copyXMLResource(Txn transaction, DocumentImpl doc, Collection destination, XmldbURI newName) throws PermissionDeniedException, LockException
DBBroker
copyXMLResource
in class DBBroker
doc
- the resource to copydestination
- the destination collectionnewName
- the new name the resource should have in the destination
collection
PermissionDeniedException
LockException
public void moveXMLResource(Txn transaction, DocumentImpl doc, Collection destination, XmldbURI newName) throws PermissionDeniedException, LockException, IOException
moveXMLResource
in class DBBroker
doc
- the resource to movedestination
- the destination collectionnewName
- the new name the resource should have in the destination
collection
PermissionDeniedException
LockException
IOException
public void removeXMLResource(Txn transaction, DocumentImpl document, boolean freeDocId) throws PermissionDeniedException
removeXMLResource
in class DBBroker
PermissionDeniedException
public void removeBinaryResource(Txn transaction, BinaryDocument blob) throws PermissionDeniedException
DBBroker
removeBinaryResource
in class DBBroker
blob
- the binary document descriptor
PermissionDeniedException
- if you don't have the right to do thispublic int getFreeResourceId(Txn transaction) throws ReadOnlyException
ReadOnlyException
public int getNextResourceId(Txn transaction, Collection collection)
DBBroker
getNextResourceId
in class DBBroker
public int getNextResourceId(Txn transaction, Collection collection, boolean reuseOld)
public void defragXMLResource(Txn transaction, DocumentImpl doc)
DBBroker
defragXMLResource
in class DBBroker
doc
- to defragpublic void checkXMLResourceConsistency(DocumentImpl doc) throws EXistException
checkXMLResourceConsistency
in class DBBroker
EXistException
public void checkXMLResourceTree(DocumentImpl doc)
checkXMLResourceConsistency(DocumentImpl)
checkXMLResourceTree
in class DBBroker
public void storeNode(Txn transaction, StoredNode node, NodePath currentPath, IndexSpec indexSpec, boolean fullTextIndex)
storeNode
in class DBBroker
node
- the node to be storedcurrentPath
- 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 indexationpublic void updateNode(Txn transaction, StoredNode node, boolean reindex)
DBBroker
updateNode
in class DBBroker
node
- Description of the Parameterpublic void insertNodeAfter(Txn transaction, StoredNode previous, StoredNode node)
insertNodeAfter
in class DBBroker
public void removeNode(Txn transaction, StoredNode node, NodePath currentPath, String content)
endRemove(org.exist.storage.txn.Txn)
.
removeNode() just adds the node ids to the list in elementIndex
for later removal.
removeNode
in class DBBroker
public void removeAllNodes(Txn transaction, StoredNode node, NodePath currentPath, StreamListener listener)
removeAllNodes
in class DBBroker
public void indexNode(Txn transaction, StoredNode node, NodePath currentPath)
indexNode
in class DBBroker
public void indexNode(Txn transaction, StoredNode node, NodePath currentPath, int repairMode)
public String getNodeValue(StoredNode node, boolean addWhitespace)
DBBroker
getNodeValue
in class DBBroker
public StoredNode objectWith(Document doc, NodeId nodeId)
DBBroker
objectWith
in class DBBroker
doc
- the document the node belongs tonodeId
- the node's unique identifierpublic StoredNode objectWith(NodeProxy p)
objectWith
in class DBBroker
public void repair() throws PermissionDeniedException
repair
in class DBBroker
PermissionDeniedException
public void flush()
DBBroker
flush
in class DBBroker
public void sync(int syncEvent)
DBBroker
Sync.MAJOR_SYNC
, sync all states (dom,
collection, text and element) to disk.
sync
in class DBBroker
syncEvent
- Sync.MAJOR_SYNC or Sync.MINOR_SYNCpublic void shutdown()
DBBroker
shutdown
in class DBBroker
public void checkAvailableMemory()
checkAvailableMemory
in class DBBroker
public void closeDocument()
closeDocument
in class DBBroker
|
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |