|
||||||||
| 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 | |
|---|---|
static 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()
|
int |
getPreLoad()
|
int |
getPurgeAfter()
|
protected StateOperator |
getStateOp()
|
boolean |
hardReset()
Perform a hard reset on the job. |
boolean |
isLoadable()
Is the component currently loadable. |
boolean |
isParallel()
|
void |
load()
Load the component. |
protected void |
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()
|
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, 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 getStateOp()
getStateOp in class StructuralJob<Runnable>public ConfigurationSession provideConfigurationSession()
ConfigurationOwnerConfigurationSession.
provideConfigurationSession in interface ConfigurationOwnerConfigurationSession. My be null if no session is available.public void addOwnerStateListener(OwnerStateListener listener)
ConfigurationOwner
addOwnerStateListener in interface ConfigurationOwnerpublic void removeOwnerStateListener(OwnerStateListener listener)
ConfigurationOwner
removeOwnerStateListener in interface ConfigurationOwnerpublic DesignFactory rootDesignFactory()
ConfigurationOwner
rootDesignFactory in interface ConfigurationOwnerpublic ArooaElement rootElement()
ConfigurationOwner
rootElement in interface ConfigurationOwner
protected void loadConfigFor(Object value)
throws ArooaParseException
value -
ArooaParseException
protected void preLoad()
throws ArooaParseException
ArooaParseExceptionpublic void load()
Loadable
load in interface Loadablepublic void unload()
Loadable
unload in interface Loadablepublic 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>FailedToStopExceptionpublic int getIndex()
protected void onDestroy()
BaseComponent
onDestroy in class StructuralJob<Runnable>public boolean hardReset()
hardReset in interface ResetablehardReset 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 | |||||||