dk.netarkivet.common.utils.batch
Class LoadableJarBatchJob

java.lang.Object
  extended by dk.netarkivet.common.utils.batch.FileBatchJob
      extended by dk.netarkivet.common.utils.batch.LoadableJarBatchJob
All Implemented Interfaces:
java.io.Serializable

public class LoadableJarBatchJob
extends FileBatchJob

This implementation of FileBatchJob is a bridge to a jar file given as a File object. The given class will be loaded and used to perform the actions of the FileBatchJob class.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class dk.netarkivet.common.utils.batch.FileBatchJob
FileBatchJob.ExceptionOccurrence
 
Field Summary
(package private)  FileBatchJob loadedJob
          The FileBatchJob that this LoadableJarBatchJob is a wrapper for.
(package private)  org.apache.commons.logging.Log log
          The log.
 
Fields inherited from class dk.netarkivet.common.utils.batch.FileBatchJob
batchJobTimeout, exceptions, filesFailed, noOfFilesProcessed
 
Constructor Summary
LoadableJarBatchJob(java.lang.String jobClass, java.util.List<java.lang.String> arguments, java.io.File... jarFiles)
          Load a given class from a jar file.
 
Method Summary
 void finish(java.io.OutputStream os)
          Finish the job.
 java.lang.String getLoadedJobClass()
          Method for retrieving the name of the loaded class.
 void initialize(java.io.OutputStream os)
          Initialize the job before running.
 boolean postProcess(java.io.InputStream input, java.io.OutputStream output)
          Processes the concatenated result files.
 boolean processFile(java.io.File file, java.io.OutputStream os)
          Process one file stored in the bit archive.
 java.lang.String toString()
          Human readable representation of this object.
 
Methods inherited from class dk.netarkivet.common.utils.batch.FileBatchJob
addException, addFinishException, addInitializeException, getBatchJobTimeout, getExceptions, getFilenamePattern, getFilesFailed, getNoOfFilesProcessed, maxExceptionsReached, processOnlyFileNamed, processOnlyFilesMatching, processOnlyFilesMatching, processOnlyFilesNamed, setBatchJobTimeout
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

loadedJob

transient FileBatchJob loadedJob
The FileBatchJob that this LoadableJarBatchJob is a wrapper for.


log

transient org.apache.commons.logging.Log log
The log.

Constructor Detail

LoadableJarBatchJob

public LoadableJarBatchJob(java.lang.String jobClass,
                           java.util.List<java.lang.String> arguments,
                           java.io.File... jarFiles)
                    throws ArgumentNotValid
Load a given class from a jar file.

Parameters:
jarFiles - The jar file(s) to load from. This file may also contain other classes required by the FileBatchJob class.
arguments - The arguments for the batchjob.
jobClass - The class to load initially. This must be a subclass of FileBatchJob.
Throws:
ArgumentNotValid - If any of the arguments are null.
Method Detail

initialize

public void initialize(java.io.OutputStream os)
Initialize the job before running. This is called before the processFile() calls.

Specified by:
initialize in class FileBatchJob
Parameters:
os - the OutputStream to which output should be written

processFile

public boolean processFile(java.io.File file,
                           java.io.OutputStream os)
Process one file stored in the bit archive.

Specified by:
processFile in class FileBatchJob
Parameters:
file - the file to be processed.
os - the OutputStream to which output should be written
Returns:
true if the file was successfully processed, false otherwise

finish

public void finish(java.io.OutputStream os)
Finish the job. This is called after the last process() call.

Specified by:
finish in class FileBatchJob
Parameters:
os - the OutputStream to which output should be written

toString

public java.lang.String toString()
Human readable representation of this object. Overrides FileBatchJob.toString to include name of loaded jar/class.

Overrides:
toString in class java.lang.Object
Returns:
a Human readable representation of this class

postProcess

public boolean postProcess(java.io.InputStream input,
                           java.io.OutputStream output)
Description copied from class: FileBatchJob
Processes the concatenated result files. This is intended to be overridden by batchjobs, who they wants a different post-processing process than concatenation.

Overrides:
postProcess in class FileBatchJob
Parameters:
input - The inputstream to the file containing the concatenated results.
output - The outputstream where the resulting data should be written.
Returns:
Whether it actually does any post processing. If false is returned then the default concatenated result file is returned.

getLoadedJobClass

public java.lang.String getLoadedJobClass()
Method for retrieving the name of the loaded class.

Returns:
The name of the loaded class.