Mercurial > dive4elements > gnv-client
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); + } + } + } +}