package org.nutz.dao;
/**
* 数据库的元数据
*
* @author zozoh(zozohtnt@gmail.com)
*/
public class DatabaseMeta {
public DatabaseMeta() {
type = DB.OTHER;
}
/**
* 现在所支持的数据库类型
*/
private DB type;
/**
* 产品版本号
*/
private String version;
/**
* 产品名称
*/
private String productName;
public String getProductName() {
return productName;
}
public String toString() {
return String.format("%s:[%s - %s]", type.name(), productName, version);
}
public void setProductName(String productName) {
this.productName = productName;
String proName = productName.toLowerCase();
if ("h2".equals(proName)) {
type = DB.H2;
} else if (proName.startsWith("postgresql")) {
type = DB.PSQL;
} else if (proName.startsWith("mysql")) {
type = DB.MYSQL;
} else if (proName.startsWith("oracle")) {
type = DB.ORACLE;
} else if (proName.startsWith("db2")) {
type = DB.DB2;
} else if (proName.startsWith("microsoft sql")) {
type = DB.SQLSERVER;
} else if (proName.startsWith("sqlite")) {
type = DB.SQLITE;
} else if (proName.startsWith("hsql")) {
type = DB.HSQL;
} else if (proName.contains("derby")) {
type = DB.DERBY;
} else {
type = DB.OTHER;
}
}
@Deprecated
public String getResultSetMetaSql(String tableName) {
if (this.isMySql() || this.isPostgresql()) {
return "SELECT * FROM " + tableName + " LIMIT 1";
} else if (this.isSqlServer()) {
return "SELECT TOP 1 * FROM " + tableName;
}
return "SELECT * FROM " + tableName;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
public void setAsMysql() {
this.type = DB.MYSQL;
}
public void setAsPsql() {
this.type = DB.PSQL;
}
public void setAsOracle() {
this.type = DB.ORACLE;
}
public void setAsSqlServer() {
this.type = DB.SQLSERVER;
}
public void setAsDB2() {
this.type = DB.DB2;
}
public void setAsSQLite() {
this.type = DB.SQLITE;
}
public void setAsOther() {
this.type = DB.OTHER;
}
public DB getType() {
return type;
}
public String getTypeName() {
return type.name();
}
public boolean isOther() {
return DB.OTHER == type;
}
public boolean isMySql() {
return DB.MYSQL == type;
}
public boolean isPostgresql() {
return DB.PSQL == type;
}
public boolean isSqlServer() {
return DB.SQLSERVER == type;
}
public boolean isOracle() {
return DB.ORACLE == type;
}
public boolean isDB2() {
return DB.DB2 == type;
}
public boolean isH2() {
return DB.H2 == type;
}
public boolean isSQLite() {
return DB.SQLITE == type;
}
public boolean isHsql() {
return DB.HSQL == type;
}
public boolean isDerby() {
return DB.DERBY == type;
}
}