/** {@inheritDoc} */ public void action(Prognosis prognosis, Message savedMessage) throws BusinessException { LOGGER.info("Prognosis received"); String entityAddress = prognosis.getCongestionPoint(); String errorMessage = null; try { corePlanboardValidatorService.validatePTUDuration(prognosis.getPTUDuration()); corePlanboardValidatorService.validateTimezone(prognosis.getTimeZone()); dsoPlanboardValidatorService.validatePtus(prognosis.getPTU()); dsoPlanboardValidatorService.validateCongestionPoint(entityAddress); dsoPlanboardValidatorService.validateAggregator( prognosis.getMessageMetadata().getSenderDomain(), entityAddress, prognosis.getPeriod()); dsoPlanboardValidatorService.validatePeriod(prognosis.getPeriod()); dsoPlanboardValidatorService.validatePrognosisSequenceNumber(prognosis); } catch (BusinessValidationException e) { errorMessage = e.getBusinessError().getError(); LOGGER.debug(errorMessage, e); } sendPrognosisResponse(prognosis, errorMessage); if (errorMessage != null) { return; } coordinator.invokeWorkflow(prognosis, savedMessage); }
/** * Sends the prognosis response XML to AGR. * * @param prognosis * @param errorMessage */ public void sendPrognosisResponse(Prognosis prognosis, String errorMessage) { PrognosisResponse prognosisResponse = createPrognosisResponse( prognosis.getCongestionPoint(), prognosis.getMessageMetadata().getConversationID(), prognosis.getMessageMetadata().getSenderDomain(), errorMessage); prognosisResponse.setPrognosisSequence(prognosis.getSequence()); putMessageIntoOutgoingQueue(prognosisResponse); }