作者 朱兆平

天信达测试发送

@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
6 package com.airport; 6 package com.airport;
7 7
8 import com.airport.core.IMFReader; 8 import com.airport.core.IMFReader;
9 -import com.airport.core.SendMessageTask; 9 +import com.airport.core.IMFSender;
10 import com.airport.util.ConfigUtils; 10 import com.airport.util.ConfigUtils;
11 import com.airport.util.SystemBean; 11 import com.airport.util.SystemBean;
12 import com.caac.imf.api.IMFClient; 12 import com.caac.imf.api.IMFClient;
@@ -41,8 +41,10 @@ public class Main { @@ -41,8 +41,10 @@ public class Main {
41 if (LOGIN_OK && client != null) { 41 if (LOGIN_OK && client != null) {
42 logger.info("start run Timer,client hasocde=" + client.hashCode()); 42 logger.info("start run Timer,client hasocde=" + client.hashCode());
43 Timer timer = new Timer(); 43 Timer timer = new Timer();
44 - SendMessageTask sender = new SendMessageTask(client, "data/fid_index.txt");  
45 - timer.schedule(sender, 30000L, 1200000L); 44 +// SendMessageTask sender = new SendMessageTask(client, "data/fid_index.txt");
  45 + IMFSender imfSender = new IMFSender(client,"data/fid_index.txt");
  46 +// timer.schedule(sender, 30000L, 1200000L);
  47 + timer.schedule(imfSender,30000L,1200000L);
46 } 48 }
47 } 49 }
48 50
@@ -12,20 +12,23 @@ import com.airport.dao.impl.DaoImpl; @@ -12,20 +12,23 @@ import com.airport.dao.impl.DaoImpl;
12 import com.airport.util.ConfigUtils; 12 import com.airport.util.ConfigUtils;
13 import com.airport.util.SystemBean; 13 import com.airport.util.SystemBean;
14 import com.airport.util.Utils; 14 import com.airport.util.Utils;
  15 +import com.airport.util.parse.XMPParse;
15 import com.caac.imf.api.IMFClient; 16 import com.caac.imf.api.IMFClient;
  17 +import org.apache.commons.lang.StringUtils;
  18 +import org.apache.log4j.Logger;
  19 +
16 import java.util.Iterator; 20 import java.util.Iterator;
17 import java.util.List; 21 import java.util.List;
18 import java.util.Map; 22 import java.util.Map;
19 import java.util.TimerTask; 23 import java.util.TimerTask;
20 -import org.apache.log4j.Logger;  
21 24
22 -public class SendMessageTask extends TimerTask {  
23 - private static final Logger logger = Logger.getLogger(SendMessageTask.class); 25 +public class IMFSender extends TimerTask {
  26 + private static final Logger logger = Logger.getLogger(IMFSender.class);
24 private Dao dao = (DaoImpl)SystemBean.getBean("dao"); 27 private Dao dao = (DaoImpl)SystemBean.getBean("dao");
25 private IMFClient client; 28 private IMFClient client;
26 private String indexFileName; 29 private String indexFileName;
27 30
28 - public SendMessageTask(IMFClient client, String fileName) { 31 + public IMFSender(IMFClient client, String fileName) {
29 this.indexFileName = fileName; 32 this.indexFileName = fileName;
30 this.client = client; 33 this.client = client;
31 } 34 }
@@ -65,7 +68,8 @@ public class SendMessageTask extends TimerTask { @@ -65,7 +68,8 @@ public class SendMessageTask extends TimerTask {
65 logger.info("准备发送数据 FID:" + m.getFid() + " XML.length=:" + m.getContent().length()); 68 logger.info("准备发送数据 FID:" + m.getFid() + " XML.length=:" + m.getContent().length());
66 String sendMsg = Utils.searchReplace(m.getContent(), header.getSndr(), "SNDR"); 69 String sendMsg = Utils.searchReplace(m.getContent(), header.getSndr(), "SNDR");
67 sendMsg = Utils.searchReplace(sendMsg, header.getType(), "TYPE"); 70 sendMsg = Utils.searchReplace(sendMsg, header.getType(), "TYPE");
68 - sendMsg = Utils.searchReplace(sendMsg, header.getStype(), "STYP"); 71 + String stype = tranlateXML(m.getContent());
  72 + sendMsg = Utils.searchReplace(sendMsg, stype, "STYP");
69 sendMsg = Utils.searchReplaceSingle(sendMsg, header.getRcvr(), "RCVR"); 73 sendMsg = Utils.searchReplaceSingle(sendMsg, header.getRcvr(), "RCVR");
70 if (!"".equals(sendMsg)) { 74 if (!"".equals(sendMsg)) {
71 logger.info("开始发送数据 XML:" + sendMsg); 75 logger.info("开始发送数据 XML:" + sendMsg);
@@ -79,7 +83,7 @@ public class SendMessageTask extends TimerTask { @@ -79,7 +83,7 @@ public class SendMessageTask extends TimerTask {
79 } 83 }
80 } 84 }
81 85
82 - this.dao.update(m.getFid(), times); 86 +// this.dao.update(m.getFid(), times);
83 } else { 87 } else {
84 logger.info("FID=" + m.getFid() + "XML is null "); 88 logger.info("FID=" + m.getFid() + "XML is null ");
85 } 89 }
@@ -96,4 +100,20 @@ public class SendMessageTask extends TimerTask { @@ -96,4 +100,20 @@ public class SendMessageTask extends TimerTask {
96 } 100 }
97 101
98 } 102 }
  103 +
  104 + private static String tranlateXML(String xml) throws Exception {
  105 + String stype = XMPParse.getNodeValueFromXmlString(xml, "/MSG/META/STYP");
  106 + if (!StringUtils.isBlank(stype)) {
  107 + if (ConfigUtils.XTYPE_MAP.containsKey(stype)) {
  108 + stype = (String)ConfigUtils.XTYPE_MAP.get(stype);
  109 + } else {
  110 + logger.info("stype=" + stype + " 在对应关系里找不到这个KEY");
  111 + }
  112 + } else {
  113 + logger.info(" 在XML找不到STYPE这个节点");
  114 + stype = "";
  115 + }
  116 +
  117 + return stype;
  118 + }
