1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package de.bea.domingo.map;
24
25 import java.io.ObjectStreamException;
26 import java.util.Calendar;
27 import java.util.Collection;
28 import java.util.HashMap;
29 import java.util.Map;
30
31 /***
32 * Constants of Notes data types.
33 *
34 * @author <a href="mailto:kriede@users.sourceforge.net">Kurt Riede</a>
35 */
36 public final class NotesType {
37
38 /*** Integer constant for data type TEXT. */
39 private static final Integer TEXT_TYPE = new Integer(1);
40
41 /*** Integer constant for data type NUMBER. */
42 private static final Integer NUMBER_TYPE = new Integer(2);
43
44 /*** Integer constant for data type DATE. */
45 private static final Integer DATE_TYPE = new Integer(3);
46
47 /*** Data type TEXT. */
48 public static final NotesType TEXT = new NotesType(TEXT_TYPE, "TEXT".intern(), String.class);
49
50 /*** Data type NUMBER. */
51 public static final NotesType NUMBER = new NotesType(NUMBER_TYPE, "NUMBER".intern(), Number.class);
52
53 /*** Data type DATE. */
54 public static final NotesType DATE = new NotesType(DATE_TYPE, "DATE".intern(), Calendar.class);
55
56 /*** Integer constant identifying a type. */
57 private final Integer type;
58
59 /*** Textual representation of a type. */
60 private final String name;
61
62 /*** Corresponding Java type. */
63 private final Class clazz;
64
65 /*** Map of all values. */
66 private static Map values = new HashMap();
67 static {
68 values.put(TEXT_TYPE, TEXT);
69 values.put(NUMBER_TYPE, NUMBER);
70 values.put(DATE_TYPE, DATE);
71 }
72
73 /***
74 * Constructor.
75 *
76 * @param type type constant
77 */
78 private NotesType(final Integer type, final String name, final Class clazz) {
79 this.type = type;
80 this.name = name;
81 this.clazz = clazz;
82 }
83
84 /***
85 * Returns a collection of all possible values.
86 *
87 * @return collection of possible values
88 */
89 public static Collection getValues() {
90 return values.values();
91 }
92
93 /***
94 * Returns the name of a Notes type.
95 *
96 * @return name
97 */
98 public String getName() {
99 return name;
100 }
101
102 /***
103 * Returns the Java class used to represent values of a Notes type.
104 *
105 * @return Java class
106 */
107 public Class getJavaClass() {
108 return clazz;
109 }
110
111 /***
112 * {@inheritDoc}
113 * @see java.lang.Object#equals(java.lang.Object)
114 */
115 public boolean equals(final Object obj) {
116 return (obj instanceof NotesType) && (type.intValue() == ((NotesType) obj).type.intValue());
117 }
118
119 /***
120 * {@inheritDoc}
121 * @see java.lang.Object#hashCode()
122 */
123 public int hashCode() {
124 return type.intValue();
125 }
126
127 /***
128 * {@inheritDoc}
129 * @see java.lang.Object#toString()
130 */
131 public String toString() {
132 return name;
133 }
134
135 /***
136 * Serialization helper used to resolve the enumeration instances.
137 */
138 private Object readResolve() throws ObjectStreamException {
139 return values.get(this.type);
140 }
141 }