重构抽象所有的事件处理,只要重写updateFltr 事件更新fltr并返回最新的值 即可。

This commit is contained in:
zhouxiunai
2018-12-10 15:28:36 +08:00
parent cac805011b
commit e72e9183fd
8 changed files with 62 additions and 179 deletions
@@ -3,10 +3,8 @@ package com.gzzn.omms.msgexchangeapi.msghandler.flop;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg; import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP;
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD; import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD;
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
/** /**
* 航班机型事件 * 航班机型事件
@@ -17,32 +15,12 @@ public class ACFTHandler extends FlopBaseHandler {
private static Logger logger = LoggerFactory.getLogger(ACFTHandler.class); private static Logger logger = LoggerFactory.getLogger(ACFTHandler.class);
/**
* 处理航班消息,更新航班动态信息
* @param msg 要处理的xml消息
* @return 处理结果及影响的动态航班信息
*/
@Override @Override
public HandlerResult run(Cminmsg cminmsg) { protected SCHD.FLTR updateFltr(FLOP flop,SCHD.FLTR fltr)
MSG acftMsg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class); {
SCHD.FLTR fltr = flightInfoService.getByFlid(acftMsg.getFLOP().get(0).getFLID().toString()); //update
if(null != fltr) fltr.setACFT(flop.getACFT());
{
//save
fltr.setACFT(acftMsg.getFLOP().get(0).getACFT());
flightInfoService.saveFltr(fltr);
//send and update return fltr;
this.sendFltrAndMsg(fltr, cminmsg); }
this.updateCminmsgToProcessed(cminmsg);
return HandlerResult.success(fltr);
}
else {
//没有该动态航班信息
logger.warn("没有flid为:{}的消息",acftMsg.getFLOP().get(0).getFLID());
}
return HandlerResult.failure();
}//end function
} }
@@ -3,10 +3,8 @@ package com.gzzn.omms.msgexchangeapi.msghandler.flop;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg; import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP;
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD; import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD;
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
/** /**
* 航班实际时间事件 * 航班实际时间事件
@@ -17,26 +15,11 @@ public class ACTTHandler extends FlopBaseHandler{
private static Logger logger = LoggerFactory.getLogger(ACTTHandler.class); private static Logger logger = LoggerFactory.getLogger(ACTTHandler.class);
@Override @Override
public HandlerResult run(Cminmsg cminmsg) { protected SCHD.FLTR updateFltr(FLOP flop,SCHD.FLTR fltr)
MSG acttMsg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class); {
SCHD.FLTR fltr = flightInfoService.getByFlid(acttMsg.getFLOP().get(0).getFLID().toString()); //update
if(null != fltr) fltr.setACTT(flop.getACTT());
{
//save
fltr.setACTT(acttMsg.getFLOP().get(0).getACTT());
flightInfoService.saveFltr(fltr);
//send and update return fltr;
this.sendFltrAndMsg(fltr, cminmsg);
this.updateCminmsgToProcessed(cminmsg);
return HandlerResult.success(fltr);
}
else {
//没有该动态航班信息
logger.warn("没有flid为:{}的消息",acttMsg.getFLOP().get(0).getFLID());
}
return HandlerResult.failure();
} }
} }
@@ -3,41 +3,17 @@ package com.gzzn.omms.msgexchangeapi.msghandler.flop;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg; import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP;
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD; import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD;
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
import com.gzzn.omms.msgexchangeapi.service.exchange.IExchangeService;
import com.gzzn.omms.msgexchangeapi.service.flightInfo.IFlightInfoService;
import com.gzzn.omms.msgexchangeapi.utils.SpringUtil;
public class BDPBHandler extends FlopBaseHandler { public class BDPBHandler extends FlopBaseHandler {
private static Logger logger = LoggerFactory.getLogger(ACFTHandler.class); private static Logger logger = LoggerFactory.getLogger(BDPBHandler.class);
@Override @Override
public HandlerResult run(Cminmsg cminmsg) { protected SCHD.FLTR updateFltr(FLOP flop,SCHD.FLTR fltr)
IExchangeService exchangeService = (IExchangeService) SpringUtil.getBean("exchangeService"); {
IFlightInfoService flightInfoService = (IFlightInfoService) SpringUtil.getBean("flightInfoService"); //TO: 文档未描述该事件是什么
MSG bdpbMsg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class); return fltr;
SCHD.FLTR fltr = flightInfoService.getByFlid(bdpbMsg.getFLOP().get(0).getFLID().toString()); }
if(null != fltr)
{
//TO: 文档未描述该事件是什么
//fltr.setBOTM(bdpbMsg.getFLOP().getBDPB());
//flightInfoService.saveFltr(fltr);
//send and update
this.sendFltrAndMsg(fltr, cminmsg);
this.updateCminmsgToProcessed(cminmsg);
return HandlerResult.success(fltr);
}
else {
//没有该动态航班信息
logger.warn("没有flid为:{}的消息",bdpbMsg.getFLOP().get(0).getFLID());
}
return HandlerResult.failure();
} //end method
} }
@@ -3,10 +3,8 @@ package com.gzzn.omms.msgexchangeapi.msghandler.flop;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg; import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP;
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD; import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD;
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
/** /**
* 航班登机时间事件处理 * 航班登机时间事件处理
@@ -14,30 +12,15 @@ import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
* *
*/ */
public class BOTMHandler extends FlopBaseHandler { public class BOTMHandler extends FlopBaseHandler {
private static Logger logger = LoggerFactory.getLogger(ACFTHandler.class); private static Logger logger = LoggerFactory.getLogger(BOTMHandler.class);
@Override @Override
public HandlerResult run(Cminmsg cminmsg) { protected SCHD.FLTR updateFltr(FLOP flop,SCHD.FLTR fltr)
MSG botmMsg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class); {
SCHD.FLTR fltr = flightInfoService.getByFlid(botmMsg.getFLOP().get(0).getFLID().toString()); //TO: 文档未描述该事件是什么
if(null != fltr) fltr.setBOTM(flop.getBOTM());
{
//save
fltr.setBOTM(botmMsg.getFLOP().get(0).getBOTM());
flightInfoService.saveFltr(fltr);
//send and update return fltr;
this.sendFltrAndMsg(fltr, cminmsg);
this.updateCminmsgToProcessed(cminmsg);
return HandlerResult.success(fltr);
}
else {
//没有该动态航班信息
logger.warn("没有flid为:{}的消息",botmMsg.getFLOP().get(0).getFLID());
}
return HandlerResult.failure();
} }
} }
@@ -4,12 +4,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
import com.gzzn.omms.msgexchangeapi.entity.msg.DESKDATA; import com.gzzn.omms.msgexchangeapi.entity.msg.DESKDATA;
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG; import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP;
import com.gzzn.omms.msgexchangeapi.entity.msg.OPTDESKDATA; import com.gzzn.omms.msgexchangeapi.entity.msg.OPTDESKDATA;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD; import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD;
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
/** /**
* 值机柜台事件处理 * 值机柜台事件处理
@@ -17,39 +15,20 @@ import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
* *
*/ */
public class CKDTHandler extends FlopBaseHandler { public class CKDTHandler extends FlopBaseHandler {
private static Logger logger = LoggerFactory.getLogger(ACFTHandler.class); private static Logger logger = LoggerFactory.getLogger(CKDTHandler.class);
@Override @Override
public HandlerResult run(Cminmsg cminmsg) { protected SCHD.FLTR updateFltr(FLOP flop,SCHD.FLTR fltr)
MSG ckdtMsg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class); {
SCHD.FLTR fltr = flightInfoService.getByFlid(ckdtMsg.getFLOP().get(0).getFLID().toString()); fltr.getCKDT().clear(); //清空旧数据
if(null != fltr) for(OPTDESKDATA optdeskdata : flop.getCKDT() )
{ {
//save DESKDATA deskdata = new DESKDATA();
fltr.getCKDT().clear(); //清空旧数据 BeanUtils.copyProperties(optdeskdata, deskdata);
for(OPTDESKDATA optdeskdata : ckdtMsg.getFLOP().get(0).getCKDT() )
{
DESKDATA deskdata = new DESKDATA();
BeanUtils.copyProperties(optdeskdata, deskdata);
fltr.getCKDT().add(deskdata); fltr.getCKDT().add(deskdata);
} //添加新数据 } //添加新数据
return fltr;
flightInfoService.saveFltr(fltr);
//send and update
this.sendFltrAndMsg(fltr, cminmsg);
this.updateCminmsgToProcessed(cminmsg);
return HandlerResult.success(fltr);
}
else {
//没有该动态航班信息
logger.warn("没有flid为:{}的消息",ckdtMsg.getFLOP().get(0).getFLID());
}
return HandlerResult.failure();
} }
} }
@@ -4,12 +4,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
import com.gzzn.omms.msgexchangeapi.entity.msg.BELTDATA; import com.gzzn.omms.msgexchangeapi.entity.msg.BELTDATA;
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG; import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP;
import com.gzzn.omms.msgexchangeapi.entity.msg.OPTBELTDATA; import com.gzzn.omms.msgexchangeapi.entity.msg.OPTBELTDATA;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD; import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD;
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
/** /**
* 行李转盘事件 carousel * 行李转盘事件 carousel
@@ -19,36 +17,20 @@ import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
public class CLDTHandler extends FlopBaseHandler { public class CLDTHandler extends FlopBaseHandler {
private static Logger logger = LoggerFactory.getLogger(CLDTHandler.class); private static Logger logger = LoggerFactory.getLogger(CLDTHandler.class);
@Override @Override
public HandlerResult run(Cminmsg cminmsg) { protected SCHD.FLTR updateFltr(FLOP flop,SCHD.FLTR fltr)
MSG cldtMsg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class); {
SCHD.FLTR fltr = flightInfoService.getByFlid(cldtMsg.getFLOP().get(0).getFLID().toString()); fltr.getCLDT().clear(); //清空旧数据
if(null != fltr) for(OPTBELTDATA optbeltdata : flop.getCLDT() )
{ {
//save BELTDATA beltdata = new BELTDATA();
fltr.getCLDT().clear(); //清空旧数据 BeanUtils.copyProperties(optbeltdata, beltdata);
for(OPTBELTDATA optbeltdata : cldtMsg.getFLOP().get(0).getCLDT() )
{
BELTDATA beltdata = new BELTDATA();
BeanUtils.copyProperties(optbeltdata, beltdata);
fltr.getCLDT().add(beltdata); fltr.getCLDT().add(beltdata);
} //添加新数据 } //添加新数据
return fltr;
flightInfoService.saveFltr(fltr);
//send and update
this.sendFltrAndMsg(fltr, cminmsg);
this.updateCminmsgToProcessed(cminmsg);
return HandlerResult.success(fltr);
}
else {
//没有该动态航班信息
logger.warn("没有flid为:{}的消息",cldtMsg.getFLOP().get(0).getFLID());
}
return HandlerResult.failure();
} }
} }
@@ -15,11 +15,10 @@ public class CNCLHandler extends FlopBaseHandler {
private static Logger logger = LoggerFactory.getLogger(CNCLHandler.class); private static Logger logger = LoggerFactory.getLogger(CNCLHandler.class);
@Override @Override
protected SCHD.FLTR handlerMsg(FLOP flop,SCHD.FLTR fltr) protected SCHD.FLTR updateFltr(FLOP flop,SCHD.FLTR fltr)
{ {
//save //update
fltr.setCNCL(flop.getCNCL()); fltr.setCNCL(flop.getCNCL());
flightInfoService.saveFltr(fltr);
return fltr; return fltr;
} }
@@ -53,7 +53,10 @@ public class FlopBaseHandler implements IBaseHandler {
if(null != fltr) if(null != fltr)
{ {
SCHD.FLTR fltrResult = handlerMsg(flop,fltr); SCHD.FLTR fltrResult = updateFltr(flop,fltr);
//
flightInfoService.saveFltr(fltrResult);
//send and update //send and update
this.sendFltrAndMsg(fltrResult, cminmsg); this.sendFltrAndMsg(fltrResult, cminmsg);
@@ -69,13 +72,13 @@ public class FlopBaseHandler implements IBaseHandler {
} }
/** /**
* 关键处理逻辑 ,子类只需要重写本方法处理更新fltr的逻辑 * 关键处理逻辑 ,更新航班动态信息
* @param flop 消息 * @param flop 消息
* @param fltr 存在的航班动态信息 * @param fltr 存在的航班动态信息
*/ */
protected SCHD.FLTR handlerMsg(FLOP flop,SCHD.FLTR fltr) protected SCHD.FLTR updateFltr(FLOP flop,SCHD.FLTR fltr)
{ {
logger.warn("默认handlerMsg,不进行任何消息处理逻辑"); logger.warn("默认updateFltr,不进行任何消息处理逻辑");
return fltr; return fltr;
} }