99 } 119 }
@@ -45,7 +45,7 @@ public class DaoImpl implements Dao { @@ -45,7 +45,7 @@ public class DaoImpl implements Dao {
45 this.jdbcTemplate.update(new PreparedStatementCreator() { 45 this.jdbcTemplate.update(new PreparedStatementCreator() {
46 public PreparedStatement createPreparedStatement(Connection connection) throws SQLException { 46 public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
47 DaoImpl.logger.info("oper=" + oper + " sndr=" + sndr); 47 DaoImpl.logger.info("oper=" + oper + " sndr=" + sndr);
48 - String sql = "insert into T_ETL_MESSAGE(OPER,SNDR,SNTM,content) values(?,?,sysdate,empty_clob())"; 48 + String sql = "insert into MESSAGE_BAK(OPER,SNDR,SNTM,content) values(?,?,sysdate,empty_clob())";
49 PreparedStatement ps = connection.prepareStatement(sql, new String[]{"FID"}); 49 PreparedStatement ps = connection.prepareStatement(sql, new String[]{"FID"});
50 ps.setString(1, oper); 50 ps.setString(1, oper);
51 ps.setString(2, sndr); 51 ps.setString(2, sndr);
@@ -67,7 +67,7 @@ public class DaoImpl implements Dao { @@ -67,7 +67,7 @@ public class DaoImpl implements Dao {
67 conn = this.jdbcTemplate.getDataSource().getConnection(); 67 conn = this.jdbcTemplate.getDataSource().getConnection();
68 conn.setAutoCommit(false); 68 conn.setAutoCommit(false);
69 stmt = conn.createStatement(); 69 stmt = conn.createStatement();
70 - String SQL = "select CONTENT from T_ETL_MESSAGE where FID=" + fid + " and SNDR='FIMS' for update"; 70 + String SQL = "select CONTENT from MESSAGE_BAK where FID=" + fid + " and SNDR='CFPS' for update";
71 rs = stmt.executeQuery(SQL); 71 rs = stmt.executeQuery(SQL);
72 72
73 while(rs.next()) { 73 while(rs.next()) {
@@ -108,15 +108,15 @@ public class DaoImpl implements Dao { @@ -108,15 +108,15 @@ public class DaoImpl implements Dao {
108 } 108 }
109 109
110 public void delete(int fid) { 110 public void delete(int fid) {
111 - this.jdbcTemplate.update("delete from T_ETL_MESSAGE where fid=" + fid); 111 + this.jdbcTemplate.update("delete from MESSAGE_BAK where fid=" + fid);
112 } 112 }
113 113
114 public int getMaxFID() { 114 public int getMaxFID() {
115 - return this.jdbcTemplate.queryForInt("select max(FID) from T_ETL_MESSAGE where SNDR='FIMS'"); 115 + return this.jdbcTemplate.queryForInt("select max(FID) from MESSAGE_BAK where SNDR='CFPS'");
116 } 116 }
117 117
118 public List<MessageBak> getRecordByFID(int fid) { 118 public List<MessageBak> getRecordByFID(int fid) {
119 - String SQL_FMT = "select FID,CONTENT from T_ETL_MESSAGE where (FID>%s and FID<%s+%s) and SNDR='FIMS' order by FID"; 119 + String SQL_FMT = "select FID,CONTENT from MESSAGE_BAK where (FID>%s and FID<%s+%s) and (SNDR='CFPS') order by FID";
120 String sql = String.format(SQL_FMT, fid, fid, ConfigUtils.RECORD_COUNT); 120 String sql = String.format(SQL_FMT, fid, fid, ConfigUtils.RECORD_COUNT);
121 logger.info(sql); 121 logger.info(sql);
122 final LobHandler lobHandler = new DefaultLobHandler(); 122 final LobHandler lobHandler = new DefaultLobHandler();
@@ -148,11 +148,11 @@ public class DaoImpl implements Dao { @@ -148,11 +148,11 @@ public class DaoImpl implements Dao {
148 } 148 }
149 149
150 public int getRecordCount() { 150 public int getRecordCount() {
151 - return this.jdbcTemplate.queryForInt("select count(*) from T_ETL_MESSAGE where SNDR='FIMS' "); 151 + return this.jdbcTemplate.queryForInt("select count(*) from MESSAGE_BAK where SNDR='CFPS' ");
152 } 152 }
153 153
154 public void update(int fid, int times) { 154 public void update(int fid, int times) {
155 - String sql = String.format("update T_ETL_MESSAGE set OUTFLAG=%s ,OUTTM=sysdate where FID=%s", times, fid); 155 + String sql = String.format("update MESSAGE_BAK set OUTFLAG=%s ,OUTTM=sysdate where FID=%s", times, fid);
156 logger.info("sql=" + sql); 156 logger.info("sql=" + sql);
157 this.jdbcTemplate.update(sql); 157 this.jdbcTemplate.update(sql);
158 } 158 }
@@ -27,13 +27,26 @@ public class ConfigUtils { @@ -27,13 +27,26 @@ public class ConfigUtils {
27 public static String XML_HEADER_STYPE = ""; 27 public static String XML_HEADER_STYPE = "";
28 public static String XML_HEADER_RCVR = ""; 28 public static String XML_HEADER_RCVR = "";
29 public static Map<Integer, XMLHeader> XML_HEADER_MAP = new HashMap(); 29 public static Map<Integer, XMLHeader> XML_HEADER_MAP = new HashMap();
  30 + public static String RCVR = "";
  31 + public static String APPID = "";
  32 + public static String SNDR = "";
  33 + public static Map<String, String> XTYPE_MAP = new HashMap();
30 34
31 public ConfigUtils() { 35 public ConfigUtils() {
32 } 36 }
33 - 37 + private void initMap() {
  38 + XTYPE_MAP.put("FSU_DEP", "UDEP");
  39 + XTYPE_MAP.put("FSU_RCF", "URCF");
  40 + XTYPE_MAP.put("FSU_FOH", "UFOH");
  41 + XTYPE_MAP.put("FZE_DEP", "EDEP");
  42 + XTYPE_MAP.put("FZE_RCF", "ERCF");
  43 + XTYPE_MAP.put("FZE_FOH", "EFOH");
  44 + XTYPE_MAP.put("CARGO_SERV", "CARG");
  45 + }
34 public void Initialize() throws LteException { 46 public void Initialize() throws LteException {
35 logger.debug("Loading all the config parameters..."); 47 logger.debug("Loading all the config parameters...");
36 this.loadParameter(); 48 this.loadParameter();
  49 + this.initMap();
37 } 50 }
38 51
39 private final void loadParameter() throws LteException { 52 private final void loadParameter() throws LteException {