package com.revolsys.record.io.format.gml.type;
import java.util.HashMap;
import java.util.Map;
import com.revolsys.datatype.DataType;
import com.revolsys.datatype.DataTypes;
public class GmlFieldTypeRegistry {
public static final GmlFieldTypeRegistry INSTANCE = new GmlFieldTypeRegistry();
private final Map<DataType, GmlFieldType> typeMapping = new HashMap<>();
public GmlFieldTypeRegistry() {
addFieldType(new SimpleFieldType(DataTypes.ANY_URI));
addFieldType(new SimpleFieldType(DataTypes.BASE64_BINARY));
addFieldType(new SimpleFieldType(DataTypes.BOOLEAN));
addFieldType(new SimpleFieldType(DataTypes.BYTE));
addFieldType(new SimpleFieldType(DataTypes.DATE));
addFieldType(new SimpleFieldType(DataTypes.DATE_TIME));
addFieldType(new SimpleFieldType(DataTypes.DECIMAL));
addFieldType(new SimpleFieldType(DataTypes.DOUBLE));
addFieldType(new SimpleFieldType(DataTypes.FLOAT));
addFieldType(new SimpleFieldType(DataTypes.INT));
addFieldType(new SimpleFieldType(DataTypes.INTEGER));
addFieldType(new SimpleFieldType(DataTypes.LONG));
addFieldType(new SimpleFieldType(DataTypes.QNAME));
addFieldType(new SimpleFieldType(DataTypes.SHORT));
addFieldType(new SimpleFieldType(DataTypes.STRING));
addFieldType(new GmlGeometryFieldType(DataTypes.GEOMETRY));
addFieldType(new GmlGeometryFieldType(DataTypes.POINT));
addFieldType(new GmlGeometryFieldType(DataTypes.LINE_STRING));
addFieldType(new GmlGeometryFieldType(DataTypes.POLYGON));
addFieldType(new GmlGeometryFieldType(DataTypes.MULTI_POINT));
addFieldType(new GmlGeometryFieldType(DataTypes.MULTI_LINE_STRING));
addFieldType(new GmlGeometryFieldType(DataTypes.MULTI_POLYGON));
}
public void addFieldType(final DataType dataType, final GmlFieldType fieldType) {
this.typeMapping.put(dataType, fieldType);
}
public void addFieldType(final GmlFieldType fieldType) {
final DataType dataType = fieldType.getDataType();
addFieldType(dataType, fieldType);
}
public GmlFieldType getFieldType(final DataType dataType) {
GmlFieldType gmlFieldType = this.typeMapping.get(dataType);
if (gmlFieldType == null) {
gmlFieldType = SimpleFieldType.OBJECT;
}
return gmlFieldType;
}
}