package ecologylab.serialization;
import ecologylab.serialization.annotations.simpl_scalar;
public enum FieldType {
UNSET_TYPE(-999),
BAD_FIELD(-99),
IGNORED_ATTRIBUTE(-1),
SCALAR(0x12),
COMPOSITE_ELEMENT(3),
/**
* This means that we don't bother to parse the element, because the programmer developing
* ElementState subclasses did not bother to create fields that use it.
*/
IGNORED_ELEMENT(-3),
COLLECTION_ELEMENT(4),
COLLECTION_SCALAR(5),
MAP_ELEMENT(6),
MAP_SCALAR(7),
WRAPPER(0x0a),
PSEUDO_FIELD_DESCRIPTOR(0x0d),
NAMESPACE_IGNORED_ELEMENT(-2),
XMLNS_ATTRIBUTE(0x0e),
XMLNS_IGNORED(0x0f),
NAME_SPACE_MASK(0x10),
/**
* These are all masked; this is a legacy decision we're carrying over.
*/
NAMESPACE_TRIAL_ELEMENT(NAME_SPACE_MASK.getTypeID()),
NAME_SPACE_SCALAR(NAME_SPACE_MASK.getTypeID() + SCALAR.getTypeID()),
NAME_SPACE_NESTED_ELEMENT(NAME_SPACE_MASK.getTypeID()+ COMPOSITE_ELEMENT.getTypeID());
@simpl_scalar
private final int typeID;
/**
* Gets the ID for the type. Currently really just for backward compatability with old code.
* @return
*/
public int getTypeID()
{
return this.typeID;
}
/**
* Obtains a FieldTyep from a given ID
* @param typeID
* @return
*/
public static FieldType fromTypeID(int typeID)
{
for(FieldType ft : FieldType.values())
{
if(ft.getTypeID()== typeID)
{
return ft;
}
}
// Just default to this.
return FieldType.BAD_FIELD;
}
/**
* Creates a field type with a corresponding type ID number
* @param typeID
*/
FieldType(int typeID)
{
this.typeID = typeID;
}
}