package org.elasticsearch.jdbc; import java.sql.*; import java.util.Properties; public abstract class AbstractConnection extends AbstractFeatureNotSupportedConnection { private boolean closed = false; private int transactionIsolation; protected String url; protected Properties info; public AbstractConnection(String url, Properties info) { this.url = url; this.info = info; } @Override @SuppressWarnings("unchecked") public final T unwrap(final Class iface) throws SQLException { if (isWrapperFor(iface)) { return (T) this; } throw new SQLException(String.format("[%s] cannot be unwrapped as [%s]", getClass().getName(), iface.getName())); } @Override public final boolean isWrapperFor(final Class iface) throws SQLException { return iface.isInstance(this); } @Override public Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException { return createStatement(); } @Override public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) throws SQLException { return prepareStatement(sql); } @Override public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throws SQLException { return prepareStatement(sql); } @Override public PreparedStatement prepareStatement(String sql, int[] columnIndexes) throws SQLException { return prepareStatement(sql); } @Override public PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException { return prepareStatement(sql); } @Override public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException { return prepareStatement(sql); } @Override public Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException { return createStatement(); } @Override public boolean getAutoCommit() throws SQLException { return false; } @Override public void setTransactionIsolation(int level) throws SQLException { this.transactionIsolation = level; } @Override public int getTransactionIsolation() throws SQLException { return transactionIsolation; } @Override public boolean isReadOnly() throws SQLException { return true; } @Override public void close() throws SQLException { closed = true; } @Override public boolean isClosed() throws SQLException { return closed; } @Override public void setReadOnly(boolean readOnly) throws SQLException { // ignore } @Override public void commit() throws SQLException { // ignore } @Override public void rollback() throws SQLException { // ignore } @Override public void setAutoCommit(boolean autoCommit) throws SQLException { // ignore } @Override public SQLWarning getWarnings() throws SQLException { return null; } @Override public void clearWarnings() throws SQLException { // ignore } @Override public final int getHoldability() throws SQLException { return ResultSet.HOLD_CURSORS_OVER_COMMIT; } @Override public final void setHoldability(final int holdability) throws SQLException { // ignore } }