diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/mapper/Converter.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/mapper/Converter.java index 40e5ffcf..592b5c5d 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/mapper/Converter.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/mapper/Converter.java @@ -119,6 +119,7 @@ default Collection getCollection(D m, Filter fil .title(l.getTitle()) .description(l.getDescription()) .aiGroup(l.getAiGroup()) + .aiRole(l.getAiRole()) ) .toList() ); diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/model/ExtendedLink.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/model/ExtendedLink.java index 1dce4263..774e000b 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/model/ExtendedLink.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/model/ExtendedLink.java @@ -5,6 +5,8 @@ import lombok.Getter; import lombok.Setter; +import java.util.List; + @Getter @Setter public class ExtendedLink extends Link { @@ -12,6 +14,9 @@ public class ExtendedLink extends Link { @JsonProperty("ai:group") private String aiGroup; + @JsonProperty("ai:role") + private List aiRole; + @JsonProperty("description") private String description; @@ -24,6 +29,11 @@ public ExtendedLink aiGroup(String aiGroup) { return this; } + public ExtendedLink aiRole(List aiRole) { + this.aiRole = aiRole; + return this; + } + public ExtendedLink description(String description) { this.description = description; return this; diff --git a/server/src/main/java/au/org/aodn/ogcapi/server/core/model/LinkModel.java b/server/src/main/java/au/org/aodn/ogcapi/server/core/model/LinkModel.java index 527b6d35..17533bdf 100644 --- a/server/src/main/java/au/org/aodn/ogcapi/server/core/model/LinkModel.java +++ b/server/src/main/java/au/org/aodn/ogcapi/server/core/model/LinkModel.java @@ -7,6 +7,8 @@ import lombok.Data; import lombok.NoArgsConstructor; +import java.util.List; + @Data @Builder @NoArgsConstructor @@ -20,6 +22,9 @@ public class LinkModel { @JsonProperty("ai:group") protected String aiGroup; + @JsonProperty("ai:role") + protected List aiRole; + @JsonProperty("description") protected String description; diff --git a/server/src/test/java/au/org/aodn/ogcapi/server/core/mapper/StacToCollectionTest.java b/server/src/test/java/au/org/aodn/ogcapi/server/core/mapper/StacToCollectionTest.java index 6a6c7339..5f258421 100644 --- a/server/src/test/java/au/org/aodn/ogcapi/server/core/mapper/StacToCollectionTest.java +++ b/server/src/test/java/au/org/aodn/ogcapi/server/core/mapper/StacToCollectionTest.java @@ -78,6 +78,7 @@ public void verifyAddingPropertyWorks() { .type("text/html") .title("Data Link") .aiGroup("data-access") + .aiRole(List.of("download")) .description("description") .build(); var link2 = LinkModel.builder() @@ -160,6 +161,13 @@ public void verifyAddingPropertyWorks() { Assertions.assertEquals(parameterVocabs, collection.getProperties().get(CollectionProperty.parameterVocabs)); Assertions.assertNotNull(collection.getLinks()); Assertions.assertEquals(3, collection.getLinks().size()); + + ExtendedLink convertedLink1 = (ExtendedLink) collection.getLinks().stream() + .filter(l -> "related".equals(l.getRel())) + .findFirst() + .orElseThrow(); + + Assertions.assertEquals(List.of("download"), convertedLink1.getAiRole()); } @Test diff --git a/server/src/test/resources/portal_records_index_schema.json b/server/src/test/resources/portal_records_index_schema.json index 31015cc7..b0d9dec7 100644 --- a/server/src/test/resources/portal_records_index_schema.json +++ b/server/src/test/resources/portal_records_index_schema.json @@ -182,6 +182,9 @@ }, "ai:group": { "type": "keyword" + }, + "ai:role": { + "type": "keyword" } } }