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

📄 dmfactory.java

📁 mywork是rcp开发的很好的例子
💻 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 + -