view 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 source
/* 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