package com.revolsys.record.io.format.saif.util;
import java.io.IOException;
import com.revolsys.geometry.model.GeometryFactory;
import com.revolsys.geometry.model.LineString;
import com.revolsys.geometry.model.impl.LineStringDoubleBuilder;
import com.revolsys.geometry.model.impl.LineStringDoubleGf;
import com.revolsys.record.io.format.saif.SaifConstants;
import com.revolsys.record.io.format.saif.geometry.ArcDirectedLineString;
import com.revolsys.record.io.format.saif.geometry.ArcLineString;
public class ArcDirectedConverter extends ArcConverter {
public ArcDirectedConverter(final GeometryFactory geometryFactory) {
super(geometryFactory, SaifConstants.ARC_DIRECTED);
}
@Override
public LineString newLineString(final GeometryFactory geometryFactory,
final LineStringDoubleBuilder line) {
final int axisCount = geometryFactory.getAxisCount();
final int vertexCount = line.getVertexCount();
final double[] coordinates = LineStringDoubleGf.getNewCoordinates(geometryFactory, line);
return new ArcDirectedLineString(geometryFactory, axisCount, vertexCount, coordinates);
}
@Override
protected void writeAttributes(final OsnSerializer serializer, final ArcLineString line)
throws IOException {
if (line instanceof ArcDirectedLineString) {
final ArcDirectedLineString dirLine = (ArcDirectedLineString)line;
final String flowDirection = dirLine.getFlowDirection();
attributeEnum(serializer, "flowDirection", flowDirection);
}
super.writeAttributes(serializer, line);
}
}