diff --git a/pom.xml b/pom.xml index 91dadb4..f98162b 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.srsoftware web4rail - 1.3.15 + 1.3.16 Web4Rail jar Java Model Railway Control diff --git a/resources/translations/Application.de.translation b/resources/translations/Application.de.translation index 9d3770b..b582caa 100644 --- a/resources/translations/Application.de.translation +++ b/resources/translations/Application.de.translation @@ -334,7 +334,6 @@ TurnoutRN : WeicheRN TurnoutRS : WeicheRS TurnoutRW : WeicheRW Turnouts : Weichen -TurnTrain : Fahrtrichtung umkehren turn within train : innerhalb des Zugs drehen Turns the train, as if it went through a loop. : Dreht den ZUg, als wenn er eine Wendeschleife passiert hätte. Unknown action\: {} : Unbekannte Aktion: {} diff --git a/src/main/java/de/srsoftware/web4rail/actions/ActionList.java b/src/main/java/de/srsoftware/web4rail/actions/ActionList.java index 0fbdb14..3bd77ee 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/ActionList.java +++ b/src/main/java/de/srsoftware/web4rail/actions/ActionList.java @@ -43,7 +43,7 @@ public class ActionList extends Action implements Iterable{ public ActionList add(Action action) { action.parent(this); - actions.add(action); + actions.add(action); return this; } @@ -52,7 +52,7 @@ public class ActionList extends Action implements Iterable{ if (isNull(type)) return actionTypeForm(); Action action = Action.create(type,this); if (action instanceof Action) { - add(action); + prepend(action); return context().properties(); } return new Tag("span").content(t("Unknown action type: {}",type)).addTo(actionTypeForm()); @@ -200,6 +200,12 @@ public class ActionList extends Action implements Iterable{ return false; } + public ActionList prepend(Action action) { + action.parent(this); + actions.insertElementAt(action, 0); + return this; + } + public static Object process(HashMap params, Plan plan) { String command = params.get(ACTION); if (command == null) return t("No action passed to ActionList.process()!"); diff --git a/src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java b/src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java index 7a16a76..d7a91a0 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java +++ b/src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java @@ -5,6 +5,7 @@ import java.util.List; import org.json.JSONObject; +import de.srsoftware.web4rail.Application; import de.srsoftware.web4rail.BaseClass; import de.srsoftware.web4rail.Window; import de.srsoftware.web4rail.tags.Fieldset; @@ -36,7 +37,21 @@ public class DetermineTrainInBlock extends Action { public Action load(JSONObject json) { super.load(json); Id blockId = Id.from(json,BLOCK); - if (isSet(blockId)) block = Block.get(blockId); + if (isSet(blockId)) { + block = Block.get(blockId); + if (isNull(block)) { + Application.threadPool.execute(new Thread() { + public void run() { + try { + sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + block = Block.get(blockId); + }; + }); + } + } return this; } diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java b/src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java index 3854094..a23ac5e 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java @@ -66,7 +66,7 @@ public class SetDisplayText extends TextAction{ @Override public String toString() { - return isNull(display) ? t("[Click here to select display!]") : t("Display \"{}\" on {}.",text,display); + return isNull(display) ? "["+t("Click here to select display!")+"]" : t("Display \"{}\" on {}.",text,display); } @Override diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetRelay.java b/src/main/java/de/srsoftware/web4rail/actions/SetRelay.java index 030907b..cb7228c 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SetRelay.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SetRelay.java @@ -85,7 +85,7 @@ public class SetRelay extends Action { protected Object update(HashMap params) { LOG.debug("update: {}",params); Id relayId = new Id(params.get(Relay.class.getSimpleName())); - relay = Relay.get(relayId); + relay = BaseClass.get(relayId); String st = params.get(Relay.STATE); if (isSet(st)) state = st.equals("true"); return context().properties(); diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetTurnout.java b/src/main/java/de/srsoftware/web4rail/actions/SetTurnout.java index cd13f2d..3cffeca 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SetTurnout.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SetTurnout.java @@ -6,6 +6,7 @@ import java.util.List; import org.json.JSONObject; import de.srsoftware.tools.Tag; +import de.srsoftware.web4rail.Application; import de.srsoftware.web4rail.BaseClass; import de.srsoftware.web4rail.Window; import de.srsoftware.web4rail.tags.Fieldset; @@ -47,12 +48,25 @@ public class SetTurnout extends Action { @Override public Action load(JSONObject json) { - super.load(json); - String turnoutId = json.getString(TURNOUT); + super.load(json); + Id turnoutId = json.has(TURNOUT) ? new Id(json.getString(TURNOUT)) : null; if (isSet(turnoutId)) { - turnout = BaseClass.get(new Id(turnoutId)); - state = Turnout.State.valueOf(json.getString(Turnout.STATE)); + turnout = BaseClass.get(turnoutId); + if (isNull(turnout)) { + Application.threadPool.execute(new Thread() { + @Override + public void run() { + try { + sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + turnout = BaseClass.get(turnoutId); + } + }); + } } + if (json.has(Turnout.STATE)) state = Turnout.State.valueOf(json.getString(Turnout.STATE)); return this; } diff --git a/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java b/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java index eb24962..0f76485 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java @@ -5,6 +5,7 @@ import java.util.List; import org.json.JSONObject; +import de.srsoftware.web4rail.Application; import de.srsoftware.web4rail.BaseClass; import de.srsoftware.web4rail.Window; import de.srsoftware.web4rail.tags.Fieldset; @@ -32,7 +33,23 @@ public class BlockFree extends Condition { public Condition load(JSONObject json) { super.load(json); - if (json.has(BLOCK)) block(Block.get(new Id(json.getString(BLOCK)))); + if (json.has(BLOCK)) { + Id bid = new Id(json.getString(BLOCK)); + block(BaseClass.get(bid)); + if (isNull(block)) { + Application.threadPool.execute(new Thread() { + @Override + public void run() { + try { + sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + block(BaseClass.get(bid)); + } + }); + } + } return this; } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Block.java b/src/main/java/de/srsoftware/web4rail/tiles/Block.java index 0fc5f57..b84d58e 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Block.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Block.java @@ -186,12 +186,6 @@ public abstract class Block extends StretchableTile{ return this; } - public static Block get(Id blockId) { - Tile tile = plan.get(blockId, false); - if (tile instanceof Block) return (Block) tile; - return null; - } - private WaitTime getWaitTime(String tag) { if (tag == null) return null; for (WaitTime wt : waitTimes) { diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Contact.java b/src/main/java/de/srsoftware/web4rail/tiles/Contact.java index a64cf47..593d523 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Contact.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Contact.java @@ -187,6 +187,7 @@ public class Contact extends Tile{ formInputs.add(t("Address"),span); Fieldset fieldset = new Fieldset(t("Actions")); + fieldset.id("actions"); actions.list().addTo(fieldset); postForm.add(fieldset); return super.properties(preForm, formInputs, postForm);