package org.sql2o.quirks; import org.sql2o.Sql2oException; import org.sql2o.converters.Converter; import org.sql2o.quirks.parameterparsing.SqlParameterParsingStrategy; import java.io.InputStream; import java.sql.*; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.UUID; /** * Interface for JDBC driver specific quirks. * See {@link org.sql2o.quirks.NoQuirks} for defaults. * * @author aldenquimby@gmail.com * @since 4/6/14 */ public interface Quirks { /** * @param ofClass * @param <E> * @return converter for class */ <E> Converter<E> converterOf(Class<E> ofClass); /** * @return name of column at index {@code colIdx} for result set {@code meta} */ String getColumnName(ResultSetMetaData meta, int colIdx) throws SQLException; /** * @return true if queries should return generated keys by default, false otherwise */ boolean returnGeneratedKeysByDefault(); void setParameter(PreparedStatement statement, int paramIdx, Object value) throws SQLException; void setParameter(PreparedStatement statement, int paramIdx, InputStream value) throws SQLException; void setParameter(PreparedStatement statement, int paramIdx, int value) throws SQLException; void setParameter(PreparedStatement statement, int paramIdx, Integer value) throws SQLException; void setParameter(PreparedStatement statement, int paramIdx, long value) throws SQLException; void setParameter(PreparedStatement statement, int paramIdx, Long value) throws SQLException; void setParameter(PreparedStatement statement, int paramIdx, String value) throws SQLException; void setParameter(PreparedStatement statement, int paramIdx, Timestamp value) throws SQLException; void setParameter(PreparedStatement statement, int paramIdx, Time value) throws SQLException; void setParameter(PreparedStatement statement, int paramIdx, boolean value) throws SQLException; void setParameter(PreparedStatement statement, int paramIdx, Boolean value) throws SQLException; void setParameter(PreparedStatement statement, int paramIdx, UUID value) throws SQLException; Object getRSVal(ResultSet rs, int idx) throws SQLException; void closeStatement(Statement statement) throws SQLException; SqlParameterParsingStrategy getSqlParameterParsingStrategy(); }