else {
ls = (LineString) obj;
}
//parent class expects a line segment
Edge e = (Edge)super.add(
new LineSegment(
ls.getCoordinateN(0), ls.getCoordinateN(ls.getNumPoints()-1)
)
);
//check if the LineSegment has been changed
if (useTolerance()) {
LineSegment lineSegment = (LineSegment) e.getObject();
Coordinate[] coordinates = ls.getCoordinates();
List<Coordinate> coordinateList = Arrays.asList(coordinates);
// list from asList does not support add(index,object), must make an arraylist
List<Coordinate> nCoordinateList = new ArrayList<Coordinate>(coordinateList);
if (!ls.getCoordinateN(0).equals(lineSegment.p0)) {
nCoordinateList.add(0, lineSegment.p0);
} else if (!ls.getCoordinateN(ls.getNumPoints()-1).equals(lineSegment.p1)){
nCoordinateList.add(lineSegment.p1);
}
Coordinate[] newCoordinates = nCoordinateList.toArray(new Coordinate[nCoordinateList.size()]);
ls = gf.createLineString(newCoordinates);
}
//over write object to be the linestring
e.setObject(ls);
return(e);
}