From 5d1a744aee281d87bdebb8eeb13934d73c179e50 Mon Sep 17 00:00:00 2001 From: Michele Rastelli Date: Thu, 9 Jan 2025 20:50:48 +0100 Subject: [PATCH] fixed Arangosearch PrimarySort --- .../entity/arangosearch/PrimarySort.java | 33 +++++++++++++++++++ .../ArangoSearchCreateOptions.java | 10 ++++++ .../java/com/arangodb/ArangoSearchTest.java | 11 +++++-- 3 files changed, 52 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/com/arangodb/entity/arangosearch/PrimarySort.java b/core/src/main/java/com/arangodb/entity/arangosearch/PrimarySort.java index ab0d7c872..742b1d088 100644 --- a/core/src/main/java/com/arangodb/entity/arangosearch/PrimarySort.java +++ b/core/src/main/java/com/arangodb/entity/arangosearch/PrimarySort.java @@ -20,6 +20,9 @@ package com.arangodb.entity.arangosearch; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; + /** * @author Heiko Kernbach */ @@ -28,6 +31,14 @@ public final class PrimarySort { private final String fieldName; private Boolean ascending; + public PrimarySort( + @JsonProperty("field") String field, + @JsonProperty("asc") Boolean asc + ) { + this.fieldName = field; + this.ascending = asc; + } + private PrimarySort(final String fieldName) { super(); this.fieldName = fieldName; @@ -46,11 +57,33 @@ public PrimarySort ascending(final Boolean ascending) { return this; } + @JsonIgnore public Boolean getAscending() { return ascending; } + public Direction getDirection() { + if (ascending == null) { + return null; + } + return ascending ? Direction.asc : Direction.desc; + } + + /** + * @deprecated for removal, use {@link #getField()} instead + */ + @Deprecated + @JsonIgnore public String getFieldName() { + return getField(); + } + + public String getField() { return fieldName; } + + public enum Direction { + asc, + desc + } } diff --git a/core/src/main/java/com/arangodb/model/arangosearch/ArangoSearchCreateOptions.java b/core/src/main/java/com/arangodb/model/arangosearch/ArangoSearchCreateOptions.java index 567c43ca0..1361f9c9d 100644 --- a/core/src/main/java/com/arangodb/model/arangosearch/ArangoSearchCreateOptions.java +++ b/core/src/main/java/com/arangodb/model/arangosearch/ArangoSearchCreateOptions.java @@ -23,6 +23,7 @@ import com.arangodb.entity.ViewType; import com.arangodb.entity.arangosearch.*; import com.arangodb.internal.serde.InternalSerializers; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import java.util.Arrays; @@ -217,7 +218,16 @@ public Collection getLinks() { return links; } + /** + * @deprecated for removal, use {@link #getPrimarySort()} instead + */ + @Deprecated + @JsonIgnore public Collection getPrimarySorts() { + return getPrimarySort(); + } + + public Collection getPrimarySort() { return primarySorts; } diff --git a/test-functional/src/test/java/com/arangodb/ArangoSearchTest.java b/test-functional/src/test/java/com/arangodb/ArangoSearchTest.java index cc0412bbf..0af1e8941 100644 --- a/test-functional/src/test/java/com/arangodb/ArangoSearchTest.java +++ b/test-functional/src/test/java/com/arangodb/ArangoSearchTest.java @@ -154,7 +154,7 @@ void createArangoSearchViewWithPrimarySort(ArangoDatabase db) { final ArangoSearchCreateOptions options = new ArangoSearchCreateOptions(); final PrimarySort primarySort = PrimarySort.on("myFieldName"); - primarySort.ascending(true); + primarySort.ascending(false); options.primarySort(primarySort); options.primarySortCompression(ArangoSearchCompression.none); options.consolidationIntervalMsec(666666L); @@ -179,6 +179,13 @@ void createArangoSearchViewWithPrimarySort(ArangoDatabase db) { assertThat(retrievedStoredValue).isNotNull(); assertThat(retrievedStoredValue.getFields()).isEqualTo(storedValue.getFields()); assertThat(retrievedStoredValue.getCompression()).isEqualTo(storedValue.getCompression()); + assertThat(properties.getPrimarySort()) + .hasSize(1) + .allSatisfy(ps -> { + assertThat(ps).isNotNull(); + assertThat(ps.getField()).isEqualTo(primarySort.getField()); + assertThat(ps.getAscending()).isEqualTo(primarySort.getAscending()); + }); } } @@ -739,7 +746,7 @@ void arangoSearchOptions(ArangoDatabase db) { } if (isEnterprise() && isAtLeastVersion(3, 12)) { - assertThat(properties.getOptimizeTopK()).containsExactly(optimizeTopK); + assertThat(properties.getOptimizeTopK()).containsExactly(optimizeTopK); } }