com.ibm.websphere.batch.devframework.datastreams.bdsadapter
Class AbstractBatchDataInputStreamRecordMetrics
- java.lang.Object
-
- com.ibm.websphere.batch.devframework.datastreams.bdsadapter.AbstractBatchDataStream
-
- com.ibm.websphere.batch.devframework.datastreams.bdsadapter.AbstractBatchDataInputStreamRecordMetrics
-
- All Implemented Interfaces:
- com.ibm.batch.api.BatchDataStream, AbstractBatchDataInputStream, AbstractBatchDataStreamRecordMetrics, RecordMetrics, java.io.Externalizable, java.io.Serializable
public abstract class AbstractBatchDataInputStreamRecordMetrics extends AbstractBatchDataStream implements AbstractBatchDataInputStream, AbstractBatchDataStreamRecordMetrics, RecordMetrics, java.io.Externalizable
Base class provides skipped-record handling.- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface com.ibm.websphere.batch.RecordMetrics
RecordMetrics.MetricName
-
-
Field Summary
-
Fields inherited from class com.ibm.websphere.batch.devframework.datastreams.bdsadapter.AbstractBatchDataStream
jobStepKey
-
-
Constructor Summary
Constructors Constructor and Description AbstractBatchDataInputStreamRecordMetrics()
-
Method Summary
Methods Modifier and Type Method and Description abstract java.lang.String
_externalizeCheckpointInformation()
Abstract method implemented by sub class.protected abstract boolean
_hasNext()
Abstract method implemented by sub class.abstract void
_internalizeCheckpointInformation(java.lang.String token)
Abstract method implemented by sub class.abstract void
_positionAtCurrentCheckpoint()
Abstract method implemented by sub class.protected abstract java.lang.Object
_read()
Abstract method implemented by sub class.protected abstract java.lang.Object
_read(java.lang.Object parameters)
Abstract method implemented by sub class.void
addSkipListener(SkipListener skipListener)
Add a SkipListener callback to the BDS.protected void
endRPSMetric()
java.lang.String
externalizeCheckpointInformation()
Encode record metric data at the beginning of the token, then call the sub class (via _externalizeCheckpointInformation) and append whatever it returns to the end of the token.abstract java.lang.Object
fetchHeader()
Returns the header data if anylong
getCumulativeTime()
long
getMetric(RecordMetrics.MetricName metricName)
Returns the value of the batch data stream metric specifiedlong
getRecordCount()
boolean
hasNext()
Return a boolean indicating if there is unread data in the Input Stream.void
initialize(java.lang.String name, java.lang.String jobstepId)
Called during stream initialization.void
internalizeCheckpointInformation(java.lang.String token)
Parse record metric data from the beginning of the token, then call the sub class (via _internalizeCheckpointInformation), passing the rest of the token.void
positionAtCurrentCheckpoint()
This method calls the sub class (via _positionAtCurrentCheckpoint) to allow the sub class to position the BDS properly, then it applies checkpoint-related record metric settings to the BDS.java.lang.Object
read()
Return the next record.java.lang.Object
read(java.lang.Object parameters)
Return the next record based on the input parameters.void
readExternal(java.io.ObjectInput in)
protected void
setSkipMetric()
protected void
startRPSMetric()
void
writeExternal(java.io.ObjectOutput out)
-
Methods inherited from class com.ibm.websphere.batch.devframework.datastreams.bdsadapter.AbstractBatchDataStream
close, getJobstepId, getName, getProperties, getProperty, getRequiredProperty, getRequiredProperty, initialize, intermediateCheckpoint, isRestart, loadClass, open, positionAtInitialCheckpoint, setProperties, setRestart
-
-
-
-
Constructor Detail
-
AbstractBatchDataInputStreamRecordMetrics
public AbstractBatchDataInputStreamRecordMetrics()
-
-
Method Detail
-
initialize
public void initialize(java.lang.String name, java.lang.String jobstepId) throws BatchContainerDataStreamException
Description copied from class:AbstractBatchDataStream
Called during stream initialization.- Specified by:
initialize
in interfacecom.ibm.batch.api.BatchDataStream
- Overrides:
initialize
in classAbstractBatchDataStream
- Parameters:
name
- the logical name of the BDS, this name is used to locate the resource in the job's xJCL.jobstepId
- an identifier that represents the step within the batch job that is being run. This id is used to locate the resource in the job's xJCL.- Throws:
BatchContainerDataStreamException
-
_hasNext
protected abstract boolean _hasNext() throws java.lang.Exception
Abstract method implemented by sub class. This method is called by hasNext.- Throws:
java.lang.Exception
-
hasNext
public final boolean hasNext() throws java.lang.Exception
Return a boolean indicating if there is unread data in the Input Stream. Delegates to _hasNext, implemented by sub class. Handle skip records, if applicable.- Specified by:
hasNext
in interfaceAbstractBatchDataInputStream
- Returns:
- boolean indicating if there is more data to be read
- Throws:
java.lang.Exception
-
_read
protected abstract java.lang.Object _read() throws java.lang.Exception
Abstract method implemented by sub class. This method is called by read().- Throws:
java.lang.Exception
-
read
public final java.lang.Object read() throws java.lang.Exception
Return the next record. Delegates to _read, implemented by the sub class. Handle skip records, if applicable.- Specified by:
read
in interfaceAbstractBatchDataInputStream
- Returns:
- an object representing the next record in the inputstream
- Throws:
java.lang.Exception
-
_read
protected abstract java.lang.Object _read(java.lang.Object parameters) throws java.lang.Exception
Abstract method implemented by sub class. This method is called by read(Object).- Throws:
java.lang.Exception
-
read
public final java.lang.Object read(java.lang.Object parameters) throws java.lang.Exception
Return the next record based on the input parameters. Delegates to _read(Object), implemented by the sub class. Handle skip records, if applicable.- Specified by:
read
in interfaceAbstractBatchDataInputStream
- Parameters:
parameters
-- Returns:
- Throws:
java.lang.Exception
-
fetchHeader
public abstract java.lang.Object fetchHeader()
Description copied from interface:AbstractBatchDataInputStream
Returns the header data if any- Specified by:
fetchHeader
in interfaceAbstractBatchDataInputStream
- Returns:
-
_internalizeCheckpointInformation
public abstract void _internalizeCheckpointInformation(java.lang.String token)
Abstract method implemented by sub class. This method is called by internalizeCheckpointInformation.- Parameters:
token
- the checkpoint token
-
internalizeCheckpointInformation
public final void internalizeCheckpointInformation(java.lang.String token)
Parse record metric data from the beginning of the token, then call the sub class (via _internalizeCheckpointInformation), passing the rest of the token.- Specified by:
internalizeCheckpointInformation
in interfacecom.ibm.batch.api.BatchDataStream
- Specified by:
internalizeCheckpointInformation
in classAbstractBatchDataStream
- Parameters:
token
- the checkpoint token
-
_externalizeCheckpointInformation
public abstract java.lang.String _externalizeCheckpointInformation()
Abstract method implemented by sub class. This method is called by externalizeCheckpointInformation.
-
externalizeCheckpointInformation
public final java.lang.String externalizeCheckpointInformation()
Encode record metric data at the beginning of the token, then call the sub class (via _externalizeCheckpointInformation) and append whatever it returns to the end of the token.- Specified by:
externalizeCheckpointInformation
in interfacecom.ibm.batch.api.BatchDataStream
- Specified by:
externalizeCheckpointInformation
in classAbstractBatchDataStream
- Returns:
- - This is a string that is created to record the BDS's position in the stream being processed. This String is opaque to anyone but the BDS, so only the BDS can interpret its content.
-
_positionAtCurrentCheckpoint
public abstract void _positionAtCurrentCheckpoint() throws BatchContainerDataStreamException
Abstract method implemented by sub class. This method is called by positionAtCurrentCheckpoint.
-
positionAtCurrentCheckpoint
public void positionAtCurrentCheckpoint() throws BatchContainerDataStreamException
This method calls the sub class (via _positionAtCurrentCheckpoint) to allow the sub class to position the BDS properly, then it applies checkpoint-related record metric settings to the BDS.- Specified by:
positionAtCurrentCheckpoint
in interfacecom.ibm.batch.api.BatchDataStream
- Throws:
BatchContainerDataStreamException
-
addSkipListener
public void addSkipListener(SkipListener skipListener)
Add a SkipListener callback to the BDS. The SkipListener is called by the BDS whenever the BDS fails to read or write a record and is configured to skip the failed record.
- Specified by:
addSkipListener
in interfaceAbstractBatchDataStreamRecordMetrics
- Parameters:
skipListener
- The user-implemented SkipListener callback.
-
getMetric
public long getMetric(RecordMetrics.MetricName metricName)
Description copied from interface:RecordMetrics
Returns the value of the batch data stream metric specified- Specified by:
getMetric
in interfaceRecordMetrics
- Parameters:
metricName
- - skip or rps- Returns:
- metricValue
-
getRecordCount
public long getRecordCount()
-
getCumulativeTime
public long getCumulativeTime()
-
startRPSMetric
protected void startRPSMetric()
-
endRPSMetric
protected void endRPSMetric()
-
setSkipMetric
protected void setSkipMetric()
-
readExternal
public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundException
- Specified by:
readExternal
in interfacejava.io.Externalizable
- Throws:
java.io.IOException
java.lang.ClassNotFoundException
-
writeExternal
public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException
- Specified by:
writeExternal
in interfacejava.io.Externalizable
- Throws:
java.io.IOException
-
-