- implemented load callback
- added waitTime field to context, wait time now determined in route.start
This commit is contained in:
@@ -9,11 +9,11 @@ import org.json.JSONObject;
|
||||
|
||||
import de.srsoftware.tools.Tag;
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.LoadCallback;
|
||||
import de.srsoftware.web4rail.moving.Train;
|
||||
import de.srsoftware.web4rail.tags.Checkbox;
|
||||
import de.srsoftware.web4rail.tags.Fieldset;
|
||||
import de.srsoftware.web4rail.tags.Window;
|
||||
import de.srsoftware.web4rail.threads.DelayedExecution;
|
||||
import de.srsoftware.web4rail.tiles.Block;
|
||||
import de.srsoftware.web4rail.tiles.Tile;
|
||||
|
||||
@@ -69,19 +69,13 @@ public class AddRemoveDestination extends Action {
|
||||
public Action load(JSONObject json) {
|
||||
if (json.has(TURN)) turnAtDestination = json.getBoolean(TURN);
|
||||
if (json.has(SHUNTING)) shunting = json.getBoolean(SHUNTING);
|
||||
if (json.has(Train.DESTINATION)) {
|
||||
Id blockId = new Id(json.getString(Train.DESTINATION));
|
||||
destination = BaseClass.get(blockId);
|
||||
if (isNull(destination)) {
|
||||
new DelayedExecution(this) {
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
destination = BaseClass.get(blockId);
|
||||
}
|
||||
};
|
||||
if (json.has(Train.DESTINATION)) new LoadCallback() {
|
||||
@Override
|
||||
public void afterLoad() {
|
||||
destination = BaseClass.get(Id.from(json, Train.DESTINATION));
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return super.load(json);
|
||||
}
|
||||
|
||||
|
||||
@@ -7,9 +7,9 @@ import java.util.Map;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.LoadCallback;
|
||||
import de.srsoftware.web4rail.tags.Fieldset;
|
||||
import de.srsoftware.web4rail.tags.Window;
|
||||
import de.srsoftware.web4rail.threads.DelayedExecution;
|
||||
import de.srsoftware.web4rail.tiles.Block;
|
||||
import de.srsoftware.web4rail.tiles.Tile;
|
||||
|
||||
@@ -39,18 +39,13 @@ 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 (isNull(block)) {
|
||||
new DelayedExecution(this) {
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
block = Block.get(blockId);
|
||||
}
|
||||
};
|
||||
if (isSet(blockId)) new LoadCallback() {
|
||||
|
||||
@Override
|
||||
public void afterLoad() {
|
||||
block = Block.get(blockId);
|
||||
}
|
||||
}
|
||||
};
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,10 +8,10 @@ import org.json.JSONObject;
|
||||
|
||||
import de.srsoftware.tools.Tag;
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.LoadCallback;
|
||||
import de.srsoftware.web4rail.tags.Fieldset;
|
||||
import de.srsoftware.web4rail.tags.Radio;
|
||||
import de.srsoftware.web4rail.tags.Window;
|
||||
import de.srsoftware.web4rail.threads.DelayedExecution;
|
||||
import de.srsoftware.web4rail.tiles.Block;
|
||||
import de.srsoftware.web4rail.tiles.Shadow;
|
||||
import de.srsoftware.web4rail.tiles.Tile;
|
||||
@@ -43,24 +43,15 @@ public class DisableEnableBlock extends Action {
|
||||
|
||||
@Override
|
||||
public Action load(JSONObject json) {
|
||||
super.load(json);
|
||||
Id blockId = Id.from(json,BLOCK);
|
||||
if (isSet(blockId)) {
|
||||
block = Block.get(blockId);
|
||||
if (isNull(block)) {
|
||||
new DelayedExecution(this) {
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
block = Block.get(blockId);
|
||||
}
|
||||
};
|
||||
if (json.has(STATE)) disable = !json.getBoolean(STATE);
|
||||
if (json.has(BLOCK)) new LoadCallback() {
|
||||
@Override
|
||||
public void afterLoad() {
|
||||
block = Block.get(Id.from(json,BLOCK));
|
||||
}
|
||||
}
|
||||
if (json.has(STATE)) {
|
||||
disable = !json.getBoolean(STATE);
|
||||
}
|
||||
return this;
|
||||
};
|
||||
return super.load(json);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -7,14 +7,14 @@ import java.util.Map;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.LoadCallback;
|
||||
import de.srsoftware.web4rail.tags.Fieldset;
|
||||
import de.srsoftware.web4rail.tags.Window;
|
||||
import de.srsoftware.web4rail.threads.DelayedExecution;
|
||||
import de.srsoftware.web4rail.tiles.Decoupler;
|
||||
import de.srsoftware.web4rail.tiles.Tile;
|
||||
|
||||
public class EngageDecoupler extends Action {
|
||||
|
||||
|
||||
private static final String DECOUPLER = Decoupler.class.getSimpleName();
|
||||
|
||||
public EngageDecoupler(BaseClass parent) {
|
||||
@@ -24,12 +24,12 @@ public class EngageDecoupler extends Action {
|
||||
private Decoupler decoupler = null;
|
||||
|
||||
@Override
|
||||
public boolean fire(Context context,Object cause) {
|
||||
public boolean fire(Context context, Object cause) {
|
||||
if (isNull(decoupler)) return false;
|
||||
decoupler.engage();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public JSONObject json() {
|
||||
JSONObject json = super.json();
|
||||
@@ -38,50 +38,44 @@ public class EngageDecoupler extends Action {
|
||||
}
|
||||
return json;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Action load(JSONObject json) {
|
||||
super.load(json);
|
||||
if (json.has(DECOUPLER)) {
|
||||
String decouplerId = json.getString(DECOUPLER);
|
||||
decoupler = BaseClass.get(new Id(decouplerId));
|
||||
if (isNull(decoupler)) new DelayedExecution(this) {
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
decoupler = BaseClass.get(new Id(decouplerId));
|
||||
}
|
||||
};
|
||||
}
|
||||
return this;
|
||||
if (json.has(DECOUPLER)) new LoadCallback() {
|
||||
@Override
|
||||
public void afterLoad() {
|
||||
decoupler = BaseClass.get(Id.from(json, DECOUPLER));
|
||||
}
|
||||
};
|
||||
return super.load(json);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm,String...errors) {
|
||||
formInputs.add(t("Decoupler")+": "+(isNull(decoupler) ? t("unset") : decoupler),button(t("Select from plan"),Map.of(ACTION,ACTION_UPDATE,ASSIGN,DECOUPLER)));
|
||||
|
||||
return super.properties(preForm, formInputs, postForm,errors);
|
||||
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm, String... errors) {
|
||||
formInputs.add(t("Decoupler") + ": " + (isNull(decoupler) ? t("unset") : decoupler), button(t("Select from plan"), Map.of(ACTION, ACTION_UPDATE, ASSIGN, DECOUPLER)));
|
||||
|
||||
return super.properties(preForm, formInputs, postForm, errors);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void removeChild(BaseClass child) {
|
||||
if (child == decoupler) decoupler = null;
|
||||
super.removeChild(child);
|
||||
}
|
||||
|
||||
|
||||
public String toString() {
|
||||
if (isNull(decoupler)) return "["+t("Click here to setup decoupler")+"]";
|
||||
return t("Engage {}",decoupler);
|
||||
if (isNull(decoupler)) return "[" + t("Click here to setup decoupler") + "]";
|
||||
return t("Engage {}", decoupler);
|
||||
};
|
||||
|
||||
|
||||
@Override
|
||||
protected Object update(HashMap<String, String> params) {
|
||||
LOG.debug("update: {}",params);
|
||||
LOG.debug("update: {}", params);
|
||||
if (params.containsKey(DECOUPLER)) {
|
||||
Tile tile = BaseClass.get(new Id(params.get(DECOUPLER)));
|
||||
if (tile instanceof Decoupler) {
|
||||
decoupler = (Decoupler) tile;
|
||||
} else return t("Clicked tile is not a {}!",t("decoupler"));
|
||||
decoupler = (Decoupler) tile;
|
||||
} else return t("Clicked tile is not a {}!", t("decoupler"));
|
||||
}
|
||||
return context().properties();
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package de.srsoftware.web4rail.actions;
|
||||
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.Range;
|
||||
import de.srsoftware.web4rail.Route;
|
||||
import de.srsoftware.web4rail.moving.Train;
|
||||
import de.srsoftware.web4rail.tiles.Block;
|
||||
@@ -25,10 +24,10 @@ public class PreserveRoute extends Action {
|
||||
Block endBlock = route.endBlock();
|
||||
if (train.destination() == endBlock) return true; // do not reserve routes, when destination has been reached
|
||||
|
||||
Range waitTime = endBlock.getWaitTime(train,route.endDirection);
|
||||
if (waitTime.max > 0) {
|
||||
Integer waitTime = context.waitTime();
|
||||
if (isSet(waitTime) && waitTime > 0) {
|
||||
LOG.debug("Not preserving route, as train needs to stop for {} ms at {}!",waitTime,endBlock);
|
||||
return true; // train is expected to wait in next block.
|
||||
return false; // train is expected to wait in next block.
|
||||
}
|
||||
|
||||
train.reserveNext();
|
||||
|
||||
@@ -6,10 +6,10 @@ import java.util.List;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.LoadCallback;
|
||||
import de.srsoftware.web4rail.moving.Train;
|
||||
import de.srsoftware.web4rail.tags.Fieldset;
|
||||
import de.srsoftware.web4rail.tags.Window;
|
||||
import de.srsoftware.web4rail.threads.DelayedExecution;
|
||||
|
||||
public class SetContextTrain extends Action {
|
||||
|
||||
@@ -34,21 +34,13 @@ public class SetContextTrain extends Action {
|
||||
|
||||
@Override
|
||||
public Action load(JSONObject json) {
|
||||
super.load(json);
|
||||
if (json.has(REALM_TRAIN)) {
|
||||
Id trainId = Id.from(json,REALM_TRAIN);
|
||||
if (isSet(trainId)) {
|
||||
train = Train.get(trainId);
|
||||
if (isNull(train)) new DelayedExecution(this) {
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
train = Train.get(trainId);
|
||||
}
|
||||
};
|
||||
if (json.has(REALM_TRAIN)) new LoadCallback() {
|
||||
@Override
|
||||
public void afterLoad() {
|
||||
train = Train.get(Id.from(json,REALM_TRAIN));
|
||||
}
|
||||
}
|
||||
return this;
|
||||
};
|
||||
return super.load(json);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -7,10 +7,10 @@ import java.util.Map;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.LoadCallback;
|
||||
import de.srsoftware.web4rail.tags.Fieldset;
|
||||
import de.srsoftware.web4rail.tags.Label;
|
||||
import de.srsoftware.web4rail.tags.Window;
|
||||
import de.srsoftware.web4rail.threads.DelayedExecution;
|
||||
import de.srsoftware.web4rail.tiles.TextDisplay;
|
||||
import de.srsoftware.web4rail.tiles.Tile;
|
||||
|
||||
@@ -43,15 +43,12 @@ public class SetDisplayText extends TextAction{
|
||||
|
||||
@Override
|
||||
public Action load(JSONObject json) {
|
||||
if (json.has(DISPLAY)) {
|
||||
new DelayedExecution(this) {
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
display = (TextDisplay) plan.get(Id.from(json,DISPLAY), false);
|
||||
};
|
||||
};
|
||||
}
|
||||
if (json.has(DISPLAY)) new LoadCallback() {
|
||||
@Override
|
||||
public void afterLoad() {
|
||||
display = (TextDisplay) plan.get(Id.from(json,DISPLAY), false);
|
||||
}
|
||||
};
|
||||
return super.load(json);
|
||||
}
|
||||
|
||||
|
||||
@@ -8,10 +8,10 @@ import org.json.JSONObject;
|
||||
|
||||
import de.srsoftware.tools.Tag;
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.LoadCallback;
|
||||
import de.srsoftware.web4rail.tags.Fieldset;
|
||||
import de.srsoftware.web4rail.tags.Select;
|
||||
import de.srsoftware.web4rail.tags.Window;
|
||||
import de.srsoftware.web4rail.threads.DelayedExecution;
|
||||
import de.srsoftware.web4rail.tiles.Relay;
|
||||
import de.srsoftware.web4rail.tiles.Switch;
|
||||
import de.srsoftware.web4rail.tiles.Tile;
|
||||
@@ -51,31 +51,23 @@ public class SetRelayOrSwitch extends Action {
|
||||
|
||||
@Override
|
||||
public Action load(JSONObject json) {
|
||||
super.load(json);
|
||||
if (json.has(RELAY)) {
|
||||
String relayId = json.getString(RELAY);
|
||||
relayOrSwitch = BaseClass.get(new Id(relayId));
|
||||
if (isNull(relayOrSwitch)) new DelayedExecution(this) {
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
relayOrSwitch = BaseClass.get(new Id(relayId));
|
||||
};
|
||||
};
|
||||
}
|
||||
if (json.has(SWITCH)) {
|
||||
String relayId = json.getString(SWITCH);
|
||||
relayOrSwitch = BaseClass.get(new Id(relayId));
|
||||
if (isNull(relayOrSwitch)) new DelayedExecution(this) {
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
relayOrSwitch = BaseClass.get(new Id(relayId));
|
||||
}
|
||||
};
|
||||
}
|
||||
if (json.has(STATE)) state = json.getBoolean(STATE);
|
||||
return this;
|
||||
|
||||
if (json.has(RELAY)) new LoadCallback() {
|
||||
@Override
|
||||
public void afterLoad() {
|
||||
relayOrSwitch = BaseClass.get(Id.from(json, RELAY));
|
||||
};
|
||||
};
|
||||
|
||||
if (json.has(SWITCH)) new LoadCallback() {
|
||||
@Override
|
||||
public void afterLoad() {
|
||||
relayOrSwitch = BaseClass.get(Id.from(json, SWITCH));
|
||||
};
|
||||
};
|
||||
|
||||
return super.load(json);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -8,10 +8,10 @@ import org.json.JSONObject;
|
||||
|
||||
import de.srsoftware.tools.Tag;
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.LoadCallback;
|
||||
import de.srsoftware.web4rail.tags.Fieldset;
|
||||
import de.srsoftware.web4rail.tags.Select;
|
||||
import de.srsoftware.web4rail.tags.Window;
|
||||
import de.srsoftware.web4rail.threads.DelayedExecution;
|
||||
import de.srsoftware.web4rail.tiles.Turnout;
|
||||
import de.srsoftware.web4rail.tiles.Turnout.State;
|
||||
|
||||
@@ -49,20 +49,15 @@ public class SetTurnout extends Action {
|
||||
|
||||
@Override
|
||||
public Action load(JSONObject json) {
|
||||
super.load(json);
|
||||
Id turnoutId = json.has(TURNOUT) ? new Id(json.getString(TURNOUT)) : null;
|
||||
if (isSet(turnoutId)) {
|
||||
turnout = BaseClass.get(turnoutId);
|
||||
if (isNull(turnout)) new DelayedExecution(this) {
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
turnout = BaseClass.get(turnoutId);
|
||||
}
|
||||
};
|
||||
}
|
||||
if (json.has(Turnout.STATE)) state = Turnout.State.valueOf(json.getString(Turnout.STATE));
|
||||
return this;
|
||||
if (json.has(TURNOUT)) new LoadCallback() {
|
||||
|
||||
@Override
|
||||
public void afterLoad() {
|
||||
turnout = BaseClass.get(Id.from(json, TURNOUT));
|
||||
}
|
||||
};
|
||||
return super.load(json);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -8,6 +8,7 @@ import org.json.JSONObject;
|
||||
|
||||
import de.srsoftware.tools.Tag;
|
||||
import de.srsoftware.web4rail.BaseClass;
|
||||
import de.srsoftware.web4rail.LoadCallback;
|
||||
import de.srsoftware.web4rail.tags.Fieldset;
|
||||
import de.srsoftware.web4rail.tags.Input;
|
||||
import de.srsoftware.web4rail.tags.Window;
|
||||
@@ -82,19 +83,16 @@ public class WaitForContact extends ActionList {
|
||||
|
||||
@Override
|
||||
public Action load(JSONObject json) {
|
||||
if (json.has(CONTACT)) {
|
||||
String cid = json.getString(CONTACT);
|
||||
contact = BaseClass.get(new Id(cid));
|
||||
if (isNull(contact)) new DelayedExecution(this) {
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
contact = BaseClass.get(new Id(cid));
|
||||
}
|
||||
};
|
||||
}
|
||||
if (json.has(TIMEOUT)) timeout = json.getInt(TIMEOUT);
|
||||
if (json.has(TIMEOUT_ACTIONS)) timeoutActions.load(json.getJSONObject(TIMEOUT_ACTIONS));
|
||||
|
||||
if (json.has(CONTACT)) new LoadCallback() {
|
||||
|
||||
@Override
|
||||
public void afterLoad() {
|
||||
contact = BaseClass.get(Id.from(json, CONTACT));
|
||||
}
|
||||
};
|
||||
return super.load(json);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user