1 /* 2 * Copyright (c) 2003-2008, by Henrik Arro and Contributors 3 * 4 * This file is part of JSeq, a tool to automatically create 5 * sequence diagrams by tracing program execution. 6 * 7 * See <http://jseq.sourceforge.net> for more information. 8 * 9 * JSeq is free software: you can redistribute it and/or modify 10 * it under the terms of the GNU Lesser General Public License as 11 * published by the Free Software Foundation, either version 3 of 12 * the License, or (at your option) any later version. 13 * 14 * JSeq is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU Lesser General Public License for more details. 18 * 19 * You should have received a copy of the GNU Lesser General Public License 20 * along with JSeq. If not, see <http://www.gnu.org/licenses/>. 21 */ 22 23 package th.co.edge.jseq; 24 25 /** 26 * A <code>MockObject</code> is an immutable class representing one life-line 27 * in a sequence diagram. 28 */ 29 public class MockObject implements Comparable<MockObject> { 30 private final String name; 31 private final int column; 32 33 /** 34 * Creates a new <code>MockObject</code> with a given name and column in 35 * the diagram. 36 * 37 * @param name 38 * the name that will be displayed at the top of the life-line 39 * 40 * @param column 41 * the column number of this life-line 42 */ 43 public MockObject(String name, int column) { 44 this.name = name; 45 this.column = column; 46 } 47 48 /** 49 * Returns the name that will be displayed at the top of the life-line. 50 * 51 * @return the name of this <code>MockObject</code> 52 */ 53 public String getName() { 54 return name; 55 } 56 57 /** 58 * Returns the column number of this <code>MockObject</code>, which 59 * determines the order of the life-lines in the sequence diagram. 60 * 61 * @return the column number of this <code>MockObject</code> 62 */ 63 public int getColumn() { 64 return column; 65 } 66 67 /** 68 * Returns a string representation of this <code>MockObject</code>, 69 * mainly useful for logging. 70 * 71 * @return a string representation of this <code>MockObject</code> 72 */ 73 @Override 74 public String toString() { 75 return "{" + getName() + "," + getColumn() + "}"; 76 } 77 78 /** 79 * Compares this <code>MockObject</code> to another object and returns 80 * <code>true</code> if and only if the other object is a 81 * <code>MockObject</code> with the same name and column number. 82 * 83 * @param o 84 * the object to compare this <code>MockObject</code> to 85 * 86 * @return <code>true</code> if <code>o</code> is a 87 * <code>MockObject</code> with the same name and column number, 88 * <code>false</code> otherwise 89 * 90 */ 91 @Override 92 public boolean equals(Object o) { 93 boolean equal = false; 94 if (o instanceof MockObject) { 95 MockObject otherMockObject = (MockObject) o; 96 equal = 97 name.equals(otherMockObject.name) && 98 column == otherMockObject.column; 99 } 100 return equal; 101 } 102 103 /** 104 * Returns a hash code for this <code>MockObject</code>. 105 * 106 * @return a hash code for this <code>MockObject</code> 107 */ 108 @Override 109 public int hashCode() { 110 int result = 17; 111 result = 31 * result + name.hashCode(); 112 result = 31 * result + column; 113 return result; 114 } 115 116 /** 117 * Compares this <code>MockObject</code> to another 118 * <code>MockObject</code>, returning a negative integer, zero or a 119 * positive integer if this object is less than, equal to, or greater than 120 * the other object, respectively. 121 * 122 * <p> 123 * Comparison is done as follows: 124 * <ul> 125 * <li>First the column numbers are compared</li> 126 * <li>If the column numbers are equal, the names are compared 127 * lexicographically</li> 128 * </ul> 129 * 130 * @param otherObject 131 * the <code>MockObject</code> to compare this object to 132 * 133 * @return <code>0</code> if this object is equal to 134 * <code>otherObject</code>; a negative integer if this object is 135 * smaller than <code>otherObject</code>; and a positive integer 136 * if this object is greater than <code>otherObject</code> 137 */ 138 @Override 139 public int compareTo(MockObject otherObject) { 140 int result = getColumn() - otherObject.getColumn(); 141 if (result == 0) { 142 result = name.compareTo(otherObject.name); 143 } 144 return result; 145 } 146 }