extended SendCommand action, added SavePlan action

This commit is contained in:
Stephan Richter
2020-12-06 00:30:07 +01:00
parent cd96006d7c
commit 7085c033bf
6 changed files with 75 additions and 14 deletions

View File

@@ -49,6 +49,7 @@ public abstract class Action extends BaseClass {
DetermineTrainInBlock.class,
FinishRoute.class,
PreserveRoute.class,
SavePlan.class,
SendCommand.class,
SetContextTrain.class,
SetDisplayText.class,

View File

@@ -0,0 +1,22 @@
package de.srsoftware.web4rail.actions;
import java.io.IOException;
import de.srsoftware.web4rail.BaseClass;
public class SavePlan extends Action{
public SavePlan(BaseClass parent) {
super(parent);
}
@Override
public boolean fire(Context context) {
try {
plan.save();
} catch (IOException e) {
return false;
}
return true;
}
}

View File

@@ -1,68 +1,96 @@
package de.srsoftware.web4rail.actions;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Command;
import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Radio;
public class SendCommand extends Action{
enum Target{
SYSTEM, SRCP
}
public SendCommand(BaseClass parent) {
super(parent);
}
public static final String COMMAND = "command";
private static final String TARGET = "target";
private String command = "SET 1 POWER OFF";
private Target target = Target.SRCP;
@Override
public boolean fire(Context context) {
plan.queue(new Command(command) {
switch (target) {
case SRCP:
plan.queue(new Command(command) {
@Override
public void onResponse(Reply reply) {
super.onResponse(reply);
plan.stream(reply.message());
}
});
@Override
public void onResponse(Reply reply) {
super.onResponse(reply);
plan.stream(reply.message());
}
});
return true;
return true;
case SYSTEM:
try {
Runtime.getRuntime().exec(command);
return true;
} catch (IOException e) {
return false;
}
}
return false;
}
@Override
public JSONObject json() {
JSONObject json = super.json();
json.put(COMMAND, command);
json.put(TARGET, target.toString());
return json;
}
@Override
public Action load(JSONObject json) {
super.load(json);
command = json.getString(COMMAND);
if (json.has(COMMAND)) command = json.getString(COMMAND);
if (json.has(TARGET)) target = Target.valueOf(json.getString(TARGET));
return this;
}
@Override
protected Window properties(List<Fieldset> preForm, FormInput formInputs, List<Fieldset> postForm) {
formInputs.add(t("Command to send to control unit"),new Input(COMMAND, command));
formInputs.add(t("Command to send"),new Input(COMMAND, command));
Tag div = new Tag("div");
new Radio(TARGET, Target.SYSTEM, t("Operating System"), target == Target.SYSTEM).addTo(div);
new Radio(TARGET, Target.SRCP, t("SRCP daemon"), target == Target.SRCP).addTo(div);
formInputs.add(t("Send command to"),div);
return super.properties(preForm, formInputs, postForm);
}
@Override
public String toString() {
return t("Send command \"{}\" to control unit",command);
return t("Send command \"{}\" to {}",command,t(target.toString()));
}
@Override
protected Object update(HashMap<String, String> params) {
LOG.debug("update: {}",params);
command = params.get(COMMAND);
String t = params.get(TARGET);
if (isSet(t)) target = Target.valueOf(t);
return properties();
}
}