package foundation.send.sms; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import foundation.dao.Filter; import foundation.data.entity.Entity; import foundation.data.entity.EntitySet; import foundation.data.object.DataObject; import foundation.persist.NamedSQL; import foundation.persist.SQLRunner; import foundation.server.Initializer; public class SmsLoader extends Initializer{ private static Logger logger; static { logger = LogManager.getLogger(SmsLoader.class); } @Override public void startUp() throws Exception { SmsCenter smsCenter = SmsCenter.getInstance(); //1. 加载配置信息 loadSmsConfig(smsCenter); loadSmsConfigDetail(smsCenter); //2. 注册action registerActions(smsCenter); //3. 激活配置 smsCenter.activate(); } private void registerActions(SmsCenter mailCenter) { AliyunSMSProvider aliyunSmsProvider = new AliyunSMSProvider(); mailCenter.addOneProvider(aliyunSmsProvider); } private void loadSmsConfigDetail(SmsCenter smsCenter) { NamedSQL namedSQL = null; EntitySet entitySet = null; SmsBuilderDetail smsBuilderDetail = null; String parentId = ""; logger.info("加载配置明细"); try { namedSQL = NamedSQL.getInstance("getSendConfigDetail"); namedSQL.setParam("type", "sms"); entitySet = SQLRunner.getEntitySet(namedSQL); if (entitySet == null || entitySet.isEmpty()) { return; } for (Entity entity : entitySet) { parentId = entity.getString("parent_id", ""); for (Map.Entry smsEntry : smsCenter.getSmsBuilders().getItemMap().entrySet()) { if (parentId.equalsIgnoreCase(smsEntry.getKey())) { List smsBuilderDetailList = smsEntry.getValue().getSmsBuilderDetailList(); if (smsBuilderDetailList == null) { smsBuilderDetailList = new ArrayList(); } smsBuilderDetail = new SmsBuilderDetail(); smsBuilderDetail.setId(entity.getString("id", "")); smsBuilderDetail.setParentId(entity.getString("parent_id", "")); smsBuilderDetail.setBusinessCode(entity.getString("business_code", "")); smsBuilderDetail.setBusinessName(entity.getString("business_name", "")); smsBuilderDetail.setSubject(entity.getString("subject", "")); smsBuilderDetail.setTemplate(entity.getString("template", "")); smsBuilderDetail.setIsActive(entity.getString("is_active", "")); smsBuilderDetail.setSignName(entity.getString("sign_name", "")); smsBuilderDetail.setTemplateCode(entity.getString("template_code", "")); smsBuilderDetailList.add(smsBuilderDetail); smsEntry.getValue().setSmsBuilderDetailList(smsBuilderDetailList); break; } } } } catch(Exception e) { e.printStackTrace(); } } private void loadSmsConfig(SmsCenter smsCenter) { DataObject dataObject = DataObject.getInstance("sys_send_config"); EntitySet entitySet = null; Filter filter = new Filter(); String platForm = "", id = ""; SmsBuilder smsBuilder = null; logger.info("加载配置主体"); try { filter.add("type", "sms"); entitySet = dataObject.getTableEntitySet(filter); if (entitySet == null || entitySet.isEmpty()) { return; } for (Entity entity : entitySet) { platForm = entity.getString("name", ""); id = entity.getString("id", ""); for (Entry smsEntry : SmsConfigerLoader.getSmsConfigMap().entrySet()) { if (platForm.equalsIgnoreCase(smsEntry.getKey())) { smsBuilder = new SmsBuilder(); smsBuilder.setId(entity.getString("id", "")); smsBuilder.setType(entity.getString("type", "")); smsBuilder.setName(entity.getString("name", "")); smsBuilder.setSendAccount(entity.getString("account", "")); smsBuilder.setPassword(entity.getString("password", "")); smsBuilder.setIsActive(entity.getString("is_active", "")); smsBuilder.setSmsConfig(smsEntry.getValue()); smsCenter.getSmsBuilders().add(id, smsBuilder); break; } } } } catch(Exception e) { e.printStackTrace(); } } @Override public void shutDown() throws Exception { // TODO Auto-generated method stub } }