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@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: *
  1. 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@129: } 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: }