org.exist.collections.triggers
Class HistoryTrigger

java.lang.Object
  extended by org.exist.collections.triggers.FilteringTrigger
      extended by org.exist.collections.triggers.HistoryTrigger
All Implemented Interfaces:
DocumentTrigger, Trigger, ContentHandler, LexicalHandler

public class HistoryTrigger
extends FilteringTrigger
implements DocumentTrigger

This collection trigger will save all old versions of documents before they are overwritten or removed. The old versions are kept in the 'history root' which is by default '/db/history', but can be changed with the parameter 'root'. You need to configure this trigger for every collection whose history you want to preserve, by modifying 'collection.xconf' such that it resembles this:

   <?xml version='1.0'?>
   <collection xmlns='http://exist-db.org/collection-config/1.0'>
     <triggers>
       <trigger 
         event='update'
         class='org.exist.collections.triggers.HistoryTrigger'
       />
       <trigger
         event='remove'
         class='org.exist.collections.triggers.HistoryTrigger'
       />
     </triggers>
   </collection>
 

Author:
Mark Spanbroek
See Also:
Trigger

Field Summary
 
Fields inherited from interface org.exist.collections.triggers.Trigger
CREATE_COLLECTION_EVENT, DELETE_COLLECTION_EVENT, REMOVE_DOCUMENT_EVENT, RENAME_COLLECTION_EVENT, STORE_DOCUMENT_EVENT, UPDATE_DOCUMENT_EVENT
 
Constructor Summary
HistoryTrigger()
           
 
Method Summary
 void configure(DBBroker broker, Collection parent, Map parameters)
          Configure the trigger.
 void finish(int event, DBBroker broker, Txn transaction, XmldbURI documentPath, DocumentImpl document)
          This method is called after the operation completed.
 void prepare(int event, DBBroker broker, Txn transaction, XmldbURI documentName, DocumentImpl doc)
          This method is called once before the database will actually parse the input data.
 
Methods inherited from class org.exist.collections.triggers.FilteringTrigger
characters, comment, endCDATA, endDocument, endDTD, endElement, endEntity, endPrefixMapping, getCollection, getInputHandler, getLexicalInputHandler, getLexicalOutputHandler, getLogger, getOutputHandler, ignorableWhitespace, isValidating, processingInstruction, setDocumentLocator, setLexicalOutputHandler, setOutputHandler, setValidating, skippedEntity, startCDATA, startDocument, startDTD, startElement, startEntity, startPrefixMapping
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.exist.collections.triggers.DocumentTrigger
getInputHandler, getLexicalInputHandler, getLexicalOutputHandler, getOutputHandler, isValidating, setLexicalOutputHandler, setOutputHandler, setValidating
 
Methods inherited from interface org.exist.collections.triggers.Trigger
getLogger
 
Methods inherited from interface org.xml.sax.ContentHandler
characters, endDocument, endElement, endPrefixMapping, ignorableWhitespace, processingInstruction, setDocumentLocator, skippedEntity, startDocument, startElement, startPrefixMapping
 
Methods inherited from interface org.xml.sax.ext.LexicalHandler
comment, endCDATA, endDTD, endEntity, startCDATA, startDTD, startEntity
 

Constructor Detail

HistoryTrigger

public HistoryTrigger()
Method Detail

configure

public void configure(DBBroker broker,
                      Collection parent,
                      Map parameters)
               throws CollectionConfigurationException
Description copied from class: FilteringTrigger
Configure the trigger. The default implementation just stores the parent collection reference into the field collection. Use method getCollection to later retrieve the collection.

Specified by:
configure in interface Trigger
Overrides:
configure in class FilteringTrigger
Parameters:
broker - the database instance used to load the collection configuration. The broker object is required for all database actions. Please note: the broker instance used for configuration is probably different from the one passed to the prepare method. Don't store the broker object in your class.
parent - the collection to which this trigger belongs.
parameters - a Map containing any key/value parameters defined in the configuration file.
Throws:
CollectionConfigurationException - if the trigger cannot be initialized.

prepare

public void prepare(int event,
                    DBBroker broker,
                    Txn transaction,
                    XmldbURI documentName,
                    DocumentImpl doc)
             throws TriggerException
Description copied from interface: DocumentTrigger
This method is called once before the database will actually parse the input data. You may take any action here, using the supplied broker instance.

Specified by:
prepare in interface DocumentTrigger
Parameters:
event - the type of event that triggered this call (see the constants defined in this interface). The ContentHandler instance for the output.
broker - the database instance used to process the current action.
transaction - the current transaction context
documentName - the full absolute path of the document currently processed.
doc - optional: if event is a Trigger.UPDATE_DOCUMENT_EVENT, existingDocument will contain the Document object for the old document, which will be overwritten. Otherwise, the parameter is null.
Throws:
TriggerException - throwing a TriggerException will abort the current action.

finish

public void finish(int event,
                   DBBroker broker,
                   Txn transaction,
                   XmldbURI documentPath,
                   DocumentImpl document)
Description copied from interface: DocumentTrigger
This method is called after the operation completed. At this point, the document has already been stored.

Specified by:
finish in interface DocumentTrigger
Overrides:
finish in class FilteringTrigger
Parameters:
event - the type of event that triggered this call (see the constants defined in this interface).
broker - the database instance used to process the current action.
transaction - the current transaction context
documentPath - the path of the document, if removed the old path of the document
document - the stored document or null if the document is removed


Copyright (C) Wolfgang Meier. All rights reserved.