// flag: continue to process message or not
boolean isContinue = true;
// flt fuel info
EntDbFlightFuelStatus oldData = null;
EntDbFlightFuelStatus data = null;
start = System.currentTimeMillis();
// according to type settle down return message
UfisASCommands cmd = UfisASCommands.URT;
switch (type) {
case MVT:
/*
* OUT -> AOBN
* OFF -> ATON
* ON -> ALDN
* IN -> AIBN
*/
String trigevt = message.getEGDSBODY().getTRIGEVT();
String ata = message.getEGDSBODY().getATA();
if (HpUfisUtils.isNotEmptyStr(trigevt) && ata != null) {
if (ata.matches(TIME_PATTERN)) {
// HHmm or HH:mm -> HHMM
ata = String.format(TIME_FORMATTER, Integer.parseInt(ata.replaceAll(SYMB_COLON, "")));
if (ADID.A == adid) {
ata = HpUfisUtils.guessTheDate(tifa, ata);
} else {
ata = HpUfisUtils.guessTheDate(tifd, ata);
}
if (trigevt.contains("OUT")) {
infobjFlight.setAOBN(ata);
} else if (trigevt.contains("OFF")) {
infobjFlight.setATON(ata);
} else if (trigevt.contains("ON")) {
infobjFlight.setALDN(ata);
} else if (trigevt.contains("IN")) {
infobjFlight.setAIBN(ata);
}
} else {
LOG.debug("EGDS: ATA<{}> format is not match with HH:MM or HHMM", ata);
}
// onboard fuel
//if (trigevt.contains("IN") && (message.getEGDSBODY().getFOB() != null)) {
if (message.getEGDSBODY().getFOB() != null) {
infojxaftab.setFUOB(message.getEGDSBODY().getFOB());
xafFound = true;
}
} else {
LOG.debug("EGDS: cannot process ATA due to TRIGEVT<{}> or ATA<{}> is null or empty", trigevt, ata);
}
// Cargo Door closed and Cabin Door closed
if (HpUfisUtils.isNotEmptyStr(message.getEGDSBODY().getCARD())) {
ufisCalendar.setTime(message.getEGDSBODY().getCARD(), ufisCalendar.getCustomFormat());
INFOJFEVTAB cargoDoor = new INFOJFEVTAB();
cargoDoor.setSTNM("CARGO DOOR CLOSED");
cargoDoor.setSTTM(ufisCalendar.getCedaString());
infojfevtablist.getINFOJFEVTAB().add(cargoDoor);
fevFound = true;
}
if (HpUfisUtils.isNotEmptyStr(message.getEGDSBODY().getCABD())) {
ufisCalendar.setTime(message.getEGDSBODY().getCABD(), ufisCalendar.getCustomFormat());
INFOJFEVTAB cabinDoor = new INFOJFEVTAB();
cabinDoor.setSTNM("CABIN DOOR CLOSED");
cabinDoor.setSTTM(ufisCalendar.getCedaString());
infojfevtablist.getINFOJFEVTAB().add(cabinDoor);
fevFound = true;
}
// if contains FOB
if (xafFound) {
try {
oldData = fltFuelStatusBean.findByIdFlight(uaft);
if (oldData == null) {
// Prepare notification data (dat)
data = new EntDbFlightFuelStatus();
// id flight
data.setIdFlight(uaft);
// flight number
data.setFlightNumber(fltn);
// flight date
//fuelStatus.setFltDate(aftFlight.getFlda());
// regn
data.setFltRegn(regn);
// alc2
data.setAirlineCode2(HpEKConstants.EK_ALC2);
// org3
data.setFltOrigin3(org3);
// dep3
data.setFltDest3(des3);
data.setCreatedUser(MSGIF);
data.setDataSource(MSGIF);
// msg send date
if (HpUfisUtils.isNotEmptyStr(message.getEGDSHEADER().getTIMESTAMP())) {
ufisCalendar.setTime(message.getEGDSHEADER().getTIMESTAMP(), ufisCalendar.getCustomFormat());
data.setMsgSendDate(ufisCalendar.getTime());
}
fltFuelStatusBean.persist(data);
LOG.info("EGDS MVT: created flight fuel record={} for flight={}", data.getId(), uaft);
cmd = UfisASCommands.IRT;
}
if (UfisASCommands.URT == cmd) {
data = EntDbFlightFuelStatus.valueOf(oldData);
String fob = message.getEGDSBODY().getFOB().isEmpty() ?
"0" : message.getEGDSBODY().getFOB();
float onBoardFuel = Float.parseFloat(fob);
// new value
data.setOnboardFuel(onBoardFuel);
// msg send date
if (HpUfisUtils.isNotEmptyStr(message.getEGDSHEADER().getTIMESTAMP())) {
ufisCalendar.setTime(message.getEGDSHEADER().getTIMESTAMP(),
ufisCalendar.getCustomFormat());
data.setMsgSendDate(ufisCalendar.getTime());
}
data.setRecStatus(' ');
data.setUpdatedUser(MSGIF);
fltFuelStatusBean.update(data);
LOG.info("EGDS MVT: updated flight fuel record={} for flight={}", data.getId(), uaft);
}
if (HpUfisUtils.isNotEmptyStr(HpCommonConfig.notifyTopic)) {
// send notification message to topic
ufisTopicProducer.sendNotification(true, cmd, String.valueOf(uaft), oldData, data);
} else {
// if topic not defined, send notification to queue
ufisQueueProducer.sendNotification(true, cmd, String.valueOf(uaft), oldData, data);
}
// onboard fuel
/*Float oldOnBoardFuel = 0f;
if (message.getEGDSBODY().getFOB() != null) {
String fob = message.getEGDSBODY().getFOB().isEmpty() ?
"0" : message.getEGDSBODY().getFOB();
float onBoardFuel = Float.parseFloat(fob);
// if fuel changed, update and notify
if (onBoardFuel != fuelStatus.getOnboardFuel()) {
// old value
oldOnBoardFuel = fuelStatus.getOnboardFuel();
// new value
fuelStatus.setOnboardFuel(onBoardFuel);
// msg send date
if (HpUfisUtils.isNotEmptyStr(message.getEGDSHEADER().getTIMESTAMP())) {
ufisCalendar.setTime(message.getEGDSHEADER().getTIMESTAMP(),
ufisCalendar.getCustomFormat());
fuelStatus.setMsgSendDate(ufisCalendar.getTime());
}
fuelStatus.setRecStatus(' ');
fuelStatus.setUpdatedUser(MSGIF);
fltFuelStatusBean.update(fuelStatus);
// notify flag
isNofified = true;
}
}*/
// notify change or not
/*if (isNofified) {
EntUfisMsgDTO msgObj = new EntUfisMsgDTO();
// Header: id flight
notifyHeader.getIdFlight().clear();
notifyHeader.getIdFlight().add(String.valueOf(uaft));
notifyHeader.setReqt(HpUfisCalendar.getCurrentUTCTimeString());
msgObj.setHead(notifyHeader);
// Body
EntUfisMsgBody notifyBody = new EntUfisMsgBody();
EntUfisMsgACT act = new EntUfisMsgACT();
if (isInsert) {
act.setCmd(HpUfisAppConstants.UfisASCommands.IRT.toString());
} else {
act.setCmd(HpUfisAppConstants.UfisASCommands.URT.toString());
}
act.setTab(TAB);
act.getFld().add(NOTIFY_FOB);
act.getData().add(message.getEGDSBODY().getFOB());
act.getOdat().add(oldOnBoardFuel.toString());
act.getId().add(fuelStatus.getId());
act.setSel("WHERE id = " + "\"" + fuelStatus.getId() + "\"");
notifyBody.getActs().add(act);
msgObj.setBody(notifyBody);
// json message
String jsonNotifyMsg = mapper.writeValueAsString(msgObj);
//bcMessaging.sendBroadcastMessage(jsonNotifyMsg);
ufisTopicProducer.sendMessage(jsonNotifyMsg);
LOG.debug("EGDS notification for changes: \n{}", jsonNotifyMsg);
}*/
} catch (Exception e) {
LOG.error("Cannot transform egds message: {}", e.getMessage());
//LOG.error("Message Dropped: \n{}", _flightXml);
}
}
break;
case PROGRESSREPORT:
String eta = message.getEGDSBODY().getETA();
if (HpUfisUtils.isNullOrEmptyStr(eta)) {
// 2013-12-02 updated by JGO - ETA is optional in latest ICD
// drop message
/*LOG.debug("EGDS message dropped due to eta is null or empty");
//LOG.error("Message Dropped: \n{}", _flightXml);
addExptInfo(EnumExceptionCodes.EMAND.name(), EnumExceptionCodes.EMAND.toString());*/
isContinue = false;
}
if (eta.matches(TIME_PATTERN)) {
eta = String.format(TIME_FORMATTER, Integer.parseInt(eta.replaceAll(SYMB_COLON, "")));
eta = HpUfisUtils.guessTheDate(tifa, eta);
infobjFlight.setEIBN(eta);
} else {
LOG.debug("EGDS: ETA<{}> format is not match with HH:MM or HHMM", eta);
addExptInfo(EnumExceptionCodes.EWVAL.name(), "ETA format not match with HH:MM or HHMM");
isContinue = false;
}
break;
case LOADACC:
// aft
//infobjFlight.setELDN(message.getEGDSBODY().getLOADSHEET());
// xaf
infojxaftab.setLSHT(message.getEGDSBODY().getLOADSHEET());
infojxaftab.setZFWT(message.getEGDSBODY().getZFW());
infojxaftab.setTOWT(message.getEGDSBODY().getTOW());
// 2013-11-22 updated by JGO - Save LADT
if (HpUfisUtils.isNotEmptyStr(message.getEGDSHEADER().getTIMESTAMP())) {
ufisCalendar.setTime(message.getEGDSHEADER().getTIMESTAMP(), ufisCalendar.getCustomFormat());
infojxaftab.setLADT(ufisCalendar.getCedaString());
}
xafFound = true;
break;
case ROUTE:
// confirm message from pilot that crew is on board
//infobjgeneric.setALC2("EK");
if (HpUfisUtils.isNotEmptyStr(message.getEGDSHEADER().getTIMESTAMP())) {
ufisCalendar.setTime(message.getEGDSHEADER().getTIMESTAMP(), ufisCalendar.getCustomFormat());
INFOJFEVTAB route = new INFOJFEVTAB();
route.setSTNM("Route Request");
route.setSTRM(regn);
route.setSTTM(ufisCalendar.getCedaString());
infojfevtablist.getINFOJFEVTAB().add(route);
fevFound = true;
}
break;
case FUEL:
oldData = fltFuelStatusBean.findByIdFlight(uaft);
if (oldData == null) {
data = new EntDbFlightFuelStatus();
// msg send date
if (HpUfisUtils.isNotEmptyStr(message.getEGDSHEADER().getTIMESTAMP())) {
ufisCalendar.setTime(message.getEGDSHEADER().getTIMESTAMP(), ufisCalendar.getCustomFormat());
data.setMsgSendDate(ufisCalendar.getTime());
}
// id flight
data.setIdFlight(uaft);
// flight number
data.setFlightNumber(fltn);
// flight date
//fuelStatus.setFltDate(aftFlight.getFlda());
// regn
data.setFltRegn(regn);
// alc2
data.setAirlineCode2(HpEKConstants.EK_ALC2);
// org3
data.setFltOrigin3(org3);
// dep3
data.setFltDest3(des3);
// trip fuel
if (HpUfisUtils.isNotEmptyStr(message.getEGDSBODY().getTripFuel())) {
data.setTripFuel(Float.parseFloat(message.getEGDSBODY().getTripFuel()));
}
// taxi fuel
if (HpUfisUtils.isNotEmptyStr(message.getEGDSBODY().getTaxiFuel())) {
data.setTaxiFuel(Float.parseFloat(message.getEGDSBODY().getTaxiFuel()));
}
// ramp fuel
if (HpUfisUtils.isNotEmptyStr(message.getEGDSBODY().getRampFuel())) {
data.setRampFuel(Float.parseFloat(message.getEGDSBODY().getRampFuel()));
}
// // onboard fuel
// //if (HpUfisUtils.isNotEmptyStr(message.getEGDSBODY().getFOB())) {
// if (message.getEGDSBODY().getFOB() != null) {
// //fuelStatus.setOnboardFuel(Float.parseFloat(message.getEGDSBODY().getFOB()));
// String fob = message.getEGDSBODY().getFOB().isEmpty() ? "0"
// : message.getEGDSBODY().getFOB();
// float onBoardFuel = Float.parseFloat(fob);
// if (onBoardFuel != fuelStatus.getOnboardFuel()) {
// fuelStatus.setOnboardFuel(onBoardFuel);
// isNofified = true;
// }
// }
data.setTrm(message.getEGDSBODY().getTRM());
data.setDen(message.getEGDSBODY().getDEN());
data.setRtw(message.getEGDSBODY().getRTW());
data.setCreatedUser(MSGIF);
data.setDataSource(MSGIF);
fltFuelStatusBean.persist(data);
LOG.info("EGDS FUEL: created flight fuel record={} for flight={}", data.getId(), uaft);
cmd = UfisASCommands.IRT;
}
if (UfisASCommands.URT == cmd) {
data = EntDbFlightFuelStatus.valueOf(oldData);
// trip fuel
if (HpUfisUtils.isNotEmptyStr(message.getEGDSBODY().getTripFuel())) {
data.setTripFuel(Float.parseFloat(message.getEGDSBODY().getTripFuel()));
}
// taxi fuel
if (HpUfisUtils.isNotEmptyStr(message.getEGDSBODY().getTaxiFuel())) {
data.setTaxiFuel(Float.parseFloat(message.getEGDSBODY().getTaxiFuel()));
}
// ramp fuel
if (HpUfisUtils.isNotEmptyStr(message.getEGDSBODY().getRampFuel())) {
data.setRampFuel(Float.parseFloat(message.getEGDSBODY().getRampFuel()));
}
data.setTrm(message.getEGDSBODY().getTRM());
data.setDen(message.getEGDSBODY().getDEN());
data.setRtw(message.getEGDSBODY().getRTW());
// msg send date
if (HpUfisUtils.isNotEmptyStr(message.getEGDSHEADER().getTIMESTAMP())) {
ufisCalendar.setTime(message.getEGDSHEADER().getTIMESTAMP(),
ufisCalendar.getCustomFormat());
data.setMsgSendDate(ufisCalendar.getTime());
}
data.setRecStatus(' ');
data.setUpdatedUser(MSGIF);
fltFuelStatusBean.update(data);
LOG.info("EGDS FUEL: updated flight fuel record={} for flight={}", data.getId(), uaft);
}
if (HpUfisUtils.isNotEmptyStr(HpCommonConfig.notifyTopic)) {
// send notification message to topic
ufisTopicProducer.sendNotification(true, cmd, String.valueOf(uaft), oldData, data);