Include aircraft name in path conflict resume alerts
This commit is contained in:
parent
fb5badbaba
commit
cdb91765e8
@ -219,7 +219,8 @@ public class VehicleCommandService {
|
||||
previousState.parkingIssued(),
|
||||
confirmedCycles,
|
||||
observation.vehicleDistanceMeters(),
|
||||
observation.aircraftDistanceMeters()
|
||||
observation.aircraftDistanceMeters(),
|
||||
previousState.aircraftName()
|
||||
);
|
||||
|
||||
VehicleConflictCommand resumeContext = new VehicleConflictCommand(
|
||||
@ -229,7 +230,8 @@ public class VehicleCommandService {
|
||||
null,
|
||||
resolveRegistryType(vehicleId),
|
||||
previousState.vehicleDistanceMeters(),
|
||||
previousState.aircraftDistanceMeters()
|
||||
previousState.aircraftDistanceMeters(),
|
||||
previousState.aircraftName()
|
||||
);
|
||||
|
||||
boolean resumeIssued = sendCommand(resumeContext, CommandType.RESUME, CommandReason.RESUME_TRAFFIC);
|
||||
@ -254,6 +256,7 @@ public class VehicleCommandService {
|
||||
VehicleConflictCommand leftCandidate = toVehicleConflictCommand(
|
||||
event.getObject1Name(),
|
||||
event.getObject1Type(),
|
||||
resolveAircraftName(event),
|
||||
level,
|
||||
event.getConflictPoint(),
|
||||
event.getObject1Distance(),
|
||||
@ -266,6 +269,7 @@ public class VehicleCommandService {
|
||||
return toVehicleConflictCommand(
|
||||
event.getObject2Name(),
|
||||
event.getObject2Type(),
|
||||
resolveAircraftName(event),
|
||||
level,
|
||||
event.getConflictPoint(),
|
||||
event.getObject2Distance(),
|
||||
@ -276,6 +280,7 @@ public class VehicleCommandService {
|
||||
private VehicleConflictCommand toVehicleConflictCommand(
|
||||
String vehicleId,
|
||||
MovingObjectType objectType,
|
||||
String aircraftName,
|
||||
VehicleRiskLevel level,
|
||||
Point conflictPoint,
|
||||
Double candidateDistance,
|
||||
@ -312,10 +317,24 @@ public class VehicleCommandService {
|
||||
objectType,
|
||||
registryType,
|
||||
vehicleDistance,
|
||||
aircraftDistance
|
||||
aircraftDistance,
|
||||
aircraftName
|
||||
);
|
||||
}
|
||||
|
||||
private String resolveAircraftName(ConflictAlertEvent event) {
|
||||
if (event == null) {
|
||||
return null;
|
||||
}
|
||||
if (event.getObject1Type() == MovingObjectType.AIRCRAFT) {
|
||||
return event.getObject1Name();
|
||||
}
|
||||
if (event.getObject2Type() == MovingObjectType.AIRCRAFT) {
|
||||
return event.getObject2Name();
|
||||
}
|
||||
return event.getAircraftName();
|
||||
}
|
||||
|
||||
private VehicleRiskLevel toRiskLevel(ConflictAlertEvent event) {
|
||||
if (event.isAlert() || event.isEmergencyAlert()) {
|
||||
return VehicleRiskLevel.ALERT;
|
||||
@ -581,15 +600,28 @@ public class VehicleCommandService {
|
||||
ConflictRecoveryObservation observation) {
|
||||
|
||||
try {
|
||||
String vehicleObjectType = toMovingObjectTypeName(resolveRegistryType(vehicleId));
|
||||
Double vehicleDistance = observation != null ? observation.vehicleDistanceMeters() : previousState.vehicleDistanceMeters();
|
||||
Double aircraftDistance = observation != null ? observation.aircraftDistanceMeters() : previousState.aircraftDistanceMeters();
|
||||
PathConflictAlertMessage message = PathConflictAlertMessage.builder()
|
||||
.messageType("PATH_CONFLICT_RESUME")
|
||||
.message("Path conflict resolved, traffic resumed")
|
||||
.object1(PathConflictAlertMessage.ConflictObject.builder()
|
||||
.objectName(vehicleId)
|
||||
.objectType(toMovingObjectTypeName(resolveRegistryType(vehicleId)))
|
||||
.objectType(vehicleObjectType)
|
||||
.build())
|
||||
.object1Distance(observation != null ? observation.vehicleDistanceMeters() : previousState.vehicleDistanceMeters())
|
||||
.object2Distance(observation != null ? observation.aircraftDistanceMeters() : previousState.aircraftDistanceMeters())
|
||||
.object2(PathConflictAlertMessage.ConflictObject.builder()
|
||||
.objectName(previousState.aircraftName())
|
||||
.objectType(MovingObjectType.AIRCRAFT.name())
|
||||
.build())
|
||||
.aircraftName(previousState.aircraftName())
|
||||
.aircraftObjectType(MovingObjectType.AIRCRAFT.name())
|
||||
.aircraftDistanceToConflictMeters(aircraftDistance)
|
||||
.vehicleName(vehicleId)
|
||||
.vehicleObjectType(vehicleObjectType)
|
||||
.vehicleDistanceToConflictMeters(vehicleDistance)
|
||||
.object1Distance(vehicleDistance)
|
||||
.object2Distance(aircraftDistance)
|
||||
.eventTime(LocalDateTime.now())
|
||||
.build();
|
||||
|
||||
@ -637,7 +669,8 @@ public class VehicleCommandService {
|
||||
MovingObjectType objectType,
|
||||
VehicleRegistryType registryType,
|
||||
Double vehicleDistanceMeters,
|
||||
Double aircraftDistanceMeters) {
|
||||
Double aircraftDistanceMeters,
|
||||
String aircraftName) {
|
||||
}
|
||||
|
||||
private record ActiveVehicleCommandState(
|
||||
@ -645,7 +678,8 @@ public class VehicleCommandService {
|
||||
boolean parkingIssued,
|
||||
int missingConflictCycles,
|
||||
Double vehicleDistanceMeters,
|
||||
Double aircraftDistanceMeters) {
|
||||
Double aircraftDistanceMeters,
|
||||
String aircraftName) {
|
||||
|
||||
private static ActiveVehicleCommandState fromCommand(
|
||||
VehicleRiskLevel level,
|
||||
@ -658,7 +692,8 @@ public class VehicleCommandService {
|
||||
parkingIssued,
|
||||
missingConflictCycles,
|
||||
command.vehicleDistanceMeters(),
|
||||
command.aircraftDistanceMeters()
|
||||
command.aircraftDistanceMeters(),
|
||||
command.aircraftName()
|
||||
);
|
||||
}
|
||||
|
||||
@ -667,14 +702,15 @@ public class VehicleCommandService {
|
||||
int missingConflictCycles) {
|
||||
|
||||
if (observation == null) {
|
||||
return new ActiveVehicleCommandState(level, parkingIssued, missingConflictCycles, vehicleDistanceMeters, aircraftDistanceMeters);
|
||||
return new ActiveVehicleCommandState(level, parkingIssued, missingConflictCycles, vehicleDistanceMeters, aircraftDistanceMeters, aircraftName);
|
||||
}
|
||||
return new ActiveVehicleCommandState(
|
||||
level,
|
||||
parkingIssued,
|
||||
missingConflictCycles,
|
||||
observation.vehicleDistanceMeters(),
|
||||
observation.aircraftDistanceMeters()
|
||||
observation.aircraftDistanceMeters(),
|
||||
aircraftName
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -157,6 +157,12 @@ class VehicleCommandServiceTest {
|
||||
server.verify();
|
||||
verify(webSocketPublisher).publishPathConflictAlert(argThat(message ->
|
||||
"PATH_CONFLICT_RESUME".equals(message.getMessageType())
|
||||
&& "UV-001".equals(message.getVehicleName())
|
||||
&& "CA1234".equals(message.getAircraftName())
|
||||
&& message.getObject1() != null
|
||||
&& "UV-001".equals(message.getObject1().getObjectName())
|
||||
&& message.getObject2() != null
|
||||
&& "CA1234".equals(message.getObject2().getObjectName())
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user