From 17cd3e43c79f43d1d35e5918ff8c68eaf9e00b38 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Thu, 2 Jul 2020 15:52:17 +0200 Subject: [PATCH] [New] Added stream to MapOf... collections --- .../rest/endpoint/StrolchJobsResource.java | 2 +- .../BasePlanningAndExecutionCommand.java | 2 +- .../execution/policy/DurationExecution.java | 4 +- .../policy/RandomDurationExecution.java | 4 +- .../policy/ReservationExecution.java | 2 +- .../policy/ToErrorReservationExecution.java | 2 +- .../strolch/report/policy/GenericReport.java | 7 ++- .../execution/ReservationExecutionTest.java | 2 +- .../li/strolch/service/TxExtendedTest.java | 20 ++++---- .../service/test/XmlExportServiceTest.java | 4 +- .../strolch/utils/collections/MapOfLists.java | 5 ++ .../strolch/utils/collections/MapOfMaps.java | 5 ++ .../strolch/utils/collections/MapOfSets.java | 5 ++ .../collections/SynchronizedCollections.java | 48 +++++++++++++++++++ 14 files changed, 87 insertions(+), 25 deletions(-) diff --git a/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/StrolchJobsResource.java b/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/StrolchJobsResource.java index 07c1e73bc..b4518c103 100644 --- a/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/StrolchJobsResource.java +++ b/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/StrolchJobsResource.java @@ -18,7 +18,7 @@ package li.strolch.rest.endpoint; import static java.util.Comparator.comparing; import static java.util.stream.Collectors.toList; import static li.strolch.rest.StrolchRestfulConstants.DATA; -import static li.strolch.runtime.StrolchConstants.ROLE_STROLCH_ADMIN; +import static li.strolch.model.StrolchModelConstants.ROLE_STROLCH_ADMIN; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.*; diff --git a/li.strolch.service/src/main/java/li/strolch/execution/command/BasePlanningAndExecutionCommand.java b/li.strolch.service/src/main/java/li/strolch/execution/command/BasePlanningAndExecutionCommand.java index aa8a24478..84416d61a 100644 --- a/li.strolch.service/src/main/java/li/strolch/execution/command/BasePlanningAndExecutionCommand.java +++ b/li.strolch.service/src/main/java/li/strolch/execution/command/BasePlanningAndExecutionCommand.java @@ -2,7 +2,7 @@ package li.strolch.execution.command; import static li.strolch.execution.policy.ConfirmationPolicy.DEFAULT_CONFIRMATION; import static li.strolch.execution.policy.NoPlanning.DEFAULT_PLANNING; -import static li.strolch.runtime.StrolchConstants.PolicyConstants.PARAM_ORDER; +import static li.strolch.model.StrolchModelConstants.PolicyConstants.PARAM_ORDER; import li.strolch.execution.policy.ConfirmationPolicy; import li.strolch.execution.policy.PlanningPolicy; diff --git a/li.strolch.service/src/main/java/li/strolch/execution/policy/DurationExecution.java b/li.strolch.service/src/main/java/li/strolch/execution/policy/DurationExecution.java index 6df402f69..053128ea7 100644 --- a/li.strolch.service/src/main/java/li/strolch/execution/policy/DurationExecution.java +++ b/li.strolch.service/src/main/java/li/strolch/execution/policy/DurationExecution.java @@ -1,7 +1,7 @@ package li.strolch.execution.policy; -import static li.strolch.runtime.StrolchConstants.PolicyConstants.BAG_OBJECTIVES; -import static li.strolch.runtime.StrolchConstants.PolicyConstants.PARAM_DURATION; +import static li.strolch.model.StrolchModelConstants.PolicyConstants.BAG_OBJECTIVES; +import static li.strolch.model.StrolchModelConstants.PolicyConstants.PARAM_DURATION; import li.strolch.model.activity.Action; import li.strolch.model.parameter.DurationParameter; diff --git a/li.strolch.service/src/main/java/li/strolch/execution/policy/RandomDurationExecution.java b/li.strolch.service/src/main/java/li/strolch/execution/policy/RandomDurationExecution.java index b977a9936..c0557d407 100644 --- a/li.strolch.service/src/main/java/li/strolch/execution/policy/RandomDurationExecution.java +++ b/li.strolch.service/src/main/java/li/strolch/execution/policy/RandomDurationExecution.java @@ -1,7 +1,7 @@ package li.strolch.execution.policy; -import static li.strolch.runtime.StrolchConstants.PolicyConstants.BAG_OBJECTIVES; -import static li.strolch.runtime.StrolchConstants.PolicyConstants.PARAM_DURATION; +import static li.strolch.model.StrolchModelConstants.PolicyConstants.BAG_OBJECTIVES; +import static li.strolch.model.StrolchModelConstants.PolicyConstants.PARAM_DURATION; import java.util.concurrent.TimeUnit; diff --git a/li.strolch.service/src/main/java/li/strolch/execution/policy/ReservationExecution.java b/li.strolch.service/src/main/java/li/strolch/execution/policy/ReservationExecution.java index 59aa469ce..9d661d4fe 100644 --- a/li.strolch.service/src/main/java/li/strolch/execution/policy/ReservationExecution.java +++ b/li.strolch.service/src/main/java/li/strolch/execution/policy/ReservationExecution.java @@ -1,7 +1,7 @@ package li.strolch.execution.policy; import static li.strolch.model.StrolchModelConstants.BAG_PARAMETERS; -import static li.strolch.runtime.StrolchConstants.PolicyConstants.*; +import static li.strolch.model.StrolchModelConstants.PolicyConstants.*; import li.strolch.exception.StrolchModelException; import li.strolch.model.Resource; diff --git a/li.strolch.service/src/main/java/li/strolch/execution/policy/ToErrorReservationExecution.java b/li.strolch.service/src/main/java/li/strolch/execution/policy/ToErrorReservationExecution.java index 35a36b0fa..3ea007e89 100644 --- a/li.strolch.service/src/main/java/li/strolch/execution/policy/ToErrorReservationExecution.java +++ b/li.strolch.service/src/main/java/li/strolch/execution/policy/ToErrorReservationExecution.java @@ -1,6 +1,6 @@ package li.strolch.execution.policy; -import static li.strolch.runtime.StrolchConstants.PolicyConstants.TYPE_RESERVE; +import static li.strolch.model.StrolchModelConstants.PolicyConstants.TYPE_RESERVE; import java.util.ResourceBundle; diff --git a/li.strolch.service/src/main/java/li/strolch/report/policy/GenericReport.java b/li.strolch.service/src/main/java/li/strolch/report/policy/GenericReport.java index 50fe04ea9..93a518d06 100644 --- a/li.strolch.service/src/main/java/li/strolch/report/policy/GenericReport.java +++ b/li.strolch.service/src/main/java/li/strolch/report/policy/GenericReport.java @@ -24,7 +24,6 @@ import li.strolch.persistence.api.StrolchTransaction; import li.strolch.policy.PolicyHandler; import li.strolch.report.ReportConstants; import li.strolch.report.ReportElement; -import li.strolch.runtime.StrolchConstants; import li.strolch.utils.ObjectHelper; import li.strolch.utils.collections.DateRange; import li.strolch.utils.collections.MapOfLists; @@ -757,11 +756,11 @@ public class GenericReport extends ReportPolicy { private Stream getStreamFor(StringParameter objectTypeP) { switch (objectTypeP.getInterpretation()) { - case StrolchConstants.INTERPRETATION_RESOURCE_REF: + case INTERPRETATION_RESOURCE_REF: return tx().streamResources(objectTypeP.getUom()); - case StrolchConstants.INTERPRETATION_ORDER_REF: + case INTERPRETATION_ORDER_REF: return tx().streamOrders(objectTypeP.getUom()); - case StrolchConstants.INTERPRETATION_ACTIVITY_REF: + case INTERPRETATION_ACTIVITY_REF: return tx().streamActivities(objectTypeP.getUom()); default: throw new IllegalArgumentException("Unhandled element type " + objectTypeP.getInterpretation()); diff --git a/li.strolch.service/src/test/java/li/strolch/execution/ReservationExecutionTest.java b/li.strolch.service/src/test/java/li/strolch/execution/ReservationExecutionTest.java index 598fce150..770450434 100644 --- a/li.strolch.service/src/test/java/li/strolch/execution/ReservationExecutionTest.java +++ b/li.strolch.service/src/test/java/li/strolch/execution/ReservationExecutionTest.java @@ -1,7 +1,7 @@ package li.strolch.execution; import static li.strolch.model.StrolchModelConstants.BAG_PARAMETERS; -import static li.strolch.runtime.StrolchConstants.PolicyConstants.PARAM_RESERVED; +import static li.strolch.model.StrolchModelConstants.PolicyConstants.PARAM_RESERVED; import static org.junit.Assert.*; import java.io.File; diff --git a/li.strolch.service/src/test/java/li/strolch/service/TxExtendedTest.java b/li.strolch.service/src/test/java/li/strolch/service/TxExtendedTest.java index 3a5d2c270..f93434937 100644 --- a/li.strolch.service/src/test/java/li/strolch/service/TxExtendedTest.java +++ b/li.strolch.service/src/test/java/li/strolch/service/TxExtendedTest.java @@ -26,12 +26,12 @@ import li.strolch.agent.api.StrolchAgent; import li.strolch.model.ModelGenerator; import li.strolch.model.Order; import li.strolch.model.Resource; +import li.strolch.model.StrolchModelConstants; import li.strolch.model.activity.Activity; import li.strolch.model.activity.TimeOrdering; import li.strolch.model.parameter.StringListParameter; import li.strolch.model.parameter.StringParameter; import li.strolch.persistence.api.StrolchTransaction; -import li.strolch.runtime.StrolchConstants; import li.strolch.service.api.AbstractService; import li.strolch.service.api.Service; import li.strolch.service.api.ServiceArgument; @@ -89,12 +89,12 @@ public class TxExtendedTest extends AbstractRealmServiceTest { } } + public Stream streamValues() { + return this.mapOfLists.values().stream().flatMap(Collection::stream); + } + @Override public boolean equals(Object o) { if (this == o) diff --git a/li.strolch.utils/src/main/java/li/strolch/utils/collections/MapOfMaps.java b/li.strolch.utils/src/main/java/li/strolch/utils/collections/MapOfMaps.java index 148c6bd5e..2ec70b283 100644 --- a/li.strolch.utils/src/main/java/li/strolch/utils/collections/MapOfMaps.java +++ b/li.strolch.utils/src/main/java/li/strolch/utils/collections/MapOfMaps.java @@ -19,6 +19,7 @@ import java.util.*; import java.util.Map.Entry; import java.util.function.BiConsumer; import java.util.function.Function; +import java.util.stream.Stream; /** *

@@ -243,6 +244,10 @@ public class MapOfMaps { } } + public Stream streamValues() { + return this.mapOfMaps.values().stream().flatMap(uvMap -> uvMap.values().stream()); + } + @Override public boolean equals(Object o) { if (this == o) diff --git a/li.strolch.utils/src/main/java/li/strolch/utils/collections/MapOfSets.java b/li.strolch.utils/src/main/java/li/strolch/utils/collections/MapOfSets.java index 8273ef1af..eb2afa2a0 100644 --- a/li.strolch.utils/src/main/java/li/strolch/utils/collections/MapOfSets.java +++ b/li.strolch.utils/src/main/java/li/strolch/utils/collections/MapOfSets.java @@ -19,6 +19,7 @@ import java.util.*; import java.util.Map.Entry; import java.util.function.BiConsumer; import java.util.function.Function; +import java.util.stream.Stream; /** * @author Robert von Burg <eitch@eitchnet.ch> @@ -186,6 +187,10 @@ public class MapOfSets { } } + public Stream streamValues() { + return this.mapOfSets.values().stream().flatMap(Collection::stream); + } + @Override public boolean equals(Object o) { if (this == o) diff --git a/li.strolch.utils/src/main/java/li/strolch/utils/collections/SynchronizedCollections.java b/li.strolch.utils/src/main/java/li/strolch/utils/collections/SynchronizedCollections.java index acb4c4116..4fb1fe354 100644 --- a/li.strolch.utils/src/main/java/li/strolch/utils/collections/SynchronizedCollections.java +++ b/li.strolch.utils/src/main/java/li/strolch/utils/collections/SynchronizedCollections.java @@ -164,6 +164,22 @@ public class SynchronizedCollections { this.m.forEach(action); } } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + synchronized (this.mutex) { + return this.m.equals(o); + } + } + + @Override + public int hashCode() { + synchronized (this.mutex) { + return this.m.hashCode(); + } + } } private static class SynchronizedMapOfMaps extends MapOfMaps { @@ -330,6 +346,22 @@ public class SynchronizedCollections { this.m.forEach(action); } } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + synchronized (this.mutex) { + return this.m.equals(o); + } + } + + @Override + public int hashCode() { + synchronized (this.mutex) { + return this.m.hashCode(); + } + } } private static class SynchronizedMapOfSets extends MapOfSets { @@ -635,6 +667,22 @@ public class SynchronizedCollections { s.defaultWriteObject(); } } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + synchronized (this.mutex) { + return this.c.equals(o); + } + } + + @Override + public int hashCode() { + synchronized (this.mutex) { + return this.c.hashCode(); + } + } } private static class SynchronizedList extends SynchronizedCollection implements List {