重构抽象所有的事件处理,只要重写updateFltr 事件更新fltr并返回最新的值 即可。
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user