Skip to content

Commit 66a302d

Browse files
feat: handle medical technology usage events
1 parent 66a76b2 commit 66a302d

File tree

1 file changed

+24
-17
lines changed

1 file changed

+24
-17
lines changed

src/env/artifact/environment/OperatingBlockObserverArtifact.java

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
package artifact.environment;
1010

1111
import application.controller.manager.EventManager;
12+
import application.presenter.event.model.medicaltechnology.MedicalTechnologyEvent;
1213
import application.presenter.event.model.medicaltechnology.payload.MedicalTechnologyUsagePayload;
1314
import application.presenter.event.model.roomevent.RoomEvent;
1415
import application.presenter.event.model.roomevent.payload.HumidityPayload;
@@ -18,6 +19,8 @@
1819
import cartago.Artifact;
1920
import cartago.INTERNAL_OPERATION;
2021
import cartago.OPERATION;
22+
import entity.medicaltechnology.MedicalTechnologyID;
23+
import infrastructure.digitaltwins.DigitalTwinManager;
2124
import infrastructure.events.KafkaClient;
2225

2326
/**
@@ -52,47 +55,51 @@ void start() {
5255
void poll() {
5356
this.eventManager.poll(event -> {
5457
switch (event.getKey()) {
55-
case TemperaturePayload.TEMPERATURE_EVENT_KEY:
58+
case TemperaturePayload.TEMPERATURE_EVENT_KEY -> {
5659
final RoomEvent<?> roomTempEvent = (RoomEvent<?>) event;
5760
final TemperaturePayload temperaturePayload = (TemperaturePayload) roomTempEvent.getData();
5861
signal("temperature",
5962
roomTempEvent.getRoomId(),
6063
roomTempEvent.getRoomType().getName(),
6164
temperaturePayload.getTemperatureValue());
62-
break;
63-
case HumidityPayload.HUMIDITY_EVENT_KEY:
65+
}
66+
case HumidityPayload.HUMIDITY_EVENT_KEY -> {
6467
final RoomEvent<?> roomHumidityEvent = (RoomEvent<?>) event;
6568
final HumidityPayload humidityPayload = (HumidityPayload) roomHumidityEvent.getData();
6669
signal("humidity",
6770
roomHumidityEvent.getRoomId(),
6871
roomHumidityEvent.getRoomType().getName(),
6972
humidityPayload.getHumidityPercentage());
70-
break;
71-
case LuminosityPayload.LUMINOSITY_EVENT_KEY:
73+
}
74+
case LuminosityPayload.LUMINOSITY_EVENT_KEY -> {
7275
final RoomEvent<?> roomLuminosityEvent = (RoomEvent<?>) event;
7376
final LuminosityPayload luminosityPayload = (LuminosityPayload) roomLuminosityEvent.getData();
7477
signal("luminosity",
7578
roomLuminosityEvent.getRoomId(),
7679
roomLuminosityEvent.getRoomType().getName(),
7780
luminosityPayload.getLuminosityValue());
78-
break;
79-
case PresencePayload.PRESENCE_EVENT_KEY:
81+
}
82+
case PresencePayload.PRESENCE_EVENT_KEY -> {
8083
final RoomEvent<?> roomPresenceEvent = (RoomEvent<?>) event;
8184
final PresencePayload presencePayload = (PresencePayload) roomPresenceEvent.getData();
8285
signal("presence",
8386
roomPresenceEvent.getRoomId(),
8487
roomPresenceEvent.getRoomType().getName(),
8588
presencePayload.isPresenceDetected());
86-
break;
87-
case MedicalTechnologyUsagePayload.MEDICAL_TECHNOLOGY_USAGE_EVENT_KEY:
88-
// final MedicalTechnologyEvent medicalTechnologyUsageEvent = (MedicalTechnologyEvent) event;
89-
// todo: understand in which room the medical technology is
90-
// todo: understand the type of the medical technology (maybe can be fused with the previous query)
91-
// todo: signal
92-
break;
93-
default:
94-
// not handled
95-
break;
89+
}
90+
case MedicalTechnologyUsagePayload.MEDICAL_TECHNOLOGY_USAGE_EVENT_KEY -> {
91+
final MedicalTechnologyEvent medicalTechnologyUsageEvent = (MedicalTechnologyEvent) event;
92+
new DigitalTwinManager()
93+
.findBy(new MedicalTechnologyID(medicalTechnologyUsageEvent.getData().getMedicalTechnologyID()))
94+
.ifPresent(medicalTechnology -> medicalTechnology.getRoomID().ifPresent(room ->
95+
signal("medicalTechnologyUsage",
96+
medicalTechnology.getType().getName(),
97+
medicalTechnologyUsageEvent.getData().isInUse(),
98+
room.getId())));
99+
}
100+
default -> {
101+
}
102+
// not handled
96103
}
97104
});
98105
}

0 commit comments

Comments
 (0)