package org.oddjob.state; /** * Encapsulate the allowed states for a job. * * @author Rob Gordon */ public enum JobState implements State { /** * Indicates the job is ready to be executing. The Oddjob Framework * will only execute a job which is in this state. */ READY() { @Override public boolean isReady() { return true; } @Override public boolean isExecuting() { return false; } @Override public boolean isStoppable() { return false; } @Override public boolean isComplete() { return false; } @Override public boolean isIncomplete() { return false; } @Override public boolean isException() { return false; } @Override public boolean isDestroyed() { return false; } }, /** * Indicates the job is executing. */ EXECUTING() { @Override public boolean isReady() { return false; } @Override public boolean isExecuting() { return true; } @Override public boolean isStoppable() { return true; } @Override public boolean isComplete() { return false; } @Override public boolean isIncomplete() { return false; } @Override public boolean isException() { return false; } @Override public boolean isDestroyed() { return false; } }, /** * Indicates the job is not complete. Typically this is not unexpected, * for instance a job which looks for a file, and a * parent job will re-execute the job again at a later date. */ INCOMPLETE() { @Override public boolean isReady() { return false; } @Override public boolean isExecuting() { return false; } @Override public boolean isStoppable() { return false; } @Override public boolean isComplete() { return false; } @Override public boolean isIncomplete() { return true; } @Override public boolean isException() { return false; } @Override public boolean isDestroyed() { return false; } }, /** * Indicates job has completed. */ COMPLETE() { @Override public boolean isReady() { return false; } @Override public boolean isExecuting() { return false; } @Override public boolean isStoppable() { return false; } @Override public boolean isComplete() { return true; } @Override public boolean isIncomplete() { return false; } @Override public boolean isException() { return false; } @Override public boolean isDestroyed() { return false; } }, /** * Indicates an exception has occurred. This is generally * recoverable. Such as database failure, disk full etc. */ EXCEPTION() { @Override public boolean isReady() { return false; } @Override public boolean isExecuting() { return false; } @Override public boolean isStoppable() { return false; } @Override public boolean isComplete() { return false; } @Override public boolean isIncomplete() { return false; } @Override public boolean isException() { return true; } @Override public boolean isDestroyed() { return false; } }, /** * The job has been destroyed. It can no longer be used. */ DESTROYED() { @Override public boolean isReady() { return false; } @Override public boolean isExecuting() { return false; } @Override public boolean isStoppable() { return false; } @Override public boolean isComplete() { return false; } @Override public boolean isIncomplete() { return false; } @Override public boolean isException() { return false; } @Override public boolean isDestroyed() { return true; } }, ; /** * Utility function to convert a state text to to the JobState. * * @param state Case insensitive text. * @return The corresponding jobState or null if it's invalid. */ public static JobState stateFor(String state) { state = state.toUpperCase(); return valueOf(state); } }