org.fcrepo.server.journal.readerwriter.multifile
Class MultiFileJournalWriter

java.lang.Object
  extended by org.fcrepo.server.journal.xmlhelpers.AbstractXmlWriter
      extended by org.fcrepo.server.journal.JournalWriter
          extended by org.fcrepo.server.journal.readerwriter.multifile.MultiFileJournalWriter
All Implemented Interfaces:
JournalConstants, MultiFileJournalConstants

public class MultiFileJournalWriter
extends JournalWriter
implements MultiFileJournalConstants

An implementation of JournalWriter that writes a series of Journal files to a specified directory. New files are begun when the current file becomes too large or too old.

Author:
Jim Blake

Field Summary
 
Fields inherited from class org.fcrepo.server.journal.JournalWriter
parameters, role, server, SYNCHRONIZER
 
Fields inherited from interface org.fcrepo.server.journal.readerwriter.multifile.MultiFileJournalConstants
DEFAULT_FOLLOW_POLLING_INTERVAL, PARAMETER_ARCHIVE_DIRECTORY, PARAMETER_FOLLOW_POLLING_INTERVAL, PARAMETER_JOURNAL_DIRECTORY, PARAMETER_LOCK_ACCEPTED_FILENAME, PARAMETER_LOCK_REQUESTED_FILENAME, PARAMETER_PAUSE_BEFORE_POLLING
 
Fields inherited from interface org.fcrepo.server.journal.JournalConstants
ARGUMENT_NAME_ALT_IDS, ARGUMENT_NAME_CHECKSUM, ARGUMENT_NAME_CHECKSUM_TYPE, ARGUMENT_NAME_CONTEXT, ARGUMENT_NAME_CONTROL_GROUP, ARGUMENT_NAME_DATATYPE, ARGUMENT_NAME_DISSEMINATOR_ID, ARGUMENT_NAME_DISSEMINATOR_LABEL, ARGUMENT_NAME_DISSEMINATOR_STATE, ARGUMENT_NAME_DS_CONTENT, ARGUMENT_NAME_DS_ID, ARGUMENT_NAME_DS_LABEL, ARGUMENT_NAME_DS_LOCATION, ARGUMENT_NAME_DS_STATE, ARGUMENT_NAME_ENCODING, ARGUMENT_NAME_END_DATE, ARGUMENT_NAME_FORCE, ARGUMENT_NAME_FORMAT, ARGUMENT_NAME_FORMAT_URI, ARGUMENT_NAME_IN, ARGUMENT_NAME_IS_LITERAL, ARGUMENT_NAME_LABEL, ARGUMENT_NAME_LAST_MODIFIED_DATE, ARGUMENT_NAME_LOCATION, ARGUMENT_NAME_LOG_MESSAGE, ARGUMENT_NAME_MIME_TYPE, ARGUMENT_NAME_NAMESPACE, ARGUMENT_NAME_NEW_PID, ARGUMENT_NAME_NUM_PIDS, ARGUMENT_NAME_OBJECT, ARGUMENT_NAME_OWNERID, ARGUMENT_NAME_PID, ARGUMENT_NAME_RELATIONSHIP, ARGUMENT_NAME_SERIALIZATION, ARGUMENT_NAME_START_DATE, ARGUMENT_NAME_STATE, ARGUMENT_NAME_VERSION_DATE, ARGUMENT_NAME_VERSIONABLE, ARGUMENT_TYPE_BINDING_MAP, ARGUMENT_TYPE_BOOLEAN, ARGUMENT_TYPE_DATE, ARGUMENT_TYPE_INTEGER, ARGUMENT_TYPE_NULL, ARGUMENT_TYPE_STREAM, ARGUMENT_TYPE_STRING, ARGUMENT_TYPE_STRINGARRAY, CONTEXT_MAPNAME_ACTION, CONTEXT_MAPNAME_ENVIRONMENT, CONTEXT_MAPNAME_RECOVERY, CONTEXT_MAPNAME_RESOURCE, CONTEXT_MAPNAME_SUBJECT, DEFAULT_AGE_LIMIT, DEFAULT_FILENAME_PREFIX, DEFAULT_SIZE_LIMIT, DOCUMENT_ENCODING, DOCUMENT_VERSION, FORMAT_JOURNAL_FILENAME_TIMESTAMP, METHOD_ADD_DATASTREAM, METHOD_ADD_DISSEMINATOR, METHOD_ADD_RELATIONSHIP, METHOD_GET_NEXT_PID, METHOD_INGEST, METHOD_MODIFY_DATASTREAM_BY_REFERENCE, METHOD_MODIFY_DATASTREAM_BY_VALUE, METHOD_MODIFY_DISSEMINATOR, METHOD_MODIFY_OBJECT, METHOD_PURGE_DATASTREAM, METHOD_PURGE_DISSEMINATOR, METHOD_PURGE_OBJECT, METHOD_PURGE_RELATIONSHIP, METHOD_PUT_TEMP_STREAM, METHOD_SET_DATASTREAM_STATE, METHOD_SET_DATASTREAM_VERSIONABLE, METHOD_SET_DISSEMINATOR_STATE, PARAMETER_IGNORE_HASH, PARAMETER_JOURNAL_FILE_AGE_LIMIT, PARAMETER_JOURNAL_FILE_SIZE_LIMIT, PARAMETER_JOURNAL_FILENAME_PREFIX, PARAMETER_JOURNAL_MODE, PARAMETER_JOURNAL_READER_CLASSNAME, PARAMETER_JOURNAL_RECOVERY_LOG_CLASSNAME, PARAMETER_JOURNAL_WRITER_CLASSNAME, PARAMETER_RECOVERY_LOG_FILENAME, PARAMETER_RECOVERY_LOG_LEVEL, PASSWORD_CIPHER_TYPE, QNAME_ATTR_BIND_KEY_NAME, QNAME_ATTR_BIND_LABEL, QNAME_ATTR_CLIENT_IP, QNAME_ATTR_DATASTREAM_ID, QNAME_ATTR_DS_BIND_MAP_ID, QNAME_ATTR_DS_BIND_MAP_LABEL, QNAME_ATTR_DS_BIND_MECHANISM_PID, QNAME_ATTR_LOGIN_ID, QNAME_ATTR_METHOD, QNAME_ATTR_NAME, QNAME_ATTR_PASSWORD_TYPE, QNAME_ATTR_REPOSITORY_HASH, QNAME_ATTR_SEQ_NO, QNAME_ATTR_STATE, QNAME_ATTR_TIMESTAMP, QNAME_ATTR_TYPE, QNAME_ATTR_USERID, QNAME_TAG_ARGUMENT, QNAME_TAG_ARRAYELEMENT, QNAME_TAG_CONTEXT, QNAME_TAG_DS_BINDING, QNAME_TAG_DS_BINDING_MAP, QNAME_TAG_JOURNAL, QNAME_TAG_JOURNAL_ENTRY, QNAME_TAG_MULTI_VALUE_MAP, QNAME_TAG_MULTI_VALUE_MAP_KEY, QNAME_TAG_MULTI_VALUE_MAP_VALUE, QNAME_TAG_NOOP, QNAME_TAG_NOW, QNAME_TAG_PASSWORD, SYSTEM_PROPERTY_PREFIX, TIMESTAMP_FORMAT, VALUE_FALSE, VALUE_JOURNAL_MODE_NORMAL, VALUE_JOURNAL_MODE_RECOVER, VALUE_RECOVERY_LOG_LEVEL_HIGH, VALUE_RECOVERY_LOG_LEVEL_LOW, VALUE_RECOVERY_LOG_LEVEL_MEDIUM, VALUE_TRUE
 
