From 6ed1255076a7f1c8b9371c09b8089099f4f9b4bc Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Sun, 1 Nov 2020 19:09:05 +0100 Subject: [PATCH] bugfix: conditions not respecting inversion --- pom.xml | 2 +- .../de/srsoftware/web4rail/actions/ConditionalAction.java | 2 +- .../java/de/srsoftware/web4rail/conditions/Condition.java | 3 ++- .../java/de/srsoftware/web4rail/conditions/TrainHasTag.java | 2 +- .../java/de/srsoftware/web4rail/conditions/TrainLength.java | 2 +- .../java/de/srsoftware/web4rail/conditions/TrainSelect.java | 2 +- src/main/java/de/srsoftware/web4rail/moving/Train.java | 4 ++-- 7 files changed, 9 insertions(+), 8 deletions(-) diff --git a/pom.xml b/pom.xml index ac705af..ffe0812 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.srsoftware web4rail - 0.9.10 + 0.9.11 Web4Rail jar Java Model Railway Control diff --git a/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java b/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java index 1c92377..75e8de8 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java +++ b/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java @@ -54,7 +54,7 @@ public class ConditionalAction extends Action { @Override public boolean fire(Context context) throws IOException { for (Condition condition : conditions) { - if (condition.fulfilledBy(context) != condition.inverted) return actions.fire(context); + if (condition.fulfilledBy(context)) return actions.fire(context); } return false; } diff --git a/src/main/java/de/srsoftware/web4rail/conditions/Condition.java b/src/main/java/de/srsoftware/web4rail/conditions/Condition.java index 97a9061..02ba8ba 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/Condition.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/Condition.java @@ -29,7 +29,6 @@ public abstract class Condition implements Constants { private static final String INVERTED = "inverted"; private static final String PREFIX = Condition.class.getPackageName(); private static HashMap conditions = new HashMap(); - public abstract boolean fulfilledBy(Context context); public boolean inverted = false; protected int id; @@ -70,6 +69,8 @@ public abstract class Condition implements Constants { return null; } + public abstract boolean fulfilledBy(Context context); + public int id() { return id; } diff --git a/src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java b/src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java index b6dc232..390602f 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java @@ -17,7 +17,7 @@ public class TrainHasTag extends Condition { @Override public boolean fulfilledBy(Context context) { if (tag == null) return true; - return context.train.tags().contains(tag); + return context.train.tags().contains(tag) != inverted; } @Override diff --git a/src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java b/src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java index 7d2e487..81017d7 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java @@ -17,7 +17,7 @@ public class TrainLength extends Condition { @Override public boolean fulfilledBy(Context context) { - return context.train.length() < maxLength; + return (context.train.length() < maxLength) != inverted; } @Override diff --git a/src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java b/src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java index 4a0232e..3f3c7c2 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java @@ -16,7 +16,7 @@ public class TrainSelect extends Condition { @Override public boolean fulfilledBy(Context context) { - return context.train == train; + return (context.train == train) != inverted; } @Override diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java index 1cf421c..ec4f20a 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Train.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java @@ -38,7 +38,7 @@ import de.srsoftware.web4rail.tags.Select; import de.srsoftware.web4rail.tiles.Block; import de.srsoftware.web4rail.tiles.Signal; -public class Train implements Comparable,Constants { +public class Train implements Comparable,Constants { private static final Logger LOG = LoggerFactory.getLogger(Train.class); private static final HashMap trains = new HashMap<>(); @@ -516,7 +516,7 @@ public class Train implements Comparable,Constants { } @Override - public int compareTo(Object o) { + public int compareTo(Train o) { return name().compareTo(o.toString()); } }