mirror of
https://github.com/querydsl/querydsl.git
synced 2026-06-13 21:01:01 +08:00
Merge pull request #916 from querydsl/templates-registry
Improve SQLTemplatesRegistry contents
This commit is contained in:
commit
f69f204ca9
@ -2,41 +2,55 @@ package com.mysema.query.sql;
|
||||
|
||||
import java.sql.DatabaseMetaData;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public class SQLTemplatesRegistry {
|
||||
|
||||
private final Map<String, SQLTemplates> registry = Maps.newHashMap();
|
||||
private final SQLTemplates generic = SQLTemplates.DEFAULT;
|
||||
|
||||
public SQLTemplatesRegistry() {
|
||||
registry.put("h2", new H2Templates());
|
||||
registry.put("postgresql", new PostgresTemplates());
|
||||
registry.put("oracle", new OracleTemplates());
|
||||
registry.put("mysql", new MySQLTemplates());
|
||||
registry.put("hsql", new HSQLDBTemplates());
|
||||
registry.put("firebird", new FirebirdTemplates());
|
||||
registry.put("sqlite", new SQLiteTemplates());
|
||||
registry.put("apache", new DerbyTemplates());
|
||||
// TODO SQLServer
|
||||
// TODO Teradata
|
||||
}
|
||||
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 postgres = new PostgresTemplates();
|
||||
private final SQLTemplates sqlite = new SQLiteTemplates();
|
||||
private final SQLTemplates teradata = new TeradataTemplates();
|
||||
|
||||
public SQLTemplates getTemplates(DatabaseMetaData md) {
|
||||
try {
|
||||
String name = md.getDatabaseProductName();
|
||||
int separator = name.indexOf(' ');
|
||||
if (separator > -1) {
|
||||
name = name.substring(0, separator);
|
||||
private final SQLTemplates sqlserver = new SQLServerTemplates();
|
||||
private final SQLTemplates sqlserver2005 = new SQLServer2005Templates();
|
||||
private final SQLTemplates sqlserver2008 = new SQLServer2008Templates();
|
||||
private final SQLTemplates sqlserver2012 = new SQLServer2012Templates();
|
||||
|
||||
public SQLTemplates getTemplates(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 postgres;
|
||||
if (name.equals("sqlite")) return sqlite;
|
||||
if (name.startsWith("teradata")) return teradata;
|
||||
|
||||
// sqlserver
|
||||
if (name.equals("microsft sql server")) {
|
||||
switch (md.getDatabaseMajorVersion()) {
|
||||
case 12:
|
||||
case 11: return sqlserver2012;
|
||||
case 10: return sqlserver2008;
|
||||
case 9: return sqlserver2005;
|
||||
default: return sqlserver;
|
||||
}
|
||||
return registry.get(name.toLowerCase());
|
||||
} catch (SQLException ex) {
|
||||
throw new RuntimeException(ex.getMessage(), ex);
|
||||
}
|
||||
|
||||
return generic;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,43 @@
|
||||
package com.mysema.query.sql;
|
||||
|
||||
import java.sql.DatabaseMetaData;
|
||||
import java.sql.SQLException;
|
||||
|
||||
import com.mysema.query.Connections;
|
||||
|
||||
public class SQLTemplatesRegistryDump {
|
||||
|
||||
public static void main(String[] args) throws SQLException, ClassNotFoundException {
|
||||
Connections.initCubrid();
|
||||
dump();
|
||||
Connections.initDerby();
|
||||
dump();
|
||||
Connections.initFirebird();
|
||||
dump();
|
||||
Connections.initH2();
|
||||
dump();
|
||||
Connections.initHSQL();
|
||||
dump();
|
||||
Connections.initMySQL();
|
||||
dump();
|
||||
Connections.initOracle();
|
||||
dump();
|
||||
Connections.initPostgres();
|
||||
dump();
|
||||
Connections.initSQLite();
|
||||
dump();
|
||||
Connections.initSQLServer();
|
||||
dump();
|
||||
/*Connections.initTeradata();
|
||||
dump();*/
|
||||
}
|
||||
|
||||
private static void dump() throws SQLException {
|
||||
DatabaseMetaData md = Connections.getConnection().getMetaData();
|
||||
System.out.println(md.getDatabaseProductName());
|
||||
System.out.println(md.getDatabaseMajorVersion());
|
||||
System.out.println(md.getDatabaseMinorVersion());
|
||||
System.out.println();
|
||||
Connections.close();
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user