fedora.server.journal
Class JournalCreator

java.lang.Object
  extended by fedora.server.journal.JournalCreator
All Implemented Interfaces:
JournalConstants, JournalWorker, Management

public class JournalCreator
extends java.lang.Object
implements JournalWorker, JournalConstants

Title: JournalCreator.java

Description: This is the worker class to use in Journalling mode (normal mode).

Each time a "writing" Management method is called, create a CreatorJournalEntry and ask it to invoke the method on the ManagementDelegate. If a "read-only" Management method is called, just pass it along to the ManagementDelegate.

Version:
$Id: JournalCreator.java 6726 2008-03-03 20:04:05 +0000 (Mon, 03 Mar 2008) birkland $
Author:
jblake@cs.cornell.edu

Field Summary
 
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
JournalCreator(java.util.Map<java.lang.String,java.lang.String> parameters, java.lang.String role, ServerInterface server)
          Get a JournalWriter to use, based on the server parameters.
 
Method Summary
 java.lang.String addDatastream(Context context, java.lang.String pid, java.lang.String dsID, java.lang.String[] altIDs, java.lang.String dsLabel, boolean versionable, java.lang.String MIMEType, java.lang.String formatURI, java.lang.String location, java.lang.String controlGroup, java.lang.String dsState, java.lang.String checksumType, java.lang.String checksum, java.lang.String logMessage)
          Create a journal entry, add the arguments, and invoke the method.
 java.lang.String addDisseminator(Context context, java.lang.String pid, java.lang.String bDefPID, java.lang.String bMechPid, java.lang.String dissLabel, DSBindingMap bindingMap, java.lang.String dissState, java.lang.String logMessage)
          Create a journal entry, add the arguments, and invoke the method.
 boolean adminPing(Context context)
          Let the delegate do it.
 java.lang.String compareDatastreamChecksum(Context context, java.lang.String pid, java.lang.String dsID, java.util.Date versionDate)
          Let the delegate do it.
 java.io.InputStream exportObject(Context context, java.lang.String pid, java.lang.String format, java.lang.String exportContext, java.lang.String encoding)
          Let the delegate do it.
 Datastream getDatastream(Context context, java.lang.String pid, java.lang.String datastreamID, java.util.Date asOfDateTime)
          Let the delegate do it.
 Datastream[] getDatastreamHistory(Context context, java.lang.String pid, java.lang.String datastreamID)
          Let the delegate do it.
 Datastream[] getDatastreams(Context context, java.lang.String pid, java.util.Date asOfDateTime, java.lang.String dsState)
          Let the delegate do it.
 Disseminator getDisseminator(Context context, java.lang.String pid, java.lang.String disseminatorID, java.util.Date asOfDateTime)
          Let the delegate do it.
 Disseminator[] getDisseminatorHistory(Context context, java.lang.String pid, java.lang.String disseminatorID)
          Let the delegate do it.
 Disseminator[] getDisseminators(Context context, java.lang.String pid, java.util.Date asOfDateTime, java.lang.String dissState)
          Let the delegate do it.
 java.lang.String[] getNextPID(Context context, int numPIDs, java.lang.String namespace)
          Create a journal entry, add the arguments, and invoke the method.
 Property[] getObjectProperties(Context context, java.lang.String pid)
          Let the delegate do it.
 java.io.InputStream getObjectXML(Context context, java.lang.String pid, java.lang.String encoding)
          Let the delegate do it.
 java.io.InputStream getTempStream(java.lang.String id)
          Let the delegate do it.
 java.lang.String ingestObject(Context context, java.io.InputStream serialization, java.lang.String logMessage, java.lang.String format, java.lang.String encoding, boolean newPid)
          Let the delegate do it, and then write a journal entry.
 java.util.Date modifyDatastreamByReference(Context context, java.lang.String pid, java.lang.String datastreamID, java.lang.String[] altIDs, java.lang.String dsLabel, java.lang.String mimeType, java.lang.String formatURI, java.lang.String dsLocation, java.lang.String checksumType, java.lang.String checksum, java.lang.String logMessage, boolean force)
          Create a journal entry, add the arguments, and invoke the method.
 java.util.Date modifyDatastreamByValue(Context context, java.lang.String pid, java.lang.String datastreamID, java.lang.String[] altIDs, java.lang.String dsLabel, java.lang.String mimeType, java.lang.String formatURI, java.io.InputStream dsContent, java.lang.String checksumType, java.lang.String checksum, java.lang.String logMessage, boolean force)
          Create a journal entry, add the arguments, and invoke the method.
 java.util.Date modifyDisseminator(Context context, java.lang.String pid, java.lang.String disseminatorID, java.lang.String bMechPid, java.lang.String dissLabel, DSBindingMap bindingMap, java.lang.String dissState, java.lang.String logMessage, boolean force)
          Create a journal entry, add the arguments, and invoke the method.
 java.util.Date modifyObject(Context context, java.lang.String pid, java.lang.String state, java.lang.String label, java.lang.String ownerId, java.lang.String logMessage)
          Create a journal entry, add the arguments, and invoke the method.
 java.util.Date[] purgeDatastream(Context context, java.lang.String pid, java.lang.String datastreamID, java.util.Date startDT, java.util.Date endDT, java.lang.String logMessage, boolean force)
          Create a journal entry, add the arguments, and invoke the method.
 java.util.Date[] purgeDisseminator(Context context, java.lang.String pid, java.lang.String disseminatorID, java.util.Date endDT, java.lang.String logMessage)
          Create a journal entry, add the arguments, and invoke the method.
 java.util.Date purgeObject(Context context, java.lang.String pid, java.lang.String logMessage, boolean force)
          Create a journal entry, add the arguments, and invoke the method.
 java.lang.String putTempStream(Context context, java.io.InputStream in)
          Create a journal entry, add the arguments, and invoke the method.
 java.util.Date setDatastreamState(Context context, java.lang.String pid, java.lang.String dsID, java.lang.String dsState, java.lang.String logMessage)
          Create a journal entry, add the arguments, and invoke the method.
 java.util.Date setDatastreamVersionable(Context context, java.lang.String pid, java.lang.String dsID, boolean versionable, java.lang.String logMessage)
          Create a journal entry, add the arguments, and invoke the method.
 java.util.Date setDisseminatorState(Context context, java.lang.String pid, java.lang.String disseminatorID, java.lang.String dissState, java.lang.String logMessage)
          Create a journal entry, add the arguments, and invoke the method.
 void setManagementDelegate(ManagementDelegate delegate)
          Receive a ManagementDelegate module to perform the Management operations.
 void shutdown()
          Server is shutting down, so tell the JournalWriter to shut down.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JournalCreator

