001: /*
002: * Copyright (C) 2002-2005 Adrian Price.
003: * All rights reserved.
004: *
005: * Redistribution and use in source and binary forms, with or without
006: * modification, are permitted provided that the following conditions
007: * are met:
008: *
009: * 1. Redistributions of source code must retain the above copyright
010: * notice, this list of conditions, and the following disclaimer.
011: *
012: * 2. Redistributions in binary form must reproduce the above copyright
013: * notice, this list of conditions, and the disclaimer that follows
014: * these conditions in the documentation and/or other materials
015: * provided with the distribution.
016: *
017: * 3. The names "OBE" and "Open Business Engine" must not be used to
018: * endorse or promote products derived from this software without prior
019: * written permission. For written permission, please contact
020: * adrianprice@sourceforge.net.
021: *
022: * 4. Products derived from this software may not be called "OBE" or
023: * "Open Business Engine", nor may "OBE" or "Open Business Engine"
024: * appear in their name, without prior written permission from
025: * Adrian Price (adrianprice@users.sourceforge.net).
026: *
027: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
028: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
029: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
030: * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT,
031: * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
032: * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
033: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
034: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
035: * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
036: * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
037: * POSSIBILITY OF SUCH DAMAGE.
038: *
039: * For more information on OBE, please see
040: * <http://obe.sourceforge.net/>.
041: */
042: package org.obe.xpdl.model.misc;
043:
044: import org.obe.util.AbstractBean;
045: import org.obe.xpdl.XPDLMessages;
046:
047: /**
048: * Abstract implementation of the WFElement interface which implements base
049: * functionality used by all WFElement implementations. This class is not
050: * threadsafe.
051: *
052: * @author Adrian Price
053: */
054: public class AbstractWFElement extends AbstractBean {
055: private static final long serialVersionUID = 5028805438136004652L;
056:
057: private String _id;
058: private String _name;
059: private String _description;
060: private ExtendedAttributes _extendedAttributes;
061:
062: protected AbstractWFElement() {
063: }
064:
065: protected AbstractWFElement(String[] indexedPropertyNames,
066: Object[] initalValues) {
067:
068: super (indexedPropertyNames, initalValues);
069: }
070:
071: public AbstractWFElement(String[] indexedPropertyNames,
072: Object[] initalValues, String id, String name) {
073:
074: super (indexedPropertyNames, initalValues);
075: _id = id;
076: _name = name;
077: }
078:
079: /**
080: * Constructs a new AbstractWFElement.
081: *
082: * @param id The element ID
083: * @param name The element name
084: */
085: protected AbstractWFElement(String id, String name) {
086: setId(id);
087: setName(name);
088: }
089:
090: public final String getId() {
091: return _id;
092: }
093:
094: public final void setId(String id) {
095: if (id == null)
096: throw new IllegalArgumentException(
097: XPDLMessages.ID_CANNOT_BE_NULL);
098: _id = id;
099: }
100:
101: public final String getName() {
102: return _name;
103: }
104:
105: public final void setName(String name) {
106: _name = name;
107: }
108:
109: public final String getDescription() {
110: return _description;
111: }
112:
113: public final void setDescription(String description) {
114: _description = description;
115: }
116:
117: public final ExtendedAttributes createExtendedAttributes() {
118: if (_extendedAttributes == null)
119: _extendedAttributes = new ExtendedAttributes();
120: return _extendedAttributes;
121: }
122:
123: public final ExtendedAttributes getExtendedAttributes() {
124: return _extendedAttributes;
125: }
126:
127: public final void setExtendedAttributes(ExtendedAttributes extAttrs) {
128: _extendedAttributes = extAttrs;
129: }
130:
131: public final int hashCode() {
132: return _id.hashCode();
133: }
134:
135: public final boolean equals(Object obj) {
136: return obj != null && getClass() == obj.getClass()
137: && _id.equals(((AbstractWFElement) obj)._id);
138: }
139:
140: public String toString() {
141: return "AbstractWFElement[id=" + _id + ", name=" + _name
142: + ", description=" + _description
143: + ", extendedAttributes=" + _extendedAttributes + ']';
144: }
145: }
|