重构抽象所有的事件处理,只要重写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.LoggerFactory;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG;
import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP;
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);
/**
* 处理航班消息,更新航班动态信息
* @param msg 要处理的xml消息
* @return 处理结果及影响的动态航班信息
*/
@Override
public HandlerResult run(Cminmsg cminmsg) {
MSG acftMsg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class);
SCHD.FLTR fltr = flightInfoService.getByFlid(acftMsg.getFLOP().get(0).getFLID().toString());
if(null != fltr)
{
//save
fltr.setACFT(acftMsg.getFLOP().get(0).getACFT());
flightInfoService.saveFltr(fltr);
//send and update
this.sendFltrAndMsg(fltr, cminmsg);
this.updateCminmsgToProcessed(cminmsg);
return HandlerResult.success(fltr);
}
else {
//没有该动态航班信息
logger.warn("没有flid为:{}的消息",acftMsg.getFLOP().get(0).getFLID());
}
protected SCHD.FLTR updateFltr(FLOP flop,SCHD.FLTR fltr)
{
//update
fltr.setACFT(flop.getACFT());
return HandlerResult.failure();
}//end function
return fltr;
}
}
@@ -3,10 +3,8 @@ package com.gzzn.omms.msgexchangeapi.msghandler.flop;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG;
import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD;
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
/**
* 航班实际时间事件
@@ -15,28 +13,13 @@ import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
*/
public class ACTTHandler extends FlopBaseHandler{
private static Logger logger = LoggerFactory.getLogger(ACTTHandler.class);
@Override
public HandlerResult run(Cminmsg cminmsg) {
MSG acttMsg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class);
SCHD.FLTR fltr = flightInfoService.getByFlid(acttMsg.getFLOP().get(0).getFLID().toString());
if(null != fltr)
{
//save
fltr.setACTT(acttMsg.getFLOP().get(0).getACTT());
flightInfoService.saveFltr(fltr);
//send and update
this.sendFltrAndMsg(fltr, cminmsg);
this.updateCminmsgToProcessed(cminmsg);
return HandlerResult.success(fltr);
}
else {
//没有该动态航班信息
logger.warn("没有flid为:{}的消息",acttMsg.getFLOP().get(0).getFLID());
}
protected SCHD.FLTR updateFltr(FLOP flop,SCHD.FLTR fltr)
{
//update
fltr.setACTT(flop.getACTT());
return HandlerResult.failure();
return fltr;
}
}
@@ -3,41 +3,17 @@ package com.gzzn.omms.msgexchangeapi.msghandler.flop;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG;
import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP;
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 {
private static Logger logger = LoggerFactory.getLogger(ACFTHandler.class);
private static Logger logger = LoggerFactory.getLogger(BDPBHandler.class);
@Override
public HandlerResult run(Cminmsg cminmsg) {
IExchangeService exchangeService = (IExchangeService) SpringUtil.getBean("exchangeService");
IFlightInfoService flightInfoService = (IFlightInfoService) SpringUtil.getBean("flightInfoService");
protected SCHD.FLTR updateFltr(FLOP flop,SCHD.FLTR fltr)
{
//TO: 文档未描述该事件是什么
MSG bdpbMsg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class);
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
return fltr;
}
}
@@ -3,10 +3,8 @@ package com.gzzn.omms.msgexchangeapi.msghandler.flop;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
import com.gzzn.omms.msgexchangeapi.entity.msg.MSG;
import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP;
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 {
private static Logger logger = LoggerFactory.getLogger(ACFTHandler.class);
private static Logger logger = LoggerFactory.getLogger(BOTMHandler.class);
@Override
public HandlerResult run(Cminmsg cminmsg) {
MSG botmMsg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class);
SCHD.FLTR fltr = flightInfoService.getByFlid(botmMsg.getFLOP().get(0).getFLID().toString());
if(null != fltr)
{
//save
fltr.setBOTM(botmMsg.getFLOP().get(0).getBOTM());
flightInfoService.saveFltr(fltr);
//send and update
this.sendFltrAndMsg(fltr, cminmsg);
this.updateCminmsgToProcessed(cminmsg);
return HandlerResult.success(fltr);
}
else {
//没有该动态航班信息
logger.warn("没有flid为:{}的消息",botmMsg.getFLOP().get(0).getFLID());
}
protected SCHD.FLTR updateFltr(FLOP flop,SCHD.FLTR fltr)
{
//TO: 文档未描述该事件是什么
fltr.setBOTM(flop.getBOTM());
return HandlerResult.failure();
}
return fltr;
}
}
@@ -4,12 +4,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.MSG;
import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP;
import com.gzzn.omms.msgexchangeapi.entity.msg.OPTDESKDATA;
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 {
private static Logger logger = LoggerFactory.getLogger(ACFTHandler.class);
private static Logger logger = LoggerFactory.getLogger(CKDTHandler.class);
@Override
public HandlerResult run(Cminmsg cminmsg) {
MSG ckdtMsg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class);
SCHD.FLTR fltr = flightInfoService.getByFlid(ckdtMsg.getFLOP().get(0).getFLID().toString());
if(null != fltr)
protected SCHD.FLTR updateFltr(FLOP flop,SCHD.FLTR fltr)
{
fltr.getCKDT().clear(); //清空旧数据
for(OPTDESKDATA optdeskdata : flop.getCKDT() )
{
//save
fltr.getCKDT().clear(); //清空旧数据
for(OPTDESKDATA optdeskdata : ckdtMsg.getFLOP().get(0).getCKDT() )
{
DESKDATA deskdata = new DESKDATA();
BeanUtils.copyProperties(optdeskdata, deskdata);
fltr.getCKDT().add(deskdata);
} //添加新数据
DESKDATA deskdata = new DESKDATA();
BeanUtils.copyProperties(optdeskdata, deskdata);
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());
}
fltr.getCKDT().add(deskdata);
} //添加新数据
return HandlerResult.failure();
return fltr;
}
}
@@ -4,12 +4,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.MSG;
import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP;
import com.gzzn.omms.msgexchangeapi.entity.msg.OPTBELTDATA;
import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD;
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
/**
* 行李转盘事件 carousel
@@ -19,36 +17,20 @@ import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
public class CLDTHandler extends FlopBaseHandler {
private static Logger logger = LoggerFactory.getLogger(CLDTHandler.class);
@Override
public HandlerResult run(Cminmsg cminmsg) {
MSG cldtMsg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class);
SCHD.FLTR fltr = flightInfoService.getByFlid(cldtMsg.getFLOP().get(0).getFLID().toString());
if(null != fltr)
protected SCHD.FLTR updateFltr(FLOP flop,SCHD.FLTR fltr)
{
fltr.getCLDT().clear(); //清空旧数据
for(OPTBELTDATA optbeltdata : flop.getCLDT() )
{
//save
fltr.getCLDT().clear(); //清空旧数据
for(OPTBELTDATA optbeltdata : cldtMsg.getFLOP().get(0).getCLDT() )
{
BELTDATA beltdata = new BELTDATA();
BeanUtils.copyProperties(optbeltdata, beltdata);
fltr.getCLDT().add(beltdata);
} //添加新数据
BELTDATA beltdata = new BELTDATA();
BeanUtils.copyProperties(optbeltdata, beltdata);
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());
}
fltr.getCLDT().add(beltdata);
} //添加新数据
return HandlerResult.failure();
return fltr;
}
}
@@ -15,11 +15,10 @@ public class CNCLHandler extends FlopBaseHandler {
private static Logger logger = LoggerFactory.getLogger(CNCLHandler.class);
@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());
flightInfoService.saveFltr(fltr);
return fltr;
}
@@ -53,7 +53,10 @@ public class FlopBaseHandler implements IBaseHandler {
if(null != fltr)
{
SCHD.FLTR fltrResult = handlerMsg(flop,fltr);
SCHD.FLTR fltrResult = updateFltr(flop,fltr);
//
flightInfoService.saveFltr(fltrResult);
//send and update
this.sendFltrAndMsg(fltrResult, cminmsg);
@@ -69,13 +72,13 @@ public class FlopBaseHandler implements IBaseHandler {
}
/**
* 关键处理逻辑 ,子类只需要重写本方法处理更新fltr的逻辑
* 关键处理逻辑 ,更新航班动态信息
* @param flop 消息
* @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;
}