作者 朱兆平

给九州发送数据,双CLIENT,同时发送货运数据 和 通关数据

@@ -8,7 +8,6 @@ package com.airport; @@ -8,7 +8,6 @@ package com.airport;
8 import com.airport.core.AgentSender; 8 import com.airport.core.AgentSender;
9 import com.airport.core.IMFNoDelaySender; 9 import com.airport.core.IMFNoDelaySender;
10 import com.airport.core.IMFReader; 10 import com.airport.core.IMFReader;
11 -import com.airport.core.IMFSender;  
12 import com.airport.util.ConfigUtils; 11 import com.airport.util.ConfigUtils;
13 import com.airport.util.SystemBean; 12 import com.airport.util.SystemBean;
14 import com.caac.imf.api.IMFClient; 13 import com.caac.imf.api.IMFClient;
@@ -24,7 +24,7 @@ import java.util.Map; @@ -24,7 +24,7 @@ import java.util.Map;
24 import java.util.TimerTask; 24 import java.util.TimerTask;
25 25
26 public class IMFNoDelaySender extends Thread{ 26 public class IMFNoDelaySender extends Thread{
27 - private static final Logger logger = Logger.getLogger(IMFSender.class); 27 + private static final Logger logger = Logger.getLogger(IMFNoDelaySender.class);
28 private Dao dao = (DaoImpl)SystemBean.getBean("dao"); 28 private Dao dao = (DaoImpl)SystemBean.getBean("dao");
29 private IMFClient client; 29 private IMFClient client;
30 private String indexFileName; //记录发送数据的节点 30 private String indexFileName; //记录发送数据的节点
1 -//  
2 -// Source code recreated from a .class file by IntelliJ IDEA  
3 -// (powered by Fernflower decompiler)  
4 -//  
5 -  
6 -package com.airport.core;  
7 -  
8 -import com.airport.bean.MessageBak;  
9 -import com.airport.bean.XMLHeader;  
10 -import com.airport.dao.Dao;  
11 -import com.airport.dao.impl.DaoImpl;  
12 -import com.airport.util.ConfigUtils;  
13 -import com.airport.util.SystemBean;  
14 -import com.airport.util.Utils;  
15 -import com.airport.util.parse.IMFXMLMaker;  
16 -import com.airport.util.parse.XMPParse;  
17 -import com.caac.imf.api.IMFClient;  
18 -import org.apache.commons.lang.StringUtils;  
19 -import org.apache.log4j.Logger;  
20 -  
21 -import java.util.Iterator;  
22 -import java.util.List;  
23 -import java.util.Map;  
24 -import java.util.TimerTask;  
25 -  
26 -public class IMFSender extends TimerTask {  
27 - private static final Logger logger = Logger.getLogger(IMFSender.class);  
28 - private Dao dao = (DaoImpl)SystemBean.getBean("dao");  
29 - private IMFClient client;  
30 - private String indexFileName; //记录发送数据的节点  
31 -  
32 - public IMFSender(IMFClient client, String fileName) {  
33 - this.indexFileName = fileName;  
34 - this.client = client;  
35 - }  
36 -  
37 - public void run() {  
38 - try {  
39 - if (this.client == null) {  
40 - logger.info("IMFClient has been closed");  
41 - return;  
42 - }  
43 -  
44 - logger.info("job start:");  
45 - int lastFID = Utils.readFIDIndex(this.indexFileName);  
46 - int maxFID = this.dao.getMaxFID();  
47 - logger.info("lastFID=" + lastFID + " maxFID=" + maxFID);  
48 - int is_ok = 0;  
49 -  
50 - if (maxFID > lastFID) {  
51 - List<MessageBak> list = this.dao.getRecordByFID(lastFID); //查询大于[FID]350的报文  
52 - Map<Integer, XMLHeader> map = ConfigUtils.XML_HEADER_MAP;  
53 - Iterator var7 = list.iterator();  
54 -  
55 - while(true) {  
56 - while(var7.hasNext()) {  
57 - MessageBak m = (MessageBak)var7.next();  
58 - if (is_ok != 0) {  
59 - logger.error("记录FID时发生异常,发送消息任务被迫中断");  
60 - return;  
61 - }  
62 -  
63 - if (m.getContent() != null) {  
64 - int times = 0;  
65 - //配置文件里面有几个sender 这里循环几次  
66 - for(Iterator var10 = map.keySet().iterator(); var10.hasNext(); Thread.sleep((long)ConfigUtils.SEND_MESSAGE_INTERVAL)) {  
67 - Integer key = (Integer)var10.next();  
68 - XMLHeader header = (XMLHeader)map.get(key);  
69 - logger.info("key=" + key + " value=" + ((XMLHeader)map.get(key)).toString());  
70 - logger.info("准备发送数据 FID:" + m.getFid() + " XML.length=:" + m.getContent().length());  
71 -  
72 -  
73 - //初始化最终发布报文内容的存储器  
74 - String sendMsg = "";  
75 - String xmlStr = m.getContent();  
76 -//_____________________________________解析华东的报文-------------------------------------------------------------------------------------------  
77 - if (xmlStr.contains("<MessageType>IS1</MessageType>")){  
78 - IMFXMLMaker haiguanXml = new IMFXMLMaker("DCKS",Integer.toString(m.getFid()),"DFME","IS1");  
79 - haiguanXml.setIMFContent(m.getContent());  
80 - sendMsg = haiguanXml.finalXmlStr();  
81 - }else if(xmlStr.contains("<MessageType>ES1</MessageType>") ){  
82 - IMFXMLMaker haiguanXml = new IMFXMLMaker("DCKS",Integer.toString(m.getFid()),"DFME","ES1");  
83 - haiguanXml.setIMFContent(m.getContent());  
84 - sendMsg = haiguanXml.finalXmlStr();  
85 - }else if(xmlStr.contains("<MessageType>CLR</MessageType>")){  
86 - IMFXMLMaker haiguanXml = new IMFXMLMaker("DCKS",Integer.toString(m.getFid()),"DFME","CLR");  
87 - haiguanXml.setIMFContent(m.getContent());  
88 - sendMsg = haiguanXml.finalXmlStr();  
89 - }else if(xmlStr.contains("<MessageType>RSC</MessageType>")){  
90 - IMFXMLMaker haiguanXml = new IMFXMLMaker("DCKS",Integer.toString(m.getFid()),"DFME","RSC");  
91 - haiguanXml.setIMFContent(m.getContent());  
92 - sendMsg = haiguanXml.finalXmlStr();  
93 - } else {  
94 -//_____________________________________解析天信达的报文,读取配置文件,替换相关参数-------------------------------------------------------------------------------------------  
95 - sendMsg= Utils.searchReplace(m.getContent(), header.getSndr(), "SNDR");  
96 - sendMsg = Utils.searchReplace(sendMsg, header.getType(), "TYPE"); //替换报文主类型  
97 -  
98 - String stype = tranlateXML(m.getContent());  
99 - sendMsg = Utils.searchReplace(sendMsg, stype, "STYP");  
100 - sendMsg = Utils.searchReplaceSingle(sendMsg, header.getRcvr(), "RCVR");  
101 - }  
102 -//_____________________________________给多式联运的航空报文,读取配置文件,生成新的META,并把最原始的报文封装到新报文的content里面--------------------------------------------------------------------  
103 -// String sndr = header.getSndr();  
104 -// String type = header.getType();  
105 -// String styp = header.getStype();  
106 -//  
107 -// IMFXMLMaker newXml = new IMFXMLMaker(sndr,Integer.toString(m.getFid()),type,styp);  
108 -// newXml.setIMFContent(m.getContent());  
109 -// sendMsg = newXml.finalXmlStr();  
110 -  
111 - if (!"".equals(sendMsg)) {  
112 - logger.info("开始发送数据 XML:" + sendMsg);  
113 - String is_send_ok = this.client.sendMSG(sendMsg);  
114 - logger.info("is_send_ok=" + is_send_ok);  
115 - is_ok = Utils.writeFIDIndex(this.indexFileName, m.getRownum_()); //发送成功写入节点文件  
116 - logger.debug("FID:" + m.getFid() + " 缓存成功");  
117 - ++times;  
118 - } else {  
119 - logger.error("查找替换节点数据出现异常,可能找不到这个节点,原始XML=" + m.getContent());  
120 - }  
121 - }  
122 -  
123 -// this.dao.update(m.getFid(), times);  
124 - } else {  
125 - logger.info("FID=" + m.getFid() + "XML is null ");  
126 - }  
127 - }  
128 -  
129 - return;  
130 - }  
131 - } else {  
132 - logger.info("lastFID=" + lastFID + ">= maxFID=" + maxFID + " 忽略发送数据");  
133 - }  
134 - } catch (Exception var14) {  
135 - var14.printStackTrace();  
136 - logger.info(var14.getMessage());  
137 - }  
138 -  
139 - }  
140 -  
141 - private static String tranlateXML(String xml) throws Exception {  
142 - String stype = XMPParse.getNodeValueFromXmlString(xml, "/MSG/META/STYP");  
143 - if (!StringUtils.isBlank(stype)) {  
144 - if (ConfigUtils.XTYPE_MAP.containsKey(stype)) {  
145 - stype = (String)ConfigUtils.XTYPE_MAP.get(stype);  
146 - } else {  
147 - logger.info("stype=" + stype + " 在对应关系里找不到这个KEY");  
148 - }  
149 - } else {  
150 - logger.info(" 在XML找不到STYPE这个节点");  
151 - stype = "";  
152 - }  
153 -  
154 - return stype;  
155 - }  
156 -}