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

📄 providerfactory.java

📁 个人理财系统-fileutil的使用 是你的好帮手
💻 JAVA
字号:
/*
 * Created on Jul 10, 2003
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
package ar.com.koalas.providers;

import java.io.IOException;
import java.net.URL;
import java.util.Hashtable;
import java.util.Map;

import javax.servlet.jsp.PageContext;

import org.apache.commons.digester.AbstractObjectCreationFactory;
import org.apache.commons.digester.Digester;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;

/**
 * @author DZ156H
 *
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
public class ProviderFactory {
	private static ProviderFactory factory = null;
	private static Map	providers	= new Hashtable();
	public static final String PROVIDERS_CONFIG_FILE="/providers-config.xml";
	public static final String PROVIDERS_CONFIG_FILE_SYSTEM_PARAM="ar.com.koalas.providers.ProvidersConfigurationFile";	
	
	public static ProviderFactory getInstance() throws IOException, SAXException{
		if( ProviderFactory.factory == null ){
			ProviderFactory.factory = new ProviderFactory();
		}
		
		return ProviderFactory.factory;
	}
	private ProviderFactory() throws IOException, SAXException{
		Digester digester	= new Digester();
		digester.push( this );
		
		AbstractObjectCreationFactory factory = new AbstractObjectCreationFactory(){
            public Object createObject(Attributes arg) {
                String str = arg.getValue("className");
                try {
                    return Class.forName(str).newInstance();
                } catch (Exception e) {
                    e.printStackTrace();
                    return null;
                } 
            }};
		
		digester.addFactoryCreate("providers/provider", factory);//new ProviderFactory() ); //new SkinFactory(xkLoading));
		digester.addSetProperties("providers/provider");
		digester.addSetProperty("providers/provider/set-property",  "property", "value");
		digester.addCallMethod("providers/provider/param", "addParam", 2);
		digester.addCallParam("providers/provider/param/param-name", 0 );
		digester.addCallParam("providers/provider/param/param-value", 1);
		
		digester.addFactoryCreate("providers/provider/value", factory );//digester.addObjectCreate("providers/provider/value", BasicBean.class.getName() );
		digester.addSetProperties("providers/provider/value");
		digester.addSetNext("providers/provider/value", "addBean");
		
		digester.addFactoryCreate("providers/provider/filter", factory );//digester.addObjectCreate("providers/provider/filter", Filter.class.getName() );
		digester.addSetProperties("providers/provider/filter");
		digester.addSetNext("providers/provider/filter", "addFilter" );
		
		digester.addSetNext("providers/provider", "addProvider" );	
		String strConfigFile = PROVIDERS_CONFIG_FILE;
		if(System.getProperty(PROVIDERS_CONFIG_FILE_SYSTEM_PARAM)!=null)
			strConfigFile = System.getProperty(PROVIDERS_CONFIG_FILE_SYSTEM_PARAM);
			
		URL configFile = this.getClass().getResource(strConfigFile);
		digester.parse( configFile.openStream() );
	}
	
	public void addProvider( Provider provider ){
		ProviderFactory.providers.put( provider.getName(), provider );			
	}
	
	public Provider getProvider( String providerName ){
		return this.getProvider(null, providerName);
	}

	public Provider getProvider( PageContext pageContext, String providerName ){
		Provider prv = (Provider)ProviderFactory.providers.get( providerName );
		if(pageContext!=null && prv instanceof JSPProvider) {
			((JSPProvider)prv).setPageContext(pageContext); 
		}
		return prv;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -