OracleBaseDao.java 1.95 KB
package com.sitech.ismp.coll.busi.e2e.dao;

import java.io.Reader;
import java.util.Map;
import java.util.Properties;

import org.apache.log4j.Logger;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.sitech.util.DES3;

/**
 * ClassName:OracleBaseDao 连接网管Oracle数据库使用
 * 注:通常Agent是不能与Oracle直接交互,但是上海电信售中监控比较特殊,可以将Agent提到中间处理层,因此该类目前只用于上海电信售中监控
 * 
 * @author linxc
 * @version
 * @since Ver 6.1
 * @Date 2012 May 9, 2012 9:11:00 AM
 */
public class OracleBaseDao {
	protected static Logger logger = Logger.getLogger("DB");
	protected static Logger error = Logger.getLogger("ERROR");

	protected static SqlMapClient sqlmapClient;

	private static String defaultSqlMapConfig = "com/sitech/ismp/coll/busi/e2e/maps/sqlmap.xml";
	
	public OracleBaseDao(Map<String,String> params){
		sqlmapClient = getSqlMapClient(defaultSqlMapConfig, params);
	}

	public static synchronized SqlMapClient getSqlMapClient(String config,
			Map<String, String> params) {
		if (sqlmapClient == null) {
			Reader reader;
			try {
				String sClassforName = params.get("JDBC.Driver");
				String sUrl = params.get("JDBC.ConnectionURL");
				String sUserName = params.get("JDBC.Username");
				String sPassword = params.get("JDBC.Password");
				sPassword = DES3.decrypt(sPassword);
				Properties properties = new Properties();
				properties.put("SERVERDriver", sClassforName);
				properties.put("SERVERConnectionURL", sUrl);
				properties.put("SERVERUsername", sUserName);
				properties.put("SERVERPassword", sPassword);

				reader = Resources.getResourceAsReader(config);

				sqlmapClient = SqlMapClientBuilder.buildSqlMapClient(reader,
						properties);
			} catch (Exception e) {
				e.printStackTrace();
				throw new RuntimeException(e);
			} 
		}
		return sqlmapClient;
	}
}