|
9 | 9 | package artifact.environment;
|
10 | 10 |
|
11 | 11 | import application.controller.manager.EventManager;
|
| 12 | +import application.presenter.event.model.medicaltechnology.MedicalTechnologyEvent; |
12 | 13 | import application.presenter.event.model.medicaltechnology.payload.MedicalTechnologyUsagePayload;
|
13 | 14 | import application.presenter.event.model.roomevent.RoomEvent;
|
14 | 15 | import application.presenter.event.model.roomevent.payload.HumidityPayload;
|
|
18 | 19 | import cartago.Artifact;
|
19 | 20 | import cartago.INTERNAL_OPERATION;
|
20 | 21 | import cartago.OPERATION;
|
| 22 | +import entity.medicaltechnology.MedicalTechnologyID; |
| 23 | +import infrastructure.digitaltwins.DigitalTwinManager; |
21 | 24 | import infrastructure.events.KafkaClient;
|
22 | 25 |
|
23 | 26 | /**
|
@@ -52,47 +55,51 @@ void start() {
|
52 | 55 | void poll() {
|
53 | 56 | this.eventManager.poll(event -> {
|
54 | 57 | switch (event.getKey()) {
|
55 |
| - case TemperaturePayload.TEMPERATURE_EVENT_KEY: |
| 58 | + case TemperaturePayload.TEMPERATURE_EVENT_KEY -> { |
56 | 59 | final RoomEvent<?> roomTempEvent = (RoomEvent<?>) event;
|
57 | 60 | final TemperaturePayload temperaturePayload = (TemperaturePayload) roomTempEvent.getData();
|
58 | 61 | signal("temperature",
|
59 | 62 | roomTempEvent.getRoomId(),
|
60 | 63 | roomTempEvent.getRoomType().getName(),
|
61 | 64 | temperaturePayload.getTemperatureValue());
|
62 |
| - break; |
63 |
| - case HumidityPayload.HUMIDITY_EVENT_KEY: |
| 65 | + } |
| 66 | + case HumidityPayload.HUMIDITY_EVENT_KEY -> { |
64 | 67 | final RoomEvent<?> roomHumidityEvent = (RoomEvent<?>) event;
|
65 | 68 | final HumidityPayload humidityPayload = (HumidityPayload) roomHumidityEvent.getData();
|
66 | 69 | signal("humidity",
|
67 | 70 | roomHumidityEvent.getRoomId(),
|
68 | 71 | roomHumidityEvent.getRoomType().getName(),
|
69 | 72 | humidityPayload.getHumidityPercentage());
|
70 |
| - break; |
71 |
| - case LuminosityPayload.LUMINOSITY_EVENT_KEY: |
| 73 | + } |
| 74 | + case LuminosityPayload.LUMINOSITY_EVENT_KEY -> { |
72 | 75 | final RoomEvent<?> roomLuminosityEvent = (RoomEvent<?>) event;
|
73 | 76 | final LuminosityPayload luminosityPayload = (LuminosityPayload) roomLuminosityEvent.getData();
|
74 | 77 | signal("luminosity",
|
75 | 78 | roomLuminosityEvent.getRoomId(),
|
76 | 79 | roomLuminosityEvent.getRoomType().getName(),
|
77 | 80 | luminosityPayload.getLuminosityValue());
|
78 |
| - break; |
79 |
| - case PresencePayload.PRESENCE_EVENT_KEY: |
| 81 | + } |
| 82 | + case PresencePayload.PRESENCE_EVENT_KEY -> { |
80 | 83 | final RoomEvent<?> roomPresenceEvent = (RoomEvent<?>) event;
|
81 | 84 | final PresencePayload presencePayload = (PresencePayload) roomPresenceEvent.getData();
|
82 | 85 | signal("presence",
|
83 | 86 | roomPresenceEvent.getRoomId(),
|
84 | 87 | roomPresenceEvent.getRoomType().getName(),
|
85 | 88 | 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 |
96 | 103 | }
|
97 | 104 | });
|
98 | 105 | }
|
|
0 commit comments