Skip to content

Commit 9bc31d7

Browse files
authored
Merge pull request #259 from aodn/feature/7224-integrate-ai-downloadable-links
feature/7224-integrate-ai-downloadable-links
2 parents 07ff981 + 1fef8bd commit 9bc31d7

7 files changed

Lines changed: 42 additions & 0 deletions

File tree

server/src/main/java/au/org/aodn/ogcapi/server/core/mapper/Converter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ default <D extends StacCollectionModel> Collection getCollection(D m, Filter fil
119119
.title(l.getTitle())
120120
.description(l.getDescription())
121121
.aiGroup(l.getAiGroup())
122+
.aiRole(l.getAiRole())
122123
)
123124
.toList()
124125
);

server/src/main/java/au/org/aodn/ogcapi/server/core/model/ExtendedLink.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,18 @@
55
import lombok.Getter;
66
import lombok.Setter;
77

8+
import java.util.List;
9+
810
@Getter
911
@Setter
1012
public class ExtendedLink extends Link {
1113

1214
@JsonProperty("ai:group")
1315
private String aiGroup;
1416

17+
@JsonProperty("ai:role")
18+
private List<String> aiRole;
19+
1520
@JsonProperty("description")
1621
private String description;
1722

@@ -24,6 +29,11 @@ public ExtendedLink aiGroup(String aiGroup) {
2429
return this;
2530
}
2631

32+
public ExtendedLink aiRole(List<String> aiRole) {
33+
this.aiRole = aiRole;
34+
return this;
35+
}
36+
2737
public ExtendedLink description(String description) {
2838
this.description = description;
2939
return this;

server/src/main/java/au/org/aodn/ogcapi/server/core/model/LinkModel.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import lombok.Data;
88
import lombok.NoArgsConstructor;
99

10+
import java.util.List;
11+
1012
@Data
1113
@Builder
1214
@NoArgsConstructor
@@ -20,6 +22,9 @@ public class LinkModel {
2022
@JsonProperty("ai:group")
2123
protected String aiGroup;
2224

25+
@JsonProperty("ai:role")
26+
protected List<String> aiRole;
27+
2328
@JsonProperty("description")
2429
protected String description;
2530

server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/CQLFields.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,20 @@ public enum CQLFields implements CQLFieldsInterface {
194194
)._toQuery(),
195195
null
196196
),
197+
links_airole_contains(
198+
StacBasicField.LinksAiRole.searchField,
199+
StacBasicField.LinksAiRole.displayField,
200+
(literal) -> NestedQuery.of(m -> m
201+
.path(StacBasicField.Links.searchField) // "links"
202+
.query(q -> q
203+
.term(t -> t
204+
.field(StacBasicField.LinksAiRole.searchField) // "links.ai:role"
205+
.value(literal)
206+
)
207+
)
208+
)._toQuery(),
209+
null
210+
),
197211
credit_contains(
198212
StacSummeries.Credits.searchField,
199213
StacSummeries.Credits.displayField,

server/src/main/java/au/org/aodn/ogcapi/server/core/model/enumeration/StacBasicField.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public enum StacBasicField {
2222
),
2323
Links("links", "links"),
2424
LinksTitle("links.title", "links.title"),
25+
LinksAiRole("links.ai:role", "links.ai:role"),
2526
Collection("collection", "collection", "collection.keyword"),
2627
AssetsSummary("assets", "assets"),
2728
Themes("themes", "themes")

server/src/test/java/au/org/aodn/ogcapi/server/core/mapper/StacToCollectionTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ public void verifyAddingPropertyWorks() {
7878
.type("text/html")
7979
.title("Data Link")
8080
.aiGroup("data-access")
81+
.aiRole(List.of("download"))
8182
.description("description")
8283
.build();
8384
var link2 = LinkModel.builder()
@@ -160,6 +161,13 @@ public void verifyAddingPropertyWorks() {
160161
Assertions.assertEquals(parameterVocabs, collection.getProperties().get(CollectionProperty.parameterVocabs));
161162
Assertions.assertNotNull(collection.getLinks());
162163
Assertions.assertEquals(3, collection.getLinks().size());
164+
165+
ExtendedLink convertedLink1 = (ExtendedLink) collection.getLinks().stream()
166+
.filter(l -> "related".equals(l.getRel()))
167+
.findFirst()
168+
.orElseThrow();
169+
170+
Assertions.assertEquals(List.of("download"), convertedLink1.getAiRole());
163171
}
164172

165173
@Test

server/src/test/resources/portal_records_index_schema.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,9 @@
182182
},
183183
"ai:group": {
184184
"type": "keyword"
185+
},
186+
"ai:role": {
187+
"type": "keyword"
185188
}
186189
}
187190
}

0 commit comments

Comments
 (0)