⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbfactfactory.java

📁 用java开发的一些实用的短信通信模块其中包含MD5加密、http发送等信息
💻 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 + -