Browse Source

added Paras class, refactored respective code

lookup-tables
Stephan Richter 4 years ago
parent
commit
e1f50d0d6e
  1. 2
      pom.xml
  2. 18
      src/main/java/de/srsoftware/web4rail/Application.java
  3. 14
      src/main/java/de/srsoftware/web4rail/BaseClass.java
  4. 8
      src/main/java/de/srsoftware/web4rail/History.java
  5. 11
      src/main/java/de/srsoftware/web4rail/MaintnanceTask.java
  6. 31
      src/main/java/de/srsoftware/web4rail/Params.java
  7. 50
      src/main/java/de/srsoftware/web4rail/Plan.java
  8. 24
      src/main/java/de/srsoftware/web4rail/Route.java
  9. 7
      src/main/java/de/srsoftware/web4rail/actions/Action.java
  10. 10
      src/main/java/de/srsoftware/web4rail/actions/ActionList.java
  11. 10
      src/main/java/de/srsoftware/web4rail/actions/AddRemoveDestination.java
  12. 6
      src/main/java/de/srsoftware/web4rail/actions/AddRemoveTag.java
  13. 6
      src/main/java/de/srsoftware/web4rail/actions/AlterDirection.java
  14. 6
      src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java
  15. 4
      src/main/java/de/srsoftware/web4rail/actions/CoupleTrain.java
  16. 8
      src/main/java/de/srsoftware/web4rail/actions/DelayedAction.java
  17. 6
      src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java
  18. 4
      src/main/java/de/srsoftware/web4rail/actions/DisableEnableBlock.java
  19. 6
      src/main/java/de/srsoftware/web4rail/actions/EngageDecoupler.java
  20. 6
      src/main/java/de/srsoftware/web4rail/actions/Loop.java
  21. 8
      src/main/java/de/srsoftware/web4rail/actions/SendCommand.java
  22. 4
      src/main/java/de/srsoftware/web4rail/actions/SetContextTrain.java
  23. 6
      src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java
  24. 6
      src/main/java/de/srsoftware/web4rail/actions/SetPower.java
  25. 8
      src/main/java/de/srsoftware/web4rail/actions/SetRelayOrSwitch.java
  26. 8
      src/main/java/de/srsoftware/web4rail/actions/SetSignal.java
  27. 20
      src/main/java/de/srsoftware/web4rail/actions/SetSpeed.java
  28. 8
      src/main/java/de/srsoftware/web4rail/actions/SetTurnout.java
  29. 6
      src/main/java/de/srsoftware/web4rail/actions/SplitTrain.java
  30. 4
      src/main/java/de/srsoftware/web4rail/actions/StartStopAuto.java
  31. 8
      src/main/java/de/srsoftware/web4rail/actions/SwitchFunction.java
  32. 6
      src/main/java/de/srsoftware/web4rail/actions/TextAction.java
  33. 4
      src/main/java/de/srsoftware/web4rail/actions/TriggerContact.java
  34. 8
      src/main/java/de/srsoftware/web4rail/actions/WaitForContact.java
  35. 6
      src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java
  36. 6
      src/main/java/de/srsoftware/web4rail/conditions/CarInTrain.java
  37. 10
      src/main/java/de/srsoftware/web4rail/conditions/CarOrientation.java
  38. 14
      src/main/java/de/srsoftware/web4rail/conditions/Condition.java
  39. 6
      src/main/java/de/srsoftware/web4rail/conditions/RouteEndBlock.java
  40. 6
      src/main/java/de/srsoftware/web4rail/conditions/SwitchIsOn.java
  41. 6
      src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java
  42. 6
      src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java
  43. 6
      src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java
  44. 6
      src/main/java/de/srsoftware/web4rail/conditions/TrainSpeed.java
  45. 8
      src/main/java/de/srsoftware/web4rail/conditions/TrainWasInBlock.java
  46. 18
      src/main/java/de/srsoftware/web4rail/devices/Decoder.java
  47. 31
      src/main/java/de/srsoftware/web4rail/moving/Car.java
  48. 15
      src/main/java/de/srsoftware/web4rail/moving/Locomotive.java
  49. 46
      src/main/java/de/srsoftware/web4rail/moving/Train.java
  50. 16
      src/main/java/de/srsoftware/web4rail/threads/ControlUnit.java
  51. 23
      src/main/java/de/srsoftware/web4rail/tiles/Block.java
  52. 9
      src/main/java/de/srsoftware/web4rail/tiles/Contact.java
  53. 12
      src/main/java/de/srsoftware/web4rail/tiles/Decoupler.java
  54. 17
      src/main/java/de/srsoftware/web4rail/tiles/Relay.java
  55. 7
      src/main/java/de/srsoftware/web4rail/tiles/Signal.java
  56. 10
      src/main/java/de/srsoftware/web4rail/tiles/StretchableTile.java
  57. 6
      src/main/java/de/srsoftware/web4rail/tiles/Switch.java
  58. 7
      src/main/java/de/srsoftware/web4rail/tiles/TextDisplay.java
  59. 7
      src/main/java/de/srsoftware/web4rail/tiles/Tile.java
  60. 14
      src/main/java/de/srsoftware/web4rail/tiles/Turnout.java
  61. 8
      src/main/java/de/srsoftware/web4rail/tiles/TurnoutL.java
  62. 8
      src/main/java/de/srsoftware/web4rail/tiles/TurnoutR.java

2
pom.xml

@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>de.srsoftware</groupId>
<artifactId>web4rail</artifactId>
<version>1.4.35</version>
<version>1.4.36</version>
<name>Web4Rail</name>
<packaging>jar</packaging>
<description>Java Model Railway Control</description>

18
src/main/java/de/srsoftware/web4rail/Application.java

