1 | // SECTION-START[License Header] |
2 | // <editor-fold defaultstate="collapsed" desc=" Generated License "> |
3 | /* |
4 | * Copyright (c) 2010 The JOMC Project |
5 | * Copyright (c) 2005 Christian Schulte <schulte2005@users.sourceforge.net> |
6 | * All rights reserved. |
7 | * |
8 | * Redistribution and use in source and binary forms, with or without |
9 | * modification, are permitted provided that the following conditions |
10 | * are met: |
11 | * |
12 | * o Redistributions of source code must retain the above copyright |
13 | * notice, this list of conditions and the following disclaimer. |
14 | * |
15 | * o Redistributions in binary form must reproduce the above copyright |
16 | * notice, this list of conditions and the following disclaimer in |
17 | * the documentation and/or other materials provided with the |
18 | * distribution. |
19 | * |
20 | * THIS SOFTWARE IS PROVIDED BY THE JOMC PROJECT AND CONTRIBUTORS "AS IS" |
21 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, |
22 | * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
23 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JOMC PROJECT OR |
24 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
25 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
26 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
27 | * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
28 | * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
29 | * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
30 | * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
31 | * |
32 | * $Id: Sequence.java 2244 2010-06-29 07:58:09Z schulte2005 $ |
33 | * |
34 | */ |
35 | // </editor-fold> |
36 | // SECTION-END |
37 | package org.jomc.sequences; |
38 | |
39 | import java.io.Serializable; |
40 | import java.util.Date; |
41 | |
42 | // SECTION-START[Documentation] |
43 | // <editor-fold defaultstate="collapsed" desc=" Generated Documentation "> |
44 | /** |
45 | * Sequence of numbers. |
46 | * |
47 | * @author <a href="mailto:schulte2005@users.sourceforge.net">Christian Schulte</a> 1.0 |
48 | * @version $Id: Sequence.java 2244 2010-06-29 07:58:09Z schulte2005 $ |
49 | */ |
50 | // </editor-fold> |
51 | // SECTION-END |
52 | // SECTION-START[Annotations] |
53 | // <editor-fold defaultstate="collapsed" desc=" Generated Annotations "> |
54 | @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" ) |
55 | // </editor-fold> |
56 | // SECTION-END |
57 | public class Sequence implements Comparable<Sequence>, Cloneable, Serializable |
58 | { |
59 | // SECTION-START[Sequence] |
60 | |
61 | /** Constant for the name of property {@code name}. */ |
62 | public static final String PROP_NAME = "org.jomc.sequences.Sequence.PROP_NAME"; |
63 | |
64 | /** Constant for the name of property {@code minimum}. */ |
65 | public static final String PROP_MINIMUM = "org.jomc.sequences.Sequence.PROP_MINIMUM"; |
66 | |
67 | /** Constant for the name of property {@code maximum}. */ |
68 | public static final String PROP_MAXIMUM = "org.jomc.sequences.Sequence.PROP_MAXIMUM"; |
69 | |
70 | /** Constant for the name of property {@code increment}. */ |
71 | public static final String PROP_INCREMENT = "org.jomc.sequences.Sequence.PROP_INCREMENT"; |
72 | |
73 | /** Constant for the name of property {@code value}. */ |
74 | public static final String PROP_VALUE = "org.jomc.sequences.Sequence.PROP_VALUE"; |
75 | |
76 | /** Serial version UID for backwards compatibility with 1.0.x classes. */ |
77 | private static final long serialVersionUID = 4782576402999874315L; |
78 | |
79 | /** |
80 | * Revision of the sequence. |
81 | * @serial |
82 | */ |
83 | private long revision; |
84 | |
85 | /** |
86 | * Date of the revision. |
87 | * @serial |
88 | */ |
89 | private long date; |
90 | |
91 | /** |
92 | * Logical name of the sequence. |
93 | * @serial |
94 | */ |
95 | private String name; |
96 | |
97 | /** |
98 | * Minimum value of property {@code value}. |
99 | * @serial |
100 | */ |
101 | private long minimum; |
102 | |
103 | /** |
104 | * Maximum value of property {@code value}. |
105 | * @serial |
106 | */ |
107 | private long maximum; |
108 | |
109 | /** |
110 | * Delta to add to the value of property {@code value} for the next value in the sequence. |
111 | * @serial |
112 | */ |
113 | private long increment; |
114 | |
115 | /** |
116 | * Current value of the sequence. |
117 | * @serial |
118 | */ |
119 | private long value; |
120 | |
121 | /** |
122 | * Gets the revision of the entity. |
123 | * |
124 | * @return The revision of the entity. |
125 | */ |
126 | public long getRevision() |
127 | { |
128 | return this.revision; |
129 | } |
130 | |
131 | /** |
132 | * Gets the date of the revision of the entity. |
133 | * |
134 | * @return The date of the revision of the entity. |
135 | */ |
136 | public long getDate() |
137 | { |
138 | return this.date; |
139 | } |
140 | |
141 | /** |
142 | * Gets the logical name of the sequence. |
143 | * |
144 | * @return The logical name of the sequence. |
145 | */ |
146 | public String getName() |
147 | { |
148 | return this.name; |
149 | } |
150 | |
151 | /** |
152 | * Sets the logical name of the sequence. |
153 | * |
154 | * @param value The new logical name of the sequence. |
155 | */ |
156 | public void setName( final String value ) |
157 | { |
158 | this.name = value; |
159 | } |
160 | |
161 | /** |
162 | * Gets the minimum value of property {@code value}. |
163 | * |
164 | * @return The minimum value of property {@code value}. |
165 | */ |
166 | public long getMinimum() |
167 | { |
168 | return this.minimum; |
169 | } |
170 | |
171 | /** |
172 | * Sets the minimum value of property {@code value}. |
173 | * |
174 | * @param value The new minimum value of property {@code value}. |
175 | */ |
176 | public void setMinimum( final long value ) |
177 | { |
178 | this.minimum = value; |
179 | } |
180 | |
181 | /** |
182 | * Gets the maximum value of property {@code value}. |
183 | * |
184 | * @return The maximum value of property {@code value}. |
185 | */ |
186 | public long getMaximum() |
187 | { |
188 | return this.maximum; |
189 | } |
190 | |
191 | /** |
192 | * Sets the maximum value of property {@code value}. |
193 | * |
194 | * @param value The new maximum value of property {@code value}. |
195 | */ |
196 | public void setMaximum( final long value ) |
197 | { |
198 | this.maximum = value; |
199 | } |
200 | |
201 | /** |
202 | * Gets the delta to add to the value of property {@code value} for the next value in the sequence. |
203 | * |
204 | * @return The the delta to add to the value of property {@code value} for the next value in the sequence. |
205 | */ |
206 | public long getIncrement() |
207 | { |
208 | return this.increment; |
209 | } |
210 | |
211 | /** |
212 | * Sets the delta to add to the value of property {@code value} for the next value in the sequence. |
213 | * |
214 | * @param value The new delta to add to the value of property {@code value} for the next value in the sequence. |
215 | */ |
216 | public void setIncrement( final long value ) |
217 | { |
218 | this.increment = value; |
219 | } |
220 | |
221 | /** |
222 | * Gets the current value of the sequence. |
223 | * |
224 | * @return The current value of the sequence. |
225 | */ |
226 | public long getValue() |
227 | { |
228 | return this.value; |
229 | } |
230 | |
231 | /** |
232 | * Sets the current value of the sequence. |
233 | * |
234 | * @param value The current value of the sequence. |
235 | */ |
236 | public void setValue( final long value ) |
237 | { |
238 | this.value = value; |
239 | } |
240 | |
241 | /** |
242 | * Creates a string representing the properties of the instance. |
243 | * |
244 | * @return A string representing the properties of the instance. |
245 | */ |
246 | private String internalString() |
247 | { |
248 | return new StringBuffer( 150 ).append( '{' ). |
249 | append( "revision=" ).append( this.revision ). |
250 | append( ", date=" ).append( new Date( this.date ) ). |
251 | append( ", name=" ).append( this.name ). |
252 | append( ", minimum=" ).append( this.minimum ). |
253 | append( ", maximum=" ).append( this.maximum ). |
254 | append( ", increment=" ).append( this.increment ). |
255 | append( ", value=" ).append( this.value ). |
256 | append( '}' ).toString(); |
257 | |
258 | } |
259 | |
260 | /** |
261 | * Compares this sequence with the specified sequence for order. |
262 | * <p>Returns a negative integer, zero, or a positive integer as this sequence is less than, equal to, or greater |
263 | * than the specified sequence.</p> |
264 | * <p><b>Note:</b><br/>This class has a natural ordering that is inconsistent with equals.</p> |
265 | * |
266 | * @param s The sequence to be compared. |
267 | * |
268 | * @return A negative integer, zero, or a positive integer as this sequence is less than, equal to, or greater than |
269 | * the specified sequence. |
270 | */ |
271 | public int compareTo( final Sequence s ) |
272 | { |
273 | int result = s == null ? 1 : 0; |
274 | |
275 | if ( result == 0 ) |
276 | { |
277 | if ( this.getName() == null ) |
278 | { |
279 | result = s.getName() == null ? 0 : -1; |
280 | } |
281 | else |
282 | { |
283 | result = s.getName() == null ? 1 : this.getName().compareTo( s.getName() ); |
284 | } |
285 | } |
286 | |
287 | return result; |
288 | } |
289 | |
290 | /** |
291 | * Creates and returns a copy of this object. |
292 | * |
293 | * @return A clone of this instance. |
294 | */ |
295 | @Override |
296 | public Sequence clone() |
297 | { |
298 | try |
299 | { |
300 | return (Sequence) super.clone(); |
301 | } |
302 | catch ( final CloneNotSupportedException e ) |
303 | { |
304 | throw new AssertionError( e ); |
305 | } |
306 | } |
307 | |
308 | /** |
309 | * Indicates whether some other object is equal to this one by comparing the values of properties {@code name} and |
310 | * {@code revision}. |
311 | * |
312 | * @param o The reference object with which to compare. |
313 | * |
314 | * @return {@code true} if this object is the same as {@code o}; {@code false} otherwise. |
315 | */ |
316 | @Override |
317 | public boolean equals( final Object o ) |
318 | { |
319 | boolean ret = o == this; |
320 | |
321 | if ( !ret && o instanceof Sequence ) |
322 | { |
323 | final Sequence that = (Sequence) o; |
324 | ret = ( this.getName() == null ? that.getName() == null : this.getName().equals( that.getName() ) ) && |
325 | ( this.getRevision() == that.getRevision() ); |
326 | |
327 | } |
328 | |
329 | return ret; |
330 | } |
331 | |
332 | /** |
333 | * Returns a hash code value for this object. |
334 | * |
335 | * @return A hash code value for this object. |
336 | */ |
337 | @Override |
338 | public int hashCode() |
339 | { |
340 | int hc = 23; |
341 | hc = 37 * hc + ( this.getName() == null ? 0 : this.getName().hashCode() ); |
342 | hc = 37 * hc + (int) ( this.getRevision() ^ ( this.getRevision() >>> 32 ) ); |
343 | return hc; |
344 | } |
345 | |
346 | /** |
347 | * Returns a string representation of the object. |
348 | * |
349 | * @return A string representation of the object. |
350 | */ |
351 | @Override |
352 | public String toString() |
353 | { |
354 | return super.toString() + this.internalString(); |
355 | } |
356 | |
357 | // SECTION-END |
358 | // SECTION-START[Constructors] |
359 | // <editor-fold defaultstate="collapsed" desc=" Generated Constructors "> |
360 | |
361 | /** Creates a new {@code Sequence} instance. */ |
362 | @javax.annotation.Generated( value = "org.jomc.tools.SourceFileProcessor 1.0", comments = "See http://jomc.sourceforge.net/jomc/1.0/jomc-tools" ) |
363 | public Sequence() |
364 | { |
365 | // SECTION-START[Default Constructor] |
366 | super(); |
367 | // SECTION-END |
368 | } |
369 | // </editor-fold> |
370 | // SECTION-END |
371 | // SECTION-START[Dependencies] |
372 | // SECTION-END |
373 | // SECTION-START[Properties] |
374 | // SECTION-END |
375 | // SECTION-START[Messages] |
376 | // SECTION-END |
377 | } |