From c6f627be87bede6e80fae920a7941311738b13f0 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Thu, 20 Feb 2020 17:59:10 +0100 Subject: [PATCH] [New] Added IActivityElement.findParent(Predicate) --- .../strolch/model/activity/IActivityElement.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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 b329f8ac4..d8ef9f4a8 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 @@ -15,6 +15,8 @@ */ package li.strolch.model.activity; +import java.util.function.Predicate; + import li.strolch.exception.StrolchModelException; import li.strolch.model.GroupedParameterizedElement; import li.strolch.model.State; @@ -148,4 +150,16 @@ public interface IActivityElement extends StrolchElement { * @return the result of the visitor being accepted */ T accept(StrolchElementVisitor visitor); + + default Activity findParent(Predicate predicate) { + + Activity parent = getParent(); + while (parent != null && !predicate.test(parent)) + parent = parent.getParent(); + + if (parent == null) + throw new StrolchModelException(getLocator() + " has no parent where predicate " + predicate + " is true!"); + + return parent; + } }