From 09cb8ebb2102fd286b7d367266b851e94994e687 Mon Sep 17 00:00:00 2001 From: JosephVolosin Date: Tue, 12 Nov 2024 09:27:09 -0500 Subject: [PATCH] Expose attributes in procedural payload for events --- .../procedural/timeline/payloads/ExternalEvent.kt | 5 ++++- .../server/services/GraphQLMerlinDatabaseService.java | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/procedural/timeline/src/main/kotlin/gov/nasa/ammos/aerie/procedural/timeline/payloads/ExternalEvent.kt b/procedural/timeline/src/main/kotlin/gov/nasa/ammos/aerie/procedural/timeline/payloads/ExternalEvent.kt index 110728d770..640dbf962d 100644 --- a/procedural/timeline/src/main/kotlin/gov/nasa/ammos/aerie/procedural/timeline/payloads/ExternalEvent.kt +++ b/procedural/timeline/src/main/kotlin/gov/nasa/ammos/aerie/procedural/timeline/payloads/ExternalEvent.kt @@ -14,7 +14,10 @@ data class ExternalEvent( /** The source this event comes from. */ @JvmField val source: ExternalSource, + /** The attributes of the event. */ + @JvmField + val attributes: Map, override val interval: Interval, ): IntervalLike { - override fun withNewInterval(i: Interval) = ExternalEvent(key, type, source, i) + override fun withNewInterval(i: Interval) = ExternalEvent(key, type, source, attributes, i) } diff --git a/scheduler-server/src/main/java/gov/nasa/jpl/aerie/scheduler/server/services/GraphQLMerlinDatabaseService.java b/scheduler-server/src/main/java/gov/nasa/jpl/aerie/scheduler/server/services/GraphQLMerlinDatabaseService.java index 347b013262..5a3238b0c0 100644 --- a/scheduler-server/src/main/java/gov/nasa/jpl/aerie/scheduler/server/services/GraphQLMerlinDatabaseService.java +++ b/scheduler-server/src/main/java/gov/nasa/jpl/aerie/scheduler/server/services/GraphQLMerlinDatabaseService.java @@ -1029,6 +1029,7 @@ public Map> getExternalEvents(final PlanId planId, f final var eventsRequest = """ query DerivedEventsForPlan { derived_events(where: {derivation_group_name: {_in: %s}}) { + attributes source_key event_type_name event_key @@ -1183,6 +1184,14 @@ private List parseExternalEvents(final JsonArray eventsJson, fina horizonStart.until(ZonedDateTime.parse(e.getString("start_time")).toInstant(), ChronoUnit.MICROS) ); final var end = start.plus(Duration.fromString(e.getString("duration"))); + final var attributesJson = e.getJsonObject("attributes"); + final var attributes = new HashMap(); + for (final var attributeJson: attributesJson.entrySet()) { + attributes.put( + attributeJson.getKey(), + serializedValueP.parse(attributeJson.getValue()).getSuccessOrThrow() + ); + } result.add(new ExternalEvent( e.getString("event_key"), e.getString("event_type_name"), @@ -1190,6 +1199,7 @@ private List parseExternalEvents(final JsonArray eventsJson, fina e.getString("source_key"), e.getString("derivation_group_name") ), + attributes, Interval.between(start, end) )); }