Package com.iizix.prop.vs
Class VSWorkUnit
- java.lang.Object
- com.iizix.prop.vs.VSWorkUnit
public class VSWorkUnit extends java.lang.Object
Class used to handle manipulation with one or more VS components that in turn may contain others. It is used to postpone other parties that also wishes to process the components and would like to be informed when the others completes their tasks. Typically, this is used by e.g. the Database Connector before it starts to do massive changes to a VS Table. On the consumer side, the UI Grid uses this in order to avoid processing updates to the VS Table until the database has completed its work unit.This class is by no means a locking class, but rather a helper class to avoid updating data from a structure that is not yet "stable".
This class is thread-safe.
- Author:
- Christopher Mindus
Constructor Summary
Constructors Constructor Description VSWorkUnit(VirtualSpace virtualSpace)
Creates a work unit for the entire VirtualSpace.VSWorkUnit(VSComponent component)
The list of components used in the for the VS update work.VSWorkUnit(VSComponent... components)
The list of components used in the for the VS update work.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
add(VSComponent component)
Adds another component in the work unit.boolean
areFree(java.lang.Runnable callback, VSComponent... components)
Verifies if component(s) is/are included in the work unit.void
beginWork()
Begins the work unit.void
endWork()
Ends the work unit.boolean
isFree(java.lang.Runnable callback, VSComponent component)
Verifies if a component is included in the work unit.
Constructor Detail
VSWorkUnit
public VSWorkUnit(VirtualSpace virtualSpace)
Creates a work unit for the entire VirtualSpace. This is typically done in complex update areas where the components are not know, such as e.g. the rollback of a GyroTransaction.- Parameters:
virtualSpace
- The VirtualSpace involved in the work.
VSWorkUnit
public VSWorkUnit(VSComponent component)
The list of components used in the for the VS update work.- Parameters:
component
- The VS component involved in the work.- Throws:
java.lang.IllegalArgumentException
- If the components doesn't have a VirtualSpace.
VSWorkUnit
public VSWorkUnit(VSComponent... components)
The list of components used in the for the VS update work.- Parameters:
components
- The VS components involved in the work.- Throws:
java.lang.IllegalArgumentException
- If the components doesn't have a VirtualSpace or if the components is of length zero or are in different VirtualSpaces.
Method Detail
add
public void add(VSComponent component)
Adds another component in the work unit.- Parameters:
component
- The VS component involved in the work.- Throws:
java.lang.IllegalArgumentException
- If the component is in a different VirtualSpace.java.lang.IllegalStateException
- If the work has begun.
beginWork
public void beginWork()
Begins the work unit. It is VERY important to complete the processing of the work unit with a call to
.endWork()
This method registers the work unit with the VirtualSpace in question.
- Throws:
java.lang.IllegalStateException
- If this method is called twice.
endWork
public void endWork()
Ends the work unit. This call will call all postponed callbacks that have been added during the work unit with the
orisFree(Runnable, VSComponent)
methods.areFree(Runnable, VSComponent...)
- Throws:
java.lang.IllegalStateException
- If this method is called without prior beginWork or called twice.
isFree
public boolean isFree(java.lang.Runnable callback, VSComponent component)
Verifies if a component is included in the work unit.- Parameters:
callback
- The callback to call when work completes, or null for none.component
- The component to verify.- Returns:
- true if it's OK to process, false means the component is included in this work unit and if
callback
is non-null, it will be called.
areFree
public boolean areFree(java.lang.Runnable callback, VSComponent... components)
Verifies if component(s) is/are included in the work unit.- Parameters:
callback
- The callback to call when work completes, or null for none.components
- The components to verify.- Returns:
- true if it's OK to process, false means the component is included in this work unit and if
callback
is non-null, it will be called.