001: /*
002: *
003: * Wilos Is a cLever process Orchestration Software - http://www.wilos-project.org
004: * Copyright (C) 2007-2008 Paul Sabatier University, IUP ISI (Toulouse, France) <massie@irit.fr>
005: *
006: * This program is free software; you can redistribute it and/or modify it under the terms of the GNU
007: * General Public License as published by the Free Software Foundation; either version 2 of the License,
008: * or (at your option) any later version.
009: *
010: * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
011: * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
012: * GNU General Public License for more details.
013: *
014: * You should have received a copy of the GNU General Public License along with this program; if not,
015: * write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
016: */
017:
018: package wilos.model.misc.concretemilestone;
019:
020: import org.apache.commons.lang.builder.EqualsBuilder;
021: import org.apache.commons.lang.builder.HashCodeBuilder;
022:
023: import wilos.model.misc.concreteworkbreakdownelement.ConcreteWorkBreakdownElement;
024: import wilos.model.misc.project.Project;
025: import wilos.model.spem2.milestone.Milestone;
026:
027: /**
028: *
029: * A ConcreteMilestone is a specific {@link Milestone} for a {@link Project}.
030: *
031: */
032: public class ConcreteMilestone extends ConcreteWorkBreakdownElement
033: implements Cloneable {
034:
035: private Milestone milestone;
036:
037: /**
038: * Class constructor.
039: */
040: public ConcreteMilestone() {
041: super ();
042: }
043:
044: /**
045: * Defines if the specified Object is the same or has the same values as the
046: * current instance of the class.
047: *
048: * @param obj
049: * the Object to be compare to the ConcreteMilestone
050: * @return true if the specified Object is the same, false otherwise
051: */
052: public boolean equals(Object obj) {
053: if (obj instanceof ConcreteMilestone == false) {
054: return false;
055: }
056: if (this == obj) {
057: return true;
058: }
059: ConcreteMilestone concreteMilestone = (ConcreteMilestone) obj;
060: return new EqualsBuilder().appendSuper(
061: super .equals(concreteMilestone)).append(this .milestone,
062: concreteMilestone.milestone).isEquals();
063: }
064:
065: /**
066: * Returns a hash code value for the object. This method is supported for
067: * the benefit of hash tables.
068: *
069: * @return the hash code of the current instance of ConcreteMilestone
070: */
071: public int hashCode() {
072: return new HashCodeBuilder(17, 37)
073: .appendSuper(super .hashCode()).append(this .milestone)
074: .toHashCode();
075: }
076:
077: /**
078: * Returns a copy of the current instance of ConcreteMilestone
079: *
080: * @return a copy of the ConcreteMilestone
081: * @throws CloneNotSupportedException
082: */
083: @Override
084: public ConcreteMilestone clone() throws CloneNotSupportedException {
085: ConcreteMilestone concreteMilestone = new ConcreteMilestone();
086: concreteMilestone.copy(this );
087: return concreteMilestone;
088: }
089:
090: /**
091: * Copy the values of the specified ConcreteMilestone into the current
092: * instance.
093: *
094: * @param _concreteMilestone
095: * The ConcreteMilestone to copy.
096: */
097: protected void copy(final ConcreteMilestone _concreteMilestone) {
098: super .copy(_concreteMilestone);
099: this .milestone = _concreteMilestone.getMilestone();
100: }
101:
102: /**
103: * Return the Milestone assigned to the ConcreteMilestone
104: *
105: * @return the milestone of the ConcreteMilestone
106: */
107: public Milestone getMilestone() {
108: return this .milestone;
109: }
110:
111: /**
112: * Initializes the Milestone assigned to the ConcreteMilestone.
113: *
114: * @param _milestone
115: * the milestone to set
116: */
117: public void setMilestone(Milestone _milestone) {
118: this.milestone = _milestone;
119: }
120:
121: }
|