From 9279a5f7cacbff018927beb47244fe47c6d195e9 Mon Sep 17 00:00:00 2001 From: Yuxuan HU Date: Tue, 10 Feb 2026 16:01:13 +1100 Subject: [PATCH] add ai:update_frequency in collection summaries and update test --- .../server/core/model/SummariesModel.java | 3 +++ .../core/model/enumeration/CQLFields.java | 6 ++++++ .../model/enumeration/CollectionProperty.java | 1 + .../core/model/enumeration/StacSummeries.java | 1 + .../ogcapi/server/common/RestApiTest.java | 21 +++++++++++++++++++ .../caf7220a-19e0-4a7f-9af6-eade6c79a47a.json | 1 + 6 files changed, 33 insertions(+) diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/model/SummariesModel.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/model/SummariesModel.java index 724ec040..098a122e 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/model/SummariesModel.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/model/SummariesModel.java @@ -41,6 +41,9 @@ public class SummariesModel { @JsonProperty("ai:description") protected String aiDescription; + @JsonProperty("ai:update_frequency") + protected String aiUpdateFrequency; + @JsonProperty("scope") protected Map scope; diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/CQLFields.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/CQLFields.java index 2a364af8..3331e5b7 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/CQLFields.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/CQLFields.java @@ -39,6 +39,12 @@ public enum CQLFields implements CQLFieldsInterface { null, null ), + ai_update_frequency( + StacSummeries.AiUpdateFrequency.searchField, + StacSummeries.AiUpdateFrequency.displayField, + null, + null + ), geometry( StacSummeries.Geometry.searchField, StacSummeries.Geometry.searchField, diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/CollectionProperty.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/CollectionProperty.java index 559043c1..ee61c418 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/CollectionProperty.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/CollectionProperty.java @@ -23,6 +23,7 @@ public enum CollectionProperty { pace("pace"), datasetGroup("dataset_group"), aiDescription("ai:description"), + aiUpdateFrequency("ai:update_frequency"), scope("scope"); private final String value; diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/StacSummeries.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/StacSummeries.java index 2c5ec28d..c0b9f3b5 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/StacSummeries.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/StacSummeries.java @@ -10,6 +10,7 @@ public enum StacSummeries { TemporalEnd("summaries.temporal.end", ""), Temporal("summaries.temporal", "extent.temporal", "summaries.temporal", List.of(TemporalStart, TemporalEnd)), UpdateFrequency("summaries.update_frequency", "summaries.update_frequency"), + AiUpdateFrequency("summaries.ai:update_frequency", "summaries.ai:update_frequency"), DatasetProvider("summaries.dataset_provider", "summaries.dataset_provider"), DatasetGroup("summaries.dataset_group", "summaries.dataset_group"), Status("summaries.status", "summaries.status"), diff --git a/server/src/test/java/au/org/aodn/ogcapi/server/common/RestApiTest.java b/server/src/test/java/au/org/aodn/ogcapi/server/common/RestApiTest.java index 4474b47e..4cfe5635 100644 --- a/server/src/test/java/au/org/aodn/ogcapi/server/common/RestApiTest.java +++ b/server/src/test/java/au/org/aodn/ogcapi/server/common/RestApiTest.java @@ -693,4 +693,25 @@ public void verifyAssetSummarySearchWorks() throws IOException { assertEquals(1, Objects.requireNonNull(collections.getBody()).getCollections().size(), "hit 1"); assertEquals("35234913-aa3c-48ec-b9a4-77f822f66ef8", Objects.requireNonNull(collections.getBody()).getCollections().get(0).getId(), "asset.summary exist 35234913-aa3c-48ec-b9a4-77f822f66ef8"); } + + public void verifyAiUpdateFrequencyWorks() throws IOException { + super.insertJsonToElasticRecordIndex("caf7220a-19e0-4a7f-9af6-eade6c79a47a.json"); // this record is assumed to have a delayed mode with AI enhanced ai:update_frequency field + ResponseEntity collections = testRestTemplate.exchange( + getBasePath() + "/collections?filter=(ai_update_frequency='delayed')", + HttpMethod.GET, + null, + new ParameterizedTypeReference<>() {}); + + assertEquals(1, Objects.requireNonNull(collections.getBody()).getCollections().size(), "hit 1"); + + collections = testRestTemplate.exchange( + getBasePath() + "/collections?filter=(ai_update_frequency='real-time')", + HttpMethod.GET, + null, + new ParameterizedTypeReference<>() {}); + + + assertEquals(0, Objects.requireNonNull(collections.getBody()).getCollections().size(), "no real-time records found"); + assertEquals("caf7220a-19e0-4a7f-9af6-eade6c79a47a", Objects.requireNonNull(collections.getBody()).getCollections().get(0).getId(), "ai:update_frequency exist caf7220a-19e0-4a7f-9af6-eade6c79a47a"); + } } diff --git a/server/src/test/resources/databag/caf7220a-19e0-4a7f-9af6-eade6c79a47a.json b/server/src/test/resources/databag/caf7220a-19e0-4a7f-9af6-eade6c79a47a.json index 59921ec0..58e9da4f 100644 --- a/server/src/test/resources/databag/caf7220a-19e0-4a7f-9af6-eade6c79a47a.json +++ b/server/src/test/resources/databag/caf7220a-19e0-4a7f-9af6-eade6c79a47a.json @@ -375,6 +375,7 @@ "name": "" }, "update_frequency": null, + "ai:update_frequency": "delayed", "temporal": [ { "start": "1991-12-31T13:00:00Z",