Package adams.flow.control
Class Count
-
- All Implemented Interfaces:
AdditionalInformationHandler
,CleanUpHandler
,Destroyable
,GlobalInfoSupporter
,LoggingLevelHandler
,LoggingSupporter
,OptionHandler
,Pausable
,QuickInfoSupporter
,ShallowCopySupporter<Actor>
,SizeOfHandler
,Stoppable
,StoppableWithFeedback
,VariablesInspectionHandler
,FlowPauseStateListener
,VariableChangeListener
,AtomicExecution
,Actor
,ActorHandler
,ActorWithConditionalEquivalent
,ActorWithTimedEquivalent
,ControlActor
,ErrorHandler
,Flushable
,InputConsumer
,MutableActorHandler
,OutputProducer
,SubFlowWrapUp
,VariableMonitor
,Serializable
,Comparable
public class Count extends Tee implements VariableMonitor
Counts the number of tokens that pass through and meet the condition and tees off the current count every n-th token.
Input/output:
- accepts:
adams.flow.core.Unknown
- generates:
adams.flow.core.Unknown
Conditional equivalent:
adams.flow.control.ConditionalTee
-logging-level <OFF|SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST> (property: loggingLevel) The logging level for outputting errors and debugging output. default: WARNING
-name <java.lang.String> (property: name) The name of the actor. default: Count
-annotation <adams.core.base.BaseAnnotation> (property: annotations) The annotations to attach to this actor. default:
-skip <boolean> (property: skip) If set to true, transformation is skipped and the input token is just forwarded as it is. default: false
-stop-flow-on-error <boolean> (property: stopFlowOnError) If set to true, the flow gets stopped in case this actor encounters an error; useful for critical actors. default: false
-silent <boolean> (property: silent) If enabled, then no errors are output in the console. default: false
-finish-before-stopping <boolean> (property: finishBeforeStopping) If enabled, actor first finishes processing all data before stopping. default: false
-asynchronous <boolean> (property: asynchronous) If enabled, the sub-actors get executed asynchronously rather than the flow waiting for them to finish before proceeding with execution. default: false
-tee <adams.flow.core.AbstractActor> [-tee ...] (property: actors) The actors to siphon-off the tokens to. default:
-condition <adams.flow.condition.bool.BooleanCondition> (property: condition) The boolean condition to evaluate. default: adams.flow.condition.bool.Counting
-increment-only-if-condition-met <boolean> (property: incrementOnlyIfConditionMet) If enabled, the counter gets only incremented if the condition is met; useful if you want to count tokens of a certain value. default: false
-var-name <adams.core.VariableName> (property: variableName) The variable to monitor. default: variable
- Author:
- fracpete (fracpete at waikato dot ac dot nz)
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class adams.flow.control.AbstractTee
AbstractTee.TeeSwingWorker
-
-
Field Summary
Fields Modifier and Type Field Description static String
BACKUP_CURRENT
the key for storing the current counter in the backup.protected BooleanCondition
m_Condition
the condition to use.protected int
m_Current
the current count.protected boolean
m_IncrementOnlyIfConditionMet
only increments the counter when the condition is met.protected VariableName
m_VariableName
the variable to listen to.-
Fields inherited from class adams.flow.control.AbstractTee
BACKUP_INPUT, m_Actors, m_Asynchronous, m_AsynchronousWorker, m_InputToken, m_MinimumActiveActors, m_OutputToken
-
Fields inherited from class adams.flow.control.AbstractControlActor
m_Compatibility, m_PauseStateManager, m_SetUpSubActors
-
Fields inherited from class adams.flow.core.AbstractActor
m_Annotations, m_BackupState, m_DetectedObjectVariables, m_DetectedVariables, m_ErrorHandler, m_Executed, m_Executing, m_ExecutionListeningSupporter, m_FullName, m_LoggingPrefix, m_Name, m_Parent, m_ScopeHandler, m_Self, m_Silent, m_Skip, m_StopFlowOnError, m_StopMessage, m_Stopped, m_StorageHandler, m_VariablesUpdated
-
Fields inherited from class adams.core.option.AbstractOptionHandler
m_OptionManager
-
Fields inherited from class adams.core.logging.LoggingObject
m_Logger, m_LoggingIsEnabled, m_LoggingLevel
-
Fields inherited from interface adams.flow.core.Actor
FILE_EXTENSION, FILE_EXTENSION_GZ
-
-
Constructor Summary
Constructors Constructor Description Count()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected Hashtable<String,Object>
backupState()
Backs up the current state of the actor before update the variables.protected boolean
canFire()
Checks whether we can process the token.protected boolean
canProcessInput(Token token)
Returns whether the token can be processed in the tee actor.String
conditionTipText()
Returns the tip text for this property.protected Token
createTeeToken(Token token)
Creates the token to tee-off.void
defineOptions()
Adds options to the internal list of options.BooleanCondition
getCondition()
Returns the condition responsible for tee-ing of the token.boolean
getIncrementOnlyIfConditionMet()
Returns whether the counter is only incremented if the condition is met.String
getQuickInfo()
Returns a quick info about the actor, which will be displayed in the GUI.VariableName
getVariableName()
Returns the name of the variable to monitor.String
globalInfo()
Returns a string describing the object.String
incrementOnlyIfConditionMetTipText()
Returns the tip text for this property.void
input(Token token)
The method that accepts the input token and then processes it.protected String
processInput(Token token)
Processes the token normal, i.e., not in thread.protected void
pruneBackup()
Removes entries from the backup.protected void
reset()
Resets the scheme.protected void
restoreState(Hashtable<String,Object> state)
Restores the state of the actor before the variables got updated.void
setCondition(BooleanCondition value)
Sets the condition responsible for tee-ing of the token.void
setIncrementOnlyIfConditionMet(boolean value)
Sets whether to increment the counter only if the condition is met.String
setUp()
Initializes the sub-actors for flow execution.void
setVariableName(VariableName value)
Sets the name of the variable to monitor.void
stopExecution()
Stops the execution.void
variableChanged(VariableChangeEvent e)
Gets triggered when a variable changed (added, modified, removed).String
variableNameTipText()
Returns the tip text for this property.-
Methods inherited from class adams.flow.control.Tee
checkTeeActor, checkTeeActors, getActorHandlerInfo, getConditionalEquivalent, getTimedEquivalent, setUpTeeActors
-
Methods inherited from class adams.flow.control.AbstractTee
accepts, actorsTipText, add, add, asynchronousTipText, check, cleanUp, currentInput, doExecute, execute, finishBeforeStoppingTipText, finishedAsynchronousExecution, flushExecution, forceVariables, generates, get, getActors, getAsynchronous, getFinishBeforeStopping, getInternalActors, getMinimumActiveActors, getStoppingTimeout, hasInput, hasPendingOutput, indexOf, initialize, output, remove, removeAll, set, setActors, setAsynchronous, setFinishBeforeStopping, setLoggingLevel, setMinimumActiveActors, setSkip, setStoppingTimeout, setUpSubActors, size, stoppingTimeoutTipText, updateParent, waitForAsynchronousExecution, wrapUp
-
Methods inherited from class adams.flow.control.AbstractControlActor
active, canInspectOptions, destroy, firstActive, firstInputConsumer, flowPauseStateChanged, isPaused, isSubFlowWrappedUp, lastActive, pauseExecution, preExecute, resumeExecution, setParent, wrapUpSubFlow
-
Methods inherited from class adams.flow.core.AbstractActor
annotationsTipText, canPerformSetUpCheck, compareTo, configureLogger, equals, finalUpdateVariables, findVariables, findVariables, forCommandLine, forName, forName, getAdditionalInformation, getAnnotations, getDefaultName, getDetectedVariables, getErrorHandler, getFlowActors, getFlowExecutionListeningSupporter, getFullName, getName, getNextSibling, getParent, getParentComponent, getPreviousSibling, getRoot, getScopeHandler, getSilent, getSkip, getStopFlowOnError, getStopMessage, getStorageHandler, getVariables, handleError, handleException, hasErrorHandler, hasStopMessage, index, isBackedUp, isExecuted, isExecuting, isFinished, isHeadless, isStopped, nameTipText, performSetUpChecks, performVariableChecks, postExecute, pruneBackup, setAnnotations, setErrorHandler, setName, setSilent, setStopFlowOnError, setVariables, shallowCopy, shallowCopy, silentTipText, sizeOf, skipTipText, stopExecution, stopFlowOnErrorTipText, updateDetectedVariables, updatePrefix, updateVariables
-
Methods inherited from class adams.core.option.AbstractOptionHandler
cleanUpOptions, finishInit, getDefaultLoggingLevel, getOptionManager, loggingLevelTipText, newOptionManager, toCommandLine, toString
-
Methods inherited from class adams.core.logging.LoggingObject
getLogger, getLoggingLevel, initializeLogging, isLoggingEnabled
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface adams.flow.core.Actor
cleanUp, compareTo, destroy, equals, execute, findVariables, getAnnotations, getDefaultName, getDetectedVariables, getErrorHandler, getFlowExecutionListeningSupporter, getFullName, getName, getNextSibling, getParent, getParentComponent, getPreviousSibling, getRoot, getScopeHandler, getSilent, getSkip, getStopFlowOnError, getStopMessage, getStorageHandler, getVariables, handleError, hasErrorHandler, hasStopMessage, index, isExecuted, isFinished, isHeadless, isStopped, setAnnotations, setErrorHandler, setName, setParent, setSilent, setSkip, setStopFlowOnError, setVariables, shallowCopy, shallowCopy, sizeOf, stopExecution, toCommandLine, wrapUp
-
Methods inherited from interface adams.flow.core.ActorHandler
firstActive, lastActive
-
Methods inherited from interface adams.core.AdditionalInformationHandler
getAdditionalInformation
-
Methods inherited from interface adams.core.logging.LoggingLevelHandler
getLoggingLevel, setLoggingLevel
-
Methods inherited from interface adams.core.logging.LoggingSupporter
getLogger, isLoggingEnabled
-
Methods inherited from interface adams.core.option.OptionHandler
cleanUpOptions, getOptionManager
-
Methods inherited from interface adams.core.VariablesInspectionHandler
canInspectOptions
-
-
-
-
Field Detail
-
BACKUP_CURRENT
public static final String BACKUP_CURRENT
the key for storing the current counter in the backup.- See Also:
- Constant Field Values
-
m_Condition
protected BooleanCondition m_Condition
the condition to use.
-
m_IncrementOnlyIfConditionMet
protected boolean m_IncrementOnlyIfConditionMet
only increments the counter when the condition is met.
-
m_VariableName
protected VariableName m_VariableName
the variable to listen to.
-
m_Current
protected int m_Current
the current count.
-
-
Method Detail
-
globalInfo
public String globalInfo()
Returns a string describing the object.- Specified by:
globalInfo
in interfaceGlobalInfoSupporter
- Overrides:
globalInfo
in classTee
- Returns:
- a description suitable for displaying in the gui
-
defineOptions
public void defineOptions()
Adds options to the internal list of options.- Specified by:
defineOptions
in interfaceOptionHandler
- Overrides:
defineOptions
in classAbstractTee
-
getQuickInfo
public String getQuickInfo()
Returns a quick info about the actor, which will be displayed in the GUI.- Specified by:
getQuickInfo
in interfaceActor
- Specified by:
getQuickInfo
in interfaceQuickInfoSupporter
- Overrides:
getQuickInfo
in classAbstractTee
- Returns:
- null if no info available, otherwise short string
-
setCondition
public void setCondition(BooleanCondition value)
Sets the condition responsible for tee-ing of the token.- Parameters:
value
- the condition
-
getCondition
public BooleanCondition getCondition()
Returns the condition responsible for tee-ing of the token.- Returns:
- the condition
-
conditionTipText
public String conditionTipText()
Returns the tip text for this property.- Returns:
- tip text for this property suitable for displaying in the GUI or for listing the options.
-
setIncrementOnlyIfConditionMet
public void setIncrementOnlyIfConditionMet(boolean value)
Sets whether to increment the counter only if the condition is met.- Parameters:
value
- if true then the counter is only increment if the boolean condition returns true
-
getIncrementOnlyIfConditionMet
public boolean getIncrementOnlyIfConditionMet()
Returns whether the counter is only incremented if the condition is met.- Returns:
- true if the counter is only incremented of the boolean condition returns true
-
incrementOnlyIfConditionMetTipText
public String incrementOnlyIfConditionMetTipText()
Returns the tip text for this property.- Returns:
- tip text for this property suitable for displaying in the GUI or for listing the options.
-
setVariableName
public void setVariableName(VariableName value)
Sets the name of the variable to monitor.- Specified by:
setVariableName
in interfaceVariableMonitor
- Parameters:
value
- the name
-
getVariableName
public VariableName getVariableName()
Returns the name of the variable to monitor.- Specified by:
getVariableName
in interfaceVariableMonitor
- Returns:
- the name
-
variableNameTipText
public String variableNameTipText()
Returns the tip text for this property.- Specified by:
variableNameTipText
in interfaceVariableMonitor
- Returns:
- tip text for this property suitable for displaying in the GUI or for listing the options.
-
pruneBackup
protected void pruneBackup()
Removes entries from the backup.- Overrides:
pruneBackup
in classAbstractActor
- See Also:
AbstractActor.reset()
-
backupState
protected Hashtable<String,Object> backupState()
Backs up the current state of the actor before update the variables.- Overrides:
backupState
in classAbstractTee
- Returns:
- the backup
- See Also:
AbstractActor.updateVariables()
,AbstractActor.restoreState(Hashtable)
-
restoreState
protected void restoreState(Hashtable<String,Object> state)
Restores the state of the actor before the variables got updated.- Overrides:
restoreState
in classAbstractTee
- Parameters:
state
- the backup of the state to restore from- See Also:
AbstractActor.updateVariables()
,AbstractActor.backupState()
-
reset
protected void reset()
Resets the scheme.- Overrides:
reset
in classAbstractControlActor
-
variableChanged
public void variableChanged(VariableChangeEvent e)
Gets triggered when a variable changed (added, modified, removed).- Specified by:
variableChanged
in interfaceActor
- Specified by:
variableChanged
in interfaceVariableChangeListener
- Overrides:
variableChanged
in classAbstractActor
- Parameters:
e
- the event
-
input
public void input(Token token)
The method that accepts the input token and then processes it.- Specified by:
input
in interfaceInputConsumer
- Overrides:
input
in classAbstractTee
- Parameters:
token
- the token to accept and process
-
canFire
protected boolean canFire()
Checks whether we can process the token.- Returns:
- true if token can be processed
-
canProcessInput
protected boolean canProcessInput(Token token)
Returns whether the token can be processed in the tee actor.- Overrides:
canProcessInput
in classAbstractTee
- Parameters:
token
- the token to process- Returns:
- true if token can be processed
-
createTeeToken
protected Token createTeeToken(Token token)
Creates the token to tee-off.- Overrides:
createTeeToken
in classAbstractTee
- Parameters:
token
- the input token- Returns:
- the token to tee-off
-
processInput
protected String processInput(Token token)
Processes the token normal, i.e., not in thread.- Overrides:
processInput
in classAbstractTee
- Parameters:
token
- the token to process- Returns:
- an optional error message, null if everything OK
-
setUp
public String setUp()
Initializes the sub-actors for flow execution.- Specified by:
setUp
in interfaceActor
- Overrides:
setUp
in classAbstractControlActor
- Returns:
- null if everything is fine, otherwise error message
- See Also:
AbstractActor.reset()
-
stopExecution
public void stopExecution()
Stops the execution.- Specified by:
stopExecution
in interfaceActor
- Specified by:
stopExecution
in interfaceStoppable
- Overrides:
stopExecution
in classAbstractTee
-
-