From a45080ca88221d26008135eb7a27068dd18629ff Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Thu, 3 Dec 2020 23:48:11 +0100 Subject: [PATCH] bugfixes --- pom.xml | 2 +- .../java/de/srsoftware/web4rail/Route.java | 54 +++++++++++-------- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/pom.xml b/pom.xml index 0b7cdbf..d41e87c 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.srsoftware web4rail - 1.2.12 + 1.2.13 Web4Rail jar Java Model Railway Control diff --git a/src/main/java/de/srsoftware/web4rail/Route.java b/src/main/java/de/srsoftware/web4rail/Route.java index 54a5607..535139a 100644 --- a/src/main/java/de/srsoftware/web4rail/Route.java +++ b/src/main/java/de/srsoftware/web4rail/Route.java @@ -144,7 +144,7 @@ public class Route extends BaseClass implements Comparable{ private Vector path; private Vector signals; public Train train; - private HashMap triggers = new HashMap(); + private HashMap triggeredActions = new HashMap(); private HashMap turnouts; private Block startBlock = null; public Direction startDirection; @@ -204,10 +204,10 @@ public class Route extends BaseClass implements Comparable{ * @param action */ public void add(String trigger, Action action) { - ActionList actions = triggers.get(trigger); + ActionList actions = triggeredActions.get(trigger); if (isNull(actions)) { actions = new ActionList(this); - triggers.put(trigger, actions); + triggeredActions.put(trigger, actions); } actions.add(action); } @@ -253,17 +253,27 @@ public class Route extends BaseClass implements Comparable{ Tag list = new Tag("ol"); Tag setup = new Tag("li").content(t("Setup actions")+NBSP); - triggers.get(ROUTE_SETUP).list().addTo(setup).addTo(list); + ActionList setupActions = triggeredActions.get(ROUTE_SETUP); + if (isNull(setupActions)) { + setupActions = new ActionList(this); + triggeredActions.put(ROUTE_SETUP, setupActions); + } + setupActions.list().addTo(setup).addTo(list); Tag start = new Tag("li").content(t("Start actions")+NBSP); - triggers.get(ROUTE_START).list().addTo(start).addTo(list); + ActionList startActions = triggeredActions.get(ROUTE_START); + if (isNull(startActions)) { + startActions = new ActionList(this); + triggeredActions.put(ROUTE_START, startActions); + } + startActions.list().addTo(start).addTo(list); for (Contact c : contacts) { Tag item = c.link("span", c).addTo(new Tag("li")).content(NBSP); - ActionList actions = triggers.get(c.trigger()); + ActionList actions = triggeredActions.get(c.trigger()); if (isNull(actions)) { actions = new ActionList(this); - triggers.put(c.trigger(), actions); + triggeredActions.put(c.trigger(), actions); } actions.list().addTo(item).addTo(list); } @@ -277,9 +287,9 @@ public class Route extends BaseClass implements Comparable{ conditions.addAll(existingRoute.conditions); - for (Entry entry : triggers.entrySet()) { + for (Entry entry : triggeredActions.entrySet()) { String trigger = entry.getKey(); - ActionList existingActionList = existingRoute.triggers.get(trigger); + ActionList existingActionList = existingRoute.triggeredActions.get(trigger); if (isSet(existingActionList)) { LOG.debug("found action list for {} on existing route {}: {}",trigger,existingRoute,existingActionList); ActionList newActionList = entry.getValue(); @@ -390,7 +400,7 @@ public class Route extends BaseClass implements Comparable{ triggeredContacts.add(contact); LOG.debug("{} on {} activated {}.",train,this,contact); traceTrainFrom(contact); - ActionList actions = triggers.get(contact.trigger()); + ActionList actions = triggeredActions.get(contact.trigger()); if (isNull(actions)) return; Context context = new Context(contact).route(this).train(train); actions.fire(context); @@ -436,7 +446,7 @@ public class Route extends BaseClass implements Comparable{ } public boolean fireSetupActions(Context context) { - return triggers.get(ROUTE_SETUP).fire(context); + return triggeredActions.get(ROUTE_SETUP).fire(context); } private String generateName() { @@ -496,7 +506,7 @@ public class Route extends BaseClass implements Comparable{ } JSONObject jActions = new JSONObject(); - for (Entry entry : triggers.entrySet()) { + for (Entry entry : triggeredActions.entrySet()) { String trigger = entry.getKey(); ActionList lst = entry.getValue(); jActions.put(trigger,lst.json()); @@ -565,7 +575,7 @@ public class Route extends BaseClass implements Comparable{ aList.add(action); } } - triggers.put(trigger, aList); + triggeredActions.put(trigger, aList); } } } @@ -590,7 +600,7 @@ public class Route extends BaseClass implements Comparable{ JSONObject jo = (JSONObject) so; ActionList setupActions = new ActionList(this); setupActions.load(jo).parent(this); - triggers.put(ROUTE_SETUP, setupActions); + triggeredActions.put(ROUTE_SETUP, setupActions); } if (so instanceof JSONArray) { JSONArray ja = (JSONArray) so; @@ -606,7 +616,7 @@ public class Route extends BaseClass implements Comparable{ } } } - triggers.put(ROUTE_SETUP, setupActions); + triggeredActions.put(ROUTE_SETUP, setupActions); } } if (json.has(START_ACTIONS)) { // TODO: this is legacy! @@ -615,7 +625,7 @@ public class Route extends BaseClass implements Comparable{ JSONObject jo = (JSONObject) so; ActionList startActions = new ActionList(this); startActions.load(jo).parent(this); - triggers.put(ROUTE_START, startActions); + triggeredActions.put(ROUTE_START, startActions); } if (so instanceof JSONArray) { JSONArray ja = (JSONArray) so; @@ -631,7 +641,7 @@ public class Route extends BaseClass implements Comparable{ } } } - triggers.put(ROUTE_START, startActions); + triggeredActions.put(ROUTE_START, startActions); } } @@ -650,7 +660,7 @@ public class Route extends BaseClass implements Comparable{ ActionList actionList = Action.create(type, this); if (isNull(actionList)) continue; actionList.load(json); - triggers.put(trigger, actionList); + triggeredActions.put(trigger, actionList); } } @@ -739,8 +749,8 @@ public class Route extends BaseClass implements Comparable{ if (isSet(train)) train.removeChild(this); path.forEach(tile -> tile.removeChild(this)); conditions.remove(); - for (String key : new Vector(triggers.keySet())){ - ActionList actionList = triggers.remove(key); + for (String key : new Vector(triggeredActions.keySet())){ + ActionList actionList = triggeredActions.remove(key); if (isSet(actionList)) actionList.remove(); }; return this; @@ -754,7 +764,7 @@ public class Route extends BaseClass implements Comparable{ path.remove(child); signals.remove(child); if (child == train) train = null; - for (ActionList list : triggers.values()) list.removeChild(child); + for (ActionList list : triggeredActions.values()) list.removeChild(child); turnouts.remove(child); if (child == startBlock) startBlock = null; triggeredContacts.remove(child); @@ -851,7 +861,7 @@ public class Route extends BaseClass implements Comparable{ public boolean train(Train newTrain) { if (isSet(train) && newTrain != train) return false; train = newTrain; - return isSet(train) ? triggers.get(ROUTE_START).fire(new Context(this).train(train)) : true; + return isSet(train) ? triggeredActions.get(ROUTE_START).fire(new Context(this).train(train)) : true; } public Route unlock() throws IOException {