fedora.server.journal.readerwriter.multifile
Class MultiFileJournalReader

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

public class MultiFileJournalReader
extends JournalReader
implements MultiFileJournalConstants

Title: MultiFileJournalReader.java

Description: A JournalReader implementation for "recovering", when the is 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.

Version:
$Id: MultiFileJournalReader.java 5025 2006-09-01 22:08:17 +0000 (Fri, 01 Sep 2006) cwilper $
Author:
jblake@cs.cornell.edu

Field Summary
protected  fedora.server.journal.readerwriter.multifile.JournalInputFile currentFile
           
protected  boolean open
           
 
Fields inherited from class fedora.server.journal.JournalReader
parameters, recoveryLog, role, server
 
Fields inherited from interface fedora.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 fedora.server.journal.JournalConstants
ARGUMENT_NAME_ALT_IDS, ARGUMENT_NAME_BDEF_PID, ARGUMENT_NAME_BINDING_MAP, ARGUMENT_NAME_BMECH_PID, ARGUMENT_NAME_CHECKSUM, ARGUMENT_NAME_CHECKSUM_TYPE, ARGUMENT_NAME_CONTEXT, ARGUMENT_NAME_CONTROL_GROUP, 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_LABEL, ARGUMENT_NAME_LOCATION, ARGUMENT_NAME_LOG_MESSAGE, ARGUMENT_NAME_MIME_TYPE, ARGUMENT_NAME_NAMESPACE, ARGUMENT_NAME_NEW_PID, ARGUMENT_NAME_NUM_PIDS, ARGUMENT_NAME_OWNERID, ARGUMENT_NAME_PID, 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_GET_NEXT_PID, METHOD_INGEST_OBJECT, 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_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(java.util.Map<java.lang.String,java.lang.String> parameters, java.lang.String role, JournalRecoveryLog recoveryLog, ServerInterface server)
           
 
Method Summary
protected  fedora.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.
 java.lang.String toString()
           
 
Methods inherited from class fedora.server.journal.JournalReader
checkRepositoryHash, getInstance, readJournalEntry
 
Methods inherited from class fedora.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 fedora.server.journal.readerwriter.multifile.JournalInputFile currentFile

open

protected boolean open
Constructor Detail

MultiFileJournalReader

public MultiFileJournalReader(java.util.Map<java.lang.String,java.lang.String> parameters,
                              java.lang.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,
                                             javax.xml.stream.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
javax.xml.stream.XMLStreamException

openNextFile

protected fedora.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 java.lang.String toString()
Overrides:
toString in class java.lang.Object