use of eu.europa.ec.fisheries.schema.exchange.v1.ExchangeLogType in project UVMS-ExchangeModule-APP by UnionVMS.
the class ExchangeEventIncomingServiceBean method receiveSalesQuery.
@Override
public void receiveSalesQuery(@Observes @ReceiveSalesQueryEvent ExchangeMessageEvent event) {
try {
ReceiveSalesQueryRequest request = JAXBMarshaller.unmarshallTextMessage(event.getJmsMessage(), ReceiveSalesQueryRequest.class);
log.info("Process sales query in Exchange module:{}", request);
String query = request.getQuery();
PluginType plugin = request.getPluginType();
String sender = request.getSenderOrReceiver();
String messageGuid = request.getMessageGuid();
ExchangeLogType log = exchangeLog.log(request, LogType.RECEIVE_SALES_QUERY, ExchangeLogStatusTypeType.ISSUED, TypeRefType.SALES_QUERY, query, true);
forwardToRules(RulesModuleRequestMapper.createReceiveSalesQueryRequest(query, messageGuid, plugin.name(), log.getGuid(), sender, request.getOnValue()));
} catch (ExchangeModelMarshallException e) {
try {
firePluginFault(event, "Couldn't map to SalesQueryRequest when processing sales query from plugin. The message was " + event.getJmsMessage().getText(), e);
} catch (JMSException e1) {
firePluginFault(event, "Couldn't map to SalesQueryRequest when processing sales query from plugin.", e);
}
} catch (ExchangeLogException e) {
firePluginFault(event, "Could not log the incoming sales query.", e);
} catch (RulesModelMarshallException e) {
firePluginFault(event, "Could not create a request for the Rules module for an incoming sales query.", e);
}
}
use of eu.europa.ec.fisheries.schema.exchange.v1.ExchangeLogType in project UVMS-ExchangeModule-APP by UnionVMS.
the class ExchangeEventIncomingServiceBean method receiveSalesResponse.
@Override
public void receiveSalesResponse(@Observes @ReceiveSalesResponseEvent ExchangeMessageEvent event) {
try {
ReceiveSalesResponseRequest request = JAXBMarshaller.unmarshallTextMessage(event.getJmsMessage(), ReceiveSalesResponseRequest.class);
String response = request.getResponse();
ExchangeLogType log = exchangeLog.log(request, LogType.RECEIVE_SALES_RESPONSE, ExchangeLogStatusTypeType.ISSUED, TypeRefType.SALES_RESPONSE, response, true);
forwardToRules(RulesModuleRequestMapper.createReceiveSalesResponseRequest(response, log.getGuid(), request.getSenderOrReceiver()));
} catch (ExchangeModelMarshallException e) {
firePluginFault(event, "Error when receiving a Sales response from FLUX", e);
} catch (ExchangeLogException e) {
firePluginFault(event, "Could not log the incoming sales response.", e);
} catch (RulesModelMarshallException e) {
firePluginFault(event, "Could not create a request for the Rules module for an incoming sales response.", e);
}
}
use of eu.europa.ec.fisheries.schema.exchange.v1.ExchangeLogType in project UVMS-ExchangeModule-APP by UnionVMS.
the class ExchangeEventOutgoingServiceBean method sendCommandToPlugin.
@Override
public void sendCommandToPlugin(@Observes @SendCommandToPluginEvent ExchangeMessageEvent message) {
SetCommandRequest request = new SetCommandRequest();
try {
request = JAXBMarshaller.unmarshallTextMessage(message.getJmsMessage(), SetCommandRequest.class);
LOG.info("Send command to plugin:{}", request);
String pluginName = request.getCommand().getPluginName();
CommandType commandType = request.getCommand();
ServiceResponseType service = exchangeService.getService(pluginName);
if (validate(request.getCommand(), message.getJmsMessage(), service, commandType, request.getUsername())) {
List<UnsentMessageTypeProperty> setUnsentMessageTypePropertiesForPoll = getSetUnsentMessageTypePropertiesForPoll(commandType);
String unsentMessageGuid = exchangeLog.createUnsentMessage(service.getName(), request.getCommand().getTimestamp(), request.getCommand().getCommand().name(), message.getJmsMessage().getText(), setUnsentMessageTypePropertiesForPoll, request.getUsername());
request.getCommand().setUnsentMessageGuid(unsentMessageGuid);
String text = ExchangePluginRequestMapper.createSetCommandRequest(request.getCommand());
String pluginMessageId = producer.sendEventBusMessage(text, pluginName);
try {
ExchangeLogType log = ExchangeLogMapper.getSendCommandExchangeLog(request.getCommand());
exchangeLog.logAndCache(log, pluginMessageId, request.getUsername());
} catch (ExchangeLogException e) {
LOG.error(e.getMessage());
}
CommandTypeType x = request.getCommand().getCommand();
// response back to MobileTerminal (not to rules when email)
if (request.getCommand().getCommand() != CommandTypeType.EMAIL) {
AcknowledgeType ackType = ExchangeModuleResponseMapper.mapAcknowledgeTypeOK();
String moduleResponse = ExchangeModuleResponseMapper.mapSetCommandResponse(ackType);
producer.sendModuleResponseMessage(message.getJmsMessage(), moduleResponse);
}
} else {
LOG.debug("Can not send to plugin. Response sent to caller.");
}
} catch (NullPointerException | ExchangeException e) {
if (request.getCommand().getCommand() != CommandTypeType.EMAIL) {
LOG.error("[ Error when sending command to plugin {} ]", e.getMessage());
exchangeErrorEvent.fire(new ExchangeMessageEvent(message.getJmsMessage(), ExchangeModuleResponseMapper.createFaultMessage(FaultCode.EXCHANGE_EVENT_SERVICE, "Exception when sending command to plugin")));
}
} catch (JMSException ex) {
LOG.error("[ Error when creating unsent message {} ]", ex.getMessage());
}
}
use of eu.europa.ec.fisheries.schema.exchange.v1.ExchangeLogType in project UVMS-ExchangeModule-APP by UnionVMS.
the class ExchangeEventOutgoingServiceBean method sendReportToPlugin.
@Override
public void sendReportToPlugin(@Observes @SendReportToPluginEvent ExchangeMessageEvent message) {
try {
SendMovementToPluginRequest request = JAXBMarshaller.unmarshallTextMessage(message.getJmsMessage(), SendMovementToPluginRequest.class);
LOG.info("Send report to plugin: {}", request);
SendMovementToPluginType sendReport = request.getReport();
List<PluginType> type = new ArrayList<>();
type.add(sendReport.getPluginType());
List<ServiceResponseType> services = exchangeService.getServiceList(type);
if (services == null || services.isEmpty()) {
String faultMessage = "No plugins of type " + sendReport.getPluginType() + " found";
LOG.debug(faultMessage);
} else {
ServiceResponseType service = services.get(0);
String serviceName = service.getServiceClassName();
if (validate(service, sendReport, message.getJmsMessage(), request.getUsername())) {
List<UnsentMessageTypeProperty> unsentMessageProperties = ExchangeLogMapper.getUnsentMessageProperties(sendReport);
String unsentMessageGuid = exchangeLog.createUnsentMessage(sendReport.getRecipient(), sendReport.getTimestamp(), ExchangeLogMapper.getSendMovementSenderReceiver(sendReport), message.getJmsMessage().getText(), unsentMessageProperties, request.getUsername());
String text = ExchangePluginRequestMapper.createSetReportRequest(sendReport.getTimestamp(), sendReport, unsentMessageGuid);
String pluginMessageId = producer.sendEventBusMessage(text, serviceName);
// System.out.println("SendReport: PluginMessageId: " + pluginMessageId);
try {
ExchangeLogType log = ExchangeLogMapper.getSendMovementExchangeLog(sendReport);
exchangeLog.logAndCache(log, pluginMessageId, request.getUsername());
} catch (ExchangeLogException e) {
LOG.error(e.getMessage());
}
} else {
LOG.debug("Cannot send to plugin. Response sent to caller:{}", message);
}
}
} catch (ExchangeException e) {
LOG.error("[ Error when sending report to plugin {} ] {}", message, e);
} catch (JMSException ex) {
LOG.error("[ Error when creating unsent movement {}] {}", message, ex);
}
}
use of eu.europa.ec.fisheries.schema.exchange.v1.ExchangeLogType in project UVMS-ExchangeModule-APP by UnionVMS.
the class ExchangeLogServiceBean method setPollStatus.
@Override
public PollStatus setPollStatus(String jmsCorrelationId, String pollId, ExchangeLogStatusTypeType logStatus, String username) throws ExchangeLogException {
try {
// Remove the message from cache, because legancy implementation
logCache.acknowledged(jmsCorrelationId);
PollStatus pollStatus = new PollStatus();
pollStatus.setPollGuid(pollId);
pollStatus.setStatus(logStatus);
ExchangeLogType exchangeLogType = exchangeLogModel.setPollStatus(pollStatus, username);
pollStatus.setExchangeLogGuid(exchangeLogType.getGuid());
sendAuditLogMessageForUpdatePollStatus(pollId, username);
// For long polling
exchangeLogEvent.fire(new NotificationMessage("guid", pollStatus.getExchangeLogGuid()));
return pollStatus;
} catch (ExchangeModelMapperException e) {
throw new ExchangeLogException("Couldn't update status of exchange log");
} catch (ExchangeModelException e) {
throw new ExchangeLogException("Couldn't update status of exchange log");
}
}
Aggregations