001: /*
002: * Wilos Is a cLever process Orchestration Software - http://www.wilos-project.org
003: * Copyright (C) 2006-2007 Paul Sabatier University, IUP ISI (Toulouse, France) <massie@irit.fr>
004: * Copyright (C) 2007 Mathieu BENOIT <mathieu-benoit@hotmail.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.spem2.section;
019:
020: import org.apache.commons.lang.builder.EqualsBuilder;
021: import org.apache.commons.lang.builder.HashCodeBuilder;
022:
023: import wilos.model.spem2.checklist.CheckList;
024: import wilos.model.spem2.element.Element;
025:
026: /**
027: *
028: * A Section is a special {@link Element} that represents structural subsections
029: * of a Content Description's sectionDescription attribute. It is used for
030: * either large scale documentation of Elements organized into sections as well
031: * as to flexibly add new Sections to Elements using contribution variability
032: * added to the Section concept.
033: * <p />
034: * It's an element of the SPEM2 specification of the OMG organization
035: * (http://www.omg.org/).
036: *
037: */
038: public class Section extends Element {
039:
040: /* the attached CheckList */
041: private CheckList checklist;
042:
043: /**
044: * Class constructor
045: */
046: public Section() {
047: super ();
048: }
049:
050: /**
051: * Copy the values of the specified Section into the current instance of the
052: * class.
053: *
054: * @param _section
055: * the Section to copy
056: */
057: protected void copy(final Section _section) {
058: super .copy(_section);
059: this .setChecklist(_section.getChecklist());
060: }
061:
062: /**
063: * Defines if the specified Object is the same or has the same values as the
064: * current instance of the Section.
065: *
066: * @param obj
067: * the Object to be compare to the Section
068: * @return true if the specified Object is the same, false otherwise
069: */
070: public boolean equals(Object obj) {
071: if (obj instanceof Section == false) {
072: return false;
073: }
074: if (this == obj) {
075: return true;
076: }
077:
078: Section checklist = (Section) obj;
079: return new EqualsBuilder().appendSuper(super .equals(checklist))
080: .append(this .getChecklist(), checklist.getChecklist())
081: .isEquals();
082: }
083:
084: /**
085: * Returns a hash code value for the object. This method is supported for
086: * the benefit of hash tables.
087: *
088: * @return the hash code of the current instance of Section
089: */
090: public int hashCode() {
091: return new HashCodeBuilder(17, 37)
092: .appendSuper(super .hashCode()).toHashCode();
093: }
094:
095: /**
096: * Returns the CheckList the Section belongs to
097: *
098: * @return the related CheckList
099: */
100: public CheckList getChecklist() {
101: return checklist;
102: }
103:
104: /**
105: * Assigns the Section to the specified CheckList
106: *
107: * @param checklist
108: * the CheckList to assigned
109: */
110: public void setChecklist(CheckList checklist) {
111: this .checklist = checklist;
112: }
113:
114: /**
115: * Adds the Section to the specified CheckList
116: *
117: * @param _checklist
118: * the CheckList to be related to
119: */
120: public void addCheckList(CheckList _checklist) {
121: _checklist.getSections().add(this );
122: }
123:
124: /**
125: * Removes the Section from the specified CheckList
126: *
127: * @param _checklist
128: * the CheckList to be unlinked to
129: */
130: public void removeCheckList(CheckList _checklist) {
131: _checklist.getSections().remove(this);
132: }
133:
134: }
|