package javax.megaco.message;
import java.io.Serializable;
/**
* Termination type constants for the termination type for the megaco package.
*
*
*/
public class TermType implements Serializable {
public static final int M_NORMAL = 1;
public static final int M_CHOOSE = 2;
public static final int M_ROOT = 3;
public static final int M_WILDCARD = 4;
public static final TermType NORMAL = new TermType(M_NORMAL);
public static final TermType CHOOSE = new TermType(M_CHOOSE);
public static final TermType ROOT = new TermType(M_ROOT);
public static final TermType WILDCARD = new TermType(M_WILDCARD);
private int term_type;
/**
* Constructs an abstract class that specifies the termination type in the
* command.
*
* @param term_type
*/
private TermType(int term_type) {
this.term_type = term_type;
}
/**
* This method returns one of the static field constants defined in this
* class. This method is overriden by the derived class, which shall return
* an hard coded value depending on the class.
*
* @return Returns an integer value that identifies the termination type to
* be one of normal, or choose or root or wildcarded.
*/
public int getTermType() {
return this.term_type;
}
/**
* Returns reference of the TermType object that identifies the termination
* type as value passed to this method.
*
* @param value
* It is one of the possible values of the static constant that
* this class provides.
* @return Returns reference of the TermType object.
* @throws IllegalArgumentException
*/
public static final TermType getObject(int value) throws IllegalArgumentException {
TermType t = null;
switch (value) {
case M_NORMAL:
t = NORMAL;
break;
case M_CHOOSE:
t = CHOOSE;
break;
case M_ROOT:
t = ROOT;
break;
case M_WILDCARD:
t = WILDCARD;
break;
default:
throw new IllegalArgumentException("TermType not found for value " + value);
}
return t;
}
private Object readResolve() {
return this.getObject(this.term_type);
}
@Override
public String toString() {
String t = null;
switch (this.term_type) {
case M_NORMAL:
t = "TermType[NORMAL]";
break;
case M_CHOOSE:
t = "TermType[CHOOSE]";
break;
case M_ROOT:
t = "TermType[ROOT]";
break;
case M_WILDCARD:
t = "TermType[WILDCARD]";
break;
default:
t = "TermType[" + this.term_type + "]";
}
return t;
}
}