From 83a947e04b341f15f7bc89fd165447ead27fe395 Mon Sep 17 00:00:00 2001
From: Robert von Burg
Date: Fri, 14 Feb 2020 16:22:59 +0100
Subject: [PATCH] [New] Added IActivityElement.findPolicy()
---
.../li/strolch/model/activity/Action.java | 21 +++++++++
.../li/strolch/model/activity/Activity.java | 21 +++++++++
.../model/activity/IActivityElement.java | 45 +++++++++++++++++--
.../model/activity/TimeOrderingVisitor.java | 4 +-
4 files changed, 86 insertions(+), 5 deletions(-)
diff --git a/li.strolch.model/src/main/java/li/strolch/model/activity/Action.java b/li.strolch.model/src/main/java/li/strolch/model/activity/Action.java
index c810bf520..2bfe0f7db 100644
--- a/li.strolch.model/src/main/java/li/strolch/model/activity/Action.java
+++ b/li.strolch.model/src/main/java/li/strolch/model/activity/Action.java
@@ -343,6 +343,27 @@ public class Action extends GroupedParameterizedElement implements IActivityElem
return parameter;
}
+ @Override
+ public PolicyDef findPolicy(Class> clazz, PolicyDef defaultDef) throws StrolchModelException {
+ return findPolicy(clazz.getSimpleName(), defaultDef);
+ }
+
+ @Override
+ public PolicyDef findPolicy(String className, PolicyDef defaultDef) throws StrolchModelException {
+ if (hasPolicyDef(className))
+ return getPolicyDef(className);
+
+ if (this.parent == null) {
+ if (defaultDef != null)
+ return defaultDef;
+
+ String msg = "The PolicyDef {0} does not exist";
+ throw new StrolchModelException(MessageFormat.format(msg, className));
+ }
+
+ return this.parent.findPolicy(className, defaultDef);
+ }
+
@Override
public T accept(StrolchElementVisitor visitor) {
return visitor.visitAction(this);
diff --git a/li.strolch.model/src/main/java/li/strolch/model/activity/Activity.java b/li.strolch.model/src/main/java/li/strolch/model/activity/Activity.java
index b509ca6d3..1e8583ee2 100644
--- a/li.strolch.model/src/main/java/li/strolch/model/activity/Activity.java
+++ b/li.strolch.model/src/main/java/li/strolch/model/activity/Activity.java
@@ -601,6 +601,27 @@ public class Activity extends AbstractStrolchRootElement
return parameter;
}
+ @Override
+ public PolicyDef findPolicy(Class> clazz, PolicyDef defaultDef) throws StrolchModelException {
+ return findPolicy(clazz.getSimpleName(), defaultDef);
+ }
+
+ @Override
+ public PolicyDef findPolicy(String className, PolicyDef defaultDef) throws StrolchModelException {
+ if (hasPolicyDef(className))
+ return getPolicyDef(className);
+
+ if (this.parent == null) {
+ if (defaultDef != null)
+ return defaultDef;
+
+ String msg = "The PolicyDef {0} does not exist";
+ throw new StrolchModelException(MessageFormat.format(msg, className));
+ }
+
+ return this.parent.findPolicy(className, defaultDef);
+ }
+
@Override
public void setParent(Activity activity) {
assertNotReadonly();
diff --git a/li.strolch.model/src/main/java/li/strolch/model/activity/IActivityElement.java b/li.strolch.model/src/main/java/li/strolch/model/activity/IActivityElement.java
index f9f8b50aa..b329f8ac4 100644
--- a/li.strolch.model/src/main/java/li/strolch/model/activity/IActivityElement.java
+++ b/li.strolch.model/src/main/java/li/strolch/model/activity/IActivityElement.java
@@ -20,6 +20,7 @@ import li.strolch.model.GroupedParameterizedElement;
import li.strolch.model.State;
import li.strolch.model.StrolchElement;
import li.strolch.model.parameter.Parameter;
+import li.strolch.model.policy.PolicyDef;
import li.strolch.model.visitor.StrolchElementVisitor;
/**
@@ -83,14 +84,52 @@ public interface IActivityElement extends StrolchElement {
*
*
*
- * If the parameter does not exist and {@code assertExists} is true, then an
+ * If the parameter does not exist and {@code assertExists} is true, then a {@link StrolchModelException} is thrown
*
- *
- * @see GroupedParameterizedElement#getParameter(String, String, boolean)
*/
> T findParameter(String bagKey, String paramKey, boolean assertExists)
throws StrolchModelException;
+ /**
+ *
+ * Checks if this element contains the {@link PolicyDef}, or otherwise queries its parent, until the root element is
+ * reached.
+ *
+ *
+ *
+ * If the policy def does not exist and no default policy is passed, then a {@link StrolchModelException} is thrown
+ *
+ *
+ * @param className
+ * the class name of the policy to find
+ * @param defaultDef
+ * default {@link PolicyDef} to return if not found
+ *
+ * @throws StrolchModelException
+ * if no default policy, and policy not found
+ */
+ PolicyDef findPolicy(String className, PolicyDef defaultDef) throws StrolchModelException;
+
+ /**
+ *
+ * Checks if this element contains the {@link PolicyDef}, or otherwise queries its parent, until the root element is
+ * reached.
+ *
+ *
+ *
+ * If the policy def does not exist and no default policy is passed, then a {@link StrolchModelException} is thrown
+ *
+ *
+ * @param clazz
+ * the class of the policy to find
+ * @param defaultDef
+ * default {@link PolicyDef} to return if not found
+ *
+ * @throws StrolchModelException
+ * if no default policy, and policy not found
+ */
+ PolicyDef findPolicy(Class> clazz, PolicyDef defaultDef) throws StrolchModelException;
+
@Override
Activity getParent();
diff --git a/li.strolch.model/src/main/java/li/strolch/model/activity/TimeOrderingVisitor.java b/li.strolch.model/src/main/java/li/strolch/model/activity/TimeOrderingVisitor.java
index 21317a26e..231079866 100644
--- a/li.strolch.model/src/main/java/li/strolch/model/activity/TimeOrderingVisitor.java
+++ b/li.strolch.model/src/main/java/li/strolch/model/activity/TimeOrderingVisitor.java
@@ -2,7 +2,7 @@ package li.strolch.model.activity;
public interface TimeOrderingVisitor {
- public void visitSeries(Activity activity);
+ void visitSeries(Activity activity);
- public void visitParallel(Activity activity);
+ void visitParallel(Activity activity);
}