public static Ring fixUnclosedRing( Ring ring ) {
Ring repaired = null;
switch ( ring.getRingType() ) {
case LinearRing: {
LinearRing linearRing = (LinearRing) ring;
Points fixedPoints = getFixedPoints( linearRing.getControlPoints(), linearRing.getStartPoint() );
repaired = new DefaultLinearRing( ring.getId(), ring.getCoordinateSystem(), ring.getPrecision(),
fixedPoints );
break;
}
case Ring: {
List<Curve> repairedCurves = new ArrayList<Curve>( ring.getMembers() );
Curve lastCurve = repairedCurves.get( repairedCurves.size() - 1 );
repairedCurves.set( repairedCurves.size() - 1, fixCurve( lastCurve, ring.getStartPoint() ) );
repaired = new DefaultRing( ring.getId(), ring.getCoordinateSystem(), ring.getPrecision(), repairedCurves );
break;
}
}
repaired.setProperties( ring.getProperties() );
return repaired;
}