|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||
java.lang.Object
|
+--uk.org.ogsadai.activity.Activity
|
+--uk.org.ogsadai.activity.files.AbstractFileActivity
|
+--uk.org.ogsadai.activity.indexedfiles.FileReadingActivity
An activity to read data from one or more binary or text files stored on the server. The file data is then written to an output which can be connected to another activity or delivered back to the user in the response document. See the activity user documentation for more details: OGSADAI/doc/interaction/activities/indexedfiles/readFile.html
| Field Summary | |
private static int |
BLOCK_SIZESize of blocks when retrieving bytes from random access file (1024) |
private static java.lang.String |
COPYRIGHT_NOTICECopyright statement |
private static DAILogger |
LOGLogger object for logging in this class |
private boolean |
mBase64encodeIs the output base64 encoded? |
private java.io.RandomAccessFile |
mBinaryFileRandom access file |
private java.io.File |
mFileText / random access file |
private java.lang.String |
mFilenameName of the text or random access file |
private BlockReader |
mInputActivity input - names of files to read |
private boolean |
mIsBinaryFileDo we have a binary/random access or a text file? |
private long |
mLengthNumber of bytes or lines to be read, -1 if reading to the end of the file |
private long |
mOffsetOffset - skipped bytes or lines |
private BlockWriter |
mOutputActivity output - bytes/lines read |
private java.io.BufferedReader |
mTextFileText file reader |
| Fields inherited from class uk.org.ogsadai.activity.files.AbstractFileActivity |
mCredentials, mFileAccessProvider, mTopDir |
| Fields inherited from class uk.org.ogsadai.activity.Activity |
mContext, mExternalInputs, mExternalOutputs, mInternalInputs, mInternalOutputs |
| Constructor Summary | |
FileReadingActivity(org.w3c.dom.Element element) |
|
| Method Summary | |
protected void |
cleanUp()This method can be overridden by any Activity implementations that need to free up resources in the event of an error or intermediate termination of the activity processing. |
private boolean |
hasNextFile()Checks if there is another instruction waiting in the input stream and retrieves filename, offset and length. |
void |
initialise()Gets the data resource accessor for the files data resource according to whether the users credentials permit this access. |
private boolean |
openFile(java.lang.String filename)Opens a file and skips mOffset lines or bytes |
private void |
parseOffsetAndLength(java.lang.String namespace, org.w3c.dom.Element element)Extracts offset and length attributes from an element that contains either a bytes or lines subelement and stores these. |
protected void |
processBlock()Performs an iteration of the processing of an activity. |
protected void |
processFirst()This method is called during the first iteration of processing an activity. |
private int |
readFromBinaryFile()Reads a block of bytes from a file (at most mLength bytes), and puts it into the output stream |
private boolean |
readFromTextFile()Reads one line from a text file mLength is the remaining number of lines to read |
| Methods inherited from class uk.org.ogsadai.activity.Activity |
connectsTo, createOutputPipe, getActivityConfiguration, getActivityName, getCause, getName, getObservableStatus, getProperties, getSession, getStatus, hasActivityConfiguration, hasProperties, process, setActivityName, setCompleted, setError |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
private static final java.lang.String COPYRIGHT_NOTICE
private static final DAILogger LOG
private static final int BLOCK_SIZE
private java.lang.String mFilename
private java.io.File mFile
private java.io.RandomAccessFile mBinaryFile
private java.io.BufferedReader mTextFile
private boolean mBase64encode
private boolean mIsBinaryFile
private long mOffset
private long mLength
private BlockWriter mOutput
private BlockReader mInput
| Constructor Detail |
public FileReadingActivity(org.w3c.dom.Element element)
throws ActivityCreationException,
ActivitySpecificationException
| Method Detail |
public void initialise()
throws ActivitySpecificationException,
ActivityExecutionException
AbstractFileActivityinitialise in class AbstractFileActivityActivitySpecificationException - If the user is not permitted to access the resource.ActivityExecutionException - If some internal problem occurs.Activity.initialise()protected void processFirst()
ActivityprocessFirst in class Activityprotected void processBlock()
ActivitysetCompleted method to indicate that processing is complete, or the setError method if an error occurs that will prevent the processing from completing.
processBlock in class Activityprotected void cleanUp()
ActivityActivity implementations that need to free up resources in the event of an error or intermediate termination of the activity processing.
cleanUp in class Activity
private boolean readFromTextFile()
throws DAIFileReadIOException
mLength is the remaining number of lines to read
DAIFileReadIOException - If there is a problem.
private int readFromBinaryFile()
throws DAIFileReadIOException
mLength bytes), and puts it into the output stream
DAIFileReadIOException - If there is a problem.
private boolean hasNextFile()
throws ActivitySpecificationException,
ActivityExecutionException
The instruction is expected to be of form:
<readFile>
<file>FILE</file>
<bytes offset="M" length="M"/>
</readFile>
or
<readFile>
<file>FILE</file>
<lines offset="M" length="M"/>
</readFile>
true if there is another instruction to process, false if there are no more instructions or the input stream is null.ActivitySpecificationException - If the instruction format is not as expected, the file name is missing, the offset and length are not numbers or are < 0.ActivityExecutionException - If an internal parsing-related problem occurs.
private void parseOffsetAndLength(java.lang.String namespace,
org.w3c.dom.Element element)
throws ActivitySpecificationException
offset and length attributes from an element that contains either a bytes or lines subelement and stores these.
namespace - Namespace of elements in element.element - Element to parse.ActivitySpecificationException - If the offset and length are not numbers or are < 0.
private boolean openFile(java.lang.String filename)
throws ActivitySpecificationException,
ActivityExecutionException
mOffset lines or bytes
filename - Name of file to open.true if the file has been openend and the cursor is positioned after the offset, false if the file is not open (e.g. because the offset is larger than the length of the fileActivitySpecificationException - If the file does not exist or is outside the root directoryActivityExecutionException - If some internal problem arises.
|
|||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||||