package org.test4j.module.database.utility; import org.test4j.module.database.exception.UnConfigDataBaseTypeException; import org.test4j.tools.commons.ConfigHelper; import org.test4j.tools.commons.StringHelper; public enum DataSourceType { /** * H2Db<br> * "org.hibernate.dialect.H2Dialect", "public", "public" */ H2DB() { @Override public boolean autoExport() { return true; } @Override public boolean isMemoryDB() { return true; } }, /** * HsqlDb<br> * "org.hibernate.dialect.HSQLDialect", "public", "public" */ HSQLDB() { @Override public boolean autoExport() { return true; } @Override public boolean isMemoryDB() { return true; } }, MYSQL(), ORACLE(), SQLSERVER(), DERBYDB(), DB2(), UNSUPPORT(); private String hibernate_dialect = null; private String infoSchema = null; private DataSourceType() { } public String getHibernateDialect() { return this.hibernate_dialect; } public String getInfoSchema() { return this.infoSchema; } public boolean isMemoryDB() { return false; } public boolean autoExport() { return ConfigHelper.autoExport(); } /** * 根据配置查找对应的数据库类型<br> * type=null || "",表示配置文件中设置的默认数据库 * * @param type * @return */ public static DataSourceType databaseType(final String type) { String _type = type; if (StringHelper.isBlankOrNull(type)) { _type = ConfigHelper.databaseType(); } if (StringHelper.isBlankOrNull(_type)) { throw new UnConfigDataBaseTypeException("please config property 'database.type'"); } try { DataSourceType dbType = DataSourceType.valueOf(_type.toUpperCase()); return dbType; } catch (Throwable e) { throw new RuntimeException("unknown database type", e); } } }