## org.exist.collections.triggers
Class HistoryTrigger

    java.lang.Object
      org.exist.collections.triggers.FilteringTrigger
          org.exist.collections.triggers.HistoryTrigger

All Implemented Interfaces:
  org.xml.sax.ContentHandler, DocumentTrigger, org.xml.sax.ext.LexicalHandler, Trigger

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, java.util.Map parameters)` The configure method is called once whenever the collection configuration is loaded.
`void` `finish(int event, DBBroker broker, Txn transaction, 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,
                          java.util.Map parameters)
                   throws CollectionConfigurationException

  Description copied from interface: `Trigger`
  The configure method is called once whenever the collection configuration is loaded. Use it to initialize the trigger, probably by looking at the parameters.

  Specified by:
    `configure` in interface `Trigger`
  Overrides:
    `configure` in class `FilteringTrigger`
  Throws:
    `CollectionConfigurationException`

### 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,
                       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`

Copyright (C) Wolfgang Meier. All rights reserved.