View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements. See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership. The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License. You may obtain a copy of the License at
9    *
10   * http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied. See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
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