bugfixes, improved action framework, added actions

This commit is contained in:
Stephan Richter
2020-10-29 11:41:10 +01:00
parent 38bb612d97
commit daae49296f
19 changed files with 115 additions and 101 deletions

View File

@@ -5,17 +5,38 @@ import java.lang.reflect.InvocationTargetException;
import java.util.HashMap;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.keawe.tools.translations.Translation;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.Plan;
import de.srsoftware.web4rail.Route;
import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tiles.Contact;
public abstract class Action {
public static final Logger LOG = LoggerFactory.getLogger(Action.class);
private static final String TYPE = "type";
public abstract void fire(Plan plan) throws IOException;
public static class Context {
public Plan plan = null;
public Contact contact = null;
public Route route = null;
public Train train = null;
public Context(Contact c) {
contact = c;
route = contact.route();
if (route == null) return;
train = route.train;
}
}
public abstract void fire(Context context) throws IOException;
public JSONObject json() {
JSONObject json = new JSONObject();
json.put(TYPE, getClass().getSimpleName());

View File

@@ -2,17 +2,14 @@ package de.srsoftware.web4rail.actions;
import java.io.IOException;
import de.srsoftware.web4rail.Route;
public class ActivateRoute extends RouteAction {
public ActivateRoute(int routeId) {
super(routeId);
}
@Override
public void fire(Route route) throws IOException {
route.activate();
public void fire(Context context) throws IOException {
context.route.activate();
}
}

View File

@@ -2,8 +2,6 @@ package de.srsoftware.web4rail.actions;
import java.io.IOException;
import de.srsoftware.web4rail.Route;
public class FinishRoute extends RouteAction {
public FinishRoute(int routeId) {
@@ -11,7 +9,7 @@ public class FinishRoute extends RouteAction {
}
@Override
public void fire(Route route) throws IOException {
route.finish();
public void fire(Context context) throws IOException {
context.route.finish();
}
}

View File

@@ -1,12 +1,7 @@
package de.srsoftware.web4rail.actions;
import java.io.IOException;
import org.json.JSONObject;
import de.srsoftware.web4rail.Plan;
import de.srsoftware.web4rail.Route;
public abstract class RouteAction extends Action {
static final String ROUTE = "route";
@@ -22,11 +17,4 @@ public abstract class RouteAction extends Action {
json.put(ROUTE, routeId);
return json;
}
@Override
public void fire(Plan plan) throws IOException {
fire(plan.route(routeId));
}
protected abstract void fire(Route route) throws IOException;
}

View File

@@ -2,18 +2,16 @@ package de.srsoftware.web4rail.actions;
import java.io.IOException;
import de.srsoftware.web4rail.Route;
import de.srsoftware.web4rail.tiles.Signal;
public class SetSignalsToStop extends RouteAction {
public SetSignalsToStop(int routeId) {
super(routeId);
}
@Override
public void fire(Route route) throws IOException {
route.setSignals(Signal.STOP);
public void fire(Context context) throws IOException {
context.route.setSignals(Signal.STOP);
}
}

View File

@@ -8,7 +8,6 @@ import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.Constants;
import de.srsoftware.web4rail.Route;
import de.srsoftware.web4rail.Window;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Button;
import de.srsoftware.web4rail.tags.Form;
import de.srsoftware.web4rail.tags.Input;
@@ -26,9 +25,8 @@ public class SpeedReduction extends RouteAction implements Constants{
}
@Override
public void fire(Route route) {
Train train = route.train;
if (train != null && train.speed > maxSpeed) train.setSpeed(maxSpeed);
public void fire(Context context) {
if (context.train != null && context.train.speed > maxSpeed) context.train.setSpeed(maxSpeed);
}
@Override

View File

@@ -1,8 +1,6 @@
package de.srsoftware.web4rail.actions;
import de.srsoftware.web4rail.Constants;
import de.srsoftware.web4rail.Route;
import de.srsoftware.web4rail.moving.Train;
public class TurnTrain extends RouteAction implements Constants{
@@ -11,8 +9,7 @@ public class TurnTrain extends RouteAction implements Constants{
}
@Override
public void fire(Route route) {
Train train = route.train;
if (train != null) train.turn();
public void fire(Context context) {
if (context.train != null) context.train.turn();
}
}