Class ProgressStatusBase
- All Implemented Interfaces:
Serializable,ProgressStatus
- Direct Known Subclasses:
ProgressStatusImpl,ProgressStatusMirroringImpl
ProgressStatus.- Author:
- mmares
- See Also:
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Set<ProgressStatusBase.ChildProgressStatus>protected booleanprotected intprotected Stringprotected Stringprotected ProgressStatusBaseprotected int -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedProgressStatusBase(String name, int totalStepCount, ProgressStatusBase parent, String id) Construct namedProgressStatuswith defined expected count of steps.protectedProgressStatusBase(String name, ProgressStatusBase parent, String id) Construct namedProgressStatus.protectedProgressStatusBase(ProgressStatusBase parent, String id) Construct unnamedProgressStatus -
Method Summary
Modifier and TypeMethodDescriptionprotected voidallocateStapsForChildProcess(int allocatedSteps) voidcomplete()Indicates the command is complete and no further progress status will be delivered.voidIndicates the command is complete and no further progress status will be delivered.protected booleanComplete thisProgressStatusand all sub-ProgressStatuses but does not fire event to parent statuses.floatprotected floatintcreateChild(int allocatedSteps) Create a child ProgressStatus object which can be used independently by a command's subroutine or sub-commands.createChild(String name, int allocatedSteps) Create a child ProgressStatus object which can be used independently by a command's subroutine or sub-commands.createChild(String name, int allocatedSteps, int totalStepCount) protected abstract ProgressStatusBasedoCreateChild(String name, int totalStepCount) protected ProgressStatusBaseRecursive search for child by id.protected voidfireEvent(ProgressStatusEvent event) FiresProgressStatusEventto parent.intgetId()getName()intRemaining count of steps to complete this progress.
totalStepCount - currentStepCount - allocated step countintTotal step count.booleanReturns true if theProgressStatushas been marked as complete via thecomplete()method.voidprogress(int steps) Indicate progress occurred.voidIndicates progress occurred.voidIndicates progress occurred.voidIndicate progress occurred.voidsetCurrentStepCount(int stepCount) This allows the current step count to be changed to a specific value, for example when an error occurs and the command must repeat a set of operations.
This will likely result in the overall completion percentage jumping when the next progress() message is generated.voidsetTotalStepCount(int totalStepCount) Number of steps necessary to complete the operation.toString()
-
Field Details
-
name
-
id
-
totalStepCount
protected int totalStepCount -
currentStepCount
protected int currentStepCount -
parent
-
completed
protected boolean completed -
children
-
-
Constructor Details
-
ProgressStatusBase
Construct unnamedProgressStatus- Parameters:
parent- ParentProgressStatusid- Is useful for event transfer
-
ProgressStatusBase
Construct namedProgressStatus.- Parameters:
name- of theProgressStatusimplementation is used to identify source of progress messages.parent- ParentProgressStatusid- Is useful for event transfer
-
ProgressStatusBase
Construct namedProgressStatuswith defined expected count of steps.- Parameters:
name- of theProgressStatusimplementation is used to identify source of progress messages.totalStepCount- How many steps are expected in thisProgressStatusparent- ParentProgressStatusid- Is useful for event transfer
-
-
Method Details
-
fireEvent
FiresProgressStatusEventto parent. -
setTotalStepCount
public void setTotalStepCount(int totalStepCount) Description copied from interface:ProgressStatusNumber of steps necessary to complete the operation. Value is used to determine percentage of work completed. This method can be used to override the totalStepCount if it was established via theProgressannotation. The total step count is used as the denominator for computing the completion percentage as reported in the command's progress output:percent complete = current step count / total step count * 100Note the above formula is a bit more complex when child ProgressStatus objects are in use.The total step count can be changed after being set but may result in the completion percentage jumping (forward or backwards).
If the total step count is not set then a completion percentage will not be available.
It can be also set during injection using
totalStepCountparameter inProgressannotation.- Specified by:
setTotalStepCountin interfaceProgressStatus- Parameters:
totalStepCount- non-negative value defines denominator for the percentage computation
-
getTotalStepCount
public int getTotalStepCount()Description copied from interface:ProgressStatusTotal step count. Used for computing the completion percentage.- Specified by:
getTotalStepCountin interfaceProgressStatus- Returns:
- total step count. Negative for undefined value.
-
getRemainingStepCount
public int getRemainingStepCount()Description copied from interface:ProgressStatusRemaining count of steps to complete this progress.
totalStepCount - currentStepCount - allocated step count- Specified by:
getRemainingStepCountin interfaceProgressStatus- Returns:
- negative value for undefined totalStepCount. 0 value for completed progress.
-
progress
Description copied from interface:ProgressStatusIndicates progress occurred. The steps taken will be used to reduce the remaining step count. If the number of steps taken exceeds the total step count the current step count will be normalized to the total step count. This avoids the completion percentage ever exceeding 100%. The message will be sent to the client along with the completion percentage if it can be computed.- Specified by:
progressin interfaceProgressStatus- Parameters:
steps- the number of steps taken. Negative steps will reduce the completion percentage. Never to non-negative value.message- to be displayed by the client.spinner-truestarts showing the spinner. It will be active until next progress.
-
progress
Description copied from interface:ProgressStatusIndicates progress occurred. The steps taken will be used to reduce the remaining step count. If the number of steps taken exceeds the total step count the current step count will be normalized to the total step count. This avoids the completion percentage ever exceeding 100%. The message will be sent to the client along with the completion percentage if it can be computed.- Specified by:
progressin interfaceProgressStatus- Parameters:
steps- the number of steps taken. Negative steps will reduce the completion percentage. Never to non-negative value.message- to be displayed by the client.
-
progress
public void progress(int steps) Description copied from interface:ProgressStatusIndicate progress occurred. The existing (prior) progress message, if available will be reused. If the number of steps taken exceeds the total step count the current step count will be normalized to the total step count. This avoids the completion percentage ever exceeding 100%.- Specified by:
progressin interfaceProgressStatus- Parameters:
steps- the number of steps taken. Negative steps will reduce the completion percentage. Never to non-negative value.
-
progress
Description copied from interface:ProgressStatusIndicate progress occurred. The completion percentage (if computable) will be displayed.- Specified by:
progressin interfaceProgressStatus- Parameters:
message- to be displayed by the client.
-
setCurrentStepCount
public void setCurrentStepCount(int stepCount) Description copied from interface:ProgressStatusThis allows the current step count to be changed to a specific value, for example when an error occurs and the command must repeat a set of operations.
This will likely result in the overall completion percentage jumping when the next progress() message is generated. If child ProgressStatus objects exist care must be taken when changing the step count value to account for steps allocated to children. Generally the current step count should not be advanced beyond the number of steps allocated to child ProgressStatus objects.- Specified by:
setCurrentStepCountin interfaceProgressStatus- Parameters:
stepCount- newstepCountvalue. Negative is normalized to 0 greater than the total step count is normalized to the total step count
-
complete
Description copied from interface:ProgressStatusIndicates the command is complete and no further progress status will be delivered. Subsequent invocations of progress() will be ignored. This method also invokescomplete()on all child ProgressStatus objects. If this method is not invoked prior to the command completing the CLI framework will implicitly invokecomplete()for the ProgressStatus associated with the command.- Specified by:
completein interfaceProgressStatus- Parameters:
message- to be displayed to the user.
-
completeSilently
protected boolean completeSilently()Complete thisProgressStatusand all sub-ProgressStatuses but does not fire event to parent statuses. -
complete
public void complete()Description copied from interface:ProgressStatusIndicates the command is complete and no further progress status will be delivered. Subsequent invocations of progress() will be ignored. This method also invokescomplete()on all child ProgressStatus objects. If this method is not invoked prior to the command completing the CLI framework will implicitly invokecomplete()for the ProgressStatus associated with the command.- Specified by:
completein interfaceProgressStatus
-
isComplete
public boolean isComplete()Description copied from interface:ProgressStatusReturns true if theProgressStatushas been marked as complete via thecomplete()method.- Specified by:
isCompletein interfaceProgressStatus- Returns:
- if this progress was completed
-
doCreateChild
-
allocateStapsForChildProcess
protected void allocateStapsForChildProcess(int allocatedSteps) -
createChild
-
createChild
Description copied from interface:ProgressStatusCreate a child ProgressStatus object which can be used independently by a command's subroutine or sub-commands.
The name allocated to the child is used in the progress status output:
80%: [parent name:[child name: message]]The allocatedSteps parameter represents the subset of steps from the parent's allocation that will be given to the child to complete. When the child has completed all its steps it will have progressed the parent's allocated steps.
Example: Suppose the parent sets its TotalStepCount to 100 and allocates 25 steps to a child. The child sets its TotalStepCount to 100. Then for every 4 steps the child progresses it will move the parent's progress 1 step given the parent only allocated a total of 25 steps to the child but the child has a total step count of
100: 100/25 = 4child steps are equivalent to 1 parent step. Note: care must be taken when allocating steps to children. The number of steps allocated to all children of the parent must not exceed the parent's total step count. Doing so may results in erroneous completion percentages.- Specified by:
createChildin interfaceProgressStatus- Parameters:
name- to be associated with the child ProgressStatus. This name appears in the progress sent to the client. If the name is an empty string a name for this child will not be included in the message.allocatedSteps- the number of progress steps the parent is allocating to the child.- Returns:
- ProgressStatus of the child
-
createChild
Description copied from interface:ProgressStatusCreate a child ProgressStatus object which can be used independently by a command's subroutine or sub-commands.
This version does not take a name and therefor a child name will not be use in any messages generated from this ProgressStatus object.80%: [parent name: message]- Specified by:
createChildin interfaceProgressStatus- Parameters:
allocatedSteps- the number of progress steps the parent is allocating to the child.- Returns:
- ProgressStatus of the child
-
getCurrentStepCount
public int getCurrentStepCount() -
computeCompleteSteps
protected float computeCompleteSteps() -
computeCompletePortion
public float computeCompletePortion() -
computeSumSteps
public int computeSumSteps() -
toString
-
getChildren
-
getChildProgressStatuses
-
getId
- Specified by:
getIdin interfaceProgressStatus- Returns:
- Id is unique for any ProgressStatuses. It is mainly used for remote communication.
-
getName
-
getParrent
-
findById
Recursive search for child by id.
-