Constructor Summary
MultiFileJournalWriter(Map<String,String> parameters, String role, ServerInterface server)
          Parse the parameters to find out how we are operating.
 
Method Summary
 void prepareToWriteJournalEntry()
          Before writing an entry, check to see whether we need to close the current file and/or open a new one.
 void shutdown()
          Close the current journal file.
 String toString()
          Create an informative message for debugging purposes.
 void writeJournalEntry(CreatorJournalEntry journalEntry)
          We've prepared for the entry, so just write it, but remember to synchronize on the file, so we don't get an asynchronous close while we're writing.
 
Methods inherited from class org.fcrepo.server.journal.JournalWriter
getInstance, writeDocumentHeader, writeDocumentHeader, writeDocumentTrailer, writeJournalEntry
 
Methods inherited from class org.fcrepo.server.journal.xmlhelpers.AbstractXmlWriter
putAttribute, putAttributeIfNotNull, putCharacters, putEndDocument, putEndTag, putStartDocument, putStartTag
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

MultiFileJournalWriter

public MultiFileJournalWriter(Map<String,String> parameters,
                              String role,
                              ServerInterface server)
                       throws JournalException
Parse the parameters to find out how we are operating.

Throws:
JournalException
Method Detail

prepareToWriteJournalEntry

public void prepareToWriteJournalEntry()
                                throws JournalException
Before writing an entry, check to see whether we need to close the current file and/or open a new one.

Specified by:
prepareToWriteJournalEntry in class JournalWriter
Throws:
JournalException

writeJournalEntry

public void writeJournalEntry(CreatorJournalEntry journalEntry)
                       throws JournalException
We've prepared for the entry, so just write it, but remember to synchronize on the file, so we don't get an asynchronous close while we're writing. After writing the entry, flush the file.

Specified by:
writeJournalEntry in class JournalWriter
Throws:
JournalException

shutdown

public void shutdown()
              throws JournalException
Close the current journal file.

Specified by:
shutdown in class JournalWriter
Throws:
JournalException

toString

public String toString()
Create an informative message for debugging purposes.

Overrides:
toString in class Object


Copyright © 2012 DuraSpace. All Rights Reserved.