public static ElementType createFieldType(final DataAttributes attributes, final DataAttributeContext context)
{
if (attributes == null)
{
return new TextFieldType();
}
final ElementType elementType;
final Class type = (Class) attributes.getMetaAttribute
(MetaAttributeNames.Core.NAMESPACE, MetaAttributeNames.Core.TYPE, Class.class, context);
if (Number.class.isAssignableFrom(type))
{
elementType = new NumberFieldType();
}
else if (Date.class.isAssignableFrom(type))
{
elementType = new DateFieldType();
}
else if (byte[].class.isAssignableFrom(type) ||
Blob.class.isAssignableFrom(type) ||
File.class.isAssignableFrom(type) ||
URL.class.isAssignableFrom(type) ||
Image.class.isAssignableFrom(type) ||
Shape.class.isAssignableFrom(type) ||
Component.class.isAssignableFrom(type) ||
ImageContainer.class.isAssignableFrom(type))
{
elementType = new ContentFieldType();
}
else
{
elementType = new TextFieldType();
}
return elementType;
}