use of eu.europa.ec.fisheries.schema.exchange.movement.v1.MovementBaseType in project UVMS-ExchangeModule-APP by UnionVMS.
the class ExchangeEventIncomingServiceBean method processMovement.
@Override
public void processMovement(@Observes @SetMovementEvent ExchangeMessageEvent message) {
try {
final TextMessage jmsMessage = message.getJmsMessage();
final String jmsMessageID = jmsMessage.getJMSMessageID();
SetMovementReportRequest request = JAXBMarshaller.unmarshallTextMessage(jmsMessage, SetMovementReportRequest.class);
log.info("[INFO] Processing Movement : {}", request);
String username;
SetReportMovementType setRepMovType = request.getRequest();
if (MovementSourceType.MANUAL.equals(setRepMovType.getMovement().getSource())) {
// A person has created a position
username = request.getUsername();
// Send some response to Movement, if it originated from there (manual movement)
ProcessedMovementAck response = MovementModuleResponseMapper.mapProcessedMovementAck(eu.europa.ec.fisheries.schema.movement.common.v1.AcknowledgeTypeType.OK, jmsMessageID, "Movement successfully processed");
producer.sendModuleAckMessage(jmsMessageID, MessageQueue.MOVEMENT_RESPONSE, JAXBMarshaller.marshallJaxBObjectToString(response));
} else {
// A plugin has reported a position
username = setRepMovType.getPluginType().name();
}
String pluginName = setRepMovType.getPluginName();
ServiceResponseType service = exchangeService.getService(pluginName);
PluginType pluginType = setRepMovType.getPluginType();
if (validate(setRepMovType, service, jmsMessage)) {
MovementBaseType baseMovement = setRepMovType.getMovement();
RawMovementType rawMovement = MovementMapper.getInstance().getMapper().map(baseMovement, RawMovementType.class);
final AssetId assetId = rawMovement.getAssetId();
if (assetId != null && assetId.getAssetIdList() != null) {
assetId.getAssetIdList().addAll(MovementMapper.mapAssetIdList(baseMovement.getAssetId().getAssetIdList()));
}
if (baseMovement.getMobileTerminalId() != null && baseMovement.getMobileTerminalId().getMobileTerminalIdList() != null) {
rawMovement.getMobileTerminal().getMobileTerminalIdList().addAll(MovementMapper.mapMobileTerminalIdList(baseMovement.getMobileTerminalId().getMobileTerminalIdList()));
}
rawMovement.setPluginType(pluginType.value());
rawMovement.setPluginName(pluginName);
rawMovement.setDateRecieved(setRepMovType.getTimestamp());
// TODO : Temporary - probably better to change corr id to have the same though the entire flow;
// TODO : then we can use this to send response to original caller from anywhere needed
rawMovement.setAckResponseMessageID(jmsMessageID);
log.info("[INFO] Logging received movement.");
exchangeLog.log(request, LogType.RECEIVE_MOVEMENT, ExchangeLogStatusTypeType.ISSUED, TypeRefType.MOVEMENT, JAXBMarshaller.marshallJaxBObjectToString(request), true);
forwardToRules(RulesModuleRequestMapper.createSetMovementReportRequest(PluginTypeMapper.map(pluginType), rawMovement, username), message, service);
log.info("[INFO] Finished forwarding received movement to rules module.");
} else {
log.debug("[ERROR] Validation error. Event sent to plugin {}", message);
}
} catch (ExchangeServiceException e) {
log.error("[ERROR] Couldn't get the Service type for the received message : {} {}", message, e);
} catch (ExchangeModelMarshallException e) {
log.error("[ERROR] Couldn't map to SetMovementReportRequest when processing movement from plugin:{} {}", message, e);
} catch (JMSException e) {
log.error("[ERROR] Failed to get response queue:{} {}", message, e);
} catch (RulesModelMapperException e) {
log.error("[ERROR] Failed to build Rules momvent request:{} {}", message, e);
} catch (ExchangeLogException e) {
log.error("[ERROR] Failed to log momvent request : {} {}", message, e);
}
}
use of eu.europa.ec.fisheries.schema.exchange.movement.v1.MovementBaseType in project UVMS-Docker by UnionVMS.
the class MovementHelper method createMovementBatchRequest.
public CreateMovementBatchRequest createMovementBatchRequest(Asset testAsset, MobileTerminalType mobileTerminalType, List<LatLong> route) throws IOException, ClientProtocolException, JsonProcessingException, JsonParseException, JsonMappingException {
// Date positionTime = new Date(System.currentTimeMillis());
final CreateMovementBatchRequest createMovementBatchRequest = new CreateMovementBatchRequest();
AssetId assetId = new AssetId();
assetId.setAssetType(AssetType.VESSEL);
assetId.setIdType(AssetIdType.GUID);
assetId.setValue(testAsset.getAssetId().getGuid());
MovementActivityType movementActivityType = new MovementActivityType();
movementActivityType.setMessageId(UUID.randomUUID().toString());
movementActivityType.setMessageType(MovementActivityTypeType.ANC);
createMovementBatchRequest.setMethod(MovementModuleMethod.CREATE_BATCH);
createMovementBatchRequest.setUsername("vms_admin_com");
for (LatLong latlong : route) {
MovementBaseType movementBaseType = new MovementBaseType();
movementBaseType.setAssetId(assetId);
movementBaseType.setConnectId(mobileTerminalType.getConnectId());
movementBaseType.setActivity(movementActivityType);
MovementPoint movementPoint = new MovementPoint();
movementPoint.setLongitude(latlong.longitude);
movementPoint.setLatitude(latlong.latitude);
movementPoint.setAltitude((double) 5);
movementBaseType.setPosition(movementPoint);
movementBaseType.setPositionTime(latlong.positionTime);
movementBaseType.setMovementType(MovementTypeType.POS);
movementBaseType.setReportedCourse(latlong.bearing);
movementBaseType.setReportedSpeed(latlong.speed);
createMovementBatchRequest.getMovement().add(movementBaseType);
}
return createMovementBatchRequest;
}
use of eu.europa.ec.fisheries.schema.exchange.movement.v1.MovementBaseType in project UVMS-Docker by UnionVMS.
the class MovementHelper method createMovementRequest.
public CreateMovementRequest createMovementRequest(Asset testAsset, MobileTerminalType mobileTerminalType, LatLong latlong) throws IOException, ClientProtocolException, JsonProcessingException, JsonParseException, JsonMappingException {
// Date positionTime = new Date(System.currentTimeMillis());
final CreateMovementRequest createMovementRequest1 = new CreateMovementRequest();
final MovementBaseType movementBaseType = new MovementBaseType();
AssetId assetId = new AssetId();
assetId.setAssetType(AssetType.VESSEL);
assetId.setIdType(AssetIdType.GUID);
assetId.setValue(testAsset.getAssetId().getGuid());
movementBaseType.setAssetId(assetId);
movementBaseType.setConnectId(mobileTerminalType.getConnectId());
MovementActivityType movementActivityType = new MovementActivityType();
movementBaseType.setActivity(movementActivityType);
movementActivityType.setMessageId(UUID.randomUUID().toString());
movementActivityType.setMessageType(MovementActivityTypeType.ANC);
createMovementRequest1.setMovement(movementBaseType);
createMovementRequest1.setMethod(MovementModuleMethod.CREATE);
createMovementRequest1.setUsername("vms_admin_com");
MovementPoint movementPoint = new MovementPoint();
movementPoint.setLongitude(latlong.longitude);
movementPoint.setLatitude(latlong.latitude);
movementPoint.setAltitude((double) 5);
movementBaseType.setPosition(movementPoint);
movementBaseType.setPositionTime(latlong.positionTime);
movementBaseType.setMovementType(MovementTypeType.POS);
movementBaseType.setReportedCourse(latlong.bearing);
movementBaseType.setReportedSpeed(latlong.speed);
return createMovementRequest1;
}
use of eu.europa.ec.fisheries.schema.exchange.movement.v1.MovementBaseType in project UVMS-Docker by UnionVMS.
the class SetMovementReportRequestJmsIT method createSetReportMovementType.
/**
* Creates the set report movement type.
*
* @param testAsset
* the test asset
* @param mobileTerminalType
* the mobile terminal type
* @param createMovementRequest
* the create movement request
* @return the sets the movement report request
*/
private SetMovementReportRequest createSetReportMovementType(Asset testAsset, MobileTerminalType mobileTerminalType, CreateMovementRequest createMovementRequest) {
final SetMovementReportRequest request = new SetMovementReportRequest();
request.setUsername("vms_admin_com");
request.setDate(new Date());
request.setMethod(ExchangeModuleMethod.SET_MOVEMENT_REPORT);
request.setPluginType(PluginType.NAF);
final SetReportMovementType movementType = new SetReportMovementType();
request.setRequest(movementType);
movementType.setPluginType(PluginType.NAF);
movementType.setTimestamp(new Date());
movementType.setPluginName(mobileTerminalType.getPlugin().getServiceName());
MovementBaseType movementBaseType = new MovementBaseType();
movementType.setMovement(movementBaseType);
MovementActivityType movementActivityType = new MovementActivityType();
movementBaseType.setActivity(movementActivityType);
AssetId assetId = new AssetId();
movementBaseType.setAssetId(assetId);
assetId.setAssetType(AssetType.VESSEL);
AssetIdList assetIdList = new AssetIdList();
{
assetIdList.setIdType(AssetIdType.GUID);
assetIdList.setValue(testAsset.getAssetId().getGuid());
assetId.getAssetIdList().add(assetIdList);
}
{
assetIdList.setIdType(AssetIdType.IRCS);
assetIdList.setValue(testAsset.getIrcs());
assetId.getAssetIdList().add(assetIdList);
}
{
assetIdList.setIdType(AssetIdType.CFR);
assetIdList.setValue(testAsset.getCfr());
assetId.getAssetIdList().add(assetIdList);
}
{
assetIdList.setIdType(AssetIdType.MMSI);
assetIdList.setValue(testAsset.getMmsiNo());
assetId.getAssetIdList().add(assetIdList);
}
movementBaseType.setAssetName(testAsset.getName());
movementBaseType.setComChannelType(MovementComChannelType.NAF);
movementBaseType.setExternalMarking(testAsset.getExternalMarking());
movementBaseType.setFlagState(testAsset.getCountryCode());
movementBaseType.setInternalReferenceNumber(testAsset.getIrcs());
movementBaseType.setIrcs(testAsset.getIrcs());
movementBaseType.setMmsi(testAsset.getMmsiNo());
MobileTerminalId mobileTerminalId = new MobileTerminalId();
mobileTerminalId.setConnectId(mobileTerminalType.getConnectId());
mobileTerminalId.setGuid(mobileTerminalType.getMobileTerminalId().getGuid());
movementBaseType.setMobileTerminalId(mobileTerminalId);
movementBaseType.setMovementType(MovementTypeType.POS);
MovementPoint movementPoint = new MovementPoint();
movementPoint.setLongitude(createMovementRequest.getMovement().getPosition().getLongitude());
movementPoint.setLatitude(createMovementRequest.getMovement().getPosition().getLatitude());
movementPoint.setAltitude(createMovementRequest.getMovement().getPosition().getAltitude());
movementBaseType.setPosition(movementPoint);
movementBaseType.setPositionTime(new Date());
movementBaseType.setReportedCourse(1d);
movementBaseType.setReportedSpeed(1d);
movementBaseType.setSource(MovementSourceType.INMARSAT_C);
movementBaseType.setTripNumber(1d);
return request;
}
Aggregations