001: /***************************************************************
002: * This file is part of the [fleXive](R) project.
003: *
004: * Copyright (c) 1999-2008
005: * UCS - unique computing solutions gmbh (http://www.ucs.at)
006: * All rights reserved
007: *
008: * The [fleXive](R) project is free software; you can redistribute
009: * it and/or modify it under the terms of the GNU General Public
010: * License as published by the Free Software Foundation;
011: * either version 2 of the License, or (at your option) any
012: * later version.
013: *
014: * The GNU General Public License can be found at
015: * http://www.gnu.org/copyleft/gpl.html.
016: * A copy is found in the textfile GPL.txt and important notices to the
017: * license from the author are found in LICENSE.txt distributed with
018: * these libraries.
019: *
020: * This library is distributed in the hope that it will be useful,
021: * but WITHOUT ANY WARRANTY; without even the implied warranty of
022: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
023: * GNU General Public License for more details.
024: *
025: * For further information about UCS - unique computing solutions gmbh,
026: * please see the company website: http://www.ucs.at
027: *
028: * For further information about [fleXive](R), please see the
029: * project website: http://www.flexive.org
030: *
031: *
032: * This copyright notice MUST APPEAR in all copies of the file!
033: ***************************************************************/package com.flexive.shared.workflow;
034:
035: import java.io.Serializable;
036:
037: /**
038: * StepEngine data beans.
039: *
040: * @author Daniel Lichtenberger (daniel.lichtenberger@flexive.com), UCS - unique computing solutions gmbh (http://www.ucs.at)
041: */
042: public class Step implements Serializable {
043: private static final long serialVersionUID = -4546587502140978353L;
044:
045: protected long id = -1;
046: protected long workflowId = -1;
047: protected long stepDefinitionId = -1;
048: protected long aclId = -1;
049:
050: /**
051: * Creates a new workflow step.
052: *
053: * @param id the step ID
054: * @param stepDefinitionId the step definition ID
055: * @param workflowId the workflow ID
056: * @param aclId the ACL ID for the step
057: */
058: public Step(long id, long stepDefinitionId, long workflowId,
059: long aclId) {
060: this .id = id;
061: this .workflowId = workflowId;
062: this .stepDefinitionId = stepDefinitionId;
063: this .aclId = aclId;
064: }
065:
066: /**
067: * Creates a new workflow step that is not assigned to an existing workflow.
068: *
069: * @param id the step ID
070: * @param stepDefinitionId the step definition ID
071: * @param aclId the ACL ID for the step
072: */
073: public Step(long id, long stepDefinitionId, long aclId) {
074: this .id = id;
075: this .stepDefinitionId = stepDefinitionId;
076: this .aclId = aclId;
077: }
078:
079: /**
080: * Creates a new workflow step.
081: *
082: * @param id the step ID
083: * @param step the step instance to be used for the other fields
084: */
085: public Step(long id, Step step) {
086: this .id = id;
087: this .workflowId = step.getWorkflowId();
088: this .stepDefinitionId = step.getStepDefinitionId();
089: this .aclId = step.getAclId();
090: }
091:
092: /**
093: * Copy constructor
094: * @param step source step
095: */
096: public Step(Step step) {
097: this (step.getId(), step.getStepDefinitionId(), step
098: .getWorkflowId(), step.getAclId());
099: }
100:
101: /**
102: * Protected default constructor.
103: */
104: protected Step() {
105: }
106:
107: /**
108: * Returns this step as an editable instance.
109: *
110: * @return this step as an editable instance.
111: */
112: public StepEdit asEditable() {
113: return new StepEdit(this );
114: }
115:
116: /**
117: * Compares two workflow steps by their internal ID.
118: * @param o the step this object should be compared to
119: * @return true if the steps are equal
120: */
121: @Override
122: public boolean equals(Object o) {
123: return o instanceof Step && ((Step) o).getId() == id;
124: }
125:
126: /** {@inheritDoc} */
127: @Override
128: public int hashCode() {
129: return (int) id;
130: }
131:
132: /**
133: * Returns the unqiue stepDefinition id this step belongs to.
134: *
135: * @return the unqiue stepDefinition id this step belongs to.
136: */
137: public long getStepDefinitionId() {
138: return stepDefinitionId;
139: }
140:
141: /**
142: * Returns the unique id of the step.
143: *
144: * @return the unique id of the step
145: */
146: public long getId() {
147: return id;
148: }
149:
150: /**
151: * Returns the of the workfow the step belongs to.
152: *
153: * @return the id of the workfow the step belongs to
154: */
155: public long getWorkflowId() {
156: return workflowId;
157: }
158:
159: /**
160: * Returns the id of the ACL assigned to the step.
161: *
162: * @return the id of the ACL assigned to the step.
163: */
164: public long getAclId() {
165: return aclId;
166: }
167:
168: /**
169: * Returns true id the step is the LIVE step.
170: *
171: * @return true if the step is the LIVE step.
172: */
173: public boolean isLiveStep() {
174: return (stepDefinitionId == StepDefinition.LIVE_STEP_ID);
175: }
176:
177: /**
178: * Returns true id the step is the EDIT step.
179: *
180: * @return true if the step is the EDIT step.
181: */
182: public boolean isEditStep() {
183: return (stepDefinitionId == StepDefinition.EDIT_STEP_ID);
184: }
185:
186: /** {@inheritDoc} */
187: @Override
188: public String toString() {
189: return "Step[id=" + id + "]";
190: }
191:
192: }
|