fedora.server.journal.helpers
Class JournalHelper

java.lang.Object
  extended by fedora.server.journal.helpers.JournalHelper
All Implemented Interfaces:
JournalConstants

public class JournalHelper
extends java.lang.Object
implements JournalConstants

A collection of utility methods for use in the Journal classes.

Version:
$Id: JournalHelper.java 5367 2006-12-08 08:51:00 +0000 (Fri, 08 Dec 2006) cwilper $
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
 
Method Summary
static java.lang.String captureStackTrace(java.lang.Throwable e)
          Capture the full stack trace of an Exception, and return it in a String.
static java.io.File copyToTempFile(java.io.InputStream serialization)
          Copy an input stream to a temporary file, so we can hand an input stream to the delegate and have another input stream for the journal.
static java.lang.Object createInstanceAccordingToParameter(java.lang.String parameterName, java.lang.Class<?>[] argClasses, java.lang.Object[] args, java.util.Map<java.lang.String,java.lang.String> parameters)
          Look in the system parameters and create an instance of the named class.
static java.lang.Object createInstanceFromClassname(java.lang.String className, java.lang.Class<?>[] argClasses, java.lang.Object[] args)
          Create an instance of the named class.
static java.io.File createTempFile()
          Create a temporary file.
static java.lang.String createTimestampedFilename(java.lang.String filenamePrefix, java.util.Date date)
          Create the name for a Journal file or a log file, based on the prefix and the current date.
static java.lang.String formatDate(java.util.Date date)
          Format a date for the journal or the log.
static boolean isTempFile(java.io.File file)
          Is this file one that we created as a temp file?
static java.util.Date parseDate(java.lang.String date)
          Parse a date from the journal.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

copyToTempFile

public static java.io.File copyToTempFile(java.io.InputStream serialization)
                                   throws java.io.IOException,
                                          java.io.FileNotFoundException
Copy an input stream to a temporary file, so we can hand an input stream to the delegate and have another input stream for the journal.

Throws:
java.io.IOException
java.io.FileNotFoundException

createTempFile

public static java.io.File createTempFile()
                                   throws java.io.IOException
Create a temporary file. The "File" object that we return is really an instance of "JournalTempFile", so we can detect it later in isTempFile().

Throws:
java.io.IOException

isTempFile

public static boolean isTempFile(java.io.File file)
Is this file one that we created as a temp file?


captureStackTrace

public static java.lang.String captureStackTrace(java.lang.Throwable e)
Capture the full stack trace of an Exception, and return it in a String.


createInstanceAccordingToParameter

public static java.lang.Object createInstanceAccordingToParameter(java.lang.String parameterName,
                                                                  java.lang.Class<?>[] argClasses,
                                                                  java.lang.Object[] args,
                                                                  java.util.Map<java.lang.String,java.lang.String> parameters)
                                                           throws JournalException
Look in the system parameters and create an instance of the named class.

Parameters:
parameterName - The name of the system parameter that contains the classname
argClasses - What types of arguments are required by the constructor?
args - Arguments to provide to the instance constructor.
parameters - The system parameters
Returns:
the new instance created
Throws:
JournalException

createInstanceFromClassname

public static java.lang.Object createInstanceFromClassname(java.lang.String className,
                                                           java.lang.Class<?>[] argClasses,
                                                           java.lang.Object[] args)
                                                    throws JournalException
Create an instance of the named class.

Parameters:
className - The classname of the desired instance
argClasses - What types of arguments are required by the constructor?
args - Arguments to provide to the instance constructor.
Returns:
the new instance created
Throws:
JournalException

formatDate

public static java.lang.String formatDate(java.util.Date date)
Format a date for the journal or the log.


parseDate

public static java.util.Date parseDate(java.lang.String date)
                                throws JournalException
Parse a date from the journal.

Throws:
JournalException

createTimestampedFilename

public static java.lang.String createTimestampedFilename(java.lang.String filenamePrefix,
                                                         java.util.Date date)
Create the name for a Journal file or a log file, based on the prefix and the current date.