import java.util.Arrays;
import java.util.List;
/**
* Enum Style Class for Document Version.
*/
public final class DocumentVersion {
private static final byte ADDOCUMENT_1_0_VALUE = (byte) 0;
private static final String ADDOCUMENT_1_0_XML_VALUE = "addocument_1_0";
private static final byte ADDOCUMENT_1_1_VALUE = (byte) 1;
private static final String ADDOCUMENT_1_1_XML_VALUE = "addocument_1_1";
/**
* Document Version 1.0
*/
public static final DocumentVersion ADDOCUMENT_1_0 = new DocumentVersion(ADDOCUMENT_1_0_VALUE,
ADDOCUMENT_1_0_XML_VALUE);
/**
* Document Version 1.1
*/
public static final DocumentVersion ADDOCUMENT_1_1 = new DocumentVersion(ADDOCUMENT_1_1_VALUE,
ADDOCUMENT_1_1_XML_VALUE);
/**
* Interne Liste mit allen Typ-Definitionen
*/
private static final DocumentVersion[] ALL = { ADDOCUMENT_1_0, ADDOCUMENT_1_1 };
/**
* der Name des Typs
*/
private final String name;
/**
* der Wert des Typs
*/
private final byte value;
/**
* Setzt den Namen des Typs
*
* @param val Der Wert des Typs
* @param name Der Name des Typs
*/
private DocumentVersion(final byte val, final String name) {
this.value = val;
this.name = name;
}
/**
* Gibt alle Typen zurück
*
* @return Eine Liste mit allen Typen
*/
public static List getAll() {
return Arrays.asList(ALL);
}
/**
* Gibt den Namen des Typs zurück
*
* @return Der Name des Typs
*/
public String getName() {
return name;
}
/**
* Gibt den internen Wert des Typs zurück
*
* @return Der Wert des Typs
*/
public byte getValue() {
return value;
}
/**
* Sucht zum Key den passenden Typ
*
* @param key Der gesuchte Key
* @return Der passende Typ, oder eine IllegalArgumentException
*/
public static DocumentVersion lookup(byte key) {
for (int i = 0; i < ALL.length; i++) {
if (key == ALL[i].getValue()) {
return ALL[i];
}
}
// we have no default eventtype, so we throw an exception
throw new IllegalArgumentException("Unknown DocumentVersion with key " +
key);
}
/**
* Gibt die String-Version des Typs zurück
*
* @return String-Version des Typs
*/
public String toString() {
return this.getName();
}
/**
* Liefert für einen String den entsprechenden Typ zurück.<br>
* Wird unter anderem vom Castor verwendet.
*
* @param value der Typ als String
* @return das passtende Typ-Objekt oder <code>null</code> wenn für den String kein entsprechender Typ vorhanden ist
*/
public static DocumentVersion valueOf(String value) {
if (ADDOCUMENT_1_0_XML_VALUE.equals(value)) {
return ADDOCUMENT_1_0;
} else if (ADDOCUMENT_1_1_XML_VALUE.equals(value)) {
return ADDOCUMENT_1_1;
}
// no default type, so throw an exception
throw new IllegalArgumentException("No such documentVersion: " + value);
}
}