Merge pull request #1825 from querydsl/sqltemplatesregistry

Use SQLTemplates.Builder in SQLTemplatesRegistry
This commit is contained in:
Timo Westkämper 2016-03-31 18:36:30 +03:00
commit bcaa92c283

View File

@ -21,24 +21,6 @@ import java.sql.SQLException;
*/
public class SQLTemplatesRegistry {
private final SQLTemplates generic = SQLTemplates.DEFAULT;
private final SQLTemplates cubrid = new CUBRIDTemplates();
private final SQLTemplates derby = new DerbyTemplates();
private final SQLTemplates firebird = new FirebirdTemplates();
private final SQLTemplates h2 = new H2Templates();
private final SQLTemplates hsqldb = new HSQLDBTemplates();
private final SQLTemplates mysql = new MySQLTemplates();
private final SQLTemplates oracle = new OracleTemplates();
private final SQLTemplates postgresql = new PostgreSQLTemplates();
private final SQLTemplates sqlite = new SQLiteTemplates();
private final SQLTemplates teradata = new TeradataTemplates();
private final SQLTemplates sqlserver = new SQLServerTemplates();
private final SQLTemplates sqlserver2005 = new SQLServer2005Templates();
private final SQLTemplates sqlserver2008 = new SQLServer2008Templates();
private final SQLTemplates sqlserver2012 = new SQLServer2012Templates();
/**
* Get the SQLTemplates instance that matches best the SQL engine of the
* given database metadata
@ -48,50 +30,55 @@ public class SQLTemplatesRegistry {
* @throws SQLException
*/
public SQLTemplates getTemplates(DatabaseMetaData md) throws SQLException {
return getBuilder(md).build();
}
/**
* Get a SQLTemplates.Builder instance that matches best the SQL engine of the
* given database metadata
*
* @param md database metadata
* @return templates
* @throws SQLException
*/
public SQLTemplates.Builder getBuilder(DatabaseMetaData md) throws SQLException {
String name = md.getDatabaseProductName().toLowerCase();
if (name.equals("cubrid")) {
return cubrid;
}
if (name.equals("apache derby")) {
return derby;
}
if (name.startsWith("firebird")) {
return firebird;
}
if (name.equals("h2")) {
return h2;
}
if (name.equals("hsql")) {
return hsqldb;
}
if (name.equals("mysql")) {
return mysql;
}
if (name.equals("oracle")) {
return oracle;
}
if (name.equals("postgresql")) {
return postgresql;
}
if (name.equals("sqlite")) {
return sqlite;
}
if (name.startsWith("teradata")) {
return teradata;
}
// sqlserver
if (name.equals("microsoft sql server")) {
return CUBRIDTemplates.builder();
} else if (name.equals("apache derby")) {
return DerbyTemplates.builder();
} else if (name.startsWith("firebird")) {
return FirebirdTemplates.builder();
} else if (name.equals("h2")) {
return H2Templates.builder();
} else if (name.equals("hsql")) {
return HSQLDBTemplates.builder();
} else if (name.equals("mysql")) {
return MySQLTemplates.builder();
} else if (name.equals("oracle")) {
return OracleTemplates.builder();
} else if (name.equals("postgresql")) {
return PostgreSQLTemplates.builder();
} else if (name.equals("sqlite")) {
return SQLiteTemplates.builder();
} else if (name.startsWith("teradata")) {
return TeradataTemplates.builder();
} else if (name.equals("microsoft sql server")) {
switch (md.getDatabaseMajorVersion()) {
case 12:
case 11: return sqlserver2012;
case 10: return sqlserver2008;
case 9: return sqlserver2005;
default: return sqlserver;
case 11: return SQLServer2012Templates.builder();
case 10: return SQLServer2008Templates.builder();
case 9: return SQLServer2005Templates.builder();
default: return SQLServerTemplates.builder();
}
} else {
return new SQLTemplates.Builder() {
@Override
protected SQLTemplates build(char escape, boolean quote) {
return new SQLTemplates(Keywords.DEFAULT, "\"", escape, quote);
}
};
}
return generic;
}
}