Rename JdbcMapper.DatabaseType.STANDARD to ANY

This commit is contained in:
Travis Burtrum 2018-05-22 00:11:54 -04:00
parent 5522014f8e
commit d89078ad89
7 changed files with 25 additions and 11 deletions

View File

@ -129,7 +129,7 @@ public interface JdbcMapper extends Closeable {
public enum DatabaseType { public enum DatabaseType {
DEFAULT(null, null), DEFAULT(null, null),
BIND(null, null), BIND(null, null),
STANDARD("numeric", "text"), ANY("NUMERIC", "TEXT"),
UNNEST("NUMERIC", "VARCHAR"), UNNEST("NUMERIC", "VARCHAR"),
ORACLE("ARRAY_NUM_TYPE", "ARRAY_STR_TYPE"), ORACLE("ARRAY_NUM_TYPE", "ARRAY_STR_TYPE"),
; ;

View File

@ -126,7 +126,7 @@ public class JdbcMapperProcessor extends AbstractProcessor {
enumType = types.getDeclaredType(elements.getTypeElement(Enum.class.getCanonicalName()), types.getWildcardType(null, null)); enumType = types.getDeclaredType(elements.getTypeElement(Enum.class.getCanonicalName()), types.getWildcardType(null, null));
final String databaseType = processingEnv.getOptions().get("jdbcMapper.databaseType"); final String databaseType = processingEnv.getOptions().get("jdbcMapper.databaseType");
defaultDatabaseType = databaseType == null || databaseType.isEmpty() ? JdbcMapper.DatabaseType.STANDARD : JdbcMapper.DatabaseType.valueOf(databaseType.toUpperCase()); defaultDatabaseType = databaseType == null || databaseType.isEmpty() ? JdbcMapper.DatabaseType.ANY : JdbcMapper.DatabaseType.valueOf(databaseType.toUpperCase());
defaultArrayNumberTypeName = processingEnv.getOptions().get("jdbcMapper.arrayNumberTypeName"); defaultArrayNumberTypeName = processingEnv.getOptions().get("jdbcMapper.arrayNumberTypeName");
if (defaultArrayNumberTypeName == null || defaultArrayNumberTypeName.isEmpty()) if (defaultArrayNumberTypeName == null || defaultArrayNumberTypeName.isEmpty())
defaultArrayNumberTypeName = defaultDatabaseType.arrayNumberTypeName; defaultArrayNumberTypeName = defaultDatabaseType.arrayNumberTypeName;
@ -188,7 +188,7 @@ public class JdbcMapperProcessor extends AbstractProcessor {
case ORACLE: case ORACLE:
arrayInList = new OracleArrayInList(arrayNumberTypeName, arrayStringTypeName); arrayInList = new OracleArrayInList(arrayNumberTypeName, arrayStringTypeName);
break; break;
case STANDARD: case ANY:
arrayInList = new ArrayInList(arrayNumberTypeName, arrayStringTypeName); arrayInList = new ArrayInList(arrayNumberTypeName, arrayStringTypeName);
break; break;
case UNNEST: case UNNEST:
@ -411,7 +411,7 @@ public class JdbcMapperProcessor extends AbstractProcessor {
"(" + inColumnName + " NOT IN(select column_value from table(?)))" : "(" + inColumnName + " NOT IN(select column_value from table(?)))" :
"(" + inColumnName + " IN(select column_value from table(?)))"; "(" + inColumnName + " IN(select column_value from table(?)))";
break; break;
case STANDARD: case ANY:
replacement = not ? replacement = not ?
"(" + inColumnName + " != ANY(?))" : "(" + inColumnName + " != ANY(?))" :
"(" + inColumnName + " = ANY(?))"; "(" + inColumnName + " = ANY(?))";
@ -790,7 +790,7 @@ public class JdbcMapperProcessor extends AbstractProcessor {
*/ */
//w.write("(Array) createArray.invoke(conn.unwrap(oracleConnection), \""); //w.write("(Array) createArray.invoke(conn.unwrap(oracleConnection), \"");
break; break;
case STANDARD: case ANY:
case UNNEST: case UNNEST:
w.write("conn.createArrayOf(\""); w.write("conn.createArrayOf(\"");
break; break;

View File

@ -71,7 +71,7 @@ public class SimpleSQLChecker implements SQLChecker {
if (sqlStatement.trim().substring(0, 5).toUpperCase().equals("MERGE")) if (sqlStatement.trim().substring(0, 5).toUpperCase().equals("MERGE"))
return sqlStatement; return sqlStatement;
return "EXPLAIN PLAN FOR " + sqlStatement; return "EXPLAIN PLAN FOR " + sqlStatement;
case STANDARD: case ANY:
return "EXPLAIN " + sqlStatement; return "EXPLAIN " + sqlStatement;
} }
return sqlStatement; return sqlStatement;

View File

@ -26,7 +26,7 @@ public class ArrayInList implements InList {
} }
public ArrayInList() { public ArrayInList() {
this(JdbcMapper.DatabaseType.STANDARD.arrayNumberTypeName, JdbcMapper.DatabaseType.STANDARD.arrayStringTypeName); this(JdbcMapper.DatabaseType.ANY.arrayNumberTypeName, JdbcMapper.DatabaseType.ANY.arrayStringTypeName);
} }
protected String columnAppend(final String columnName) { protected String columnAppend(final String columnName) {

View File

@ -210,5 +210,21 @@
</plugins> </plugins>
</build> </build>
</profile> </profile>
<profile>
<id>any</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArgs>
<compilerArg>-AjdbcMapper.databaseType=ANY</compilerArg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles> </profiles>
</project> </project>

View File

@ -4,7 +4,6 @@ import com.moparisthebest.jdbc.Cleaner;
import com.moparisthebest.jdbc.dto.*; import com.moparisthebest.jdbc.dto.*;
import com.moparisthebest.jdbc.util.ResultSetIterable; import com.moparisthebest.jdbc.util.ResultSetIterable;
import java.io.Closeable;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Time; import java.sql.Time;
@ -20,7 +19,7 @@ import java.time.*;
*/ */
@JdbcMapper.Mapper( @JdbcMapper.Mapper(
jndiName = "bob", jndiName = "bob",
databaseType = JdbcMapper.DatabaseType.STANDARD, // todo: PrestoPersonDao breaks with ORACLE or UNNEST databaseType = JdbcMapper.DatabaseType.ANY, // todo: PrestoPersonDao breaks with ORACLE or UNNEST
cachePreparedStatements = JdbcMapper.OptionalBool.FALSE cachePreparedStatements = JdbcMapper.OptionalBool.FALSE
// , sqlParser = SimpleSQLParser.class // , sqlParser = SimpleSQLParser.class
, allowReflection = JdbcMapper.OptionalBool.TRUE , allowReflection = JdbcMapper.OptionalBool.TRUE

View File

@ -4,7 +4,6 @@ import com.moparisthebest.jdbc.Cleaner;
import com.moparisthebest.jdbc.dto.*; import com.moparisthebest.jdbc.dto.*;
import com.moparisthebest.jdbc.util.ResultSetIterable; import com.moparisthebest.jdbc.util.ResultSetIterable;
import java.io.Closeable;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Time; import java.sql.Time;
@ -20,7 +19,7 @@ import java.time.*;
*/ */
@JdbcMapper.Mapper( @JdbcMapper.Mapper(
jndiName = "bob", jndiName = "bob",
databaseType = JdbcMapper.DatabaseType.STANDARD, // PrestoPersonDao breaks with ORACLE or UNNEST databaseType = JdbcMapper.DatabaseType.ANY, // PrestoPersonDao breaks with ORACLE or UNNEST
cachePreparedStatements = JdbcMapper.OptionalBool.FALSE cachePreparedStatements = JdbcMapper.OptionalBool.FALSE
, sqlParser = PrestoSQLParser.class , sqlParser = PrestoSQLParser.class
, allowReflection = JdbcMapper.OptionalBool.TRUE , allowReflection = JdbcMapper.OptionalBool.TRUE