public Geometry toDto(org.geomajas.puregwt.client.spatial.Geometry geometry) {
if (geometry == null) {
return null;
}
Geometry dto = null;
if (geometry instanceof Point) {
dto = new Geometry(Geometry.POINT, 0, 0);
dto.setCoordinates(geometry.getCoordinates());
} else if (geometry instanceof LinearRing) {
dto = new Geometry(Geometry.LINEAR_RING, 0, 0);
dto.setCoordinates(geometry.getCoordinates());
} else if (geometry instanceof LineString) {
dto = new Geometry(Geometry.LINE_STRING, 0, 0);
dto.setCoordinates(geometry.getCoordinates());
} else if (geometry instanceof Polygon) {
dto = new Geometry(Geometry.POLYGON, 0, 0);
Polygon polygon = (Polygon) geometry;
Geometry[] geometries = new Geometry[polygon.getNumInteriorRing() + 1];
for (int i = 0; i < geometries.length; i++) {
if (i == 0) {
geometries[i] = toDto(polygon.getExteriorRing());
} else {
geometries[i] = toDto(polygon.getInteriorRingN(i - 1));
}
}
dto.setGeometries(geometries);
} else if (geometry instanceof MultiPoint) {
dto = new Geometry(Geometry.MULTI_POINT, 0, 0);
dto.setGeometries(convertGeometries(geometry));
} else if (geometry instanceof MultiLineString) {
dto = new Geometry(Geometry.MULTI_LINE_STRING, 0, 0);
dto.setGeometries(convertGeometries(geometry));
} else if (geometry instanceof MultiPolygon) {
dto = new Geometry(Geometry.MULTI_POLYGON, 0, 0);
dto.setGeometries(convertGeometries(geometry));
}
return dto;
}