|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.oddjob.framework.BaseComponent
org.oddjob.framework.BasePrimary
org.oddjob.framework.StructuralJob<Runnable>
org.oddjob.jobs.structural.ForEachJob
public class ForEachJob
The return state of this job depends on the return state
of the children (like SequentialJob
). Hard resetting this job
will cause the children to be destroyed and recreated on the next run
(with possibly new values). Soft resetting this job will reset the
children but when re-run will not reconfigure the values.
As yet There is no persistence for child jobs.
It is not possible to reference the internal jobs via their id from outside the foreach job, but within the foreach internal configuration they can reference each other and themselves via their ids.
<oddjob id="this" xmlns:arooa="http://rgordon.co.uk/oddjob/arooa"> <job> <foreach id="foreach"> <values> <list> <values> <value value="Red"/> <value value="Blue"/> <value value="Green"/> </values> </list> </values> <configuration> <arooa:configuration resource="org/oddjob/jobs/structural/ForEachEchoColour.xml"/> </configuration> </foreach> </job> </oddjob>The internal configuration is:
<foreach id="colours"> <job> <echo id="echo-colour" name="${colours.current}">I'm number ${colours.index} and my name is ${echo-colour.name}</echo> </job> </foreach>Unlike other jobs, a job in a for each has it's name configured when it is loaded, before it is run. The job references its self using its id.
This example will display the following on the console:
I'm number 0 and my name is Red I'm number 1 and my name is Blue I'm number 2 and my name is Green
test1.txt
,
test2.txt
and test3.txt
are
copied to the work/foreach directory
. The oddjob argument
${this.args[0]}
is so that a base directory can be passed
in as part of the unit test for this example.
<oddjob id="this" xmlns:arooa="http://rgordon.co.uk/oddjob/arooa"> <job> <foreach> <values> <files files="${this.args[0]}/test/io/reference/test?.txt"/> </values> <configuration> <arooa:configuration> <xml> <xml> <foreach id="copy-files"> <job> <copy to="${this.args[0]}/work/foreach"> <from> <value value="${copy-files.current}"/> </from> </copy> </job> </foreach> </xml> </xml> </arooa:configuration> </configuration> </foreach> </job> </oddjob>Also
ExistsJob
has a similar example.ExecutorThrottleType
to limit the number of parallel
executions to three.
<oddjob> <job> <foreach parallel="true"> <values> <tokenizer text="1,2,3,4,5,6,7,8,9"/> </values> <configuration> <xml> <foreach id="loop"> <job> <wait name="Wait ${loop.current}"/> </job> </foreach> </xml> </configuration> <executorService> <throttle limit="3"/> </executorService> </foreach> </job> </oddjob>
<oddjob id="this"> <job> <foreach preLoad="2" purgeAfter="3"> <values> <tokenizer text="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15"/> </values> <configuration> <xml> <foreach id="loop"> <job> <wait name="Wait ${loop.current} " pause="1"/> </job> </foreach> </xml> </configuration> </foreach> </job> </oddjob>
Nested Class Summary | |
---|---|
class |
ForEachJob.LocalBean
This provides a bean for current properties. |
Field Summary | |
---|---|
static ArooaElement |
FOREACH_ELEMENT
Root element for configuration. |
Fields inherited from class org.oddjob.framework.StructuralJob |
---|
childHelper, childStateReflector, stateHandler, stop, structuralState |
Fields inherited from class org.oddjob.framework.BaseComponent |
---|
iconHelper |
Constructor Summary | |
---|---|
ForEachJob()
Constructor. |
Method Summary | |
---|---|
void |
addOwnerStateListener(OwnerStateListener listener)
Add a listener. |
protected void |
execute()
Execute this job. |
ArooaConfiguration |
getConfiguration()
|
Object |
getCurrent()
The current value. |
File |
getFile()
|
int |
getIndex()
|
protected StateOperator |
getInitialStateOp()
Subclasses must provide the StateOperator that will decide
how to evaluate the children's state. |
int |
getPreLoad()
|
int |
getPurgeAfter()
|
boolean |
hardReset()
Perform a hard reset on the job. |
boolean |
isLoadable()
Is the component currently loadable. |
boolean |
isParallel()
|
void |
load()
Load the component. |
protected Runnable |
loadConfigFor(Object value)
Load a configuration for a single value. |
protected void |
onDestroy()
Subclasses override this method to clear up resources. |
protected void |
onStop()
Allow sub classes to do something on stop. |
protected void |
preLoad()
Setup and load the first jobs. |
ConfigurationSession |
provideConfigurationSession()
Provide a ConfigurationSession . |
void |
removeOwnerStateListener(OwnerStateListener listener)
Remove a listener. |
DesignFactory |
rootDesignFactory()
Get the design factory for the configuration. |
ArooaElement |
rootElement()
Get the root element. |
void |
setConfiguration(ArooaConfiguration configuration)
|
void |
setExecutorService(ExecutorService executorService)
Set the ExecutorService . |
void |
setFile(File file)
|
void |
setParallel(boolean parallel)
|
void |
setPreLoad(int preLoad)
|
void |
setPurgeAfter(int purgeAfter)
|
void |
setValues(Iterable<? extends Object> values)
Add a type. |
protected void |
startChildStateReflector()
|
void |
unload()
Unload the component. |
Methods inherited from class org.oddjob.framework.StructuralJob |
---|
addStructuralListener, fireDestroyedState, force, getStateChanger, isStop, onReset, removeStructuralListener, run, softReset, stateHandler, stop |
Methods inherited from class org.oddjob.framework.BasePrimary |
---|
configure, getName, logger, logger, loggerName, save, setName, toString |
Methods inherited from class org.oddjob.framework.BaseComponent |
---|
addIconListener, addPropertyChangeListener, addStateListener, configure, destroy, firePropertyChange, getArooaSession, iconForId, initialise, lastStateEvent, onConfigured, onInitialised, removeIconListener, removePropertyChangeListener, removeStateListener, save, setArooaContext, setArooaSession |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Methods inherited from interface org.oddjob.Stoppable |
---|
stop |
Methods inherited from interface org.oddjob.Stateful |
---|
addStateListener, lastStateEvent, removeStateListener |
Field Detail |
---|
public static final ArooaElement FOREACH_ELEMENT
Constructor Detail |
---|
public ForEachJob()
Method Detail |
---|
@Inject public void setExecutorService(ExecutorService executorService)
ExecutorService
.
Property: executorService
Description: The ExecutorService to use. This will be automatically set by Oddjob.
Required: No.
child
- A childpublic Object getCurrent()
public void setValues(Iterable<? extends Object> values)
type
- The type.protected StateOperator getInitialStateOp()
StructuralJob
StateOperator
that will decide
how to evaluate the children's state.
getInitialStateOp
in class StructuralJob<Runnable>
public ConfigurationSession provideConfigurationSession()
ConfigurationOwner
ConfigurationSession
.
provideConfigurationSession
in interface ConfigurationOwner
ConfigurationSession
. My be null if no session is available.public void addOwnerStateListener(OwnerStateListener listener)
ConfigurationOwner
addOwnerStateListener
in interface ConfigurationOwner
public void removeOwnerStateListener(OwnerStateListener listener)
ConfigurationOwner
removeOwnerStateListener
in interface ConfigurationOwner
public DesignFactory rootDesignFactory()
ConfigurationOwner
rootDesignFactory
in interface ConfigurationOwner
public ArooaElement rootElement()
ConfigurationOwner
rootElement
in interface ConfigurationOwner
protected Runnable loadConfigFor(Object value) throws ArooaParseException
value
-
ArooaParseException
protected void preLoad() throws ArooaParseException
if preLoad
is 0 all will be loaded otherwise up to
that number will be loaded.
ArooaParseException
public void load()
Loadable
load
in interface Loadable
public void unload()
Loadable
unload
in interface Loadable
public boolean isLoadable()
Loadable
isLoadable
in interface Loadable
protected void execute() throws Exception
StructuralJob
execute
in class StructuralJob<Runnable>
Exception
- If the unexpected occurs.protected void startChildStateReflector()
startChildStateReflector
in class StructuralJob<Runnable>
protected void onStop() throws FailedToStopException
StructuralJob
onStop
in class StructuralJob<Runnable>
FailedToStopException
public int getIndex()
protected void onDestroy()
BaseComponent
onDestroy
in class StructuralJob<Runnable>
public boolean hardReset()
hardReset
in interface Resetable
hardReset
in class StructuralJob<Runnable>
public void setFile(File file)
Property: file
Description: The name of the configuration file. to use for configuration.
Required: No.
public File getFile()
public ArooaConfiguration getConfiguration()
public void setConfiguration(ArooaConfiguration configuration)
public int getPreLoad()
public void setPreLoad(int preLoad)
public int getPurgeAfter()
public void setPurgeAfter(int purgeAfter)
public boolean isParallel()
public void setParallel(boolean parallel)
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |