001: /*--
002:
003: Copyright (C) 2002-2005 Adrian Price.
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: adrianprice@sourceforge.net.
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: Adrian Price (adrianprice@users.sourceforge.net).
027:
028: THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
029: WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
030: OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
031: DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT,
032: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
033: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
034: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
035: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
036: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
037: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
038: POSSIBILITY OF SUCH DAMAGE.
039:
040: For more information on OBE, please see
041: <http://obe.sourceforge.net/>.
042:
043: */
044:
045: package org.obe.xpdl.model.activity;
046:
047: import org.obe.util.AbstractEnum;
048: import org.obe.xpdl.XPDLNames;
049:
050: import java.util.HashMap;
051: import java.util.List;
052: import java.util.Map;
053:
054: /**
055: * @author Adrian Price
056: */
057: public final class ToolType extends AbstractEnum {
058: private static final long serialVersionUID = 5121160093995786673L;
059:
060: public static final int APPLICATION_INT = 0;
061: public static final int PROCEDURE_INT = 1;
062: /**
063: * ToolType representing an application. An application is an executable
064: * tool that executes in its own environment (i.e., not in the workflow
065: * engine's JVM).
066: */
067: public static final ToolType APPLICATION = new ToolType(
068: XPDLNames.APPLICATION_KIND, APPLICATION_INT);
069: /**
070: * ToolType representing a procedure. A procedure is a tool that is
071: * executed in the workflow engine's JVM.
072: */
073: public static final ToolType PROCEDURE = new ToolType(
074: XPDLNames.PROCEDURE_KIND, PROCEDURE_INT);
075:
076: private static final ToolType[] _values = { APPLICATION, PROCEDURE };
077: private static final Map _tagMap = new HashMap();
078: public static final List VALUES = clinit(_values, _tagMap);
079:
080: /**
081: * Convert the specified String to an ToolType object. If there
082: * no matching ToolType for the given String then this method
083: * returns null.
084: *
085: * @param tag The String
086: * @return The ToolType object
087: */
088: public static ToolType valueOf(String tag) {
089: ToolType toolType = (ToolType) _tagMap.get(tag);
090: if (toolType == null && tag != null)
091: throw new IllegalArgumentException(tag);
092: return toolType;
093: }
094:
095: /**
096: * Construct a new ToolType instance.
097: *
098: * @param name
099: * @param ordinal The value
100: */
101: private ToolType(String name, int ordinal) {
102: super (name, ordinal);
103: }
104:
105: public List family() {
106: return VALUES;
107: }
108: }
|