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
43 String possibleValues[] = getValues();
44 String[] valuesToBeTested = value.split("\\s");
45 for (int i = 0; i < valuesToBeTested.length; i++) {
46 for (int j = 0; j < possibleValues.length; j++) {
47 if (possibleValues[j].equals(valuesToBeTested[i])) {
48 break;
49 }
50 if (i == possibleValues.length - 1)
51 throw new EnumValueException("Bad Enumeration value '" + value + "'");
52 }
53 }
54
55
56 this.value = value;
57
58
59 }
60 }
61
62 public String getValue() {
63 return value;
64 }
65
66 public String toString() {
67 return value;
68 }
69
70 public boolean equals(Object what) {
71 return what.getClass().equals(this.getClass()) &&
72 ((Enum) what).getValue().equals(this.getValue());
73 }
74
75 public static class EnumValueException extends RuntimeException {
76
77
78
79 private static final long serialVersionUID = 1L;
80
81 public EnumValueException(String mesg) {
82 super(mesg);
83 }
84 }
85
86 protected static final int index(String value, String values[]) {
87 for (int i = 0; i < values.length; i++) {
88 if (value.equals(values[i]))
89 return i;
90 }
91 return -1;
92 }
93 }
94
95