Adjust to core changes (#14952)
Signed-off-by: Jan N. Klug <github@klug.nrw>
This commit is contained in:
@@ -384,6 +384,10 @@ public class DynamoDBPersistenceService implements QueryablePersistenceService {
|
||||
// Proceed with query
|
||||
//
|
||||
String itemName = filter.getItemName();
|
||||
if (itemName == null) {
|
||||
logger.warn("Item name is missing in filter {}", filter);
|
||||
return List.of();
|
||||
}
|
||||
Item item = getItemFromRegistry(itemName);
|
||||
if (item == null) {
|
||||
logger.warn("Could not get item {} from registry! Returning empty query results.", itemName);
|
||||
|
||||
@@ -54,7 +54,11 @@ public class DynamoDBQueryUtils {
|
||||
}
|
||||
QueryEnhancedRequest.Builder queryBuilder = QueryEnhancedRequest.builder()
|
||||
.scanIndexForward(filter.getOrdering() == Ordering.ASCENDING);
|
||||
addFilterbyItemAndTimeFilter(queryBuilder, expectedTableSchema, filter.getItemName(), filter);
|
||||
String itemName = filter.getItemName();
|
||||
if (itemName == null) {
|
||||
throw new IllegalArgumentException("Item name not set");
|
||||
}
|
||||
addFilterbyItemAndTimeFilter(queryBuilder, expectedTableSchema, itemName, filter);
|
||||
addStateFilter(queryBuilder, expectedTableSchema, item, dtoClass, filter);
|
||||
addProjection(dtoClass, expectedTableSchema, queryBuilder);
|
||||
return queryBuilder.build();
|
||||
@@ -154,26 +158,25 @@ public class DynamoDBQueryUtils {
|
||||
|
||||
private static void addFilterbyItemAndTimeFilter(QueryEnhancedRequest.Builder queryBuilder,
|
||||
ExpectedTableSchema expectedTableSchema, String partition, final FilterCriteria filter) {
|
||||
boolean hasBegin = filter.getBeginDate() != null;
|
||||
boolean hasEnd = filter.getEndDate() != null;
|
||||
ZonedDateTime begin = filter.getBeginDate();
|
||||
ZonedDateTime end = filter.getEndDate();
|
||||
boolean legacy = expectedTableSchema == ExpectedTableSchema.LEGACY;
|
||||
|
||||
AttributeConverter<ZonedDateTime> timeConverter = AbstractDynamoDBItem.getTimestampConverter(legacy);
|
||||
|
||||
if (!hasBegin && !hasEnd) {
|
||||
// No need to place time filter filter but we do filter by partition
|
||||
if (begin == null && end == null) {
|
||||
// No need to place time filter, but we do filter by partition
|
||||
queryBuilder.queryConditional(QueryConditional.keyEqualTo(k -> k.partitionValue(partition)));
|
||||
} else if (hasBegin && !hasEnd) {
|
||||
queryBuilder.queryConditional(QueryConditional.sortGreaterThan(
|
||||
k -> k.partitionValue(partition).sortValue(timeConverter.transformFrom(filter.getBeginDate()))));
|
||||
} else if (!hasBegin && hasEnd) {
|
||||
queryBuilder.queryConditional(QueryConditional.sortLessThan(
|
||||
k -> k.partitionValue(partition).sortValue(timeConverter.transformFrom(filter.getEndDate()))));
|
||||
} else {
|
||||
assert hasBegin && hasEnd; // invariant
|
||||
} else if (begin != null && end == null) {
|
||||
queryBuilder.queryConditional(QueryConditional
|
||||
.sortGreaterThan(k -> k.partitionValue(partition).sortValue(timeConverter.transformFrom(begin))));
|
||||
} else if (begin == null && end != null) {
|
||||
queryBuilder.queryConditional(QueryConditional
|
||||
.sortLessThan(k -> k.partitionValue(partition).sortValue(timeConverter.transformFrom(end))));
|
||||
} else if (begin != null && end != null) {
|
||||
queryBuilder.queryConditional(QueryConditional.sortBetween(
|
||||
k -> k.partitionValue(partition).sortValue(timeConverter.transformFrom(filter.getBeginDate())),
|
||||
k -> k.partitionValue(partition).sortValue(timeConverter.transformFrom(filter.getEndDate()))));
|
||||
k -> k.partitionValue(partition).sortValue(timeConverter.transformFrom(begin)),
|
||||
k -> k.partitionValue(partition).sortValue(timeConverter.transformFrom(end))));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -317,7 +317,10 @@ public abstract class AbstractTwoItemIntegrationTest extends BaseIntegrationTest
|
||||
|
||||
FilterCriteria criteria = new FilterCriteria();
|
||||
criteria.setOperator(Operator.GT);
|
||||
criteria.setState(getQueryItemStateBetween());
|
||||
State filterState = getQueryItemStateBetween();
|
||||
if (filterState != null) {
|
||||
criteria.setState(filterState);
|
||||
}
|
||||
criteria.setItemName(getItemName());
|
||||
criteria.setBeginDate(beforeStore);
|
||||
criteria.setEndDate(afterStore2);
|
||||
|
||||
@@ -19,6 +19,7 @@ import java.time.ZonedDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
@@ -70,7 +71,7 @@ public class PagingIntegrationTest extends BaseIntegrationTest {
|
||||
waitForAssert(() -> {
|
||||
FilterCriteria criteria = new FilterCriteria();
|
||||
criteria.setItemName(NAME);
|
||||
criteria.setBeginDate(storeStart);
|
||||
criteria.setBeginDate(Objects.requireNonNull(storeStart));
|
||||
criteria.setOrdering(Ordering.ASCENDING);
|
||||
criteria.setPageNumber(0);
|
||||
criteria.setPageSize(3);
|
||||
@@ -84,7 +85,7 @@ public class PagingIntegrationTest extends BaseIntegrationTest {
|
||||
waitForAssert(() -> {
|
||||
FilterCriteria criteria = new FilterCriteria();
|
||||
criteria.setItemName(NAME);
|
||||
criteria.setBeginDate(storeStart);
|
||||
criteria.setBeginDate(Objects.requireNonNull(storeStart));
|
||||
criteria.setOrdering(Ordering.ASCENDING);
|
||||
criteria.setPageNumber(1);
|
||||
criteria.setPageSize(3);
|
||||
@@ -98,7 +99,7 @@ public class PagingIntegrationTest extends BaseIntegrationTest {
|
||||
waitForAssert(() -> {
|
||||
FilterCriteria criteria = new FilterCriteria();
|
||||
criteria.setItemName(NAME);
|
||||
criteria.setBeginDate(storeStart);
|
||||
criteria.setBeginDate(Objects.requireNonNull(storeStart));
|
||||
criteria.setOrdering(Ordering.ASCENDING);
|
||||
criteria.setPageNumber(3);
|
||||
criteria.setPageSize(3);
|
||||
@@ -112,7 +113,7 @@ public class PagingIntegrationTest extends BaseIntegrationTest {
|
||||
waitForAssert(() -> {
|
||||
FilterCriteria criteria = new FilterCriteria();
|
||||
criteria.setItemName(NAME);
|
||||
criteria.setBeginDate(storeStart);
|
||||
criteria.setBeginDate(Objects.requireNonNull(storeStart));
|
||||
criteria.setOrdering(Ordering.ASCENDING);
|
||||
criteria.setPageNumber(4);
|
||||
criteria.setPageSize(3);
|
||||
@@ -126,7 +127,7 @@ public class PagingIntegrationTest extends BaseIntegrationTest {
|
||||
waitForAssert(() -> {
|
||||
FilterCriteria criteria = new FilterCriteria();
|
||||
criteria.setItemName(NAME);
|
||||
criteria.setBeginDate(storeStart);
|
||||
criteria.setBeginDate(Objects.requireNonNull(storeStart));
|
||||
criteria.setOrdering(Ordering.DESCENDING);
|
||||
criteria.setPageNumber(0);
|
||||
criteria.setPageSize(3);
|
||||
@@ -140,7 +141,7 @@ public class PagingIntegrationTest extends BaseIntegrationTest {
|
||||
waitForAssert(() -> {
|
||||
FilterCriteria criteria = new FilterCriteria();
|
||||
criteria.setItemName(NAME);
|
||||
criteria.setBeginDate(storeStart);
|
||||
criteria.setBeginDate(Objects.requireNonNull(storeStart));
|
||||
criteria.setOrdering(Ordering.ASCENDING);
|
||||
criteria.setPageNumber(0);
|
||||
criteria.setPageSize(900);
|
||||
@@ -154,7 +155,7 @@ public class PagingIntegrationTest extends BaseIntegrationTest {
|
||||
waitForAssert(() -> {
|
||||
FilterCriteria criteria = new FilterCriteria();
|
||||
criteria.setItemName(NAME);
|
||||
criteria.setBeginDate(storeStart);
|
||||
criteria.setBeginDate(Objects.requireNonNull(storeStart));
|
||||
criteria.setOrdering(Ordering.ASCENDING);
|
||||
criteria.setPageNumber(0);
|
||||
criteria.setPageSize(3);
|
||||
|
||||
@@ -337,8 +337,12 @@ public class TestComplexItemsWithDifferentStateTypesTest extends BaseIntegration
|
||||
FilterCriteria criteria = new FilterCriteria();
|
||||
criteria.setOrdering(Ordering.ASCENDING);
|
||||
criteria.setItemName(item);
|
||||
criteria.setOperator(operator);
|
||||
criteria.setState(state);
|
||||
if (operator != null) {
|
||||
criteria.setOperator(operator);
|
||||
}
|
||||
if (state != null) {
|
||||
criteria.setState(state);
|
||||
}
|
||||
@SuppressWarnings("null")
|
||||
Iterable<HistoricItem> iterable = BaseIntegrationTest.service.query(criteria);
|
||||
List<State> actualStatesList = new ArrayList<>();
|
||||
|
||||
Reference in New Issue
Block a user