create changelog entry
[debian/openrocket] / core / src / net / sf / openrocket / util / Named.java
1 package net.sf.openrocket.util;
2
3 import java.text.Collator;
4
5 /**
6  * An object holder that provides a custom toString return value.
7  * <p>
8  * The class supports sorting by the name.
9  * 
10  * @author Sampo Niskanen <sampo.niskanen@iki.fi>
11  * @param <T>   the holder type
12  */
13 public class Named<T> implements Comparable<Named<T>> {
14         
15         private final T object;
16         private final String name;
17         
18         private Collator collator = null;
19         
20         /**
21          * Sole constructor.
22          * 
23          * @param object        the held object
24          * @param name          the value to return by toString().
25          */
26         public Named(T object, String name) {
27                 this.object = object;
28                 this.name = name;
29         }
30         
31         
32         /**
33          * Get the held object.
34          * 
35          * @return      the object.
36          */
37         public T get() {
38                 return object;
39         }
40         
41         @Override
42         public String toString() {
43                 return name;
44         }
45         
46         
47         @Override
48         public int compareTo(Named<T> other) {
49                 if (collator == null) {
50                         collator = Collator.getInstance();
51                 }
52                 
53                 return collator.compare(this.toString(), other.toString());
54         }
55         
56 }