📄 dmfactory.java
字号:
package net.sf.util.persistence;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
/**
* 生成DataManager的工厂,是工厂的工厂
*/
public class DMFactory {
public static final String HIBERNATE = "net.sf.util.persistence.HibernateDataManager";
public static final String OFBIZ = "net.sf.util.persistence.OfbizDataManager";
public static final String XML = "net.sf.util.persistence.XmlDataManager";
public static final String ENTRY = "net.sf.util.persistence.EntryDataManager";
public static final String CONFIG_FILE = "dmfactory.properties";
private static Map<Class,IDataManager> managerCache=new HashMap<Class,IDataManager>();
//缺省的管理器
private static String defaultManager = ENTRY;
//取缺省的管理及类与管理器的对应关系,允许往里写注册信息
private static Properties registry = new Properties();
static {
try {
registry.load(DMFactory.class.getResourceAsStream(CONFIG_FILE));
defaultManager = registry.getProperty("default", defaultManager);
} catch (Exception e) {
//无配置文件,使用默认值
}
}
// 依类取数据管理器
public static IDataManager getDataManager(Class dataClass) throws DataException {
return getDataManager(registry.getProperty(dataClass.getName(), defaultManager), dataClass);
}
//依对象取数据管理器
public static IDataManager getDataManager(IData data) throws DataException {
return getDataManager(data.getClass());
}
public static Properties getRegistry() {
return registry;
}
public static String getDefaultManager() {
return defaultManager;
}
public static void setDefaultManager(String defaultManager) {
DMFactory.defaultManager = defaultManager;
}
// 依实现及类取数据管理器
public synchronized static IDataManager getDataManager(String manager, Class dataClass) throws DataException {
if(managerCache.get(dataClass) != null)
return managerCache.get(dataClass);
try {
Class clazz=dataClass.getClassLoader().loadClass(manager);
IDataManager idm = (IDataManager) clazz.getConstructor(new Class[]{Class.class}).newInstance(new Object[]{dataClass});
managerCache.put(dataClass, idm);
return idm;
} catch (Exception e) {
throw new DataException(e);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -