package com.ycsoft.web.commons.listeners;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.ycsoft.beans.config.TBusiConfirm;
import com.ycsoft.business.cache.PrintContentConfiguration;
import com.ycsoft.business.dao.config.TBusiConfirmDao;
import com.ycsoft.business.dao.config.TTemplateDao;
import com.ycsoft.business.dao.core.fee.CFeeDao;
import com.ycsoft.business.dao.system.SDataTranslationDao;
import com.ycsoft.business.dao.system.SItemvalueDao;
import com.ycsoft.commons.helper.CollectionHelper;
import com.ycsoft.commons.store.MemoryDict;
import com.ycsoft.commons.store.MemoryPrintData;
import com.ycsoft.commons.store.TemplateConfig;
/**
* 容器启动的监听器,完成系统初始化工作。 包括配置文件、系统参数等初始化。
*
* @author hh
* @date Mar 12, 2010 9:23:35 AM
*/
public class AppInitListener implements javax.servlet.ServletContextListener {
/**
* 构造监听器
*/
public AppInitListener(){}
private static WebApplicationContext wc = null;
/**
* 实现容器初始化的函数
*/
public void contextInitialized(ServletContextEvent sce) {
ServletContext sc = sce.getServletContext();
try{
configuration(sc);
initComponent(sc);
}catch(Exception ex){
ex.printStackTrace();
}
}
/**
* 配置文件参数
*/
private void configuration(ServletContext sc)throws Exception{
//打印模板的解析
PrintContentConfiguration.configure(sc.getRealPath("/"));
}
/**
* 初始化查询组建,从Spring 管理的Bean中获取
* @param sc
* @throws Exception
*/
private void initComponent(ServletContext sc) throws Exception{
wc = WebApplicationContextUtils.getWebApplicationContext(sc);
SItemvalueDao sItemvalueDao = wc.getBean(SItemvalueDao.class);
SDataTranslationDao sDataTranslationDao = wc.getBean(SDataTranslationDao.class);
TTemplateDao tTemplateDao =wc.getBean(TTemplateDao.class);
CFeeDao cFeeDao = wc.getBean(CFeeDao.class);
if (sItemvalueDao == null || tTemplateDao == null || cFeeDao == null)
throw new Exception("初始化错误,DAO未注入");
TemplateConfig.loadData(tTemplateDao);
MemoryDict.setupData(sItemvalueDao.findAllViewDict(), sDataTranslationDao.findAll());
//MemoryPrintData.loadData(cFeeDao.queryUnPrintFee());
TBusiConfirmDao tBusiConfirmDao =wc.getBean(TBusiConfirmDao.class);
List<TBusiConfirm> all = tBusiConfirmDao.findAll();
Map<String, List<TBusiConfirm>> mappedByBusiCode = CollectionHelper.converToMap(all, "county_id");
for(String busiCode:mappedByBusiCode.keySet()){
PrintContentConfiguration.addBusiConfirmPrintCfg(busiCode, CollectionHelper.converToMapSingle(mappedByBusiCode.get(busiCode), "busi_code"));
}
}
/**
* 实现容器销毁函数
*/
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("容器正在销毁....");
}
/**
* @return the wc
*/
public static WebApplicationContext getWc() {
return wc;
}
}