state:if


This job implements an if/then/else logic. This job can contain any number of child jobs. The first job is taken to be the condition. If the resulting state matches the given state the second job is executed. If it doesn't then the third job is executed, (if it exists).

The completion state is that of the then or else job. If either don't exist then the Job is flagged as complete.

If any more than three jobs are provided the extra jobs are ignored.


Property Summary

jobs The child jobs.
name A name, can be any text.
state The state to check against.

Example Summary

Example 1 If a file exists.
Example 2 An example showing lots of if's.

Property Detail

jobs

Configured ByELEMENT
AccessWRITE_ONLY
RequiredAt least one.

The child jobs.

name

Configured ByATTRIBUTE
AccessREAD_WRITE
RequiredNo.

A name, can be any text.

state

Configured ByATTRIBUTE
AccessREAD_WRITE
RequiredNo, defaults to COMPLETE.

The state to check against.


Examples

Example 1

If a file exists.

<oddjob id="this" xmlns:state="http://rgordon.co.uk/oddjob/state">
    <job>
        <state:if>
            <jobs>
                <exists name="Check File Exists" file="${this.dir}/data/some.txt"/>
                <echo id="then" name="Echo to Console">File Exists</echo>
                <echo id="else" name="Echo to Console">File Doesn't Exist</echo>
            </jobs>
        </state:if>
    </job>
</oddjob>

Example 2

An example showing lots of if's. All these if's go to COMPLETE state when run.

<oddjob>
    <job>
        <sequential xmlns:state="http://rgordon.co.uk/oddjob/state">
            <jobs>
                <state:if>
                    <jobs>
                        <echo>Hello</echo>
                        <echo>Good Bye</echo>
                    </jobs>
                </state:if>
                <state:if>
                    <jobs>
                        <state:flag name="Exception" state="EXCEPTION"/>
                        <state:flag name="Unexpected 1" state="EXCEPTION"/>
                        <echo>No Hello</echo>
                    </jobs>
                </state:if>
                <state:if>
                    <jobs>
                        <echo>Only Hello</echo>
                    </jobs>
                </state:if>
                <state:if state="!COMPLETE">
                    <jobs>
                        <state:flag name="Exception" state="EXCEPTION"/>
                        <echo>No Hello</echo>
                    </jobs>
                </state:if>
                <state:if state="!COMPLETE">
                    <jobs>
                        <echo>Hello</echo>
                        <state:flag name="Unexpected 2" state="EXCEPTION"/>
                    </jobs>
                </state:if>
                <state:if state="!EXCEPTION">
                    <jobs>
                        <echo>Hello</echo>
                        <echo>Good Bye</echo>
                        <state:flag name="Unexpected 3" state="EXCEPTION"/>
                    </jobs>
                </state:if>
            </jobs>
        </sequential>
    </job>
</oddjob>


(c) Rob Gordon 2005 - 2011