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: * The route class represents a route connecing two steps within a workflow.
039: *
040: * @author Daniel Lichtenberger (daniel.lichtenberger@flexive.com), UCS - unique computing solutions gmbh (http://www.ucs.at)
041: */
042: public class Route implements Serializable {
043: private static final long serialVersionUID = -1555295747455481165L;
044:
045: protected long id = -1;
046: protected long fromStepId = -1;
047: protected long toStepId = -1;
048: protected long groupId = -1;
049:
050: /**
051: * Creates a new route between two steps of a workflow.
052: *
053: * @param id route ID
054: * @param groupId group ID
055: * @param fromStepId source step ID
056: * @param toStepId destination step ID
057: */
058: public Route(long id, long groupId, long fromStepId, long toStepId) {
059: this .id = id;
060: this .groupId = groupId;
061: this .fromStepId = fromStepId;
062: this .toStepId = toStepId;
063: }
064:
065: /**
066: * Copy constructor
067: * @param route source route object
068: */
069: public Route(Route route) {
070: this (route.getId(), route.getGroupId(), route.getFromStepId(),
071: route.getToStepId());
072: }
073:
074: /**
075: * Protected default constructor
076: */
077: protected Route() {
078: }
079:
080: /**
081: * Checks if this route is equal to another. The route ID is ignored,
082: * since equality checks are supposed to occur inside the same workflow.
083: *
084: * @param o the route this object should be compared to
085: * @return true if the route is equal to o
086: */
087: @Override
088: public boolean equals(Object o) {
089: if (o instanceof Route) {
090: Route route = (Route) o;
091: return route.getFromStepId() == fromStepId
092: && route.getToStepId() == toStepId
093: && route.getGroupId() == groupId;
094: } else {
095: return false;
096: }
097: }
098:
099: /** {@inheritDoc} */
100: @Override
101: public int hashCode() {
102: return (int) (fromStepId + toStepId + groupId);
103: }
104:
105: /**
106: * Returns the unique id of the route.
107: *
108: * @return the id of the route
109: */
110: public long getId() {
111: return id;
112: }
113:
114: /**
115: * Returns the source step of the route.
116: *
117: * @return the source step of the route
118: */
119: public long getFromStepId() {
120: return fromStepId;
121: }
122:
123: /**
124: * Returns the destination step of the route.
125: *
126: * @return the destination step of the route
127: */
128: public long getToStepId() {
129: return toStepId;
130: }
131:
132: /**
133: * Returns the group that the route belongs to.
134: *
135: * @return the group that the route belongs to.
136: */
137: public long getGroupId() {
138: return groupId;
139: }
140:
141: }
|