@ -106,12 +106,12 @@ public class Application extends BaseClass{ @@ -106,12 +106,12 @@ public class Application extends BaseClass{
* @throws NoSuchMethodException
* @throws SecurityException
*/
private static Object handle(HashMap<String, String> params) throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
private static Object handle(Params params) throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
LOG.debug("Application.handle({})",params);
String realm = params.get(REALM);
String realm = params.getString(REALM);
if (isNull(realm)) throw new NullPointerException(REALM+" should not be null!");
String action = params.get(ACTION);
String action = params.getString(ACTION);
if (isNull(action)) throw new NullPointerException(ACTION+" should not be null!");
if (action.equals(ACTION_OPEN)) return open(params);
@ -151,9 +151,9 @@ public class Application extends BaseClass{ @@ -151,9 +151,9 @@ public class Application extends BaseClass{
* @param data
* @return
*/
private static HashMap<String, String> inflate(String data) {
private static Params inflate(String data) {
//LOG.debug("inflate({})",data);
HashMap<String, String> params = new HashMap<String, String>();
Params params = new Params();
if (data == null || data.trim().isEmpty()) return params;
String[] parts = data.split("&");
@ -170,7 +170,7 @@ public class Application extends BaseClass{ @@ -170,7 +170,7 @@ public class Application extends BaseClass{
* @param data
* @return
*/
private static HashMap<String, String> inflate(byte[] data) {
private static Params inflate(byte[] data) {
return inflate(new String(data,UTF8));
}
@ -186,9 +186,9 @@ public class Application extends BaseClass{ @@ -186,9 +186,9 @@ public class Application extends BaseClass{
return Files.probeContentType(file.toPath());
}
private static Object open(HashMap<String, String> params) {
private static Object open(Params params) {
Window win = new Window("open-plan", t("Open plan..."));
String filename = params.get(FILENAME);
String filename = params.getString(FILENAME);
if (isNull(filename)) {
filename = ".";
} else if (filename.startsWith("."+File.separator)) {
@ -296,7 +296,7 @@ public class Application extends BaseClass{ @@ -296,7 +296,7 @@ public class Application extends BaseClass{
*/
private static void sendPlan(HttpExchange client) throws IOException {
try {
HashMap<String, String> params = inflate(client.getRequestBody().readAllBytes());
Params params = inflate(client.getRequestBody().readAllBytes());
LOG.debug("sendPlan({})",params);
if (params.isEmpty()) {

14
src/main/java/de/srsoftware/web4rail/BaseClass.java

@ -272,13 +272,13 @@ public abstract class BaseClass implements Constants{ @@ -272,13 +272,13 @@ public abstract class BaseClass implements Constants{
return json.has(key) ? new Id(""+json.get(key)) : null;
}
public static Id from(Map<String,String> params) {
public static Id from(Params params) {
return Id.from(params,ID);
}
public static Id from(Map<String, String> params, String key) {
String sid = params.get(key);
public static Id from(Params params, String key) {
String sid = params.getString(key);
return sid == null ? null : new Id(sid);
}
@ -642,13 +642,13 @@ public abstract class BaseClass implements Constants{ @@ -642,13 +642,13 @@ public abstract class BaseClass implements Constants{
return registry.remove(this.id());
}
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
LOG.debug("update: {}",params);
if (params.containsKey(NOTES)) notes = params.get(NOTES).trim();
String newCustomFieldName = params.get(NEW_CUSTOM_FIELD_NAME);
if (params.containsKey(NOTES)) notes = params.getString(NOTES).trim();
String newCustomFieldName = params.getString(NEW_CUSTOM_FIELD_NAME);
Set<String> fieldNames = customFieldNames.get(getClass());
if (isSet(fieldNames)) for (String fieldName : fieldNames) {
String fieldValue = params.get(fieldName);
String fieldValue = params.getString(fieldName);
if (isSet(fieldValue)) customFieldValues.put(fieldName, fieldValue);
}
if (isSet(newCustomFieldName) && !newCustomFieldName.trim().isEmpty()) {

8
src/main/java/de/srsoftware/web4rail/History.java

@ -66,16 +66,16 @@ public class History { @@ -66,16 +66,16 @@ public class History {
return list != null ? list : new Vector<>();
}
public static Object action(HashMap<String, String> params) {
public static Object action(Params params) {
BaseClass object = BaseClass.get(Id.from(params));
switch (params.get(Constants.ACTION)) {
switch (params.getString(Constants.ACTION)) {
case Constants.ACTION_ADD:
return object != null ? object.addLogEntry(params.get(Constants.NOTES)) : BaseClass.t("Unknown object!");
return object != null ? object.addLogEntry(params.getString(Constants.NOTES)) : BaseClass.t("Unknown object!");
case Constants.ACTION_DROP:
if (BaseClass.isNull(object)) return BaseClass.t("Trying to delete log entry without specifing object!");
String err = null;
try {
long time = Long.parseLong(params.get(Constants.TIME));
long time = params.getLong(Constants.TIME);
dropEntry(object,time);
} catch (NumberFormatException e) {
err = BaseClass.t("Was not able to delete history entry!");

11
src/main/java/de/srsoftware/web4rail/MaintnanceTask.java

@ -1,7 +1,6 @@ @@ -1,7 +1,6 @@
package de.srsoftware.web4rail;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@ -37,8 +36,8 @@ public class MaintnanceTask extends BaseClass{ @@ -37,8 +36,8 @@ public class MaintnanceTask extends BaseClass{
if (isSet(name)) tasks.add(name);
}
public static Object action(HashMap<String, String> params) {
String action = params.get(ACTION);
public static Object action(Params params) {
String action = params.getString(ACTION);
if (isNull(action)) return t("No action set!");
MaintnanceTask task = BaseClass.get(Id.from(params));
@ -61,10 +60,10 @@ public class MaintnanceTask extends BaseClass{ @@ -61,10 +60,10 @@ public class MaintnanceTask extends BaseClass{
return (isSet(task)) ? task.parent().properties(err) : err;
}
private static MaintnanceTask createTask(HashMap<String, String> params) {
String name = params.get(NAME);
private static MaintnanceTask createTask(Params params) {
String name = params.getString(NAME);
if (isNull(name)||name.trim().isEmpty()) return null;
long interval = Long.parseLong(params.get(INTERVAL));
long interval = params.getLong(INTERVAL);
Car car = BaseClass.get(Id.from(params, REALM_CAR));
return new MaintnanceTask(car, name,interval);
}

31
src/main/java/de/srsoftware/web4rail/Params.java

@ -0,0 +1,31 @@ @@ -0,0 +1,31 @@
package de.srsoftware.web4rail;
import java.util.HashMap;
public class Params extends HashMap<String, Object> {
private static final long serialVersionUID = 5932558155771729L;
public String getString(Object key) {
Object v = super.get(key);
if (v instanceof String) return (String) v;
if (v == null) return null;
return v.toString();
}
public Integer getInt(String key) {
try {
return Integer.parseInt(getString(key));
} catch (Exception e) {
return null;
}
}
public Long getLong(String key) {
try {
return Long.parseLong(getString(key));
} catch (Exception e) {
return null;
}
}
}

50
src/main/java/de/srsoftware/web4rail/Plan.java

@ -195,10 +195,10 @@ public class Plan extends BaseClass{ @@ -195,10 +195,10 @@ public class Plan extends BaseClass{
* @throws NoSuchMethodException
* @throws SecurityException
*/
public Object action(HashMap<String, String> params) throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
switch (params.get(ACTION)) {
public Object action(Params params) throws IOException, ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException {
switch (params.getString(ACTION)) {
case ACTION_ADD:
return addTile(params.get(TILE),params.get(X),params.get(Y),null);
return addTile(params.getString(TILE),params.getInt(X),params.getInt(Y),null);
case Block.ACTION_ADD_CONTACT:
Block block = get(Id.from(params));
return block.addContact();
@ -207,7 +207,7 @@ public class Plan extends BaseClass{ @@ -207,7 +207,7 @@ public class Plan extends BaseClass{
case ACTION_AUTO:
return simplifyRouteName(params);
case ACTION_CLICK:
return click(get(Id.from(params),true),params.get("shift"));
return click(get(Id.from(params),true),params.getString("shift"));
case ACTION_CONNECT:
Tile tile = get(Id.from(params), false);
if (tile instanceof Bridge) return ((Bridge)tile).requestConnect();
@ -218,13 +218,13 @@ public class Plan extends BaseClass{ @@ -218,13 +218,13 @@ public class Plan extends BaseClass{
plan.alter();
return t.properties();
case ACTION_MOVE:
return moveTile(params.get(DIRECTION),Id.from(params));
return moveTile(params.getString(DIRECTION),Id.from(params));
case ACTION_PROPS:
return properties(params);
case ACTION_POWER:
Signal signal = get(Id.from(params));
if (isSet(signal)) {
signal.state(params.get(Signal.STATE));
signal.state(params.getString(Signal.STATE));
return signal.properties();
}
return null;
@ -237,7 +237,7 @@ public class Plan extends BaseClass{ @@ -237,7 +237,7 @@ public class Plan extends BaseClass{
case ACTION_UPDATE:
return update(params);
}
return t("Unknown action: {}",params.get(ACTION));
return t("Unknown action: {}",params.getString(ACTION));
}
/**
@ -279,9 +279,7 @@ public class Plan extends BaseClass{ @@ -279,9 +279,7 @@ public class Plan extends BaseClass{
* @throws SecurityException
* @throws IOException
*/
private String addTile(String clazz, String xs, String ys, String configJson) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, IOException {
int x = Integer.parseInt(xs);
int y = Integer.parseInt(ys);
private String addTile(String clazz, int x, int y, String configJson) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, IOException {
if (clazz == null) throw new NullPointerException(TILE+" must not be null!");
Class<Tile> tc = Tile.class;
clazz = tc.getName().replace(".Tile", "."+clazz);
@ -310,7 +308,7 @@ public class Plan extends BaseClass{ @@ -310,7 +308,7 @@ public class Plan extends BaseClass{
* @param params
* @return a string giving information how many routes have been found
*/
private Object analyze(HashMap<String, String> params) {
private Object analyze(Params params) {
List<Route> oldRoutes = BaseClass.listElements(Route.class);
if (!oldRoutes.isEmpty() && !"yes".equals(params.get(CONFIRM))) {
@ -335,7 +333,7 @@ public class Plan extends BaseClass{ @@ -335,7 +333,7 @@ public class Plan extends BaseClass{
return win;
}
boolean keepExisting = DISCOVER_NEW.equals(params.get(DISCOVERY_MODE));
boolean keepExisting = DISCOVER_NEW.equals(params.getString(DISCOVERY_MODE));
new Thread(Application.threadName("Plan.Analyzer")) {
public void run() {
@ -737,7 +735,7 @@ public class Plan extends BaseClass{ @@ -737,7 +735,7 @@ public class Plan extends BaseClass{
return actions.addTo(actionMenu);
}
public Window properties(HashMap<String, String> params) {
public Window properties(Params params) {
if (params.containsKey(ID)) {
Tile tile = get(Id.from(params), true);
@ -832,8 +830,8 @@ public class Plan extends BaseClass{ @@ -832,8 +830,8 @@ public class Plan extends BaseClass{
super.removeChild(child);
}
private Object rename(HashMap<String, String> params) {
String newName = params.get(NAME);
private Object rename(Params params) {
String newName = params.getString(NAME);
Window win = new Window("rename-plan", t("Rename plan"));
if (isSet(newName)) {
newName = newName.trim();
@ -931,8 +929,8 @@ public class Plan extends BaseClass{ @@ -931,8 +929,8 @@ public class Plan extends BaseClass{
}
private Object simplifyRouteName(HashMap<String, String> params) {
String routeId = params.get(ROUTE);
private Object simplifyRouteName(Params params) {
String routeId = params.getString(ROUTE);
if (isSet(routeId)) {
Route route = BaseClass.get(new Id(routeId));
if (isSet(route)) route.simplyfyName();
@ -1062,25 +1060,25 @@ public class Plan extends BaseClass{ @@ -1062,25 +1060,25 @@ public class Plan extends BaseClass{
* @return
* @throws IOException
*/
public Object update(HashMap<String, String> params) {
public Object update(Params params) {
super.update(params);
Tile tile = get(Id.from(params),true);
if (isSet(tile)) return tile.update(params).properties();
if (params.containsKey(LENGTH_UNIT)) lengthUnit = params.get(LENGTH_UNIT);
if (params.containsKey(SPEED_UNIT)) speedUnit = params.get(SPEED_UNIT);
if (params.containsKey(SPEED_STEP)) Train.defaultSpeedStep = Integer.parseInt(params.get(SPEED_STEP));
if (params.containsKey(FINAL_SPEED)) Train.defaultEndSpeed = Integer.parseInt(params.get(FINAL_SPEED));
if (params.containsKey(LENGTH_UNIT)) lengthUnit = params.getString(LENGTH_UNIT);
if (params.containsKey(SPEED_UNIT)) speedUnit = params.getString(SPEED_UNIT);
if (params.containsKey(SPEED_STEP)) Train.defaultSpeedStep = params.getInt(SPEED_STEP);
if (params.containsKey(FINAL_SPEED)) Train.defaultEndSpeed = params.getInt(FINAL_SPEED);
if (params.containsKey(MAINTENANCE_INTERVAL)) try {
Car.defaulMaintenanceDist = Long.parseLong(params.get(MAINTENANCE_INTERVAL));
Car.defaulMaintenanceDist = params.getLong(MAINTENANCE_INTERVAL);
} catch(NumberFormatException e) {};
allowJsonEdit = "on".equalsIgnoreCase(params.get(ALLOW_JSON_EDIT));
Route.freeBehindTrain = "on".equalsIgnoreCase(params.get(FREE_BEHIND_TRAIN));
allowJsonEdit = "on".equalsIgnoreCase(params.getString(ALLOW_JSON_EDIT));
Route.freeBehindTrain = "on".equalsIgnoreCase(params.getString(FREE_BEHIND_TRAIN));
return properties(t("Plan updated."));
}
private Object updateTimes(HashMap<String, String> params) throws IOException {
private Object updateTimes(Params params) throws IOException {
Tile tile = get(Id.from(params),false);
if (tile instanceof Block) {
Block block = (Block) tile;

24
src/main/java/de/srsoftware/web4rail/Route.java

@ -114,25 +114,25 @@ public class Route extends BaseClass { @@ -114,25 +114,25 @@ public class Route extends BaseClass {
* @return
* @throws IOException
*/
public static Object action(HashMap<String, String> params) throws IOException {
public static Object action(Params params) throws IOException {
Route route = BaseClass.get(Id.from(params));
String action = params.get(ACTION);
if (isNull(route) && !ACTION_AUTO.equals(action)) return t("Unknown route: {}",params.get(ID));
switch (params.get(ACTION)) {
String action = params.getString(ACTION);
if (isNull(route) && !ACTION_AUTO.equals(action)) return t("Unknown route: {}",params.getString(ID));
switch (action) {
case ACTION_AUTO:
if (isSet(route)) return route.simplyfyName().properties();
for (Route rt : BaseClass.listElements(Route.class)) rt.simplyfyName();
return plan.properties(new HashMap<String, String>());
return plan.properties(new Params());
case ACTION_DROP:
route.remove();
plan.stream(t("Removed {}.",route));
return plan.properties(new HashMap<String,String>());
return plan.properties(new Params());
case ACTION_PROPS:
return route.properties();
case ACTION_UPDATE:
return route.update(params,plan);
}
return t("Unknown action: {}",params.get(ACTION));
return t("Unknown action: {}",action);
}
/**
@ -950,14 +950,14 @@ public class Route extends BaseClass { @@ -950,14 +950,14 @@ public class Route extends BaseClass {
return win;
}
protected Object update(HashMap<String, String> params,Plan plan) {
protected Object update(Params params,Plan plan) {
LOG.debug("update({})",params);
String name = params.get(NAME);
String name = params.getString(NAME);
if (isSet(name)) name(name);
disabled = "on".equals(params.get(DISABLED));
String delay = params.get(MIN_START_DELAY);
String delay = params.getString(MIN_START_DELAY);
if (isSet(delay)) try {
int min = Integer.parseInt(delay);
if (isNull(startDelay)) {
@ -968,7 +968,7 @@ public class Route extends BaseClass { @@ -968,7 +968,7 @@ public class Route extends BaseClass {
}
} catch (NumberFormatException e) {}
delay = params.get(MAX_START_DELAY);
delay = params.getString(MAX_START_DELAY);
if (isSet(delay)) try {
int max = Integer.parseInt(delay);
if (isNull(startDelay)) {
@ -980,7 +980,7 @@ public class Route extends BaseClass { @@ -980,7 +980,7 @@ public class Route extends BaseClass {
} catch (NumberFormatException e) {}
Condition condition = Condition.create(params.get(REALM_CONDITION));
Condition condition = Condition.create(params.getString(REALM_CONDITION));
if (isSet(condition)) {
condition.parent(this);
conditions.add(condition);

7
src/main/java/de/srsoftware/web4rail/actions/Action.java

@ -13,6 +13,7 @@ import org.slf4j.LoggerFactory; @@ -13,6 +13,7 @@ import org.slf4j.LoggerFactory;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.LoadCallback;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.tags.Button;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Form;
@ -107,9 +108,9 @@ public abstract class Action extends BaseClass { @@ -107,9 +108,9 @@ public abstract class Action extends BaseClass {
return new JSONObject().put(TYPE, getClass().getSimpleName());
}
protected Object jsonImportExport(HashMap<String, String> params) {
protected Object jsonImportExport(Params params) {
if (params.containsKey(JSON)) {
String jString = params.get(JSON);
String jString = params.getString(JSON);
JSONObject json = new JSONObject(jString);
if (this instanceof ActionList) {
((ActionList)this).clear();
@ -169,7 +170,7 @@ public abstract class Action extends BaseClass { @@ -169,7 +170,7 @@ public abstract class Action extends BaseClass {
}
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
super.update(params);
return context().properties();
}

10
src/main/java/de/srsoftware/web4rail/actions/ActionList.java

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
package de.srsoftware.web4rail.actions;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@ -13,6 +12,7 @@ import org.slf4j.LoggerFactory; @@ -13,6 +12,7 @@ import org.slf4j.LoggerFactory;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.Plan;
import de.srsoftware.web4rail.tags.Button;
import de.srsoftware.web4rail.tags.Fieldset;
@ -47,8 +47,8 @@ public class ActionList extends Action implements Iterable<Action>{ @@ -47,8 +47,8 @@ public class ActionList extends Action implements Iterable<Action>{
return this;
}
private Object addActionForm(HashMap<String, String> params, Plan plan) {
String type = params.get(TYPE);
private Object addActionForm(Params params, Plan plan) {
String type = params.getString(TYPE);
if (isNull(type)) return actionTypeForm();
Action action = Action.create(type,this);
if (action instanceof Action) {
@ -212,8 +212,8 @@ public class ActionList extends Action implements Iterable<Action>{ @@ -212,8 +212,8 @@ public class ActionList extends Action implements Iterable<Action>{
return this;
}
public static Object process(HashMap<String, String> params, Plan plan) {
String command = params.get(ACTION);
public static Object process(Params params, Plan plan) {
String command = params.getString(ACTION);
if (command == null) return t("No action passed to ActionList.process()!");
Id actionId = Id.from(params);

10
src/main/java/de/srsoftware/web4rail/actions/AddRemoveDestination.java

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
package de.srsoftware.web4rail.actions;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@ -10,6 +9,7 @@ import org.json.JSONObject; @@ -10,6 +9,7 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.LoadCallback;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Checkbox;
import de.srsoftware.web4rail.tags.Fieldset;
@ -105,9 +105,9 @@ public class AddRemoveDestination extends Action { @@ -105,9 +105,9 @@ public class AddRemoveDestination extends Action {
}
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
if (params.containsKey(Train.DESTINATION)) {
String destId = params.get(Train.DESTINATION);
String destId = params.getString(Train.DESTINATION);
if ("0".equals(destId)) {
destination = null;
} else {
@ -119,8 +119,8 @@ public class AddRemoveDestination extends Action { @@ -119,8 +119,8 @@ public class AddRemoveDestination extends Action {
}
}
}
turnAtDestination = "on".equals(params.get(TURN));
shunting = "on".equals(params.get(SHUNTING));
turnAtDestination = "on".equals(params.getString(TURN));
shunting = "on".equals(params.getString(SHUNTING));
return context().properties();
}
}

6
src/main/java/de/srsoftware/web4rail/actions/AddRemoveTag.java

@ -1,12 +1,12 @@ @@ -1,12 +1,12 @@
package de.srsoftware.web4rail.actions;
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.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Radio;
@ -66,8 +66,8 @@ public class AddRemoveTag extends Action{ @@ -66,8 +66,8 @@ public class AddRemoveTag extends Action{
}
@Override
protected Object update(HashMap<String, String> params) {
tag = params.get(TAG);
protected Object update(Params params) {
tag = params.getString(TAG);
remove = ACTION_DROP.equals(params.get(TYPE));
return super.update(params);
}

6
src/main/java/de/srsoftware/web4rail/actions/AlterDirection.java

@ -1,12 +1,12 @@ @@ -1,12 +1,12 @@
package de.srsoftware.web4rail.actions;
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.Params;
import de.srsoftware.web4rail.Plan.Direction;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Fieldset;
@ -101,9 +101,9 @@ public class AlterDirection extends Action{ @@ -101,9 +101,9 @@ public class AlterDirection extends Action{
}
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
if (params.containsKey(NEW_DIRECTION)) {
newDir = NEWDIR.valueOf(params.get(NEW_DIRECTION));
newDir = NEWDIR.valueOf(params.getString(NEW_DIRECTION));
}
return super.update(params);
}

6
src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
package de.srsoftware.web4rail.actions;
import java.util.HashMap;
import java.util.List;
import java.util.Optional;
import java.util.Vector;
@ -10,6 +9,7 @@ import org.json.JSONObject; @@ -10,6 +9,7 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.conditions.Condition;
import de.srsoftware.web4rail.conditions.ConditionList;
import de.srsoftware.web4rail.tags.Fieldset;
@ -133,8 +133,8 @@ public class ConditionalAction extends ActionList { @@ -133,8 +133,8 @@ public class ConditionalAction extends ActionList {
}
@Override
protected Object update(HashMap<String, String> params) {
String conditionClass = params.get(REALM_CONDITION);
protected Object update(Params params) {
String conditionClass = params.getString(REALM_CONDITION);
Condition condition = Condition.create(conditionClass);
if (isNull(condition)) return t("Unknown type of condition: {}",conditionClass);
condition.parent(this);

4
src/main/java/de/srsoftware/web4rail/actions/CoupleTrain.java

@ -1,11 +1,11 @@ @@ -1,11 +1,11 @@
package de.srsoftware.web4rail.actions;
import java.util.HashMap;
import java.util.List;
import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Checkbox;
import de.srsoftware.web4rail.tags.Fieldset;
@ -63,7 +63,7 @@ public class CoupleTrain extends Action { @@ -63,7 +63,7 @@ public class CoupleTrain extends Action {
}
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
last = "on".equals(params.get(LAST));
swap = "on".equals(params.get(SWAP));
return super.update(params);

8
src/main/java/de/srsoftware/web4rail/actions/DelayedAction.java

@ -1,12 +1,12 @@ @@ -1,12 +1,12 @@
package de.srsoftware.web4rail.actions;
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.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Window;
@ -85,8 +85,8 @@ public class DelayedAction extends ActionList { @@ -85,8 +85,8 @@ public class DelayedAction extends ActionList {
}
@Override
protected Object update(HashMap<String, String> params) {
String d = params.get(MIN_DELAY);
protected Object update(Params params) {
String d = params.getString(MIN_DELAY);
if (isSet(d)) try {
int ms = Integer.parseInt(d);
if (ms < 0) throw new NumberFormatException(t("Delay must not be less than zero!"));
@ -96,7 +96,7 @@ public class DelayedAction extends ActionList { @@ -96,7 +96,7 @@ public class DelayedAction extends ActionList {
props.children().insertElementAt(new Tag("div").content(nfe.getMessage()), 2);
return props;
}
d = params.get(MAX_DELAY);
d = params.getString(MAX_DELAY);
if (isSet(d)) try {
int ms = Integer.parseInt(d);
if (ms < 0) throw new NumberFormatException(t("Delay must not be less than zero!"));

6
src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
package de.srsoftware.web4rail.actions;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -8,6 +7,7 @@ import org.json.JSONObject; @@ -8,6 +7,7 @@ import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.LoadCallback;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Checkbox;
import de.srsoftware.web4rail.tags.Fieldset;
@ -80,10 +80,10 @@ public class DetermineTrainInBlock extends Action { @@ -80,10 +80,10 @@ public class DetermineTrainInBlock extends Action {
};
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
LOG.debug("update: {}",params);
if (params.containsKey(BLOCK)) {
Tile tile = plan.get(new Id(params.get(BLOCK)), true);
Tile tile = plan.get(new Id(params.getString(BLOCK)), true);
if (tile instanceof Block) {
block = (Block) tile;
} else return t("Clicked tile is not a {}!",t("block"));

4
src/main/java/de/srsoftware/web4rail/actions/DisableEnableBlock.java

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
package de.srsoftware.web4rail.actions;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -9,6 +8,7 @@ import org.json.JSONObject; @@ -9,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.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Radio;
import de.srsoftware.web4rail.tags.Window;
@ -82,7 +82,7 @@ public class DisableEnableBlock extends Action { @@ -82,7 +82,7 @@ public class DisableEnableBlock extends Action {
};
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
LOG.debug("update: {}",params);
Id blockId = Id.from(params,Block.class.getSimpleName());
Tile tile = isSet(blockId) ? BaseClass.get(blockId) : null;

6
src/main/java/de/srsoftware/web4rail/actions/EngageDecoupler.java

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
package de.srsoftware.web4rail.actions;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -8,6 +7,7 @@ import org.json.JSONObject; @@ -8,6 +7,7 @@ import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.LoadCallback;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Decoupler;
@ -69,10 +69,10 @@ public class EngageDecoupler extends Action { @@ -69,10 +69,10 @@ public class EngageDecoupler extends Action {
};
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
LOG.debug("update: {}", params);
if (params.containsKey(DECOUPLER)) {
Tile tile = BaseClass.get(new Id(params.get(DECOUPLER)));
Tile tile = BaseClass.get(new Id(params.getString(DECOUPLER)));
if (tile instanceof Decoupler) {
decoupler = (Decoupler) tile;
} else return t("Clicked tile is not a {}!", t("decoupler"));

6
src/main/java/de/srsoftware/web4rail/actions/Loop.java

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
package de.srsoftware.web4rail.actions;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
@ -8,6 +7,7 @@ import org.json.JSONObject; @@ -8,6 +7,7 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.Route;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Fieldset;
@ -97,9 +97,9 @@ public class Loop extends ActionList { @@ -97,9 +97,9 @@ public class Loop extends ActionList {
}
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
LOG.debug("update: {}",params);
String newObject = params.get(OBJECT);
String newObject = params.getString(OBJECT);
if (isSet(newObject)) object = newObject;
return super.update(params);
}

8
src/main/java/de/srsoftware/web4rail/actions/SendCommand.java

@ -1,7 +1,6 @@ @@ -1,7 +1,6 @@
package de.srsoftware.web4rail.actions;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import org.json.JSONObject;
@ -9,6 +8,7 @@ import org.json.JSONObject; @@ -9,6 +8,7 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Command;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Radio;
@ -86,10 +86,10 @@ public class SendCommand extends Action{ @@ -86,10 +86,10 @@ public class SendCommand extends Action{
}
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
LOG.debug("update: {}",params);
command = params.get(COMMAND);
String t = params.get(TARGET);
command = params.getString(COMMAND);
String t = params.getString(TARGET);
if (isSet(t)) target = Target.valueOf(t);
return properties();
}

4
src/main/java/de/srsoftware/web4rail/actions/SetContextTrain.java

@ -1,12 +1,12 @@ @@ -1,12 +1,12 @@
package de.srsoftware.web4rail.actions;
import java.util.HashMap;
import java.util.List;
import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.LoadCallback;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Window;
@ -60,7 +60,7 @@ public class SetContextTrain extends Action { @@ -60,7 +60,7 @@ public class SetContextTrain extends Action {
};
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
LOG.debug("update: {}",params);
Id trainId = Id.from(params,Train.class.getSimpleName());
if (isSet(trainId)) train = Train.get(trainId);

6
src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
package de.srsoftware.web4rail.actions;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -8,6 +7,7 @@ import org.json.JSONObject; @@ -8,6 +7,7 @@ import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.LoadCallback;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Label;
import de.srsoftware.web4rail.tags.Window;
@ -76,9 +76,9 @@ public class SetDisplayText extends TextAction{ @@ -76,9 +76,9 @@ public class SetDisplayText extends TextAction{
}
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
if (params.containsKey(DISPLAY)) {
Tile object = plan.get(new Id(params.get(DISPLAY)), true);
Tile object = plan.get(new Id(params.getString(DISPLAY)), true);
if (object instanceof TextDisplay) {
display = (TextDisplay) object;
} else return t("Clicked tile is not a {}!",t("display"));

6
src/main/java/de/srsoftware/web4rail/actions/SetPower.java

@ -1,12 +1,12 @@ @@ -1,12 +1,12 @@
package de.srsoftware.web4rail.actions;
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.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Radio;
import de.srsoftware.web4rail.tags.Window;
@ -81,9 +81,9 @@ public class SetPower extends Action{ @@ -81,9 +81,9 @@ public class SetPower extends Action{
}
@Override
protected Window update(HashMap<String, String> params) {
protected Window update(Params params) {
LOG.debug("update: {}",params);
String newState = params.get(STATE);
String newState = params.getString(STATE);
if (isSet(newState)) pc = POWERCHANGE.valueOf(newState);
return parent().properties();
}

8
src/main/java/de/srsoftware/web4rail/actions/SetRelayOrSwitch.java

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
package de.srsoftware.web4rail.actions;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -9,6 +8,7 @@ import org.json.JSONObject; @@ -9,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.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Select;
import de.srsoftware.web4rail.tags.Window;
@ -113,14 +113,14 @@ public class SetRelayOrSwitch extends Action { @@ -113,14 +113,14 @@ public class SetRelayOrSwitch extends Action {
};
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
LOG.debug("update: {}",params);
String tileId = params.get(Relay.class.getSimpleName());
String tileId = params.getString(Relay.class.getSimpleName());
Tile tile = isSet(tileId) ? BaseClass.get(new Id(tileId)) : relayOrSwitch;
if (tile instanceof Relay || tile instanceof Switch) {
relayOrSwitch = tile;
}
String st = params.get(Relay.STATE);
String st = params.getString(Relay.STATE);
if (isSet(st)) state = st.equals("true");
return context().properties();
}

8
src/main/java/de/srsoftware/web4rail/actions/SetSignal.java

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
package de.srsoftware.web4rail.actions;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -8,6 +7,7 @@ import org.json.JSONObject; @@ -8,6 +7,7 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Select;
import de.srsoftware.web4rail.tags.Window;
@ -99,12 +99,12 @@ public class SetSignal extends Action { @@ -99,12 +99,12 @@ public class SetSignal extends Action {
};
@Override
public Object update(HashMap<String, String> params) {
String signalId = params.get(SIGNAL);
public Object update(Params params) {
String signalId = params.getString(SIGNAL);
Id tileId = isSet(signalId) ? new Id(signalId) : null;
Tile tile = isSet(tileId) ? plan.get(tileId, false) : null;
if (tile instanceof Signal) signal = (Signal) tile;
String st = params.get(Signal.STATE);
String st = params.getString(Signal.STATE);
if (isSet(st)) state = st;
return super.update(params);
}

20
src/main/java/de/srsoftware/web4rail/actions/SetSpeed.java

@ -1,12 +1,12 @@ @@ -1,12 +1,12 @@
package de.srsoftware.web4rail.actions;
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.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Window;
@ -68,21 +68,13 @@ public class SetSpeed extends Action{ @@ -68,21 +68,13 @@ public class SetSpeed extends Action{
}
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
String error = null;
String ms = params.get(MAX_SPEED);
if (ms == null) {
ms = ""+128;
} else {
try {
int s = Integer.parseInt(ms);
if (s<0) error = t("Speed must not be less than zero!");
if (isNull(error)) speed = s;
} catch (NumberFormatException e) {
error = t("Not a valid number!");
}
}
Integer ms = params.getInt(MAX_SPEED);
if (ms == null) ms = 128;
if (ms<0) error = t("Speed must not be less than zero!");
if (isSet(error)) return error;
speed = ms;
return super.update(params);
}
}

8
src/main/java/de/srsoftware/web4rail/actions/SetTurnout.java

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
package de.srsoftware.web4rail.actions;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -9,6 +8,7 @@ import org.json.JSONObject; @@ -9,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.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Select;
import de.srsoftware.web4rail.tags.Window;
@ -101,15 +101,15 @@ public class SetTurnout extends Action { @@ -101,15 +101,15 @@ public class SetTurnout extends Action {
};
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
LOG.debug("update: {}",params);
if (params.containsKey(TURNOUT)) {
BaseClass object = BaseClass.get(new Id(params.get(TURNOUT)));
BaseClass object = BaseClass.get(new Id(params.getString(TURNOUT)));
if (object instanceof Turnout) {
turnout = (Turnout) object;
} else return t("Clicked tile is not a {}!",t("turnout"));
}
String st = params.get(Turnout.STATE);
String st = params.getString(Turnout.STATE);
if (isSet(st)) state = Turnout.State.valueOf(st);
return super.update(params);
}

6
src/main/java/de/srsoftware/web4rail/actions/SplitTrain.java

@ -1,12 +1,12 @@ @@ -1,12 +1,12 @@
package de.srsoftware.web4rail.actions;
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.Params;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
@ -53,8 +53,8 @@ public class SplitTrain extends Action { @@ -53,8 +53,8 @@ public class SplitTrain extends Action {
}
@Override
protected Object update(HashMap<String, String> params) {
if (params.containsKey(POSITION)) position = Integer.parseInt(params.get(POSITION));
protected Object update(Params params) {
if (params.containsKey(POSITION)) position = params.getInt(POSITION);
return super.update(params);
}
}

4
src/main/java/de/srsoftware/web4rail/actions/StartStopAuto.java

@ -1,12 +1,12 @@ @@ -1,12 +1,12 @@
package de.srsoftware.web4rail.actions;
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.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Radio;
import de.srsoftware.web4rail.tags.Window;
@ -55,7 +55,7 @@ public class StartStopAuto extends Action { @@ -55,7 +55,7 @@ public class StartStopAuto extends Action {
return inverted ? t("Start autopilot") : t("Stop autopilot");
}
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
inverted = "on".equals(params.get(INVERTED));
return super.update(params);
}

8
src/main/java/de/srsoftware/web4rail/actions/SwitchFunction.java

@ -1,12 +1,12 @@ @@ -1,12 +1,12 @@
package de.srsoftware.web4rail.actions;
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.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Radio;
import de.srsoftware.web4rail.tags.Select;
@ -93,13 +93,13 @@ public class SwitchFunction extends Action { @@ -93,13 +93,13 @@ public class SwitchFunction extends Action {
}
@Override
protected Object update(HashMap<String, String> params) {
String fn = params.get(FUNCTION);
protected Object update(Params params) {
String fn = params.getString(FUNCTION);
if (isSet(fn)) {
function = Integer.parseInt(fn);
if (function < 1 || function > 4) function = 1;
}
String effect = params.get(EFFECT);
String effect = params.getString(EFFECT);
if (isSet(effect)) switch (effect) {
case "1":
case "0":

6
src/main/java/de/srsoftware/web4rail/actions/TextAction.java

@ -1,11 +1,11 @@ @@ -1,11 +1,11 @@
package de.srsoftware.web4rail.actions;
import java.util.HashMap;
import java.util.List;
import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Label;
@ -52,9 +52,9 @@ public abstract class TextAction extends Action { @@ -52,9 +52,9 @@ public abstract class TextAction extends Action {
}
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
LOG.debug("update: {}",params);
if (params.containsKey(TEXT)) text = params.get(TEXT);
if (params.containsKey(TEXT)) text = params.getString(TEXT);
return super.update(params);
}
}

4
src/main/java/de/srsoftware/web4rail/actions/TriggerContact.java

@ -1,12 +1,12 @@ @@ -1,12 +1,12 @@
package de.srsoftware.web4rail.actions;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Contact;
@ -63,7 +63,7 @@ public class TriggerContact extends Action { @@ -63,7 +63,7 @@ public class TriggerContact extends Action {
};
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
LOG.debug("update: {}",params);
Id contactId = Id.from(params,CONTACT);
if (isSet(contactId)) contact = Contact.get(contactId);

8
src/main/java/de/srsoftware/web4rail/actions/WaitForContact.java

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
package de.srsoftware.web4rail.actions;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -10,6 +9,7 @@ import de.srsoftware.tools.Tag; @@ -10,6 +9,7 @@ import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.EventListener;
import de.srsoftware.web4rail.LoadCallback;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Window;
@ -121,14 +121,14 @@ public class WaitForContact extends ActionList { @@ -121,14 +121,14 @@ public class WaitForContact extends ActionList {
}
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
if (params.containsKey(CONTACT)) {
Tile tile = BaseClass.get(new Id(params.get(CONTACT)));
Tile tile = BaseClass.get(new Id(params.getString(CONTACT)));
if (tile instanceof Contact) {
contact = (Contact) tile;
} else return t("Clicked tile is not a {}!",t("contact"));
}
if (params.containsKey(TIMEOUT)) timeout = Integer.parseInt(params.get(TIMEOUT));
if (params.containsKey(TIMEOUT)) timeout = params.getInt(TIMEOUT);
return super.update(params);
}
}

6
src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
package de.srsoftware.web4rail.conditions;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -8,6 +7,7 @@ import org.json.JSONObject; @@ -8,6 +7,7 @@ import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.LoadCallback;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Window;
import de.srsoftware.web4rail.tiles.Block;
@ -63,9 +63,9 @@ public class BlockFree extends Condition { @@ -63,9 +63,9 @@ public class BlockFree extends Condition {
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
if (params.containsKey(BLOCK)) {
Tile tile = plan.get(new Id(params.get(BLOCK)), true);
Tile tile = plan.get(new Id(params.getString(BLOCK)), true);
if (tile instanceof Block) {
block = (Block) tile;
} else return t("Clicked tile is not a {}!",t("block"));

6
src/main/java/de/srsoftware/web4rail/conditions/CarInTrain.java

@ -1,11 +1,11 @@ @@ -1,11 +1,11 @@
package de.srsoftware.web4rail.conditions;
import java.util.HashMap;
import java.util.List;
import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.moving.Car;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Fieldset;
@ -51,8 +51,8 @@ public class CarInTrain extends Condition { @@ -51,8 +51,8 @@ public class CarInTrain extends Condition {
}
@Override
protected Object update(HashMap<String, String> params) {
String carId = params.get(Car.class.getSimpleName());
protected Object update(Params params) {
String carId = params.getString(Car.class.getSimpleName());
if (isSet(carId)) car = BaseClass.get(new Id(carId));
return super.update(params);
}

10
src/main/java/de/srsoftware/web4rail/conditions/CarOrientation.java

@ -1,12 +1,12 @@ @@ -1,12 +1,12 @@
package de.srsoftware.web4rail.conditions;
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.Params;
import de.srsoftware.web4rail.moving.Car;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Fieldset;
@ -77,8 +77,8 @@ public class CarOrientation extends Condition { @@ -77,8 +77,8 @@ public class CarOrientation extends Condition {
}
@Override
protected Object update(HashMap<String, String> params) {
String or = params.get(ORIENTATION);
protected Object update(Params params) {
String or = params.getString(ORIENTATION);
if (isSet(or)) switch (or){
case "f":
orientation = Car.FORWARD;
@ -87,9 +87,9 @@ public class CarOrientation extends Condition { @@ -87,9 +87,9 @@ public class CarOrientation extends Condition {
orientation = Car.REVERSE;
break;
}
String carId = params.get(Car.class.getSimpleName());
String carId = params.getString(Car.class.getSimpleName());
if (isSet(carId)) car = BaseClass.get(new Id(carId));
if (params.containsKey(POSITION)) position = Integer.parseInt(params.get(POSITION));
if (params.containsKey(POSITION)) position = params.getInt(POSITION);
return super.update(params);
}
}

14
src/main/java/de/srsoftware/web4rail/conditions/Condition.java

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
package de.srsoftware.web4rail.conditions;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@ -10,10 +9,11 @@ import org.json.JSONObject; @@ -10,10 +9,11 @@ import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import de.srsoftware.tools.translations.Translation;
import de.srsoftware.tools.Tag;
import de.srsoftware.tools.translations.Translation;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.Plan;
import de.srsoftware.web4rail.actions.Action;
import de.srsoftware.web4rail.tags.Checkbox;
@ -36,8 +36,8 @@ public abstract class Condition extends BaseClass { @@ -36,8 +36,8 @@ public abstract class Condition extends BaseClass {
register();
}
public static Object action(HashMap<String, String> params,Plan plan) {
String action = params.get(ACTION);
public static Object action(Params params,Plan plan) {
String action = params.getString(ACTION);
if (action == null) return t("No action passed to Condition.action!");
Id id = Id.from(params);
@ -58,8 +58,8 @@ public abstract class Condition extends BaseClass { @@ -58,8 +58,8 @@ public abstract class Condition extends BaseClass {
return t("Unknown action: {}",action);
}
private static Object addCondition(HashMap<String, String> params) {
String type = params.get(REALM_CONDITION);
private static Object addCondition(Params params) {
String type = params.getString(REALM_CONDITION);
if (isNull(type)) return t("No type supplied to addCondition!");
Id parentId = Id.from(params);
@ -169,7 +169,7 @@ public abstract class Condition extends BaseClass { @@ -169,7 +169,7 @@ public abstract class Condition extends BaseClass {
return t("invalid condition");
}
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
inverted = "on".equals(params.get(INVERTED));
super.update(params);
return context().properties();

6
src/main/java/de/srsoftware/web4rail/conditions/RouteEndBlock.java

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
package de.srsoftware.web4rail.conditions;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -8,6 +7,7 @@ import org.json.JSONObject; @@ -8,6 +7,7 @@ import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.LoadCallback;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.Route;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Window;
@ -69,9 +69,9 @@ public class RouteEndBlock extends Condition{ @@ -69,9 +69,9 @@ public class RouteEndBlock extends Condition{
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
if (params.containsKey(BLOCK)) {
Tile tile = plan.get(new Id(params.get(BLOCK)), true);
Tile tile = plan.get(new Id(params.getString(BLOCK)), true);
if (tile instanceof Block) {
block = (Block) tile;
} else return t("Clicked tile is not a {}!",t("block"));

6
src/main/java/de/srsoftware/web4rail/conditions/SwitchIsOn.java

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
package de.srsoftware.web4rail.conditions;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -9,6 +8,7 @@ import org.json.JSONObject; @@ -9,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.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Radio;
import de.srsoftware.web4rail.tags.Window;
@ -67,8 +67,8 @@ public class SwitchIsOn extends Condition { @@ -67,8 +67,8 @@ public class SwitchIsOn extends Condition {
}
@Override
protected Object update(HashMap<String, String> params) {
String switchId = params.get(SWITCH);
protected Object update(Params params) {
String switchId = params.getString(SWITCH);
Tile tile = isSet(switchId) ? BaseClass.get(new Id(switchId)) : null;
if (tile instanceof Switch) swtch = (Switch) tile;
return super.update(params);

6
src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java

@ -1,11 +1,11 @@ @@ -1,11 +1,11 @@
package de.srsoftware.web4rail.conditions;
import java.util.HashMap;
import java.util.List;
import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
@ -58,8 +58,8 @@ public class TrainHasTag extends Condition { @@ -58,8 +58,8 @@ public class TrainHasTag extends Condition {
}
@Override
protected Object update(HashMap<String, String> params) {
tag = params.get(TAG);
protected Object update(Params params) {
tag = params.getString(TAG);
return super.update(params);
}
}

6
src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java

@ -1,11 +1,11 @@ @@ -1,11 +1,11 @@
package de.srsoftware.web4rail.conditions;
import java.util.HashMap;
import java.util.List;
import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Window;
@ -45,9 +45,9 @@ public class TrainLength extends Condition { @@ -45,9 +45,9 @@ public class TrainLength extends Condition {
}
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
if (params.containsKey(LENGTH)) try {
int ml = Integer.parseInt(params.get(LENGTH));
int ml = params.getInt(LENGTH);
if (ml < 1) throw new NumberFormatException(t("length must be larger than zero!"));
treshold = ml;
} catch (NumberFormatException nfe) {

6
src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java

@ -1,11 +1,11 @@ @@ -1,11 +1,11 @@
package de.srsoftware.web4rail.conditions;
import java.util.HashMap;
import java.util.List;
import org.json.JSONObject;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Window;
@ -58,9 +58,9 @@ public class TrainSelect extends Condition { @@ -58,9 +58,9 @@ public class TrainSelect extends Condition {
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
if (!params.containsKey(TRAIN)) return t("No train id passed to TrainSelect.update()!");
Id tid = new Id(params.get(TRAIN));
Id tid = new Id(params.getString(TRAIN));
Train train = Train.get(tid);
if (train == null) return t("No train with id {} found!",tid);
this.train = train;

6
src/main/java/de/srsoftware/web4rail/conditions/TrainSpeed.java

@ -1,11 +1,11 @@ @@ -1,11 +1,11 @@
package de.srsoftware.web4rail.conditions;
import java.util.HashMap;
import java.util.List;
import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Window;
@ -44,9 +44,9 @@ public class TrainSpeed extends Condition { @@ -44,9 +44,9 @@ public class TrainSpeed extends Condition {
}
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
if (params.containsKey(SPEED)) try {
int ml = Integer.parseInt(params.get(SPEED));
int ml = params.getInt(SPEED);
if (ml < 0) throw new NumberFormatException(t("speed must be non-negative!"));
treshold = ml;
} catch (NumberFormatException nfe) {

8
src/main/java/de/srsoftware/web4rail/conditions/TrainWasInBlock.java

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
package de.srsoftware.web4rail.conditions;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -8,6 +7,7 @@ import org.json.JSONObject; @@ -8,6 +7,7 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
@ -68,13 +68,13 @@ public class TrainWasInBlock extends Condition { @@ -68,13 +68,13 @@ public class TrainWasInBlock extends Condition {
@Override
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
if (!params.containsKey(BLOCK)) return t("No block id passed to TrainWasInBlock.update()!");
Id bid = new Id(params.get(BLOCK));
Id bid = new Id(params.getString(BLOCK));
Tile tile = BaseClass.get(bid);
if (tile instanceof Shadow) tile = ((Shadow)tile).overlay();
if (tile instanceof Block) block = (Block) tile;
if (params.containsKey(COUNT)) count=Integer.parseInt(params.get(COUNT));
if (params.containsKey(COUNT)) count=params.getInt(COUNT);
return super.update(params);
}
}

18
src/main/java/de/srsoftware/web4rail/devices/Decoder.java

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
package de.srsoftware.web4rail.devices;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@ -15,6 +14,7 @@ import de.srsoftware.web4rail.BaseClass; @@ -15,6 +14,7 @@ import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Command;
import de.srsoftware.web4rail.Command.Reply;
import de.srsoftware.web4rail.Constants;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.Protocol;
import de.srsoftware.web4rail.moving.Locomotive;
import de.srsoftware.web4rail.tags.Button;
@ -44,9 +44,9 @@ public class Decoder extends BaseClass implements Constants, Device { @@ -44,9 +44,9 @@ public class Decoder extends BaseClass implements Constants, Device {
private String type;
private Locomotive loco;
public static Object action(HashMap<String, String> params) {
public static Object action(Params params) {
Decoder decoder = BaseClass.get(Id.from(params));
switch (params.get(Constants.ACTION)) {
switch (params.getString(Constants.ACTION)) {
case ACTION_DECOUPLE:
return decoder.dismount();
case ACTION_PROGRAM:
@ -57,7 +57,7 @@ public class Decoder extends BaseClass implements Constants, Device { @@ -57,7 +57,7 @@ public class Decoder extends BaseClass implements Constants, Device {
return decoder.update(params);
}
String message = BaseClass.t("Unknown action: {}",params.get(Constants.ACTION));
String message = BaseClass.t("Unknown action: {}",params.getString(Constants.ACTION));
return (BaseClass.isNull(decoder)) ? message : decoder.properties(message);
}
@ -142,10 +142,10 @@ public class Decoder extends BaseClass implements Constants, Device { @@ -142,10 +142,10 @@ public class Decoder extends BaseClass implements Constants, Device {
private Window program(HashMap<String, String> params) {
String error = null;
if (params.get(ACTION).equals(ACTION_PROGRAM)) try {
int cv = Integer.parseInt(params.get(CV));
int val = Integer.parseInt(params.get(VALUE));
boolean pom = !params.get(MODE).equals(TRACK);
if (ACTION_PROGRAM.equals(params.get(ACTION))) try {
int cv = params.getInt(CV);
int val = params.getInt(VALUE);
boolean pom = !TRACK.equals(params.get(MODE));
error = program(cv,val,pom);
} catch (NumberFormatException e) {}
return properties(error);
@ -281,7 +281,7 @@ public class Decoder extends BaseClass implements Constants, Device { @@ -281,7 +281,7 @@ public class Decoder extends BaseClass implements Constants, Device {
}
@Override
protected Window update(HashMap<String, String> params) {
protected Window update(Params params) {
super.update(params);
if (params.containsKey(TYPE)) type = params.get(TYPE);
if (params.containsKey(Device.PROTOCOL)) setProtocol(Protocol.valueOf(params.get(Device.PROTOCOL)));

31
src/main/java/de/srsoftware/web4rail/moving/Car.java

@ -22,6 +22,7 @@ import org.slf4j.LoggerFactory; @@ -22,6 +22,7 @@ import org.slf4j.LoggerFactory;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.MaintnanceTask;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.Plan;
import de.srsoftware.web4rail.tags.Button;
import de.srsoftware.web4rail.tags.Fieldset;
@ -76,15 +77,15 @@ public class Car extends BaseClass implements Comparable<Car>{ @@ -76,15 +77,15 @@ public class Car extends BaseClass implements Comparable<Car>{
register();
}
public static Object action(HashMap<String, String> params,Plan plan) throws IOException {
String id = params.get(ID);
public static Object action(Params params,Plan plan) throws IOException {
String id = params.getString(ID);
Car car = id == null ? null : Car.get(new Id(id));
switch (params.get(ACTION)) {
switch (params.getString(ACTION)) {
case ACTION_ADD:
if (isSet(car)) {
car.clone();
} else new Car(params.get(Car.NAME)).parent(plan);
} else new Car(params.getString(Car.NAME)).parent(plan);
return Car.manager(params);
case ACTION_DECOUPLE:
return car.train().decoupleAfter(car);
@ -101,7 +102,7 @@ public class Car extends BaseClass implements Comparable<Car>{ @@ -101,7 +102,7 @@ public class Car extends BaseClass implements Comparable<Car>{
return car.update(params);
}
if (car instanceof Locomotive) return Locomotive.action(params,plan);
return t("Unknown action: {}",params.get(ACTION));
return t("Unknown action: {}",params.getString(ACTION));
}
@Override
@ -235,12 +236,12 @@ public class Car extends BaseClass implements Comparable<Car>{ @@ -235,12 +236,12 @@ public class Car extends BaseClass implements Comparable<Car>{
return form.addTo(fieldset);
}
public static Object manager(Map<String, String> params) {
public static Object manager(Params params) {
Window win = new Window("car-manager", t("Car manager"));
new Tag("h4").content(t("known cars")).addTo(win);
new Tag("p").content(t("Click on a name to edit the entry.")).addTo(win);
String order = params.get(ORDER);
String order = params.getString(ORDER);
Tag nameLink = link("span", t("Name"), Map.of(REALM,REALM_CAR,ACTION,ACTION_PROPS,ORDER,NAME));
Table table = new Table().addHead(t("Stock ID"),nameLink,t("Max. Speed",speedUnit),t("Length"),t("Train"),t("Tags"),t("driven distance"),t("Actions"));
@ -364,22 +365,22 @@ public class Car extends BaseClass implements Comparable<Car>{ @@ -364,22 +365,22 @@ public class Car extends BaseClass implements Comparable<Car>{
return this;
}
protected Object update(HashMap<String, String> params) {
protected Object update(Params params) {
super.update(params);
if (params.containsKey(NAME)) name = params.get(NAME).trim();
if (params.containsKey(LENGTH)) length = Integer.parseInt(params.get(LENGTH));
if (params.containsKey(MAX_SPEED)) maxSpeedForward = Integer.parseInt(params.get(MAX_SPEED));
if (params.containsKey(MAX_SPEED_REVERSE)) maxSpeedReverse = Integer.parseInt(params.get(MAX_SPEED_REVERSE));
if (params.containsKey(STOCK_ID)) stockId = params.get(STOCK_ID);
if (params.containsKey(NAME)) name = params.getString(NAME).trim();
if (params.containsKey(LENGTH)) length = params.getInt(LENGTH);
if (params.containsKey(MAX_SPEED)) maxSpeedForward = params.getInt(MAX_SPEED);
if (params.containsKey(MAX_SPEED_REVERSE)) maxSpeedReverse = params.getInt(MAX_SPEED_REVERSE);
if (params.containsKey(STOCK_ID)) stockId = params.getString(STOCK_ID);
if (params.containsKey(TAGS)) {
String[] parts = params.get(TAGS).replace(",", " ").split(" ");
String[] parts = params.getString(TAGS).replace(",", " ").split(" ");
tags.clear();
for (String tag : parts) {
tag = tag.trim();
if (!tag.isEmpty()) tags.add(tag);
}
}
return Car.manager(Map.of());
return Car.manager(new Params());
}
public Object turn() {

15
src/main/java/de/srsoftware/web4rail/moving/Locomotive.java

@ -13,6 +13,7 @@ import de.srsoftware.tools.Tag; @@ -13,6 +13,7 @@ import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Command;
import de.srsoftware.web4rail.Constants;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.Plan;
import de.srsoftware.web4rail.devices.Decoder;
import de.srsoftware.web4rail.tags.Button;
@ -41,12 +42,12 @@ public class Locomotive extends Car implements Constants{ @@ -41,12 +42,12 @@ public class Locomotive extends Car implements Constants{
super(name,id);
}
public static Object action(HashMap<String, String> params, Plan plan) throws IOException {
String id = params.get(ID);
public static Object action(Params params, Plan plan) throws IOException {
String id = params.getString(ID);
Locomotive loco = id == null ? null : BaseClass.get(new Id(id));
switch (params.get(ACTION)) {
switch (params.getString(ACTION)) {
case ACTION_ADD:
new Locomotive(params.get(Locomotive.NAME)).parent(plan).register();
new Locomotive(params.getString(Locomotive.NAME)).parent(plan).register();
return Locomotive.manager();
case ACTION_FASTER10:
return loco.faster(Train.defaultSpeedStep);
@ -55,7 +56,7 @@ public class Locomotive extends Car implements Constants{ @@ -55,7 +56,7 @@ public class Locomotive extends Car implements Constants{
case ACTION_PROPS:
return loco == null ? Locomotive.manager() : loco.properties();
case ACTION_SET_SPEED:
return loco.setSpeed(Integer.parseInt(params.get(SPEED)));
return loco.setSpeed(params.getInt(SPEED));
case ACTION_SLOWER10:
return loco.faster(-Train.defaultSpeedStep);
case ACTION_STOP:
@ -75,7 +76,7 @@ public class Locomotive extends Car implements Constants{ @@ -75,7 +76,7 @@ public class Locomotive extends Car implements Constants{
return Locomotive.manager();
}
return t("Unknown action: {}",params.get(ACTION));
return t("Unknown action: {}",params.getString(ACTION));
}
public static Fieldset cockpit(BaseClass locoOrTrain) {
@ -385,7 +386,7 @@ public class Locomotive extends Car implements Constants{ @@ -385,7 +386,7 @@ public class Locomotive extends Car implements Constants{
}
@Override
protected Window update(HashMap<String, String> params) {
protected Window update(Params params) {
super.update(params);
if (params.containsKey(REALM_DECODER)) {
Id decoderId = Id.from(params,REALM_DECODER);

46
src/main/java/de/srsoftware/web4rail/moving/Train.java

@ -7,7 +7,6 @@ import java.io.FileWriter; @@ -7,7 +7,6 @@ import java.io.FileWriter;
import java.io.IOException;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@ -24,6 +23,7 @@ import org.slf4j.LoggerFactory; @@ -24,6 +23,7 @@ import org.slf4j.LoggerFactory;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.LoadCallback;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.Plan;
import de.srsoftware.web4rail.Plan.Direction;
import de.srsoftware.web4rail.Route;
@ -100,8 +100,8 @@ public class Train extends BaseClass implements Comparable<Train> { @@ -100,8 +100,8 @@ public class Train extends BaseClass implements Comparable<Train> {
private BrakeProcess brake;
public static Object action(HashMap<String, String> params, Plan plan) throws IOException {
String action = params.get(ACTION);
public static Object action(Params params, Plan plan) throws IOException {
String action = params.getString(ACTION);
if (isNull(action)) return t("No action passed to Train.action!");
if (!params.containsKey(Train.ID)) {
switch (action) {
@ -144,7 +144,7 @@ public class Train extends BaseClass implements Comparable<Train> { @@ -144,7 +144,7 @@ public class Train extends BaseClass implements Comparable<Train> {
train.quitAutopilot();
return train.reverse().properties();
case ACTION_SET_SPEED:
return train.setSpeed(Integer.parseInt(params.get(SPEED)));
return train.setSpeed(params.getInt(SPEED));
case ACTION_SLOWER10:
return train.slower(Train.defaultSpeedStep);
case ACTION_START:
@ -161,7 +161,7 @@ public class Train extends BaseClass implements Comparable<Train> { @@ -161,7 +161,7 @@ public class Train extends BaseClass implements Comparable<Train> {
case ACTION_UPDATE:
return train.update(params);
}
return t("Unknown action: {}",params.get(ACTION));
return t("Unknown action: {}",params.getString(ACTION));
}
public Train add(Car car) {
@ -176,12 +176,12 @@ public class Train extends BaseClass implements Comparable<Train> { @@ -176,12 +176,12 @@ public class Train extends BaseClass implements Comparable<Train> {
tags.add(tag);
}
private Object addCar(HashMap<String, String> params) {
private Object addCar(Params params) {
LOG.debug("addCar({})",params);
String carId = params.get(CAR_ID);
String carId = params.getString(CAR_ID);
if (isNull(carId)) return t("No car id passed to Train.addCar!");
Car car = BaseClass.get(new Id(carId));
if (isNull(car)) return t("No car with id \"{}\" known!",params.get(CAR_ID));
if (isNull(car)) return t("No car with id \"{}\" known!",params.getString(CAR_ID));
add(car);
return properties();
}
@ -310,8 +310,8 @@ public class Train extends BaseClass implements Comparable<Train> { @@ -310,8 +310,8 @@ public class Train extends BaseClass implements Comparable<Train> {
return name().compareTo(o.toString());
}
public Window connect(HashMap<String, String> params) {
Train other = BaseClass.get(new Id(params.get(REALM_TRAIN)));
public Window connect(Params params) {
Train other = BaseClass.get(new Id(params.getString(REALM_TRAIN)));
if (isSet(other)) coupleWith(other, false);
return properties();
}
@ -339,14 +339,14 @@ public class Train extends BaseClass implements Comparable<Train> { @@ -339,14 +339,14 @@ public class Train extends BaseClass implements Comparable<Train> {
if (isSet(currentBlock)) currentBlock.setTrain(this);
}
private static Object create(HashMap<String, String> params, Plan plan) {
String locoId = params.get(Train.LOCO_ID);
private static Object create(Params params, Plan plan) {
String locoId = params.getString(Train.LOCO_ID);
if (isNull(locoId)) return t("Need loco id to create new train!");
Locomotive loco = BaseClass.get(new Id(locoId));
if (isNull(loco)) return t("unknown locomotive: {}",params.get(ID));
if (isNull(loco)) return t("unknown locomotive: {}",params.getString(ID));
Train train = new Train().add(loco);
train.parent(plan);
if (params.containsKey(NAME)) train.name(params.get(NAME));
if (params.containsKey(NAME)) train.name(params.getString(NAME));
train.register();
return train.properties();
}
@ -416,8 +416,8 @@ public class Train extends BaseClass implements Comparable<Train> { @@ -416,8 +416,8 @@ public class Train extends BaseClass implements Comparable<Train> {
return direction;
}
private Object dropCar(HashMap<String, String> params) {
String carId = params.get(CAR_ID);
private Object dropCar(Params params) {
String carId = params.getString(CAR_ID);
if (isNull(carId)) return t("Cannot drop car without car id!");
Car car = BaseClass.get(new Id(carId));
if (isSet(car)) {
@ -914,8 +914,8 @@ public class Train extends BaseClass implements Comparable<Train> { @@ -914,8 +914,8 @@ public class Train extends BaseClass implements Comparable<Train> {
return this;
}
private Object setDestination(HashMap<String, String> params) {
String dest = params.get(DESTINATION);
private Object setDestination(Params params) {
String dest = params.getString(DESTINATION);
if (isNull(currentBlock)) return properties("{} is not in a block!");
if (isNull(dest)) return properties(t("No destination supplied!"));
if (dest.isEmpty()) {
@ -1133,16 +1133,16 @@ public class Train extends BaseClass implements Comparable<Train> { @@ -1133,16 +1133,16 @@ public class Train extends BaseClass implements Comparable<Train> {
}
protected Window update(HashMap<String, String> params) {
protected Window update(Params params) {
LOG.debug("update({})",params);
pushPull = params.containsKey(PUSH_PULL) && params.get(PUSH_PULL).equals("on");
shunting = params.containsKey(SHUNTING) && params.get(SHUNTING).equals("on");
pushPull = params.containsKey(PUSH_PULL) && "on".equals(params.get(PUSH_PULL));
shunting = params.containsKey(SHUNTING) && "on".equals(params.get(SHUNTING));
if (params.containsKey(NAME)) {
name = params.get(NAME);
name = params.getString(NAME);
if (isSet(currentBlock)) plan.place(currentBlock);
}
if (params.containsKey(TAGS)) {
String[] parts = params.get(TAGS).replace(",", " ").split(" ");
String[] parts = params.getString(TAGS).replace(",", " ").split(" ");
tags.clear();
for (String tag : parts) {
tag = tag.trim();

16
src/main/java/de/srsoftware/web4rail/threads/ControlUnit.java

@ -7,7 +7,6 @@ import java.io.FileWriter; @@ -7,7 +7,6 @@ import java.io.FileWriter;
import java.io.IOException;
import java.net.Socket;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.concurrent.TimeoutException;
@ -20,6 +19,7 @@ import de.srsoftware.tools.translations.Translation; @@ -20,6 +19,7 @@ import de.srsoftware.tools.translations.Translation;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.Command;
import de.srsoftware.web4rail.Constants;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.Plan;
import de.srsoftware.web4rail.tags.Button;
import de.srsoftware.web4rail.tags.Fieldset;
@ -158,8 +158,8 @@ public class ControlUnit extends Thread implements Constants{ @@ -158,8 +158,8 @@ public class ControlUnit extends Thread implements Constants{
* @param params
* @return
*/
public Object process(HashMap<String, String> params) {
switch (params.get(ACTION)) {
public Object process(Params params) {
switch (params.getString(ACTION)) {
case ACTION_CONNECT:
restart();
return t("Control unit (re)started.");
@ -173,7 +173,7 @@ public class ControlUnit extends Thread implements Constants{ @@ -173,7 +173,7 @@ public class ControlUnit extends Thread implements Constants{
return update(params);
}
return t("Unknown action: {}",params.get(ACTION));
return t("Unknown action: {}",params.getString(ACTION));
}
/**
@ -391,10 +391,10 @@ public class ControlUnit extends Thread implements Constants{ @@ -391,10 +391,10 @@ public class ControlUnit extends Thread implements Constants{
* @param params
* @return
*/
public String update(HashMap<String, String> params) {
if (params.containsKey(HOST)) host = params.get(HOST);
if (params.containsKey(PORT)) port = Integer.parseInt(params.get(PORT));
if (params.containsKey(BUS)) bus = Integer.parseInt(params.get(BUS));
public String update(Params params) {
if (params.containsKey(HOST)) host = params.getString(HOST);
if (params.containsKey(PORT)) port = params.getInt(PORT);
if (params.containsKey(BUS)) bus = params.getInt(BUS);
return t("Updated control unit settings");
}
}

23
src/main/java/de/srsoftware/web4rail/tiles/Block.java

@ -22,6 +22,7 @@ import de.srsoftware.tools.Tag; @@ -22,6 +22,7 @@ import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Connector;
import de.srsoftware.web4rail.LoadCallback;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.Plan.Direction;
import de.srsoftware.web4rail.Range;
import de.srsoftware.web4rail.Route;
@ -505,8 +506,8 @@ public abstract class Block extends StretchableTile{ @@ -505,8 +506,8 @@ public abstract class Block extends StretchableTile{
}
@Override
public Tile update(HashMap<String, String> params) {
if (params.containsKey(NAME)) name=params.get(NAME);
public Tile update(Params params) {
if (params.containsKey(NAME)) name=params.getString(NAME);
if (params.containsKey(Train.class.getSimpleName())) {
Id trainId = Id.from(params,Train.class.getSimpleName());
if (trainId.equals(0)) { // remove first train
@ -525,25 +526,25 @@ public abstract class Block extends StretchableTile{ @@ -525,25 +526,25 @@ public abstract class Block extends StretchableTile{
}
}
}
turnAllowed = params.containsKey(ALLOW_TURN) && params.get(ALLOW_TURN).equals("on");
turnAllowed = params.containsKey(ALLOW_TURN) && "on".equals(params.get(ALLOW_TURN));
return super.update(params);
}
public Tile updateTimes(HashMap<String, String> params) throws IOException {
String tag = params.get(ACTION_DROP);
public Tile updateTimes(Params params) throws IOException {
String tag = params.getString(ACTION_DROP);
if (isSet(tag)) return drop(tag);
tag = params.get(RAISE);
tag = params.getString(RAISE);
if (isSet(tag)) return raise(tag);
String newTag = params.get(NEW_TAG);
String newTag = params.getString(NEW_TAG);
if (isSet(newTag)) {
newTag = newTag.replace(" ", "_").trim();
if (newTag.isEmpty()) newTag = null;
}
for (Entry<String, String> entry:params.entrySet()) {
for (Entry<String, Object> entry:params.entrySet()) {
String key = entry.getKey();
String val = entry.getValue();
Object val = entry.getValue();
if (key.startsWith("max.") || key.startsWith("min.")) {
String[] parts = key.split("\\.");
@ -558,8 +559,8 @@ public abstract class Block extends StretchableTile{ @@ -558,8 +559,8 @@ public abstract class Block extends StretchableTile{
waitTimes.add(wt);
}
if (isMin) {
wt.setMin(dir, Integer.parseInt(val));
} else wt.setMax(dir, Integer.parseInt(val));
wt.setMin(dir, Integer.parseInt(val.toString()));
} else wt.setMax(dir, Integer.parseInt(val.toString()));
}
}
for (WaitTime wt: waitTimes) wt.validate();

9
src/main/java/de/srsoftware/web4rail/tiles/Contact.java

@ -15,6 +15,7 @@ import de.srsoftware.tools.Tag; @@ -15,6 +15,7 @@ import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.EventListener;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.actions.Action;
import de.srsoftware.web4rail.actions.ActionList;
import de.srsoftware.web4rail.moving.Train;
@ -154,8 +155,8 @@ public class Contact extends Tile{ @@ -154,8 +155,8 @@ public class Contact extends Tile{
return this;
}
public static Object process(HashMap<String, String> params) {
String action = params.get(ACTION);
public static Object process(Params params) {
String action = params.getString(ACTION);
Id id = Id.from(params);
if (action == null) return t("Missing ACTION on call to {}.process()",Contact.class.getSimpleName());
Contact contact = isSet(id) ? BaseClass.get(id) : null;
@ -254,8 +255,8 @@ public class Contact extends Tile{ @@ -254,8 +255,8 @@ public class Contact extends Tile{
return true;
}
@Override
public Tile update(HashMap<String, String> params) {
if (params.containsKey(ADDRESS)) addr(Integer.parseInt(params.get(ADDRESS)));
public Tile update(Params params) {
if (params.containsKey(ADDRESS)) addr(params.getInt(ADDRESS));
return super.update(params);
}
}

12
src/main/java/de/srsoftware/web4rail/tiles/Decoupler.java

@ -2,7 +2,6 @@ package de.srsoftware.web4rail.tiles; @@ -2,7 +2,6 @@ package de.srsoftware.web4rail.tiles;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Vector;
import java.util.concurrent.TimeoutException;
@ -13,8 +12,9 @@ import de.srsoftware.tools.Tag; @@ -13,8 +12,9 @@ import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Command;
import de.srsoftware.web4rail.Command.Reply;
import de.srsoftware.web4rail.devices.Device;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.Protocol;
import de.srsoftware.web4rail.devices.Device;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Radio;
@ -158,16 +158,16 @@ public abstract class Decoupler extends Tile implements Device{ @@ -158,16 +158,16 @@ public abstract class Decoupler extends Tile implements Device{
}
@Override
public Tile update(HashMap<String, String> params) {
if (params.containsKey(PROTOCOL)) protocol = Protocol.valueOf(params.get(PROTOCOL));
public Tile update(Params params) {
if (params.containsKey(PROTOCOL)) protocol = Protocol.valueOf(params.getString(PROTOCOL));
if (params.containsKey(ADDRESS)) {
int newAddress = Integer.parseInt(params.get(ADDRESS));
int newAddress = params.getInt(ADDRESS);
if (newAddress != address) {
initialized = false;
address = newAddress;
}
}
String newPort = params.get(PORT);
String newPort = params.getString(PORT);
if (isSet(newPort)) {
int npa = Integer.parseInt(newPort);
if (npa != port) {

17
src/main/java/de/srsoftware/web4rail/tiles/Relay.java

@ -11,6 +11,7 @@ import org.json.JSONObject; @@ -11,6 +11,7 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.Command;
import de.srsoftware.web4rail.Command.Reply;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.devices.Device;
import de.srsoftware.web4rail.Protocol;
import de.srsoftware.web4rail.tags.Fieldset;
@ -223,14 +224,14 @@ public class Relay extends Tile implements Device{ @@ -223,14 +224,14 @@ public class Relay extends Tile implements Device{
}
@Override
public Tile update(HashMap<String, String> params) {
if (params.containsKey(PROTOCOL)) protocol = Protocol.valueOf(params.get(PROTOCOL));
if (params.containsKey(ADDRESS)) address = Integer.parseInt(params.get(ADDRESS));
if (params.containsKey(PORT_A)) portA = Integer.parseInt(params.get(PORT_A));
if (params.containsKey(PORT_B)) portB = Integer.parseInt(params.get(PORT_B));
if (params.containsKey(LABEL_A)) stateLabelA = params.get(LABEL_A);
if (params.containsKey(LABEL_B)) stateLabelB = params.get(LABEL_B);
if (params.containsKey(NAME)) name = params.get(NAME);
public Tile update(Params params) {
if (params.containsKey(PROTOCOL)) protocol = Protocol.valueOf(params.getString(PROTOCOL));
if (params.containsKey(ADDRESS)) address = params.getInt(ADDRESS);
if (params.containsKey(PORT_A)) portA = params.getInt(PORT_A);
if (params.containsKey(PORT_B)) portB = params.getInt(PORT_B);
if (params.containsKey(LABEL_A)) stateLabelA = params.getString(LABEL_A);
if (params.containsKey(LABEL_B)) stateLabelB = params.getString(LABEL_B);
if (params.containsKey(NAME)) name = params.getString(NAME);
return super.update(params);
}
}

7
src/main/java/de/srsoftware/web4rail/tiles/Signal.java

@ -14,6 +14,7 @@ import org.json.JSONObject; @@ -14,6 +14,7 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.Command;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.Plan.Direction;
import de.srsoftware.web4rail.Protocol;
import de.srsoftware.web4rail.tags.Button;
@ -211,11 +212,11 @@ public abstract class Signal extends Tile { @@ -211,11 +212,11 @@ public abstract class Signal extends Tile {
}
@Override
public Tile update(HashMap<String, String> params) {
public Tile update(Params params) {
HashMap<String,int[]> newAspects = new HashMap<String, int[]>();
for (Entry<String, String> entry : params.entrySet()) {
for (Entry<String, Object> entry : params.entrySet()) {
String key = entry.getKey();
String val = entry.getValue().trim();
String val = entry.getValue().toString().trim();
String[] parts = key.split("-");
if (parts.length>1) {

10
src/main/java/de/srsoftware/web4rail/tiles/StretchableTile.java

@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@
package de.srsoftware.web4rail.tiles;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
@ -8,6 +7,7 @@ import org.json.JSONObject; @@ -8,6 +7,7 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Window;
@ -72,9 +72,9 @@ public abstract class StretchableTile extends TileWithShadow { @@ -72,9 +72,9 @@ public abstract class StretchableTile extends TileWithShadow {
return stretch;
}
private void stretch(String value) {
private void stretch(Object value) {
try {
stretch(Integer.parseInt(value));
stretch(Integer.parseInt(value.toString()));
} catch (NumberFormatException nfe) {
LOG.warn("{} is not a valid length!",value);
}
@ -91,8 +91,8 @@ public abstract class StretchableTile extends TileWithShadow { @@ -91,8 +91,8 @@ public abstract class StretchableTile extends TileWithShadow {
protected abstract String stretchType();
@Override
public Tile update(HashMap<String, String> params) {
for (Entry<String, String> entry : params.entrySet()) {
public Tile update(Params params) {
for (Entry<String, Object> entry : params.entrySet()) {
switch (entry.getKey()) {
case STRETCH_LENGTH:
stretch(entry.getValue());

6
src/main/java/de/srsoftware/web4rail/tiles/Switch.java

@ -1,7 +1,6 @@ @@ -1,7 +1,6 @@
package de.srsoftware.web4rail.tiles;
import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map.Entry;
@ -13,6 +12,7 @@ import org.json.JSONObject; @@ -13,6 +12,7 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.actions.Action;
import de.srsoftware.web4rail.actions.ActionList;
import de.srsoftware.web4rail.tags.Fieldset;
@ -106,8 +106,8 @@ public class Switch extends Tile{ @@ -106,8 +106,8 @@ public class Switch extends Tile{
return this;
}
public static Object process(HashMap<String, String> params) {
String action = params.get(ACTION);
public static Object process(Params params) {
String action = params.getString(ACTION);
Id id = Id.from(params);
if (action == null) return t("Missing ACTION on call to {}.process()",Switch.class.getSimpleName());
Switch swtch = isSet(id) ? BaseClass.get(id) : null;

7
src/main/java/de/srsoftware/web4rail/tiles/TextDisplay.java

@ -12,6 +12,7 @@ import org.json.JSONObject; @@ -12,6 +12,7 @@ import org.json.JSONObject;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Select;
@ -70,11 +71,11 @@ public class TextDisplay extends StretchableTile { @@ -70,11 +71,11 @@ public class TextDisplay extends StretchableTile {
}
@Override
public Tile update(HashMap<String, String> params) {
for (Entry<String, String> entry : params.entrySet()) {
public Tile update(Params params) {
for (Entry<String, Object> entry : params.entrySet()) {
switch (entry.getKey()) {
case TEXT:
text(entry.getValue());
text(entry.getValue().toString());
break;
}
}

7
src/main/java/de/srsoftware/web4rail/tiles/Tile.java

@ -23,6 +23,7 @@ import de.srsoftware.tools.Tag; @@ -23,6 +23,7 @@ import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Connector;
import de.srsoftware.web4rail.LoadCallback;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.Plan;
import de.srsoftware.web4rail.Plan.Direction;
import de.srsoftware.web4rail.Route;
@ -565,9 +566,9 @@ public abstract class Tile extends BaseClass implements Comparable<Tile> { @@ -565,9 +566,9 @@ public abstract class Tile extends BaseClass implements Comparable<Tile> {
return t("{}({},{})", getClass().getSimpleName(), x, y);
}
public Tile update(HashMap<String, String> params) {
public Tile update(Params params) {
LOG.debug("{}.update({})", getClass().getSimpleName(), params);
String oneWayDir = params.get("oneway");
String oneWayDir = params.getString("oneway");
if (isSet(oneWayDir)) {
try {
oneWay = Direction.valueOf(oneWayDir);
@ -577,7 +578,7 @@ public abstract class Tile extends BaseClass implements Comparable<Tile> { @@ -577,7 +578,7 @@ public abstract class Tile extends BaseClass implements Comparable<Tile> {
}
disabled = "on".equals(params.get(DISABLED));
String len = params.get(LENGTH);
String len = params.getString(LENGTH);
if (isSet(len)) length(Integer.parseInt(len));
super.update(params);
plan.place(this);

14
src/main/java/de/srsoftware/web4rail/tiles/Turnout.java

@ -2,7 +2,6 @@ package de.srsoftware.web4rail.tiles; @@ -2,7 +2,6 @@ package de.srsoftware.web4rail.tiles;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeoutException;
@ -13,8 +12,9 @@ import de.srsoftware.tools.Tag; @@ -13,8 +12,9 @@ import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.BaseClass;
import de.srsoftware.web4rail.Command;
import de.srsoftware.web4rail.Command.Reply;
import de.srsoftware.web4rail.devices.Device;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.Protocol;
import de.srsoftware.web4rail.devices.Device;
import de.srsoftware.web4rail.moving.Train;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
@ -227,16 +227,16 @@ public abstract class Turnout extends Tile implements Device{ @@ -227,16 +227,16 @@ public abstract class Turnout extends Tile implements Device{
}
@Override
public Tile update(HashMap<String, String> params) {
if (params.containsKey(PROTOCOL)) protocol = Protocol.valueOf(params.get(PROTOCOL));
public Tile update(Params params) {
if (params.containsKey(PROTOCOL)) protocol = Protocol.valueOf(params.getString(PROTOCOL));
if (params.containsKey(ADDRESS)) {
int newAddress = Integer.parseInt(params.get(ADDRESS));
int newAddress = params.getInt(ADDRESS);
if (newAddress != address) {
initialized = false;
address = newAddress;
}
}
String newPort = params.get(PORT_A);
String newPort = params.getString(PORT_A);
if (isSet(newPort)) {
int npa = Integer.parseInt(newPort);
if (npa != portA) {
@ -244,7 +244,7 @@ public abstract class Turnout extends Tile implements Device{ @@ -244,7 +244,7 @@ public abstract class Turnout extends Tile implements Device{
initialized = false;
}
}
newPort = params.get(PORT_B);
newPort = params.getString(PORT_B);
if (isSet(newPort)) {
int npb = Integer.parseInt(newPort);
if (npb != portB) {

8
src/main/java/de/srsoftware/web4rail/tiles/TurnoutL.java

@ -1,10 +1,10 @@ @@ -1,10 +1,10 @@
package de.srsoftware.web4rail.tiles;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import de.srsoftware.web4rail.Command.Reply;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Window;
@ -46,9 +46,9 @@ public abstract class TurnoutL extends Turnout { @@ -46,9 +46,9 @@ public abstract class TurnoutL extends Turnout {
}
@Override
public Tile update(HashMap<String, String> params) {
if (params.containsKey(STRAIGHT)) portA = Integer.parseInt(params.get(STRAIGHT));
if (params.containsKey(LEFT)) portB = Integer.parseInt(params.get(LEFT));
public Tile update(Params params) {
if (params.containsKey(STRAIGHT)) portA = params.getInt(STRAIGHT);
if (params.containsKey(LEFT)) portB = params.getInt(LEFT);
return super.update(params);
}
}

8
src/main/java/de/srsoftware/web4rail/tiles/TurnoutR.java

@ -1,9 +1,9 @@ @@ -1,9 +1,9 @@
package de.srsoftware.web4rail.tiles;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import de.srsoftware.web4rail.Params;
import de.srsoftware.web4rail.tags.Fieldset;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Window;
@ -44,9 +44,9 @@ public abstract class TurnoutR extends Turnout { @@ -44,9 +44,9 @@ public abstract class TurnoutR extends Turnout {
}
@Override
public Tile update(HashMap<String, String> params) {
if (params.containsKey(STRAIGHT)) portA = Integer.parseInt(params.get(STRAIGHT));
if (params.containsKey(RIGHT)) portB = Integer.parseInt(params.get(RIGHT));
public Tile update(Params params) {
if (params.containsKey(STRAIGHT)) portA = params.getInt(STRAIGHT);
if (params.containsKey(RIGHT)) portB = params.getInt(RIGHT);
return super.update(params);
}
}

Loading…
Cancel
Save