querydsl/querydsl-sql/src/main/java/com/mysema/query/sql/SQLTemplatesRegistry.java
2014-08-31 17:41:14 +03:00

57 lines
2.1 KiB
Java

package com.mysema.query.sql;
import java.sql.DatabaseMetaData;
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 postgres = new PostgresTemplates();
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();
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 generic;
}
}