1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.ws.commons.schema.constants;
21
22 public abstract class Enum {
23
24 public static String NULL = "NULL";
25
26 protected Enum(String value) {
27 setValue(value);
28 }
29
30 protected Enum() {
31 this(NULL);
32 }
33
34 protected abstract String[] getValues();
35
36 protected String value = NULL;
37
38 public void setValue(String value) {
39 if (value.equals(Enum.NULL))
40 this.value = Enum.NULL;
41 else {
42 String values[] = getValues();
43 for (int i = 0; i < values.length; i++) {
44 if (values[i].equals(value)) {
45 this.value = value;
46 break;
47 }
48 if (i == values.length - 1)
49 throw new EnumValueException("Bad Enumeration value '" + value + "'");
50 }
51 }
52 }
53
54 public String getValue() {
55 return value;
56 }
57
58 public String toString() {
59 return value;
60 }
61
62 public boolean equals(Object what) {
63 return what.getClass().equals(this.getClass()) &&
64 ((Enum) what).getValue().equals(this.getValue());
65 }
66
67 public static class EnumValueException extends RuntimeException {
68 public EnumValueException(String mesg) {
69 super(mesg);
70 }
71 }
72
73 protected static final int index(String value, String values[]) {
74 for (int i = 0; i < values.length; i++) {
75 if (value.equals(values[i]))
76 return i;
77 }
78 return -1;
79 }
80 }
81