Package com.globalmentor.model
Class AbstractOperation
- java.lang.Object
-
- com.globalmentor.beans.BoundPropertyObject
-
- com.globalmentor.model.AbstractTask
-
- com.globalmentor.model.AbstractOperation
-
- All Implemented Interfaces:
PropertyBindable
,PropertyConstrainable
,Operation
,Task
,java.lang.Runnable
- Direct Known Subclasses:
AbstractReadWriteLockOperation
,RunnableOperation
public abstract class AbstractOperation extends AbstractTask implements Operation, java.lang.Runnable, Task
Abstract implementation of some operation that can be executed. As a task, this implementation also indicates viaAbstractTask.getState()
whether it has been started and/or canceled.An operation is a
Runnable
, but this implementation'srun()
method delegates toexecute()
, the method that should be overridden by implementations and in which the actual execution logic should be placed.This implementation's state is not governed by any thread locks.
- Author:
- Garret Wilson
-
-
Field Summary
-
Fields inherited from class com.globalmentor.beans.BoundPropertyObject
NO_PROPERTY_CHANGE_LISTENERS, NO_VETOABLE_CHANGE_LISTENERS
-
Fields inherited from interface com.globalmentor.model.Task
STATE_PROPERTY
-
-
Constructor Summary
Constructors Constructor Description AbstractOperation()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
cancel()
Cancels the operation.protected abstract void
execute()
Executes the operation.protected void
initialize()
Method that can be overridden to initialize before execution.boolean
isCanceled()
This implementation returns whether the state isTaskState.CANCELED
.void
run()
This version sets the state toTaskState.INITIALIZE
and then callsinitialize()
.-
Methods inherited from class com.globalmentor.model.AbstractTask
getEventListenerManager, getState, setState
-
Methods inherited from class com.globalmentor.beans.BoundPropertyObject
addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, addVetoableChangeListener, createPostponedPropertyChangeEvent, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, fireVetoableChange, getForwardPropertyChangeListener, getPropertyChangeListeners, getPropertyChangeListeners, getPropertyChangeSupport, getRepeatPropertyChangeListener, getRepeatVetoableChangeListener, getVetoableChangeListeners, getVetoableChangeListeners, getVetoableChangeSupport, hasPropertyChangeListeners, hasVetoableChangeListeners, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, removeVetoableChangeListener
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.globalmentor.beans.PropertyBindable
addPropertyChangeListener, addPropertyChangeListener, getPropertyChangeListeners, getPropertyChangeListeners, hasPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListener
-
Methods inherited from interface com.globalmentor.beans.PropertyConstrainable
addVetoableChangeListener, addVetoableChangeListener, getVetoableChangeListeners, getVetoableChangeListeners, hasVetoableChangeListeners, removeVetoableChangeListener, removeVetoableChangeListener
-
-
-
-
Method Detail
-
cancel
public void cancel()
Cancels the operation. If called before execution has started, the operation will not execute. This implementation sets the state toTaskState.CANCELED
.- Specified by:
cancel
in interfaceOperation
- See Also:
AbstractTask.setState(TaskState)
-
isCanceled
public boolean isCanceled()
This implementation returns whether the state isTaskState.CANCELED
.- Specified by:
isCanceled
in interfaceOperation
- Returns:
- Whether this operation has been canceled and should not execute.
- See Also:
AbstractTask.getState()
-
initialize
protected void initialize()
Method that can be overridden to initialize before execution.
-
run
public final void run()
This version sets the state toTaskState.INITIALIZE
and then callsinitialize()
. The method then sets the state toTaskState.INCOMPLETE
and delegates toexecute()
. After successful execution, the task state is set toTaskState.COMPLETE
. If an error occurs, the task state is set toTaskState.ERROR
.- Specified by:
run
in interfacejava.lang.Runnable
- Throws:
java.lang.IllegalStateException
- if the state isTaskState.INCOMPLETE
.- See Also:
initialize()
-
execute
protected abstract void execute() throws CancelException
Executes the operation.This method should not change its state by calling
AbstractTask.setState(TaskState)
. If cancellation is needed (to prevent recurrence, for example), aCancelException
should be thrown.- Throws:
CancelException
- if the current operation should be canceled.
-
-