package com.ximple.eofms.util; import com.vividsolutions.jts.geom.Coordinate; import com.vividsolutions.jts.geom.CoordinateSequence; import com.vividsolutions.jts.geom.CoordinateSequenceFilter; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.geom.GeometryFactory; import com.vividsolutions.jts.util.Assert; import com.ximple.io.dgn7.GeometryConverter; public class EPSG3825GeometryConverterDecorator implements GeometryConverterDecorator { private GeometryConverter converter; private EPSG3825ConvertFilter coordinatesFilter = new EPSG3825ConvertFilter(); public EPSG3825GeometryConverterDecorator() { } public GeometryConverter getConverter() { return converter; } public void setConverter(GeometryConverter converter) { this.converter = converter; } protected EPSG3825ConvertFilter getCoordinatesFilter() { return coordinatesFilter; } protected void setCoordinatesFilter(EPSG3825ConvertFilter coordinatesFilter) { this.coordinatesFilter = coordinatesFilter; } public Geometry toGeometry(GeometryFactory factory) { if (converter == null) Assert.shouldNeverReachHere(); coordinatesFilter.reset(); Geometry geom = converter.toGeometry(factory); if (geom == null) return null; geom.apply(coordinatesFilter); return geom; } protected class EPSG3825ConvertFilter implements CoordinateSequenceFilter { public void filter(CoordinateSequence coordinateSequence, int i) { Coordinate pt = coordinateSequence.getCoordinate(i); Coordinate pt97 = TWDDatumConverter.fromTM2ToEPSG3825(pt); pt.x = pt97.x; pt.y = pt97.y; pt.z = pt97.z; } public boolean isDone() { return false; } public boolean isGeometryChanged() { return true; } public void reset() { } } }