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

java.lang.Object
  extended by org.fcrepo.server.journal.xmlhelpers.AbstractXmlReader
      extended by org.fcrepo.server.journal.JournalReader
          extended by org.fcrepo.server.journal.readerwriter.multifile.MultiFileJournalReader
All Implemented Interfaces:
JournalConstants, MultiFileJournalConstants
Direct Known Subclasses:
LockingFollowingJournalReader, MultiFileFollowingJournalReader

public class MultiFileJournalReader
extends JournalReader
implements MultiFileJournalConstants

A JournalReader implementation for "recovering", when using a MultiFileJournalWriter, or the equivalent.

The recovery is complete when the all of the files in the journal directory have been processed and moved to the archive directory.

Author:
Jim Blake

Field Summary
protected  org.fcrepo.server.journal.readerwriter.multifile.JournalInputFile currentFile
           
protected  boolean open
           
 
Fields inherited from class org.fcrepo.server.journal.JournalReader
parameters, recoveryLog, role, server
 
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
MultiFileJournalReader(Map<String,String> parameters, String role, JournalRecoveryLog recoveryLog, ServerInterface server)
           
 
Method Summary
protected  org.fcrepo.server.journal.readerwriter.multifile.JournalInputFile openNextFile()
          Look in the directory for files that match the prefix.
 ConsumerJournalEntry readJournalEntry()
          Concrete sub-classes should insure that their XMLEventReader is positioned at the beginning of a JournalEntry, and call JournalReader.readJournalEntry(XMLEventReader).
 void shutdown()
          Concrete sub-classes should probably synchronize this method, since it can be called either from the JournalConsumerThread or from the Server.
 String toString()
           
 
Methods inherited from class org.fcrepo.server.journal.JournalReader
checkRepositoryHash, getInstance, readJournalEntry
 
Methods inherited from class org.fcrepo.server.journal.xmlhelpers.AbstractXmlReader
advancePastWhitespace, getNotCharactersException, getNotEndTagException, getNotNextMemberOrEndOfGroupException, getNotStartTagException, getOptionalAttributeValue, getRequiredAttributeValue, isEndTagEvent, isStartTagEvent, readCharactersUntilEndTag, readStartTag
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

currentFile

protected org.fcrepo.server.journal.readerwriter.multifile.JournalInputFile currentFile

open

protected boolean open
Constructor Detail

MultiFileJournalReader

public MultiFileJournalReader(Map<String,String> parameters,
                              String role,
                              JournalRecoveryLog recoveryLog,
                              ServerInterface server)
                       throws JournalException
Throws:
JournalException
Method Detail

shutdown

public void shutdown()
              throws JournalException
Description copied from class: JournalReader
Concrete sub-classes should probably synchronize this method, since it can be called either from the JournalConsumerThread or from the Server.

Specified by:
shutdown in class JournalReader
Throws:
JournalException

readJournalEntry

public ConsumerJournalEntry readJournalEntry()
                                      throws JournalException,
                                             XMLStreamException
Description copied from class: JournalReader
Concrete sub-classes should insure that their XMLEventReader is positioned at the beginning of a JournalEntry, and call JournalReader.readJournalEntry(XMLEventReader). It is likely that this method should be synchronized also, since it could be called from JournalConsumerThread when the server calls JournalReader.shutdown()

Specified by:
readJournalEntry in class JournalReader
Throws:
JournalException
XMLStreamException

openNextFile

protected org.fcrepo.server.journal.readerwriter.multifile.JournalInputFile openNextFile()
                                                                                  throws JournalException
Look in the directory for files that match the prefix. If there are none, leave with currentFile still null. If we find one, advance into it.

Throws:
JournalException

toString

public String toString()
Overrides:
toString in class Object


Copyright © 2012 DuraSpace. All Rights Reserved.