001 //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/tags/2.1/src/org/deegree/io/sdeapi/SDEConnection.java $
002 /*---------------- FILE HEADER ------------------------------------------
003
004 This file is part of deegree.
005 Copyright (C) 2006 by: M.O.S.S. Computer Grafik Systeme GmbH
006 Hohenbrunner Weg 13
007 D-82024 Taufkirchen
008 http://www.moss.de/
009
010 This library is free software; you can redistribute it and/or
011 modify it under the terms of the GNU Lesser General Public
012 License as published by the Free Software Foundation; either
013 version 2.1 of the License, or (at your option) any later version.
014
015 This library is distributed in the hope that it will be useful,
016 but WITHOUT ANY WARRANTY; without even the implied warranty of
017 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
018 Lesser General Public License for more details.
019
020 You should have received a copy of the GNU Lesser General Public
021 License along with this library; if not, write to the Free Software
022 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
023
024 ---------------------------------------------------------------------------*/
025 package org.deegree.io.sdeapi;
026
027 import com.esri.sde.sdk.client.SeConnection;
028 import com.esri.sde.sdk.client.SeException;
029 import com.esri.sde.sdk.client.SeState;
030 import com.esri.sde.sdk.client.SeVersion;
031
032 public class SDEConnection {
033
034 private SeConnection connection;
035
036 private SeVersion version;
037
038 private SeState state;
039
040 public SDEConnection( final String sdeServer, final int sdeInstance, final String sdeDatabase,
041 final String sdeVersion, final String sdeUser, final String sdePassword ) {
042
043 try {
044 connection = new SeConnection( sdeServer, sdeInstance, sdeDatabase, sdeUser,
045 sdePassword );
046 if ( null == sdeVersion || 0 == sdeVersion.length() ) {
047 version = new SeVersion( connection );
048 } else {
049 try {
050 version = new SeVersion( connection, sdeVersion );
051 } catch ( SeException dne ) {
052 version = new SeVersion( connection,
053 SeVersion.SE_QUALIFIED_DEFAULT_VERSION_NAME );
054 version.setDescription( sdeVersion );
055 version.setName( sdeVersion );
056 version.setParentName( SeVersion.SE_QUALIFIED_DEFAULT_VERSION_NAME );
057 version.create( false, version );
058 }
059 }
060 reserve();
061 } catch ( Exception e ) {
062 e.printStackTrace();
063 }
064 }
065
066 public SeConnection getConnection() {
067 return connection;
068 }
069
070 public SeVersion getVersion() {
071 return version;
072 }
073
074 public SeState getState() {
075 return state;
076 }
077
078 public boolean isClosed() {
079 if ( null == connection ) {
080 return true;
081 }
082 return connection.isClosed();
083 }
084
085 public void close() {
086 if ( !isClosed() ) {
087 release();
088 try {
089 connection.close();
090 } catch ( Exception e ) {
091 }
092 connection = null;
093 }
094 }
095
096 private void reserve() {
097 try {
098 SeState verState = new SeState( connection, version.getStateId() );
099 state = new SeState( connection );
100 if ( verState.isOpen() ) {
101 verState.close();
102 }
103 state.create( verState.getId() );
104 } catch ( Exception e ) {
105 e.printStackTrace();
106 }
107 ;
108 }
109
110 private void release() {
111 try {
112 version.changeState( state.getId() );
113 state.close();
114 } catch ( Exception e ) {
115 e.printStackTrace();
116 }
117 ;
118 }
119 }
120 /***************************************************************************************************
121 * Changes to this class. What the people have been up to:
122 * $Log$
123 * Revision 1.2 2006/11/27 09:07:52 poth
124 * JNI integration of proj4 has been removed. The CRS functionality now will be done by native deegree code.
125 *
126 * Revision 1.1 2006/05/21 19:11:43 poth
127 * initial load up
128 *
129 * Revision 1.1 2006/05/09 14:57:16 polli
130 * SDE datastore added
131 *
132 **************************************************************************************************/
133