Browse Source

bugfix: conditions not respecting inversion

lookup-tables
Stephan Richter 5 years ago
parent
commit
6ed1255076
  1. 2
      pom.xml
  2. 2
      src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java
  3. 3
      src/main/java/de/srsoftware/web4rail/conditions/Condition.java
  4. 2
      src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java
  5. 2
      src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java
  6. 2
      src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java
  7. 4
      src/main/java/de/srsoftware/web4rail/moving/Train.java

2
pom.xml

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>de.srsoftware</groupId> <groupId>de.srsoftware</groupId>
<artifactId>web4rail</artifactId> <artifactId>web4rail</artifactId>
<version>0.9.10</version> <version>0.9.11</version>
<name>Web4Rail</name> <name>Web4Rail</name>
<packaging>jar</packaging> <packaging>jar</packaging>
<description>Java Model Railway Control</description> <description>Java Model Railway Control</description>

2
src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java

@ -54,7 +54,7 @@ public class ConditionalAction extends Action {
@Override @Override
public boolean fire(Context context) throws IOException { public boolean fire(Context context) throws IOException {
for (Condition condition : conditions) { for (Condition condition : conditions) {
if (condition.fulfilledBy(context) != condition.inverted) return actions.fire(context); if (condition.fulfilledBy(context)) return actions.fire(context);
} }
return false; return false;
} }

3
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 INVERTED = "inverted";
private static final String PREFIX = Condition.class.getPackageName(); private static final String PREFIX = Condition.class.getPackageName();
private static HashMap<Integer, Condition> conditions = new HashMap<Integer, Condition>(); private static HashMap<Integer, Condition> conditions = new HashMap<Integer, Condition>();
public abstract boolean fulfilledBy(Context context);
public boolean inverted = false; public boolean inverted = false;
protected int id; protected int id;
@ -70,6 +69,8 @@ public abstract class Condition implements Constants {
return null; return null;
} }
public abstract boolean fulfilledBy(Context context);
public int id() { public int id() {
return id; return id;
} }

2
src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java

@ -17,7 +17,7 @@ public class TrainHasTag extends Condition {
@Override @Override
public boolean fulfilledBy(Context context) { public boolean fulfilledBy(Context context) {
if (tag == null) return true; if (tag == null) return true;
return context.train.tags().contains(tag); return context.train.tags().contains(tag) != inverted;
} }
@Override @Override

2
src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java

@ -17,7 +17,7 @@ public class TrainLength extends Condition {
@Override @Override
public boolean fulfilledBy(Context context) { public boolean fulfilledBy(Context context) {
return context.train.length() < maxLength; return (context.train.length() < maxLength) != inverted;
} }
@Override @Override

2
src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java

@ -16,7 +16,7 @@ public class TrainSelect extends Condition {
@Override @Override
public boolean fulfilledBy(Context context) { public boolean fulfilledBy(Context context) {
return context.train == train; return (context.train == train) != inverted;
} }
@Override @Override

4
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.Block;
import de.srsoftware.web4rail.tiles.Signal; import de.srsoftware.web4rail.tiles.Signal;
public class Train implements Comparable,Constants { public class Train implements Comparable<Train>,Constants {
private static final Logger LOG = LoggerFactory.getLogger(Train.class); private static final Logger LOG = LoggerFactory.getLogger(Train.class);
private static final HashMap<Integer, Train> trains = new HashMap<>(); private static final HashMap<Integer, Train> trains = new HashMap<>();
@ -516,7 +516,7 @@ public class Train implements Comparable,Constants {
} }
@Override @Override
public int compareTo(Object o) { public int compareTo(Train o) {
return name().compareTo(o.toString()); return name().compareTo(o.toString());
} }
} }

Loading…
Cancel
Save