/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.modelgenerator.xml.model;
import java.sql.Array;
import java.sql.Blob;
import java.sql.CallableStatement;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.NClob;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.SQLFeatureNotSupportedException;
import java.sql.SQLWarning;
import java.sql.SQLXML;
import java.sql.Savepoint;
import java.sql.Statement;
import java.sql.Struct;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.Executor;
import org.teiid.designer.modelgenerator.xml.wizards.StateManager;
import org.teiid.designer.schema.tools.processing.RelationshipProcessor;
/**
* @since 8.0
*/
public class ConnectionImpl implements Connection {
UserSettings userSettings;
RelationshipProcessor relationshipTypes;
SQLWarning warnings;
DatabaseMetaDataImpl databaseMetaData;
private Object syncObject;
private StateManager stateManager;
/**
*
*/
public ConnectionImpl( StateManager manager,
UserSettings userSettings,
Object syncObject ) {
this.syncObject = syncObject;
this.stateManager = manager;
this.userSettings = userSettings;
databaseMetaData = new DatabaseMetaDataImpl(manager, userSettings, this, syncObject);
warnings = null;
}
public void changed() {
synchronized (syncObject) {
databaseMetaData.changed();
}
}
/**
* @see java.sql.Connection#getHoldability()
*/
@Override
public int getHoldability() {
return ResultSet.CLOSE_CURSORS_AT_COMMIT;
}
/**
* @see java.sql.Connection#getTransactionIsolation()
*/
@Override
public int getTransactionIsolation() {
return TRANSACTION_READ_UNCOMMITTED;
}
/**
* @see java.sql.Connection#clearWarnings()
*/
@Override
public void clearWarnings() {
warnings = null;
}
/**
* @see java.sql.Connection#close()
*/
@Override
public void close() {
}
/**
* @see java.sql.Connection#commit()
*/
@Override
public void commit() {
// We don't care about data; only metadata retrieval
}
/**
* @see java.sql.Connection#rollback()
*/
@Override
public void rollback() {
// We don't care about data; only metadata retrieval
}
/**
* @see java.sql.Connection#getAutoCommit()
*/
@Override
public boolean getAutoCommit() {
// We don't care about data; only metadata retrieval
return true;
}
/**
* @see java.sql.Connection#isClosed()
*/
@Override
public boolean isClosed() {
return false;
}
/**
* @see java.sql.Connection#isReadOnly()
*/
@Override
public boolean isReadOnly() {
return true;
}
/**
* @see java.sql.Connection#setHoldability(int)
*/
@Override
public void setHoldability( int holdability ) {
// We don't care about data; only metadata retrieval
}
/**
* @see java.sql.Connection#setTransactionIsolation(int)
*/
@Override
public void setTransactionIsolation( int level ) {
// We don't care about data; only metadata retrieval
}
/**
* @see java.sql.Connection#setAutoCommit(boolean)
*/
@Override
public void setAutoCommit( boolean autoCommit ) {
// We don't care about data; only metadata retrieval
}
/**
* @see java.sql.Connection#setReadOnly(boolean)
*/
@Override
public void setReadOnly( boolean readOnly ) {
// We don't care about data; only metadata retrieval
}
/**
* @see java.sql.Connection#getCatalog()
*/
@Override
public String getCatalog() {
String namespace = stateManager.getFirstCatalog();
return namespace;
}
/**
* @see java.sql.Connection#setCatalog(java.lang.String)
*/
@Override
public void setCatalog( String catalog ) {
}
/**
* @see java.sql.Connection#getMetaData()
*/
@Override
public DatabaseMetaData getMetaData() {
return databaseMetaData;
}
/**
* @see java.sql.Connection#getWarnings()
*/
@Override
public SQLWarning getWarnings() {
return warnings;
}
/**
* @see java.sql.Connection#setSavepoint()
*/
@Override
public Savepoint setSavepoint() {
// We don't care about data; only metadata retrieval
return new Savepoint() {
@Override
public int getSavepointId() {
return 0;
}
@Override
public String getSavepointName() {
return "0"; //$NON-NLS-1$
}
};
}
/**
* @see java.sql.Connection#releaseSavepoint(java.sql.Savepoint)
*/
@Override
public void releaseSavepoint( Savepoint savepoint ) {
// We don't care about data; only metadata retrieval
}
/**
* @see java.sql.Connection#rollback(java.sql.Savepoint)
*/
@Override
public void rollback( Savepoint savepoint ) {
// We don't care about data; only metadata retrieval
}
/**
* @see java.sql.Connection#createStatement()
*/
@Override
public Statement createStatement() {
// We don't care about data; only metadata retrieval
return null;
}
/**
* @see java.sql.Connection#createStatement(int, int)
*/
@Override
public Statement createStatement( int resultSetType,
int resultSetConcurrency ) {
// We don't care about data; only metadata retrieval
return null;
}
/**
* @see java.sql.Connection#createStatement(int, int, int)
*/
@Override
public Statement createStatement( int resultSetType,
int resultSetConcurrency,
int resultSetHoldability ) {
// We don't care about data; only metadata retrieval
return null;
}
Map typemap = new HashMap();
/**
* @see java.sql.Connection#getTypeMap()
*/
@Override
public Map<String, Class<?>> getTypeMap() {
return typemap;
}
/**
* @see java.sql.Connection#nativeSQL(java.lang.String)
*/
@Override
public String nativeSQL( String sql ) {
// We don't care about data; only metadata retrieval
return sql;
}
/**
* @see java.sql.Connection#prepareCall(java.lang.String)
*/
@Override
public CallableStatement prepareCall( String sql ) {
// We don't care about data; only metadata retrieval
return null;
}
/**
* @see java.sql.Connection#prepareCall(java.lang.String, int, int)
*/
@Override
public CallableStatement prepareCall( String sql,
int resultSetType,
int resultSetConcurrency ) {
// We don't care about data; only metadata retrieval
return null;
}
/**
* @see java.sql.Connection#prepareCall(java.lang.String, int, int, int)
*/
@Override
public CallableStatement prepareCall( String sql,
int resultSetType,
int resultSetConcurrency,
int resultSetHoldability ) {
// We don't care about data; only metadata retrieval
return null;
}
/**
* @see java.sql.Connection#prepareStatement(java.lang.String)
*/
@Override
public PreparedStatement prepareStatement( String sql ) {
// We don't care about data; only metadata retrieval
return null;
}
/**
* @see java.sql.Connection#prepareStatement(java.lang.String, int)
*/
@Override
public PreparedStatement prepareStatement( String sql,
int autoGeneratedKeys ) {
// We don't care about data; only metadata retrieval
return null;
}
/**
* @see java.sql.Connection#prepareStatement(java.lang.String, int, int)
*/
@Override
public PreparedStatement prepareStatement( String sql,
int resultSetType,
int resultSetConcurrency ) {
// We don't care about data; only metadata retrieval
return null;
}
/**
* @see java.sql.Connection#prepareStatement(java.lang.String, int, int, int)
*/
@Override
public PreparedStatement prepareStatement( String sql,
int resultSetType,
int resultSetConcurrency,
int resultSetHoldability ) {
// We don't care about data; only metadata retrieval
return null;
}
/**
* @see java.sql.Connection#prepareStatement(java.lang.String, int[])
*/
@Override
public PreparedStatement prepareStatement( String sql,
int[] columnIndexes ) {
// We don't care about data; only metadata retrieval
return null;
}
/**
* @see java.sql.Connection#setSavepoint(java.lang.String)
*/
@Override
public Savepoint setSavepoint( final String name ) {
// We don't care about data; only metadata retrieval
return new Savepoint() {
@Override
public int getSavepointId() {
return 0;
}
@Override
public String getSavepointName() {
return name;
}
};
}
/**
* @see java.sql.Connection#prepareStatement(java.lang.String, java.lang.String[])
*/
@Override
public PreparedStatement prepareStatement( String sql,
String[] columnNames ) {
// We don't care about data; only metadata retrieval
return null;
}
@Override
public Array createArrayOf( String typeName,
Object[] elements ) {
return null;
}
@Override
public Blob createBlob() {
return null;
}
@Override
public Clob createClob() {
return null;
}
@Override
public NClob createNClob() {
return null;
}
@Override
public SQLXML createSQLXML() {
return null;
}
@Override
public Struct createStruct( String typeName,
Object[] attributes ) {
return null;
}
@Override
public Properties getClientInfo() {
return null;
}
@Override
public String getClientInfo( String name ) {
return null;
}
@Override
public boolean isValid( int timeout ) {
return true;
}
@Override
public void setClientInfo( Properties properties ) {
}
@Override
public void setClientInfo( String name,
String value ) {
}
@Override
public void setTypeMap( Map<String, Class<?>> map ) {
typemap = map;
}
@Override
public boolean isWrapperFor( Class<?> iface ) {
return false;
}
@Override
public <T> T unwrap( Class<T> iface ) {
return null;
}
public void setSchema(String schema) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
public String getSchema() throws SQLException {
throw new SQLFeatureNotSupportedException();
}
public void abort(Executor executor) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
public void setNetworkTimeout(Executor executor, int milliseconds) throws SQLException {
throw new SQLFeatureNotSupportedException();
}
public int getNetworkTimeout() throws SQLException {
throw new SQLFeatureNotSupportedException();
}
}