public JournalCreator(java.util.Map<java.lang.String,java.lang.String> parameters,
                      java.lang.String role,
                      ServerInterface server)
               throws ModuleInitializationException
Get a JournalWriter to use, based on the server parameters.

Throws:
ModuleInitializationException
Method Detail

setManagementDelegate

public void setManagementDelegate(ManagementDelegate delegate)
Receive a ManagementDelegate module to perform the Management operations.

Specified by:
setManagementDelegate in interface JournalWorker

shutdown

public void shutdown()
              throws ModuleShutdownException
Server is shutting down, so tell the JournalWriter to shut down.

Specified by:
shutdown in interface JournalWorker
Throws:
ModuleShutdownException

ingestObject

public java.lang.String ingestObject(Context context,
                                     java.io.InputStream serialization,
                                     java.lang.String logMessage,
                                     java.lang.String format,
                                     java.lang.String encoding,
                                     boolean newPid)
                              throws ServerException
Let the delegate do it, and then write a journal entry.

Specified by:
ingestObject in interface Management
Throws:
ServerException

modifyObject

public java.util.Date modifyObject(Context context,
                                   java.lang.String pid,
                                   java.lang.String state,
                                   java.lang.String label,
                                   java.lang.String ownerId,
                                   java.lang.String logMessage)
                            throws ServerException
Create a journal entry, add the arguments, and invoke the method.

Specified by:
modifyObject in interface Management
Throws:
ServerException

purgeObject

public java.util.Date purgeObject(Context context,
                                  java.lang.String pid,
                                  java.lang.String logMessage,
                                  boolean force)
                           throws ServerException
Create a journal entry, add the arguments, and invoke the method.

Specified by:
purgeObject in interface Management
Throws:
ServerException

addDatastream

