/*****************************************************************************
* *
* This file is part of the tna framework distribution. *
* Documentation and updates may be get from biaoping.yin the author of *
* this framework *
* *
* Sun Public License Notice: *
* *
* The contents of this file are subject to the Sun Public License Version *
* 1.0 (the "License"); you may not use this file except in compliance with *
* the License. A copy of the License is available at http://www.sun.com *
* *
* The Original Code is tag. The Initial Developer of the Original *
* Code is biaoping yin. Portions created by biaoping yin are Copyright *
* (C) 2000. All Rights Reserved. *
* *
* GNU Public License Notice: *
* *
* Alternatively, the contents of this file may be used under the terms of *
* the GNU Lesser General Public License (the "LGPL"), in which case the *
* provisions of LGPL are applicable instead of those above. If you wish to *
* allow use of your version of this file only under the terms of the LGPL *
* and not to allow others to use your version of this file under the SPL, *
* indicate your decision by deleting the provisions above and replace *
* them with the notice and other provisions required by the LGPL. If you *
* do not delete the provisions above, a recipient may use your version of *
* this file under either the SPL or the LGPL. *
* *
* biaoping.yin (yin-bp@163.com) *
* Author of Learning Java *
* *
*****************************************************************************/
package com.frameworkset.common.tag.pager;
import java.io.InputStream;
import java.net.URL;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Properties;
import org.apache.log4j.Logger;
/**
* @author biaoping.yin
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class ListDataInfoFactory {
private static final Logger log = Logger.getLogger(ListDataInfoFactory.class);
/**
* Describe what the constructor does
*
* 2004-6-22
*
*/
private static HashMap map;
static {
ClassLoader classLoader = ListDataInfoFactory.class.getClassLoader();
try
{
URL url = classLoader.getResource("listdata.properties");
Properties listProps = new Properties();
if(map == null)
map = new HashMap();
if (url != null)
{
InputStream is = url.openStream();
listProps.load(is);
is.close();
Enumeration keys = listProps.keys();
while(keys != null && keys.hasMoreElements())
{
String key = (String)keys.nextElement();
String className = listProps.getProperty(key);
map.put(key.trim(),className.trim());
}
}
}
catch (Exception e)
{
//:log
log.info("not found resources file listdata.properties");
//e.printStackTrace();
}
}
public static DataInfo getDataInfo(String type)
{
DataInfo data = null;
type = type.trim();
try
{
data = (DataInfo)Class.forName(type).newInstance();
return data;
}
catch(Exception e)
{
//:log
log.info("class " + type + " not found in class path!!!");
}
if(map == null)
{
return null;
}
else
{
Object obj = map.get(type);
/**
* 如果对应的类型没有加载进来,则可执行以下的代码加载,
* 如果类型没有在属性文件中配置,则提示到treedata.properties中进行配置
*/
if(obj == null)
{
try
{
ClassLoader classLoader = ListDataInfoFactory.class.getClassLoader();
URL url = classLoader.getResource("listdata.properties");
Properties listProps = new Properties();
if (url != null)
{
InputStream is = url.openStream();
listProps.load(is);
is.close();
obj = listProps.getProperty(type);
if(obj != null)
{
map.put(type,obj);
}
}
else
{
log.info("not found resources file listdata.properties");
return null;
}
}
catch (Exception e)
{
log.info("not found resources file listdata.properties");
return null;
}
}
if(obj != null)
{
String className = ((String)obj).trim();
try
{
data = (DataInfo)Class.forName(className).newInstance();
}
catch(Exception e)
{
log.info("class " + className + " not found in class path!!!");
return null;
}
}
if(data == null)
log.info("type " + type + " not exist please check listdata.properties");
return data;
}
}
}