package org.geotools.geojson.feature;
import java.text.ParseException;
import java.util.Date;
import java.util.HashMap;
import org.geotools.geojson.GeoJSONUtil;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.feature.type.AttributeDescriptor;
public class FeatureTypeAttributeIO implements AttributeIO {
HashMap<String, AttributeIO> ios = new HashMap();
public FeatureTypeAttributeIO(SimpleFeatureType featureType) {
for (AttributeDescriptor ad : featureType.getAttributeDescriptors()) {
AttributeIO io = null;
if (Date.class.isAssignableFrom(ad.getType().getBinding())) {
io = new DateAttributeIO();
}
else {
io = new DefaultAttributeIO();
}
ios.put(ad.getLocalName(), io);
}
}
public String encode(String att, Object value) {
return ios.get(att).encode(att, value);
}
public Object parse(String att, String value) {
return ios.get(att).parse(att, value);
}
static class DateAttributeIO implements AttributeIO {
public String encode(String att, Object value) {
return GeoJSONUtil.DATE_FORMAT.format((Date)value);
}
public Object parse(String att, String value) {
try {
return GeoJSONUtil.DATE_FORMAT.parse(value);
}
catch (ParseException e) {
throw new RuntimeException(e);
}
}
}
}