public java.lang.String addDatastream(Context context,
                                      java.lang.String pid,
                                      java.lang.String dsID,
                                      java.lang.String[] altIDs,
                                      java.lang.String dsLabel,
                                      boolean versionable,
                                      java.lang.String MIMEType,
                                      java.lang.String formatURI,
                                      java.lang.String location,
                                      java.lang.String controlGroup,
                                      java.lang.String dsState,
                                      java.lang.String checksumType,
                                      java.lang.String checksum,
                                      java.lang.String logMessage)
                               throws ServerException
Create a journal entry, add the arguments, and invoke the method.

Specified by:
addDatastream in interface Management
Throws:
ServerException

modifyDatastreamByValue

public java.util.Date modifyDatastreamByValue(Context context,
                                              java.lang.String pid,
                                              java.lang.String datastreamID,
                                              java.lang.String[] altIDs,
                                              java.lang.String dsLabel,
                                              java.lang.String mimeType,
                                              java.lang.String formatURI,
                                              java.io.InputStream dsContent,
                                              java.lang.String checksumType,
                                              java.lang.String checksum,
                                              java.lang.String logMessage,
                                              boolean force)
                                       throws ServerException
Create a journal entry, add the arguments, and invoke the method.

Specified by:
modifyDatastreamByValue in interface Management
Throws:
ServerException

modifyDatastreamByReference

public java.util.Date modifyDatastreamByReference(Context context,
                                                  java.lang.String pid,
                                                  java.lang.String datastreamID,
                                                  java.lang.String[] altIDs,
                                                  java.lang.String dsLabel,
                                                  java.lang.String mimeType,
                                                  java.lang.String formatURI,
                                                  java.lang.String dsLocation,
                                                  java.lang.String checksumType,
                                                  java.lang.String checksum,
                                                  java.lang.String logMessage,
                                                  boolean force)
                                           throws ServerException
Create a journal entry, add the arguments, and invoke the method.

Specified by:
modifyDatastreamByReference in interface Management
Throws:
ServerException

setDatastreamState

public java.util.Date setDatastreamState(Context context,
                                         java.lang.String pid,
                                         java.lang.String dsID,
                                         java.lang.String dsState,
                                         java.lang.String logMessage)
                                  throws ServerException
Create a journal entry, add the arguments, and invoke the method.

Specified by:
setDatastreamState in interface Management
Throws:
ServerException

setDatastreamVersionable

public java.util.Date setDatastreamVersionable(Context context,
                                               java.lang.String pid,
                                               java.lang.String dsID,
                                               boolean versionable,
                                               java.lang.String logMessage)
                                        throws ServerException
Create a journal entry, add the arguments, and invoke the method.

Specified by:
setDatastreamVersionable in interface Management
Throws:
ServerException

purgeDatastream

public java.util.Date[] purgeDatastream(Context context,
                                        java.lang.String pid,
                                        java.lang.String datastreamID,
                                        java.util.Date startDT,
                                        java.util.Date endDT,
                                        java.lang.String logMessage,
                                        boolean force)
                                 throws ServerException
Create a journal entry, add the arguments, and invoke the method.

Specified by:
purgeDatastream in interface Management
Throws:
ServerException

addDisseminator

public java.lang.String addDisseminator(Context context,
                                        java.lang.String pid,
                                        java.lang.String bDefPID,
                                        java.lang.String bMechPid,
                                        java.lang.String dissLabel,
                                        DSBindingMap bindingMap,
                                        java.lang.String dissState,
                                        java.lang.String logMessage)
                                 throws ServerException
Create a journal entry, add the arguments, and invoke the method.

Specified by:
addDisseminator in interface Management
Throws:
ServerException

modifyDisseminator

public java.util.Date modifyDisseminator(Context context,
                                         java.lang.String pid,
                                         java.lang.String disseminatorID,
                                         java.lang.String bMechPid,
                                         java.lang.String dissLabel,
                                         DSBindingMap bindingMap,
                                         java.lang.String dissState,
                                         java.lang.String logMessage,
                                         boolean force)
                                  throws ServerException
Create a journal entry, add the arguments, and invoke the method.

Specified by:
modifyDisseminator in interface Management
Throws:
ServerException

setDisseminatorState

public java.util.Date setDisseminatorState(Context context,
                                           java.lang.String pid,
                                           java.lang.String disseminatorID,
                                           java.lang.String dissState,
                                           java.lang.String logMessage)
                                    throws ServerException
