📄 dbfactfactory.java
字号:
package lib.commons.dal;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Properties;
import java.io.StringReader;
import java.lang.reflect.InvocationTargetException;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.commons.configuration.XMLConfiguration;
import lib.commons.Utils;
import lib.commons.config.DomConfig;
public final class DbFactFactory {
private static Map dbFactMap = new HashMap();
private static String defaultDbFactName;
private DbFactFactory() {
}
public static String getDefaultDbFactName() {
return null == defaultDbFactName ? Utils.EMPTY_STRING
: defaultDbFactName;
}
public static DbAccessFactory getDbAccessFactory() {
return getDbAccessFactory(null);
}
public static DbAccessFactory getDbAccessFactory(String dbFactName) {
DbAccessFactory dbFact = (DbAccessFactory) dbFactMap
.get(null == dbFactName ? getDefaultDbFactName().toLowerCase()
: dbFactName.toLowerCase());
return dbFact;
}
public static DbAccess getDbAccess() {
return getDbAccess(null);
}
public static DbAccess getDbAccess(String dbFactName) {
DbAccess db = null;
DbAccessFactory dbFact = getDbAccessFactory(dbFactName);
if (null != dbFact) {
db = dbFact.getDbAccess();
}
return db;
}
public static void loadDomConfig(DomConfig domConfig)
throws NullPointerException, ClassNotFoundException,
IllegalAccessException, InstantiationException,
InvocationTargetException, NoSuchMethodException,
ConfigurationException {
loadXml(domConfig.getXmlString());
}
public static void loadPropFile(String propFile)
throws NullPointerException, ClassNotFoundException,
IllegalAccessException, InstantiationException,
InvocationTargetException, NoSuchMethodException,
ConfigurationException {
PropertiesConfiguration propConfig = new PropertiesConfiguration(
propFile);
loadConfiguration(propConfig);
}
public static void loadXmlFile(String xmlFile) throws NullPointerException,
ClassNotFoundException, IllegalAccessException,
InstantiationException, InvocationTargetException,
NoSuchMethodException, ConfigurationException {
XMLConfiguration xmlConfig = new XMLConfiguration(xmlFile);
loadConfiguration(xmlConfig);
}
public static void loadXml(String xml) throws NullPointerException,
ClassNotFoundException, IllegalAccessException,
InstantiationException, InvocationTargetException,
NoSuchMethodException, ConfigurationException {
XMLConfiguration xmlConfig = null;
if (!Utils.StringIsNullOrEmpty(xml)) {
xmlConfig = new XMLConfiguration();
xmlConfig.load(new StringReader(xml));
}
loadConfiguration(xmlConfig);
}
public static void loadConfiguration(
Configuration dbFactFactoryConfiguration)
throws NullPointerException, ClassNotFoundException,
IllegalAccessException, InstantiationException,
InvocationTargetException, NoSuchMethodException {
if (null == dbFactFactoryConfiguration
|| dbFactFactoryConfiguration.isEmpty()) {
return;
//throw new NullPointerException("Configuration is null or empty");
}
Map tmp_DbFactMap = new HashMap();
Configuration configuration = dbFactFactoryConfiguration
.subset("DbFactFactory");
if (configuration.isEmpty()) {
configuration = dbFactFactoryConfiguration;
} else {
dbFactFactoryConfiguration = configuration;
}
String tmp_defualtDbAccessFactoryName = configuration
.getString("DefualtDbAccessFactory");
String[] dbFactNames = configuration
.getStringArray("DbAccessFactory.name");
if (null != dbFactNames) {
for (int i = 0; i < dbFactNames.length; i++) {
Configuration subConf = configuration.subset("DbAccessFactory("
+ i + ")");
DbAccessFactory dbFact = createDbAccessFactoryByConfiguration(subConf);
tmp_DbFactMap.put(dbFactNames[i], dbFact);
}
}
defaultDbFactName = tmp_defualtDbAccessFactoryName;
dbFactMap = tmp_DbFactMap;
}
public static DbAccessFactory createDbAccessFactoryByDomConfig(
DomConfig domConfig) throws NullPointerException,
ClassNotFoundException, IllegalAccessException,
InstantiationException, InvocationTargetException,
NoSuchMethodException, ConfigurationException {
return createDbAccessFactoryByXml(domConfig.getXmlString());
}
public static DbAccessFactory createDbAccessFactoryByPropFile(
String propFile) throws NullPointerException,
ClassNotFoundException, IllegalAccessException,
InstantiationException, InvocationTargetException,
NoSuchMethodException, ConfigurationException {
PropertiesConfiguration propConfig = new PropertiesConfiguration(
propFile);
return createDbAccessFactoryByConfiguration(propConfig);
}
public static DbAccessFactory createDbAccessFactoryByXmlFile(String xmlFile)
throws NullPointerException, ClassNotFoundException,
IllegalAccessException, InstantiationException,
InvocationTargetException, NoSuchMethodException,
ConfigurationException {
XMLConfiguration xmlConfig = new XMLConfiguration(xmlFile);
return createDbAccessFactoryByConfiguration(xmlConfig);
}
public static DbAccessFactory createDbAccessFactoryByXml(String xml)
throws NullPointerException, ClassNotFoundException,
IllegalAccessException, InstantiationException,
InvocationTargetException, NoSuchMethodException,
ConfigurationException {
XMLConfiguration xmlConfig = new XMLConfiguration();
xmlConfig.load(new StringReader(xml));
return createDbAccessFactoryByConfiguration(xmlConfig);
}
public static DbAccessFactory createDbAccessFactoryByConfiguration(
Configuration dbFactConfiguration) throws NullPointerException,
ClassNotFoundException, IllegalAccessException,
InstantiationException, InvocationTargetException,
NoSuchMethodException {
if (null == dbFactConfiguration || dbFactConfiguration.isEmpty()) {
throw new NullPointerException("Configuration is null or empty");
}
Configuration configuration = dbFactConfiguration
.subset("DbFactFactory");
if (configuration.isEmpty()) {
configuration = dbFactConfiguration;
} else {
dbFactConfiguration = configuration;
}
configuration = dbFactConfiguration.subset("DbAccessFactory");
if (configuration.isEmpty()) {
configuration = dbFactConfiguration;
} else {
dbFactConfiguration = configuration;
}
String className = configuration.getString("class");
Configuration propConf = configuration.subset("properties");
Iterator iterator = propConf.getKeys();
Properties prop = new Properties();
while (iterator.hasNext()) {
String key = (String) iterator.next();
String val = propConf.getString(key);
prop.put(key, val);
}
DbAccessFactory dbFact = (DbAccessFactory) Class.forName(className)
.getConstructor(new Class[] { Properties.class }).newInstance(
new Object[] { prop });
return dbFact;
}
public static void main(String[] args) throws Exception {
// createDbFactFactoryByPropFile("E:/WorkFolder/JBuilderProject/BOSSProjects/CommonLib/conf/dal-example.properties");
// createDbFactFactoryByXmlFile("E:/WorkFolder/JBuilderProject/BOSSProjects/CommonLib/conf/dal-example.xml");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -