diff geo-backend/src/main/java/de/intevation/gnv/geobackend/sde/datasources/SDEDatasource.java @ 129:110e3ac1b7d2

Library Dependencies Added to pom.xml-File Import of SDE-Datasources geo-backend/trunk@5 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Wed, 02 Sep 2009 09:07:03 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/geo-backend/src/main/java/de/intevation/gnv/geobackend/sde/datasources/SDEDatasource.java	Wed Sep 02 09:07:03 2009 +0000
@@ -0,0 +1,131 @@
+/* Copyright (C) 2007 con terra GmbH (http://www.conterra.de)
+ * All rights reserved
+ *
+ * $Id: SDEDatasource.java,v 1.6 2008/01/30 12:38:34 blume Exp $
+ *
+ * created by:      drewnak
+ * created at :     21.11.2007
+ * created at :     14:35:53
+ *
+ * modified by:     $Author: blume $
+ * modified at:     $Date: 2008/01/30 12:38:34 $
+ */
+package de.intevation.gnv.geobackend.sde.datasources;
+
+import java.util.Map;
+
+import org.apache.log4j.Logger;
+
+import com.esri.sde.sdk.client.SeConnection;
+
+import de.intevation.gnv.geobackend.sde.datasources.exception.TechnicalException;
+
+/**
+ * Concrete Implementation of the datasource interface.
+ *
+ * @author drewnak
+ */
+public class SDEDatasource extends Datasource {
+
+    /**
+     * Default Logging instance
+     */
+    private static final Logger sLogger = Logger.getLogger(SDEDatasource.class);
+    private static boolean sDebug = sLogger.isDebugEnabled();
+
+    public static final String KEY_URL = "sde.url";
+    public static final String KEY_PORT = "sde.port";
+    public static final String KEY_USER = "sde.user";
+    public static final String KEY_PWD = "sde.password";
+    public static final String KEY_DATABASE = "sde.database";
+
+
+    /* (non-Javadoc)
+      * @see de.conterra.bsh.gdi.gnviewer.datasources.Datasource#init(java.lang.String, java.util.Map)
+      */
+    protected void init(String pName, Map pParams) {
+        mName = pName;
+        mParameters = pParams;
+        if (!ArcSDEConnectionPool.isConfigured()) {
+            /*
+           <DataSource name="sde" classname="de.conterra.bsh.gdi.gnviewer.datasources.sde.SDEDatasource">
+           <Parameter name="sde.url">localhost</Parameter>
+           <Parameter name="sde.user">bsh</Parameter>
+           <Parameter name="sde.password">bsh</Parameter>
+           <Parameter name="sde.port">5151</Parameter>
+            </DataSource>
+            */
+
+            String lServer;
+            int lPort = 0;
+            String lDatabase;
+            String lUser;
+            String lPwd;
+
+            lServer = setStringParameter(pParams, KEY_URL);
+            lUser = setStringParameter(pParams, KEY_USER);
+            lPwd = setStringParameter(pParams, KEY_PWD);
+            lDatabase = setStringParameter(pParams, KEY_DATABASE);
+            lPort = setIntParameter(pParams, KEY_PORT);
+            // todo: read techparams from config(# of initial connections, TTL)
+
+            ArcSDEConnectionParams lParams = new ArcSDEConnectionParams(lServer, lPort, lDatabase, lUser, lPwd, 0, 10, 60000);
+            try {
+                ArcSDEConnectionPool.configure(lParams);
+            } catch (TechnicalException e) {
+                sLogger.error(e.getMessage(), e);
+
+            }
+        }
+    }
+
+    private String setStringParameter(Map pParams, String pMapKey) {
+        if (pParams.containsKey(pMapKey)) {
+            return (String) pParams.get(pMapKey);
+        } else {
+            if (sDebug) sLogger.debug("no param config for key " + pMapKey);
+            return "";
+        }
+    }
+
+    private int setIntParameter(Map pParams, String pMapKey) {
+        if (pParams.containsKey(pMapKey)) {
+            return Integer.parseInt((String) pParams.get(pMapKey));
+        } else {
+            if (sDebug) sLogger.debug("no param config for key " + pMapKey);
+            return -1;
+        }
+    }
+
+    /* (non-Javadoc)
+      * @see java.lang.Object#toString()
+      */
+    public String toString() {
+        return super.toString() + " " + mName;
+    }
+
+
+    /**
+     * (non-Javadoc)
+     *
+     * @see de.conterra.bsh.gdi.gnviewer.datasources.Datasource#getConnection()
+     */
+    public DatasourceConnection getConnection() {
+        return new SDEConnection();
+    }
+
+    /**
+     * (non-Javadoc)
+     *
+     * @see de.conterra.bsh.gdi.gnviewer.datasources.Datasource#returnConnection(de.conterra.bsh.gdi.gnviewer.datasources.DatasourceConnection)
+     */
+    public void returnConnection(DatasourceConnection pConnection) {
+        if (null != pConnection) {
+            try {
+                ArcSDEConnectionPool.getInstance().returnConnection((SeConnection) pConnection);
+            } catch (TechnicalException e) {
+                sLogger.error(e.getMessage(), e);
+            }
+        }
+    }
+}

http://dive4elements.wald.intevation.org