1 /*
2 ComparableResult.java
3 Creation date : 01/06/2010
4 Copyright © Benjamin Croizet (graffity2199@yahoo.fr)
5
6 This program is free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public License
8 or GNU Lesser General Public License as published by the
9 Free Software Foundation; either version 3 of the License,
10 or (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received copies of the GNU General Public License
18 and GNU Lesser General Public License along with this program;
19 if not, write to the Free Software Foundation, Inc.,
20 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21 http://www.fsf.org/licensing/licenses/gpl.html
22 http://www.gnu.org/licenses/lgpl.html
23 */
24
25 package net.sourceforge.plantumldependency.common.utils.comparable;
26
27 /**
28 * This enumeration type lists comparable results, i.e. results which are returned by the
29 * {@link java.lang.Comparable#compareTo} method.
30 *
31 * @author Benjamin Croizet (<a href="mailto:graffity2199@yahoo.fr>graffity2199@yahoo.fr</a>)
32 * @since 1.3.0
33 * @version 1.3.0
34 */
35 public enum ComparableResult {
36
37 /** The "before" comparable result. */
38 BEFORE(-1, 1),
39 /** The "after" comparable result. */
40 AFTER(1, -1),
41 /** The "equal" comparable result. */
42 EQUAL(0, 0);
43
44 /**
45 * Gets the {@link ComparableResult} instance following a comparable value.
46 *
47 * @param comparableResult
48 * the comparable value to build the {@link ComparableResult} instance from.
49 * @return the {@link ComparableResult} instance associated to the passed comparable value.
50 * @since 1.3.0
51 */
52 public static ComparableResult valueOf(final int comparableResult) {
53 ComparableResult result = null;
54
55 if (comparableResult == 0) {
56 result = EQUAL;
57 } else if (comparableResult < 0) {
58 result = BEFORE;
59 } else if (comparableResult > 0) {
60 result = AFTER;
61 }
62
63 return result;
64 }
65
66 /**
67 * The integer value which is returned by the {@link java.lang.Comparable#compareTo} method to
68 * tell if the current instance is ordered before, after or is the same.
69 */
70 private int result;
71
72 /**
73 * The integer value which is the logical reverse of the returned value by the
74 * {@link java.lang.Comparable#compareTo} method.
75 */
76 private int reverseResult;
77
78 /**
79 * Default constructor with the result value.
80 *
81 * @param comparableResult
82 * The integer value of the result to return.
83 * @param reverseValue
84 * The integer value of the reverse result to return.
85 * @since 1.3.0
86 */
87 private ComparableResult(final int comparableResult, final int reverseValue) {
88 setResult(comparableResult);
89 setReverseResult(reverseValue);
90 }
91
92 /**
93 * Gets the value of result.
94 *
95 * @return the value of result.
96 * @since 1.3.0
97 */
98 public int getResult() {
99 return result;
100 }
101
102 /**
103 * Gets the reverse of the result, i.e. BEFORE if it is AFTER, AFTER if it is BEFORE, and EQUAL
104 * if it is EQUAL.
105 *
106 * @return the reverse of the normal result.
107 * @since 1.3.0
108 */
109 public int getReverseResult() {
110 return reverseResult;
111 }
112
113 /**
114 * Sets the value of result.
115 *
116 * @param value
117 * the result to set.
118 * @see #getResult()
119 * @since 1.3.0
120 */
121 private void setResult(final int value) {
122 result = value;
123 }
124
125 /**
126 * Sets the value of reverseResult.
127 *
128 * @param value
129 * the reverseResult to set.
130 * @see #getReverseResult()
131 * @since 1.3.0
132 */
133 private void setReverseResult(final int value) {
134 reverseResult = value;
135 }
136
137 /**
138 * {@inheritDoc}
139 *
140 * @since 1.3.0
141 */
142 @Override
143 public String toString() {
144 final String str = super.toString();
145 return str.toLowerCase();
146 }
147 }