From 7c778d334ab497b0e627c00d95913064e575aebd Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Wed, 14 Nov 2018 13:43:41 +0100 Subject: [PATCH] [New] Allow to search activities and order by state in inspector --- .../java/li/strolch/search/SearchBuilder.java | 16 +++++++++++++++- .../src/main/java/li/strolch/model/State.java | 11 ++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/li.strolch.agent/src/main/java/li/strolch/search/SearchBuilder.java b/li.strolch.agent/src/main/java/li/strolch/search/SearchBuilder.java index 80f92f188..1d600e98c 100644 --- a/li.strolch.agent/src/main/java/li/strolch/search/SearchBuilder.java +++ b/li.strolch.agent/src/main/java/li/strolch/search/SearchBuilder.java @@ -6,6 +6,7 @@ import static li.strolch.search.PredicatesSupport.isEqualTo; import static li.strolch.utils.helper.StringHelper.trimOrEmpty; import li.strolch.model.ParameterBag; +import li.strolch.model.State; import li.strolch.model.StrolchRootElement; import li.strolch.model.Tags; import li.strolch.model.parameter.Parameter; @@ -112,7 +113,20 @@ public class SearchBuilder { String[] paramParts = parseParts(part); if (paramParts.length != 3) { - se = add(and, negate, se, id(containsIgnoreCase(part)).or(name(containsIgnoreCase(part)))); + + SearchExpression expression; + if (part.startsWith("$state") && (search instanceof OrderSearch || search instanceof ActivitySearch)) { + part = part.substring("$state".length() + 1); + if (part.isEmpty() || State.parseAllowNull(part) == null) { + expression = id(containsIgnoreCase(part)).or(name(containsIgnoreCase(part))); + } else { + expression = state(isEqualTo(part)); + } + } else { + expression = id(containsIgnoreCase(part)).or(name(containsIgnoreCase(part))); + } + + se = add(and, negate, se, expression); } else { String bagId = paramParts[0]; String paramId = paramParts[1]; diff --git a/li.strolch.model/src/main/java/li/strolch/model/State.java b/li.strolch.model/src/main/java/li/strolch/model/State.java index 56645dfd2..c84171e25 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/State.java +++ b/li.strolch.model/src/main/java/li/strolch/model/State.java @@ -161,7 +161,7 @@ public enum State { } /** - * @return true if {@link #STARTING} or {@link #EXECUTION} or {@link #WARNING} + * @return true if {@link #EXECUTION} or {@link #WARNING} */ public boolean canSetToError() { return this == EXECUTION || this == WARNING || this == ERROR; @@ -174,6 +174,15 @@ public enum State { return this == EXECUTION || this == WARNING || this == STOPPED; } + public static State parseAllowNull(String s) { + for (State state : values()) { + if (state.state.toLowerCase().equals(s.toLowerCase())) + return state; + } + + return null; + } + public static State parse(String s) { DBC.PRE.assertNotEmpty("Value may not be null", s); for (State state : values()) {