diff --git a/agent/src/main/java/li/strolch/search/ActivitySearch.java b/agent/src/main/java/li/strolch/search/ActivitySearch.java index 75e731d91..a40e77014 100644 --- a/agent/src/main/java/li/strolch/search/ActivitySearch.java +++ b/agent/src/main/java/li/strolch/search/ActivitySearch.java @@ -1,11 +1,13 @@ package li.strolch.search; -import static li.strolch.model.StrolchModelConstants.PolicyConstants.PARAM_ORDER; - import li.strolch.model.Order; import li.strolch.model.activity.Activity; import li.strolch.persistence.api.StrolchTransaction; +import java.util.stream.Stream; + +import static li.strolch.model.StrolchModelConstants.PolicyConstants.PARAM_ORDER; + /** * Performs a search for {@link Activity} elements */ @@ -20,7 +22,13 @@ public class ActivitySearch extends StrolchSearch { @Override public ActivitySearch types(String... types) { - this.navigator = tx -> tx.streamActivities(types); + this.navigator = tx -> { + Stream cachedStream = tx.streamCachedActivities(types); + Stream stream = tx + .streamActivities(types) + .filter(e -> !tx.isActivityCached(e.getType(), e.getId())); + return Stream.concat(cachedStream, stream); + }; return this; } diff --git a/agent/src/main/java/li/strolch/search/OrderSearch.java b/agent/src/main/java/li/strolch/search/OrderSearch.java index 866bb964b..1aa480f90 100644 --- a/agent/src/main/java/li/strolch/search/OrderSearch.java +++ b/agent/src/main/java/li/strolch/search/OrderSearch.java @@ -6,6 +6,7 @@ import li.strolch.persistence.api.StrolchTransaction; import java.util.Arrays; import java.util.List; +import java.util.stream.Stream; import static java.util.stream.Collectors.toList; @@ -23,7 +24,11 @@ public class OrderSearch extends StrolchSearch { @Override public OrderSearch types(String... types) { - this.navigator = tx -> tx.streamOrders(types); + this.navigator = tx -> { + Stream cachedStream = tx.streamCachedOrders(types); + Stream stream = tx.streamOrders(types).filter(e -> !tx.isOrderCached(e.getType(), e.getId())); + return Stream.concat(cachedStream, stream); + }; return this; } diff --git a/agent/src/main/java/li/strolch/search/ResourceSearch.java b/agent/src/main/java/li/strolch/search/ResourceSearch.java index aeae485e2..2741d9274 100644 --- a/agent/src/main/java/li/strolch/search/ResourceSearch.java +++ b/agent/src/main/java/li/strolch/search/ResourceSearch.java @@ -3,6 +3,8 @@ package li.strolch.search; import li.strolch.model.Resource; import li.strolch.persistence.api.StrolchTransaction; +import java.util.stream.Stream; + /** * Performs a search for {@link Resource} elements */ @@ -17,7 +19,13 @@ public class ResourceSearch extends StrolchSearch { @Override public ResourceSearch types(String... types) { - this.navigator = tx -> tx.streamResources(types); + this.navigator = tx -> { + Stream cachedStream = tx.streamCachedResources(types); + Stream stream = tx + .streamResources(types) + .filter(e -> !tx.isResourceCached(e.getType(), e.getId())); + return Stream.concat(cachedStream, stream); + }; return this; }