package com.revolsys.record.io.format.saif.util;
import java.io.IOException;
import java.util.Map;
import com.revolsys.geometry.model.Geometry;
import com.revolsys.geometry.model.GeometryFactory;
import com.revolsys.geometry.model.Point;
import com.revolsys.record.io.format.saif.SaifConstants;
import com.revolsys.record.io.format.saif.geometry.AlignedPoint;
public class AlignedPointConverter extends PointConverter {
public AlignedPointConverter(final GeometryFactory geometryFactory) {
super(geometryFactory, SaifConstants.ALIGNED_POINT);
}
@Override
public Point newPoint(final GeometryFactory geometryFactory, final double... coordinates) {
return new AlignedPoint(geometryFactory, coordinates);
}
/**
* north, directionIndicator are handled by the default handling
*/
@Override
protected void readAttribute(final OsnIterator iterator, final String fieldName,
final Map<String, Object> values) {
if (fieldName.equals("alignment")) {
values.put("alignment", iterator.nextDoubleValue());
} else {
super.readAttribute(iterator, fieldName, values);
}
}
@Override
protected void writeAttributes(final OsnSerializer serializer, final Geometry geometry)
throws IOException {
writeAttribute(serializer, geometry, "alignment");
writeAttribute(serializer, geometry, "directionIndicator");
writeAttributeEnum(serializer, geometry, "north");
super.writeAttributes(serializer, geometry);
}
}