tim@129: package de.intevation.gnv.geobackend.sde.datasources;
tim@129:
tim@129: import com.esri.sde.sdk.client.SDEPoint;
tim@129: import com.esri.sde.sdk.client.SeError;
tim@129: import com.esri.sde.sdk.client.SeException;
sascha@886:
tim@263: import com.vividsolutions.jts.geom.Coordinate;
tim@263: import com.vividsolutions.jts.geom.Geometry;
tim@879: import com.vividsolutions.jts.geom.LineString;
tim@383: import com.vividsolutions.jts.geom.Point;
tim@263: import com.vividsolutions.jts.geom.Polygon;
tim@129:
sascha@886: import org.apache.log4j.Logger;
sascha@886:
tim@129: /**
tim@129: * The class ArcSDEUtils
fulfills the following purposes:
tim@263: *
tim@129: * @author blume
sascha@887: * @author Tim Englich
tim@129: */
tim@129: public class ArcSDEUtils {
tim@129:
tim@129: /**
tim@129: * Default Logging instance
tim@129: */
tim@129: private static Logger sLogger = Logger.getLogger(ArcSDEUtils.class);
tim@129:
tim@129: /**
tim@884: * Prints an SEEsception into the Logger of this Class
tim@884: * @param exception
tim@129: */
tim@129: public static void printError(SeException exception) {
tim@129:
tim@129: SeError error = exception.getSeError();
tim@129:
tim@129: sLogger.debug("\n ArcSDE Error Number : " + error.getSdeError());
tim@129: sLogger.debug(" Error Description : " + error.getErrDesc());
tim@129:
tim@129: int extError = error.getExtError();
tim@129: if (extError != 0)
tim@129: sLogger.debug(" Extended Error Number : " + extError);
tim@129:
tim@129: String desc = error.getSdeErrMsg();
tim@129: if (desc != null && desc.length() != 0)
tim@129: sLogger.debug(" Extended Error Description : " + desc);
tim@129:
tim@129: desc = error.getExtErrMsg();
tim@129: if (desc != null && desc.length() != 0)
tim@129: sLogger.debug(" Extended Error Description : " + desc);
tim@129:
tim@129: sLogger.debug(exception);
tim@129:
tim@884: }
tim@129:
tim@884: /**
tim@884: * Generate an SDEPoint-Array from a given Geometry.
tim@884: * This Method did not put the Holes to the Array.
tim@884: * @param g The Geometry which should be converted.
tim@884: * @return an SDEPoint-Array from a given Ggeometry.
tim@884: */
tim@263: public SDEPoint[] createPoints(Geometry g) {
tim@129: sLogger.debug("createPoints()");
tim@263: Coordinate[] coords = null;
tim@263: if (g instanceof Polygon) {
tim@263: coords = ((Polygon) g).getCoordinates();
tim@383: }else if (g instanceof Point){
tim@383: coords = ((Point)g).getCoordinates();
tim@879: }else if (g instanceof LineString){
tim@879: coords = ((LineString)g).getCoordinates();
tim@879: }else{
tim@879: coords = g.getCoordinates();
tim@129: }
tim@884:
tim@263: if (coords != null){
tim@263: SDEPoint[] lSDEPoints = new SDEPoint[coords.length];
tim@263: for (int i = 0; i < coords.length; i++) {
tim@263: lSDEPoints[i] = new SDEPoint(coords[i].x, coords[i].y);
tim@263: }
tim@263: return lSDEPoints;
tim@263: }else{
tim@263: return null;
tim@263: }
tim@129: }
tim@129: }