From 312fcc900b27e5a23e04b6b68c0ff3d41fe4e67e Mon Sep 17 00:00:00 2001 From: Stephan Richter <github@keawe.de> Date: Thu, 24 Dec 2020 15:05:34 +0100 Subject: [PATCH] added AndCondition --- pom.xml | 2 +- .../translations/Application.de.translation | 1 + .../srsoftware/web4rail/actions/BrakeStop.java | 2 +- .../web4rail/conditions/AndCondition.java | 17 +++++++++++++++++ .../web4rail/conditions/Condition.java | 1 + .../web4rail/conditions/ConditionList.java | 6 +++++- 6 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 src/main/java/de/srsoftware/web4rail/conditions/AndCondition.java diff --git a/pom.xml b/pom.xml index 3953156..8fe0cf2 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>de.srsoftware</groupId> <artifactId>web4rail</artifactId> - <version>1.2.55</version> + <version>1.2.56</version> <name>Web4Rail</name> <packaging>jar</packaging> <description>Java Model Railway Control</description> diff --git a/resources/translations/Application.de.translation b/resources/translations/Application.de.translation index 7e1afe0..0c39e69 100644 --- a/resources/translations/Application.de.translation +++ b/resources/translations/Application.de.translation @@ -20,6 +20,7 @@ Address : Adresse Address\: : Adresse: Analyze : analysieren and : und +AndCondition : Und-Bedingung Apply : Übernehmen Auto pilot : Autopilot AutopilotActive : Autopilot aktiv diff --git a/src/main/java/de/srsoftware/web4rail/actions/BrakeStop.java b/src/main/java/de/srsoftware/web4rail/actions/BrakeStop.java index ab38ac0..e3d94c6 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/BrakeStop.java +++ b/src/main/java/de/srsoftware/web4rail/actions/BrakeStop.java @@ -10,7 +10,7 @@ public class BrakeStop extends Action { @Override public boolean fire(Context context) { - if (isNull(context.route())) return false; + if (isNull(context.route()) || isNull(context.route().train())) return false; context.route().brakeStop(); return true; } diff --git a/src/main/java/de/srsoftware/web4rail/conditions/AndCondition.java b/src/main/java/de/srsoftware/web4rail/conditions/AndCondition.java new file mode 100644 index 0000000..ccbf018 --- /dev/null +++ b/src/main/java/de/srsoftware/web4rail/conditions/AndCondition.java @@ -0,0 +1,17 @@ +package de.srsoftware.web4rail.conditions; + +public class AndCondition extends ConditionList{ + + @Override + public boolean fulfilledBy(Context context) { + for (Condition condition : this) { + if (!condition.fulfilledBy(context)) return false; + } + return true; + } + + @Override + protected String glue() { + return t("and"); + } +} diff --git a/src/main/java/de/srsoftware/web4rail/conditions/Condition.java b/src/main/java/de/srsoftware/web4rail/conditions/Condition.java index 98c933b..24ed3fc 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/Condition.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/Condition.java @@ -114,6 +114,7 @@ public abstract class Condition extends BaseClass { private static List<Class<? extends Condition>> list() { return List.of( + AndCondition.class, AutopilotActive.class, BlockFree.class, CarInTrain.class, diff --git a/src/main/java/de/srsoftware/web4rail/conditions/ConditionList.java b/src/main/java/de/srsoftware/web4rail/conditions/ConditionList.java index 234fb21..9ec1ffc 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/ConditionList.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/ConditionList.java @@ -148,7 +148,11 @@ public class ConditionList extends Condition implements Iterable<Condition>{ if (conditions.isEmpty()) return "["+t("Click here to add conditions")+"]"; StringBuffer sb = new StringBuffer(conditions.firstElement().toString()); String glue = glue(); - for (int i=1; i<conditions.size(); i++) sb.append(" ").append(glue).append(" "+conditions.get(i)); + for (int i=1; i<conditions.size(); i++) { + Condition condition = conditions.get(i); + String cString = condition instanceof ConditionList ? " ("+condition+")" : " "+condition; + sb.append(" ").append(glue).append(cString); + } return sb.toString(); } }