Create a journal entry, add the arguments, and invoke the method.

Specified by:
setDisseminatorState in interface Management
Throws:
ServerException

purgeDisseminator

public java.util.Date[] purgeDisseminator(Context context,
                                          java.lang.String pid,
                                          java.lang.String disseminatorID,
                                          java.util.Date endDT,
                                          java.lang.String logMessage)
                                   throws ServerException
Create a journal entry, add the arguments, and invoke the method.

Specified by:
purgeDisseminator in interface Management
Throws:
ServerException

putTempStream

public java.lang.String putTempStream(Context context,
                                      java.io.InputStream in)
                               throws ServerException
Create a journal entry, add the arguments, and invoke the method.

Specified by:
putTempStream in interface Management
Throws:
ServerException

getNextPID

public java.lang.String[] getNextPID(Context context,
                                     int numPIDs,
                                     java.lang.String namespace)
                              throws ServerException
Create a journal entry, add the arguments, and invoke the method.

Specified by:
getNextPID in interface Management
Throws:
ServerException

compareDatastreamChecksum

public java.lang.String compareDatastreamChecksum(Context context,
                                                  java.lang.String pid,
                                                  java.lang.String dsID,
                                                  java.util.Date versionDate)
                                           throws ServerException
Let the delegate do it.

Specified by:
compareDatastreamChecksum in interface Management
Throws:
ServerException

getObjectProperties

public Property[] getObjectProperties(Context context,
                                      java.lang.String pid)
                               throws ServerException
Let the delegate do it.

Specified by:
getObjectProperties in interface Management
Throws:
ServerException

getObjectXML

public java.io.InputStream getObjectXML(Context context,
                                        java.lang.String pid,
                                        java.lang.String encoding)
                                 throws ServerException
Let the delegate do it.

Specified by:
getObjectXML in interface Management
Throws:
ServerException

exportObject

public java.io.InputStream exportObject(Context context,
                                        java.lang.String pid,
                                        java.lang.String format,
                                        java.lang.String exportContext,
                                        java.lang.String encoding)
                                 throws ServerException
Let the delegate do it.

Specified by:
exportObject in interface Management
Throws:
ServerException

getDatastream

public Datastream getDatastream(Context context,
                                java.lang.String pid,
                                java.lang.String datastreamID,
                                java.util.Date asOfDateTime)
                         throws ServerException
Let the delegate do it.

Specified by:
getDatastream in interface Management
Throws:
ServerException

getDatastreams

public Datastream[] getDatastreams(Context context,
                                   java.lang.String pid,
                                   java.util.Date asOfDateTime,
                                   java.lang.String dsState)
                            throws ServerException
Let the delegate do it.

Specified by:
getDatastreams in interface Management
Throws:
ServerException

getDatastreamHistory

public Datastream[] getDatastreamHistory(Context context,
                                         java.lang.String pid,
                                         java.lang.String datastreamID)
                                  throws ServerException
Let the delegate do it.

Specified by:
getDatastreamHistory in interface Management
Throws:
ServerException

getDisseminator

public Disseminator getDisseminator(Context context,
                                    java.lang.String pid,
                                    java.lang.String disseminatorID,
                                    java.util.Date asOfDateTime)
                             throws ServerException
Let the delegate do it.

Specified by:
getDisseminator in interface Management
Throws:
ServerException

getDisseminators

public Disseminator[] getDisseminators(Context context,
                                       java.lang.String pid,
                                       java.util.Date asOfDateTime,
                                       java.lang.String dissState)
                                throws ServerException
Let the delegate do it.

Specified by:
getDisseminators in interface Management
Throws:
ServerException

getDisseminatorHistory

public Disseminator[] getDisseminatorHistory(Context context,
                                             java.lang.String pid,
                                             java.lang.String disseminatorID)
                                      throws ServerException
Let the delegate do it.

Specified by:
getDisseminatorHistory in interface Management
Throws:
ServerException

getTempStream

public java.io.InputStream getTempStream(java.lang.String id)
                                  throws ServerException
Let the delegate do it.

Specified by:
getTempStream in interface Management
Throws:
ServerException

adminPing

public boolean adminPing(Context context)
                  throws ServerException
Let the delegate do it.

Specified by:
adminPing in interface Management
Throws:
ServerException