001: /*--
002:
003: Copyright (C) 2002 Anthony Eden.
004: All rights reserved.
005:
006: Redistribution and use in source and binary forms, with or without
007: modification, are permitted provided that the following conditions
008: are met:
009:
010: 1. Redistributions of source code must retain the above copyright
011: notice, this list of conditions, and the following disclaimer.
012:
013: 2. Redistributions in binary form must reproduce the above copyright
014: notice, this list of conditions, and the disclaimer that follows
015: these conditions in the documentation and/or other materials
016: provided with the distribution.
017:
018: 3. The names "OBE" and "Open Business Engine" must not be used to
019: endorse or promote products derived from this software without prior
020: written permission. For written permission, please contact
021: me@anthonyeden.com.
022:
023: 4. Products derived from this software may not be called "OBE" or
024: "Open Business Engine", nor may "OBE" or "Open Business Engine"
025: appear in their name, without prior written permission from
026: Anthony Eden (me@anthonyeden.com).
027:
028: In addition, I request (but do not require) that you include in the
029: end-user documentation provided with the redistribution and/or in the
030: software itself an acknowledgement equivalent to the following:
031: "This product includes software developed by
032: Anthony Eden (http://www.anthonyeden.com/)."
033:
034: THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
035: WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
036: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
037: DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT,
038: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
039: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
040: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
041: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
042: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
043: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
044: POSSIBILITY OF SUCH DAMAGE.
045:
046: For more information on OBE, please see <http://obe.sourceforge.net/>.
047:
048: */
049:
050: package org.enhydra.shark.api.client.wfmc.wapi;
051:
052: /**
053: * Describes the supported states of a process definition. The states and their
054: * descriptions are taken from WfMC Interface 2/3.
055: * @author Adrian Price
056: */
057: public final class WMProcessDefinitionState extends WMObjectState {
058: static final long serialVersionUID = 1612969421701227549L;
059:
060: /** @see #DISABLED */
061: public static final int DISABLED_INT = 0;
062: /** @see #ENABLED */
063: public static final int ENABLED_INT = 1;
064: /** @see #DISABLED */
065: public static final String DISABLED_TAG = "disabled";
066: /** @see #ENABLED */
067: public static final String ENABLED_TAG = "enabled";
068: private static final String[] TAGS = { DISABLED_TAG, ENABLED_TAG };
069:
070: /** The process definition is disabled, and new instances cannot be created. */
071: public static final WMProcessDefinitionState DISABLED = new WMProcessDefinitionState(
072: DISABLED_INT);
073: /** The process definition is enabled, and new instances can be created. */
074: public static final WMProcessDefinitionState ENABLED = new WMProcessDefinitionState(
075: ENABLED_INT);
076: private static final WMProcessDefinitionState[] VALUES = {
077: DISABLED, ENABLED };
078:
079: /** Create the process definition. */
080: public static final int CREATE_ACTION = 0;
081: /** Delete the process definition. */
082: public static final int DELETE_ACTION = 1;
083: /** Disable the process definition. */
084: public static final int DISABLE_ACTION = 2;
085: /** Enable the process definition. */
086: public static final int ENABLE_ACTION = 3;
087: /** Update the process definition. */
088: public static final int UPDATE_ACTION = 4;
089:
090: // new state = STATES[state][action]
091: private static final int[][] STATES = {
092: //CREATE, DELETE, DISABLE, ENABLE, UPDATE
093: { ILLEGAL_ACTION, DISABLED_INT, DISABLED_INT, ENABLED_INT,
094: DISABLED_INT }, // DISABLED
095: { ILLEGAL_ACTION, ENABLED_INT, DISABLED_INT, ENABLED_INT,
096: ENABLED_INT } // ENABLED
097: };
098: // action = ACTIONS[state][newState]
099: private static final int[][] ACTIONS = {
100: // DISABLED, ENABLED
101: { NO_ACTION, ENABLE_ACTION }, // DISABLED
102: { DISABLE_ACTION, NO_ACTION } // ENABLED
103: };
104:
105: public static WMProcessDefinitionState valueOf(String state) {
106: return (WMProcessDefinitionState) valueOf(TAGS, VALUES, state);
107: }
108:
109: public static WMProcessDefinitionState valueOf(int state) {
110: return VALUES[state];
111: }
112:
113: public static WMProcessDefinitionState[] states() {
114: return (WMProcessDefinitionState[]) VALUES.clone();
115: }
116:
117: private WMProcessDefinitionState(int state) {
118: super (state);
119: }
120:
121: protected String[] getTags() {
122: return TAGS;
123: }
124:
125: protected WMObjectState[] getValues() {
126: return VALUES;
127: }
128:
129: protected int[] getStatesByAction() {
130: return STATES[_state];
131: }
132:
133: protected int[] getActionsByState() {
134: return ACTIONS[_state];
135: }
136:
137: public WMProcessDefinitionState() {
138: }
139: }
|