tim@129: /**
tim@129: * Title: ArcSDEUtils, $Header: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/datasources/sde/ArcSDEUtils.java,v 1.7 2007/11/28 14:05:39 blume Exp $
tim@129: * Source: $Source: /share/gdi/SDI-Suite/Repository/projekte/BSH-GDI/genericViewer/src/main/java/de/conterra/bsh/gdi/gnviewer/datasources/sde/ArcSDEUtils.java,v $
tim@129: * created by: Stefan Blume (blume)
tim@129: * erstellt am: 21.11.2007
tim@129: * Copyright: con terra GmbH, 2005
tim@129: *
tim@129: * modified by: $Author: blume $
tim@129: * modified on: $Date: 2007/11/28 14:05:39 $
tim@129: * Version: $Revision: 1.7 $
tim@129: * TAG: $Name: $
tim@129: * locked from: $Locker: $
tim@129: * CVS State: $State: Exp $
tim@129: * Project: $ProjectName$
tim@129: */
tim@129: package de.intevation.gnv.geobackend.sde.datasources;
tim@129:
tim@129: import java.util.Vector;
tim@129:
tim@129: import org.apache.log4j.Logger;
tim@129:
tim@129: import com.esri.sde.sdk.client.SDEPoint;
tim@129: import com.esri.sde.sdk.client.SeColumnDefinition;
tim@129: import com.esri.sde.sdk.client.SeError;
tim@129: import com.esri.sde.sdk.client.SeException;
tim@129: import com.esri.sde.sdk.client.SeTable;
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:
tim@129: /**
tim@129: * The class ArcSDEUtils
fulfills the following purposes:
tim@129: *
tim@129: *
tim@129: *
tim@263: *
tim@129: * @author blume
tim@129: * @version 1.0
tim@129: * @serial 1.0
tim@129: * @see
tim@129: * @since 21.11.2007 08:20:40
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: public void displayStats(SeTable.SeTableStats tableStats) {
tim@129:
tim@129: sLogger.debug("\n--> Table Statistics\n");
tim@129: if (tableStats != null) {
tim@129:
tim@129: sLogger.debug("Average - " + tableStats.getAverage());
tim@129: sLogger.debug("No of rows - " + tableStats.getCount());
tim@129: sLogger.debug("Maximum Value - " + tableStats.getMax());
tim@129: sLogger.debug("Minimum Value - " + tableStats.getMin());
tim@263: sLogger.debug("No of distinct values - "
tim@263: + tableStats.getNumDistinct());
tim@129: sLogger.debug("Standard Deviation - " + tableStats.getStdDev());
tim@129:
tim@263: sLogger.debug("Distinct type - "
tim@263: + ArcSDEUtils.resolveType(tableStats
tim@263: .getDistinctType()));
tim@129:
tim@129: int[] distinctFreq = tableStats.getDistinctValueFrequencies();
tim@129: Vector distinctValues = tableStats.getDistinctValues();
tim@129: sLogger.debug("Distinct values & their frequencies : ");
tim@129: for (int i = 0; i < distinctFreq.length; i++)
tim@263: sLogger.debug(distinctValues.elementAt(i) + " - "
tim@263: + distinctFreq[i]);
tim@129: }// End if
tim@129:
tim@129: }// End displayStats
tim@129:
tim@129: /**
tim@263: * Takes an integer corresponding to an ArcSDE data type and returns a
tim@263: * string description of the type.
tim@263: *
tim@263: * @param type
tim@263: * SDE data type bit-mask.
tim@129: */
tim@129: public static String resolveType(int type) {
tim@129:
tim@129: String typeName = "Invalid Type";
tim@129: switch (type) {
tim@129:
tim@263: case SeColumnDefinition.TYPE_SMALLINT:
tim@263: typeName = "Small Int";
tim@263: break;
tim@263: case SeColumnDefinition.TYPE_INTEGER:
tim@263: typeName = "Int";
tim@263: break;
tim@263: case SeColumnDefinition.TYPE_FLOAT:
tim@263: typeName = "Float";
tim@263: break;
tim@263: case SeColumnDefinition.TYPE_DOUBLE:
tim@263: typeName = "Double";
tim@263: break;
tim@263: case SeColumnDefinition.TYPE_STRING:
tim@263: typeName = "String";
tim@263: break;
tim@263: case SeColumnDefinition.TYPE_BLOB:
tim@263: typeName = "Blob";
tim@263: break;
tim@263: case SeColumnDefinition.TYPE_DATE:
tim@263: typeName = "Date";
tim@263: break;
tim@263: case SeColumnDefinition.TYPE_SHAPE:
tim@263: typeName = "Shape";
tim@263: break;
tim@263: case SeColumnDefinition.TYPE_RASTER:
tim@263: typeName = "Raster";
tim@263: break;
tim@129: }
tim@129: return typeName;
tim@129: }// End method resolveType
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@129: }// End printError
tim@129:
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@879:
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: }
tim@129: }