tim@130: /** tim@130: * tim@130: */ tim@130: package de.intevation.gnv.geobackend.sde.datasources; tim@130: tim@380: import java.sql.Array; tim@380: import java.sql.Blob; tim@130: import java.sql.CallableStatement; tim@380: import java.sql.Clob; tim@130: import java.sql.Connection; tim@130: import java.sql.DatabaseMetaData; tim@380: import java.sql.NClob; tim@130: import java.sql.PreparedStatement; tim@380: import java.sql.SQLClientInfoException; tim@130: import java.sql.SQLException; tim@130: import java.sql.SQLWarning; tim@380: import java.sql.SQLXML; tim@130: import java.sql.Savepoint; tim@130: import java.sql.Statement; tim@380: import java.sql.Struct; tim@130: import java.util.Map; tim@380: import java.util.Properties; tim@130: tim@130: import org.apache.log4j.Logger; tim@130: tim@130: import com.esri.sde.sdk.client.SeConnection; tim@130: import com.esri.sde.sdk.client.SeException; tim@130: tim@130: import de.intevation.gnv.geobackend.base.connectionpool.exception.ConnectionException; tim@130: import de.intevation.gnv.geobackend.sde.connectionpool.ArcSDEPoolableObjectFactory; tim@130: tim@130: /** tim@130: * @author Tim Englich tim@130: * tim@130: */ tim@130: public class ArcSDEConnection implements Connection { tim@130: tim@130: /** tim@130: * the logger, used to log exceptions and additonaly information tim@130: */ tim@130: private static Logger log = Logger.getLogger(ArcSDEPoolableObjectFactory.class); tim@130: tim@130: private SeConnection seConnection = null; tim@130: tim@551: private long serverRoundtripInterval; tim@551: tim@130: tim@130: tim@130: /** tim@130: * Constructor tim@130: */ tim@551: public ArcSDEConnection(String server,String port,String database,String username,String credentials, long serverRoundtripInterval) throws ConnectionException { tim@130: try { tim@130: seConnection = new SeConnection(server,port,database,username,credentials); tim@551: this.serverRoundtripInterval = serverRoundtripInterval; tim@130: } catch (SeException e) { tim@130: log.error(e,e); tim@130: throw new ConnectionException(e); tim@130: } tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#clearWarnings() tim@130: */ tim@130: public void clearWarnings() throws SQLException { tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#close() tim@130: */ tim@130: public void close() throws SQLException { tim@130: try { tim@130: this.seConnection.close(); tim@130: } catch (SeException e) { tim@130: log.error(e,e); tim@130: throw new SQLException(e.getMessage()); tim@130: } tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#commit() tim@130: */ tim@130: public void commit() throws SQLException { tim@130: try{ tim@130: this.seConnection.commitTransaction(); tim@130: } catch (SeException e) { tim@130: log.error(e,e); tim@130: throw new SQLException(e.getMessage()); tim@130: } tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#createStatement() tim@130: */ tim@130: public Statement createStatement() throws SQLException { tim@130: tim@130: return new ArcSDEStatement(this); tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#createStatement(int, int) tim@130: */ tim@130: public Statement createStatement(int resultSetType, int resultSetConcurrency) tim@130: throws SQLException { tim@130: return new ArcSDEStatement(this); tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#createStatement(int, int, int) tim@130: */ tim@130: public Statement createStatement(int resultSetType, tim@130: int resultSetConcurrency, int resultSetHoldability) tim@130: throws SQLException { tim@130: return new ArcSDEStatement(this); tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#getAutoCommit() tim@130: */ tim@130: public boolean getAutoCommit() throws SQLException { tim@130: return false; tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#getCatalog() tim@130: */ tim@130: public String getCatalog() throws SQLException { tim@130: tim@130: return null; tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#getHoldability() tim@130: */ tim@130: public int getHoldability() throws SQLException { tim@130: tim@130: return 0; tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#getMetaData() tim@130: */ tim@130: public DatabaseMetaData getMetaData() throws SQLException { tim@130: tim@130: return null; tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#getTransactionIsolation() tim@130: */ tim@130: public int getTransactionIsolation() throws SQLException { tim@130: tim@130: return 0; tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#getTypeMap() tim@130: */ tim@130: public Map> getTypeMap() throws SQLException { tim@130: tim@130: return null; tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#getWarnings() tim@130: */ tim@130: public SQLWarning getWarnings() throws SQLException { tim@130: tim@130: return null; tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#isClosed() tim@130: */ tim@130: public boolean isClosed() throws SQLException { tim@130: try{ tim@130: return this.seConnection.isClosed(); tim@130: } catch (Exception e) { tim@130: log.error(e,e); tim@130: throw new SQLException(e.getMessage()); tim@130: } tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#isReadOnly() tim@130: */ tim@130: public boolean isReadOnly() throws SQLException { tim@130: return false; tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#nativeSQL(java.lang.String) tim@130: */ tim@130: public String nativeSQL(String sql) throws SQLException { tim@130: return null; tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#prepareCall(java.lang.String) tim@130: */ tim@130: public CallableStatement prepareCall(String sql) throws SQLException { tim@130: return null; tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#prepareCall(java.lang.String, int, int) tim@130: */ tim@130: public CallableStatement prepareCall(String sql, int resultSetType, tim@130: int resultSetConcurrency) throws SQLException { tim@130: return null; tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#prepareCall(java.lang.String, int, int, int) tim@130: */ tim@130: public CallableStatement prepareCall(String sql, int resultSetType, tim@130: int resultSetConcurrency, int resultSetHoldability) tim@130: throws SQLException { tim@130: tim@130: return null; tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#prepareStatement(java.lang.String) tim@130: */ tim@130: public PreparedStatement prepareStatement(String sql) throws SQLException { tim@130: tim@130: return null; tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#prepareStatement(java.lang.String, int) tim@130: */ tim@130: public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) tim@130: throws SQLException { tim@130: tim@130: return null; tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#prepareStatement(java.lang.String, int[]) tim@130: */ tim@130: public PreparedStatement prepareStatement(String sql, int[] columnIndexes) tim@130: throws SQLException { tim@130: tim@130: return null; tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#prepareStatement(java.lang.String, java.lang.String[]) tim@130: */ tim@130: public PreparedStatement prepareStatement(String sql, String[] columnNames) tim@130: throws SQLException { tim@130: tim@130: return null; tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#prepareStatement(java.lang.String, int, int) tim@130: */ tim@130: public PreparedStatement prepareStatement(String sql, int resultSetType, tim@130: int resultSetConcurrency) throws SQLException { tim@130: tim@130: return null; tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#prepareStatement(java.lang.String, int, int, int) tim@130: */ tim@130: public PreparedStatement prepareStatement(String sql, int resultSetType, tim@130: int resultSetConcurrency, int resultSetHoldability) tim@130: throws SQLException { tim@130: tim@130: return null; tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#releaseSavepoint(java.sql.Savepoint) tim@130: */ tim@130: public void releaseSavepoint(Savepoint savepoint) throws SQLException { tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#rollback() tim@130: */ tim@130: public void rollback() throws SQLException { tim@130: try { tim@130: this.seConnection.rollbackTransaction(); tim@130: } catch (SeException e) { tim@130: log.error(e,e); tim@130: throw new SQLException(e.getMessage()); tim@130: } tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#rollback(java.sql.Savepoint) tim@130: */ tim@130: public void rollback(Savepoint savepoint) throws SQLException { tim@130: this.rollback(); tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#setAutoCommit(boolean) tim@130: */ tim@130: public void setAutoCommit(boolean autoCommit) throws SQLException { tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#setCatalog(java.lang.String) tim@130: */ tim@130: public void setCatalog(String catalog) throws SQLException { tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#setHoldability(int) tim@130: */ tim@130: public void setHoldability(int holdability) throws SQLException { tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#setReadOnly(boolean) tim@130: */ tim@130: public void setReadOnly(boolean readOnly) throws SQLException { tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#setSavepoint() tim@130: */ tim@130: public Savepoint setSavepoint() throws SQLException { tim@130: tim@130: return null; tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#setSavepoint(java.lang.String) tim@130: */ tim@130: public Savepoint setSavepoint(String name) throws SQLException { tim@130: tim@130: return null; tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#setTransactionIsolation(int) tim@130: */ tim@130: public void setTransactionIsolation(int level) throws SQLException { tim@130: } tim@130: tim@130: /** tim@130: * @see java.sql.Connection#setTypeMap(java.util.Map) tim@130: */ tim@130: public void setTypeMap(Map> map) throws SQLException { tim@130: } tim@130: tim@130: /** tim@130: * @return the seConnection tim@130: */ tim@130: public SeConnection getSeConnection() { tim@130: return seConnection; tim@130: } tim@130: tim@380: public Array createArrayOf(String arg0, Object[] arg1) throws SQLException { tim@380: return null; tim@380: } tim@380: tim@380: public Blob createBlob() throws SQLException { tim@380: return null; tim@380: } tim@380: tim@380: public Clob createClob() throws SQLException { tim@380: return null; tim@380: } tim@380: tim@380: public NClob createNClob() throws SQLException { tim@380: return null; tim@380: } tim@380: tim@380: public SQLXML createSQLXML() throws SQLException { tim@380: return null; tim@380: } tim@380: tim@380: public Struct createStruct(String arg0, Object[] arg1) throws SQLException { tim@380: return null; tim@380: } tim@380: tim@380: public Properties getClientInfo() throws SQLException { tim@380: return null; tim@380: } tim@380: tim@380: public String getClientInfo(String arg0) throws SQLException { tim@380: return null; tim@380: } tim@380: tim@380: public boolean isValid(int arg0) throws SQLException { tim@551: tim@551: boolean valid = true; tim@551: try { tim@551: this.seConnection.testServer(serverRoundtripInterval); tim@551: } catch (SeException e) { tim@551: log.debug("The validation of the Connection has occured an Error. The connection is invalid."); tim@551: valid = false; tim@551: } tim@551: tim@551: return valid; tim@380: } tim@380: tim@380: public void setClientInfo(Properties arg0) throws SQLClientInfoException { tim@380: } tim@380: tim@380: public void setClientInfo(String arg0, String arg1) tim@380: throws SQLClientInfoException { tim@380: } tim@380: tim@380: public boolean isWrapperFor(Class iface) throws SQLException { tim@380: return false; tim@380: } tim@380: tim@380: public T unwrap(Class iface) throws SQLException { tim@380: return null; tim@380: } tim@380: tim@130: }