Adjust to core changes (#14952)

Signed-off-by: Jan N. Klug <github@klug.nrw>
This commit is contained in:
J-N-K
2023-05-08 09:35:36 +02:00
committed by GitHub
parent 5fe6d325a3
commit c3a9a4c7b6
14 changed files with 124 additions and 80 deletions

View File

@@ -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);

View File

@@ -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))));
}
}

View File

@@ -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);

View File

@@ -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);

View File

@@ -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<>();