diff --git a/pom.xml b/pom.xml index 524e03d..439062d 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.srsoftware web4rail - 1.4.35 + 1.4.36 Web4Rail jar Java Model Railway Control diff --git a/src/main/java/de/srsoftware/web4rail/Application.java b/src/main/java/de/srsoftware/web4rail/Application.java index 51a76da..41fc6d9 100644 --- a/src/main/java/de/srsoftware/web4rail/Application.java +++ b/src/main/java/de/srsoftware/web4rail/Application.java @@ -106,12 +106,12 @@ public class Application extends BaseClass{ * @throws NoSuchMethodException * @throws SecurityException */ - private static Object handle(HashMap 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{ * @param data * @return */ - private static HashMap inflate(String data) { + private static Params inflate(String data) { //LOG.debug("inflate({})",data); - HashMap params = new HashMap(); + 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{ * @param data * @return */ - private static HashMap inflate(byte[] data) { + private static Params inflate(byte[] data) { return inflate(new String(data,UTF8)); } @@ -186,9 +186,9 @@ public class Application extends BaseClass{ return Files.probeContentType(file.toPath()); } - private static Object open(HashMap 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{ */ private static void sendPlan(HttpExchange client) throws IOException { try { - HashMap params = inflate(client.getRequestBody().readAllBytes()); + Params params = inflate(client.getRequestBody().readAllBytes()); LOG.debug("sendPlan({})",params); if (params.isEmpty()) { diff --git a/src/main/java/de/srsoftware/web4rail/BaseClass.java b/src/main/java/de/srsoftware/web4rail/BaseClass.java index b47b40f..b32ef4e 100644 --- a/src/main/java/de/srsoftware/web4rail/BaseClass.java +++ b/src/main/java/de/srsoftware/web4rail/BaseClass.java @@ -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 params) { + public static Id from(Params params) { return Id.from(params,ID); } - public static Id from(Map 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{ return registry.remove(this.id()); } - protected Object update(HashMap 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 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()) { diff --git a/src/main/java/de/srsoftware/web4rail/History.java b/src/main/java/de/srsoftware/web4rail/History.java index b8b4a42..48f51c2 100644 --- a/src/main/java/de/srsoftware/web4rail/History.java +++ b/src/main/java/de/srsoftware/web4rail/History.java @@ -66,16 +66,16 @@ public class History { return list != null ? list : new Vector<>(); } - public static Object action(HashMap 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!"); diff --git a/src/main/java/de/srsoftware/web4rail/MaintnanceTask.java b/src/main/java/de/srsoftware/web4rail/MaintnanceTask.java index f7f2d47..4c3117f 100644 --- a/src/main/java/de/srsoftware/web4rail/MaintnanceTask.java +++ b/src/main/java/de/srsoftware/web4rail/MaintnanceTask.java @@ -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{ if (isSet(name)) tasks.add(name); } - public static Object action(HashMap 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{ return (isSet(task)) ? task.parent().properties(err) : err; } - private static MaintnanceTask createTask(HashMap 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); } diff --git a/src/main/java/de/srsoftware/web4rail/Params.java b/src/main/java/de/srsoftware/web4rail/Params.java new file mode 100644 index 0000000..8994b98 --- /dev/null +++ b/src/main/java/de/srsoftware/web4rail/Params.java @@ -0,0 +1,31 @@ +package de.srsoftware.web4rail; + +import java.util.HashMap; + +public class Params extends HashMap { + + 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; + } + } +} diff --git a/src/main/java/de/srsoftware/web4rail/Plan.java b/src/main/java/de/srsoftware/web4rail/Plan.java index 0374717..804d5f2 100644 --- a/src/main/java/de/srsoftware/web4rail/Plan.java +++ b/src/main/java/de/srsoftware/web4rail/Plan.java @@ -195,10 +195,10 @@ public class Plan extends BaseClass{ * @throws NoSuchMethodException * @throws SecurityException */ - public Object action(HashMap 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{ 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{ 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{ 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{ * @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 tc = Tile.class; clazz = tc.getName().replace(".Tile", "."+clazz); @@ -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 params) { + private Object analyze(Params params) { List oldRoutes = BaseClass.listElements(Route.class); if (!oldRoutes.isEmpty() && !"yes".equals(params.get(CONFIRM))) { @@ -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{ return actions.addTo(actionMenu); } - public Window properties(HashMap 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{ super.removeChild(child); } - private Object rename(HashMap 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{ } - private Object simplifyRouteName(HashMap 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{ * @return * @throws IOException */ - public Object update(HashMap 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 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; diff --git a/src/main/java/de/srsoftware/web4rail/Route.java b/src/main/java/de/srsoftware/web4rail/Route.java index 3f93bf8..a8dd05b 100644 --- a/src/main/java/de/srsoftware/web4rail/Route.java +++ b/src/main/java/de/srsoftware/web4rail/Route.java @@ -114,25 +114,25 @@ public class Route extends BaseClass { * @return * @throws IOException */ - public static Object action(HashMap 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()); + return plan.properties(new Params()); case ACTION_DROP: route.remove(); plan.stream(t("Removed {}.",route)); - return plan.properties(new HashMap()); + 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 { return win; } - protected Object update(HashMap 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 { } } 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 { } 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); diff --git a/src/main/java/de/srsoftware/web4rail/actions/Action.java b/src/main/java/de/srsoftware/web4rail/actions/Action.java index e0d1caf..9e968e8 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/Action.java +++ b/src/main/java/de/srsoftware/web4rail/actions/Action.java @@ -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 { return new JSONObject().put(TYPE, getClass().getSimpleName()); } - protected Object jsonImportExport(HashMap 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 { } @Override - protected Object update(HashMap params) { + protected Object update(Params params) { super.update(params); return context().properties(); } diff --git a/src/main/java/de/srsoftware/web4rail/actions/ActionList.java b/src/main/java/de/srsoftware/web4rail/actions/ActionList.java index bc05e2e..dbb4bb1 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/ActionList.java +++ b/src/main/java/de/srsoftware/web4rail/actions/ActionList.java @@ -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; 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{ return this; } - private Object addActionForm(HashMap 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{ return this; } - public static Object process(HashMap 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); diff --git a/src/main/java/de/srsoftware/web4rail/actions/AddRemoveDestination.java b/src/main/java/de/srsoftware/web4rail/actions/AddRemoveDestination.java index a4d4dea..92d757c 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/AddRemoveDestination.java +++ b/src/main/java/de/srsoftware/web4rail/actions/AddRemoveDestination.java @@ -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; 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 { } @Override - protected Object update(HashMap 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 { } } } - 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(); } } diff --git a/src/main/java/de/srsoftware/web4rail/actions/AddRemoveTag.java b/src/main/java/de/srsoftware/web4rail/actions/AddRemoveTag.java index 307610c..a615de2 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/AddRemoveTag.java +++ b/src/main/java/de/srsoftware/web4rail/actions/AddRemoveTag.java @@ -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{ } @Override - protected Object update(HashMap 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); } diff --git a/src/main/java/de/srsoftware/web4rail/actions/AlterDirection.java b/src/main/java/de/srsoftware/web4rail/actions/AlterDirection.java index ea342d2..78fe489 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/AlterDirection.java +++ b/src/main/java/de/srsoftware/web4rail/actions/AlterDirection.java @@ -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{ } @Override - protected Object update(HashMap 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); } diff --git a/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java b/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java index ab0a590..f538e21 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java +++ b/src/main/java/de/srsoftware/web4rail/actions/ConditionalAction.java @@ -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; 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 { } @Override - protected Object update(HashMap 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); diff --git a/src/main/java/de/srsoftware/web4rail/actions/CoupleTrain.java b/src/main/java/de/srsoftware/web4rail/actions/CoupleTrain.java index a1e4b1a..123064b 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/CoupleTrain.java +++ b/src/main/java/de/srsoftware/web4rail/actions/CoupleTrain.java @@ -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 { } @Override - protected Object update(HashMap params) { + protected Object update(Params params) { last = "on".equals(params.get(LAST)); swap = "on".equals(params.get(SWAP)); return super.update(params); diff --git a/src/main/java/de/srsoftware/web4rail/actions/DelayedAction.java b/src/main/java/de/srsoftware/web4rail/actions/DelayedAction.java index 3d726f7..65f0b14 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/DelayedAction.java +++ b/src/main/java/de/srsoftware/web4rail/actions/DelayedAction.java @@ -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 { } @Override - protected Object update(HashMap 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 { 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!")); diff --git a/src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java b/src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java index 03a7773..b406161 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java +++ b/src/main/java/de/srsoftware/web4rail/actions/DetermineTrainInBlock.java @@ -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; 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 { }; @Override - protected Object update(HashMap 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")); diff --git a/src/main/java/de/srsoftware/web4rail/actions/DisableEnableBlock.java b/src/main/java/de/srsoftware/web4rail/actions/DisableEnableBlock.java index 28f6c65..1cc2b77 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/DisableEnableBlock.java +++ b/src/main/java/de/srsoftware/web4rail/actions/DisableEnableBlock.java @@ -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; 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 { }; @Override - protected Object update(HashMap 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; diff --git a/src/main/java/de/srsoftware/web4rail/actions/EngageDecoupler.java b/src/main/java/de/srsoftware/web4rail/actions/EngageDecoupler.java index 240cc44..53bb039 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/EngageDecoupler.java +++ b/src/main/java/de/srsoftware/web4rail/actions/EngageDecoupler.java @@ -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; 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 { }; @Override - protected Object update(HashMap 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")); diff --git a/src/main/java/de/srsoftware/web4rail/actions/Loop.java b/src/main/java/de/srsoftware/web4rail/actions/Loop.java index a0ac414..ecb996a 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/Loop.java +++ b/src/main/java/de/srsoftware/web4rail/actions/Loop.java @@ -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; 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 { } @Override - protected Object update(HashMap 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); } diff --git a/src/main/java/de/srsoftware/web4rail/actions/SendCommand.java b/src/main/java/de/srsoftware/web4rail/actions/SendCommand.java index 6f186e8..c9e3f22 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SendCommand.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SendCommand.java @@ -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; 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{ } @Override - protected Object update(HashMap 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(); } diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetContextTrain.java b/src/main/java/de/srsoftware/web4rail/actions/SetContextTrain.java index d28407d..c3a510b 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SetContextTrain.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SetContextTrain.java @@ -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 { }; @Override - protected Object update(HashMap 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); diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java b/src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java index b6cea5c..a6b58e2 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SetDisplayText.java @@ -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; 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{ } @Override - protected Object update(HashMap 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")); diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetPower.java b/src/main/java/de/srsoftware/web4rail/actions/SetPower.java index 3de5b74..88048c3 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SetPower.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SetPower.java @@ -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{ } @Override - protected Window update(HashMap 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(); } diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetRelayOrSwitch.java b/src/main/java/de/srsoftware/web4rail/actions/SetRelayOrSwitch.java index e4085be..803fec1 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SetRelayOrSwitch.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SetRelayOrSwitch.java @@ -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; 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 { }; @Override - protected Object update(HashMap 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(); } diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetSignal.java b/src/main/java/de/srsoftware/web4rail/actions/SetSignal.java index d588d13..c1c2de6 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SetSignal.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SetSignal.java @@ -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; 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 { }; @Override - public Object update(HashMap 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); } diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetSpeed.java b/src/main/java/de/srsoftware/web4rail/actions/SetSpeed.java index 0d52c21..9380cb3 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SetSpeed.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SetSpeed.java @@ -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{ } @Override - protected Object update(HashMap 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); } } diff --git a/src/main/java/de/srsoftware/web4rail/actions/SetTurnout.java b/src/main/java/de/srsoftware/web4rail/actions/SetTurnout.java index 5de9447..7a1ca08 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SetTurnout.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SetTurnout.java @@ -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; 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 { }; @Override - protected Object update(HashMap 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); } diff --git a/src/main/java/de/srsoftware/web4rail/actions/SplitTrain.java b/src/main/java/de/srsoftware/web4rail/actions/SplitTrain.java index c3e383d..fcffd7f 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SplitTrain.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SplitTrain.java @@ -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 { } @Override - protected Object update(HashMap 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); } } diff --git a/src/main/java/de/srsoftware/web4rail/actions/StartStopAuto.java b/src/main/java/de/srsoftware/web4rail/actions/StartStopAuto.java index b1a8381..f8bccc5 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/StartStopAuto.java +++ b/src/main/java/de/srsoftware/web4rail/actions/StartStopAuto.java @@ -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 { return inverted ? t("Start autopilot") : t("Stop autopilot"); } - protected Object update(HashMap params) { + protected Object update(Params params) { inverted = "on".equals(params.get(INVERTED)); return super.update(params); } diff --git a/src/main/java/de/srsoftware/web4rail/actions/SwitchFunction.java b/src/main/java/de/srsoftware/web4rail/actions/SwitchFunction.java index e00d773..3b572ee 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/SwitchFunction.java +++ b/src/main/java/de/srsoftware/web4rail/actions/SwitchFunction.java @@ -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 { } @Override - protected Object update(HashMap 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": diff --git a/src/main/java/de/srsoftware/web4rail/actions/TextAction.java b/src/main/java/de/srsoftware/web4rail/actions/TextAction.java index 1b43b1e..9b87b13 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/TextAction.java +++ b/src/main/java/de/srsoftware/web4rail/actions/TextAction.java @@ -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 { } @Override - protected Object update(HashMap 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); } } diff --git a/src/main/java/de/srsoftware/web4rail/actions/TriggerContact.java b/src/main/java/de/srsoftware/web4rail/actions/TriggerContact.java index facaaa4..76af1c7 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/TriggerContact.java +++ b/src/main/java/de/srsoftware/web4rail/actions/TriggerContact.java @@ -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 { }; @Override - protected Object update(HashMap params) { + protected Object update(Params params) { LOG.debug("update: {}",params); Id contactId = Id.from(params,CONTACT); if (isSet(contactId)) contact = Contact.get(contactId); diff --git a/src/main/java/de/srsoftware/web4rail/actions/WaitForContact.java b/src/main/java/de/srsoftware/web4rail/actions/WaitForContact.java index 5c6efb1..9dc941f 100644 --- a/src/main/java/de/srsoftware/web4rail/actions/WaitForContact.java +++ b/src/main/java/de/srsoftware/web4rail/actions/WaitForContact.java @@ -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; 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 { } @Override - protected Object update(HashMap 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); } } diff --git a/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java b/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java index ae68ac2..fd6d2a5 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/BlockFree.java @@ -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; 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 { @Override - protected Object update(HashMap 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")); diff --git a/src/main/java/de/srsoftware/web4rail/conditions/CarInTrain.java b/src/main/java/de/srsoftware/web4rail/conditions/CarInTrain.java index a037d14..8b3b537 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/CarInTrain.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/CarInTrain.java @@ -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 { } @Override - protected Object update(HashMap 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); } diff --git a/src/main/java/de/srsoftware/web4rail/conditions/CarOrientation.java b/src/main/java/de/srsoftware/web4rail/conditions/CarOrientation.java index 8ef19fb..58765f6 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/CarOrientation.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/CarOrientation.java @@ -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 { } @Override - protected Object update(HashMap 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 { 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); } } diff --git a/src/main/java/de/srsoftware/web4rail/conditions/Condition.java b/src/main/java/de/srsoftware/web4rail/conditions/Condition.java index ce06123..a26d3bb 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/Condition.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/Condition.java @@ -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; 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 { register(); } - public static Object action(HashMap 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 { return t("Unknown action: {}",action); } - private static Object addCondition(HashMap 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 { return t("invalid condition"); } - protected Object update(HashMap params) { + protected Object update(Params params) { inverted = "on".equals(params.get(INVERTED)); super.update(params); return context().properties(); diff --git a/src/main/java/de/srsoftware/web4rail/conditions/RouteEndBlock.java b/src/main/java/de/srsoftware/web4rail/conditions/RouteEndBlock.java index 6451f8e..f73e5c0 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/RouteEndBlock.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/RouteEndBlock.java @@ -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; 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{ @Override - protected Object update(HashMap 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")); diff --git a/src/main/java/de/srsoftware/web4rail/conditions/SwitchIsOn.java b/src/main/java/de/srsoftware/web4rail/conditions/SwitchIsOn.java index 54eba23..7b33928 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/SwitchIsOn.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/SwitchIsOn.java @@ -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; 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 { } @Override - protected Object update(HashMap 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); diff --git a/src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java b/src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java index c9f6dcc..d7cc980 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/TrainHasTag.java @@ -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 { } @Override - protected Object update(HashMap params) { - tag = params.get(TAG); + protected Object update(Params params) { + tag = params.getString(TAG); return super.update(params); } } diff --git a/src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java b/src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java index 284cb84..6bd5798 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/TrainLength.java @@ -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 { } @Override - protected Object update(HashMap 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) { diff --git a/src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java b/src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java index 100d329..fc8bbea 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/TrainSelect.java @@ -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 { @Override - protected Object update(HashMap 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; diff --git a/src/main/java/de/srsoftware/web4rail/conditions/TrainSpeed.java b/src/main/java/de/srsoftware/web4rail/conditions/TrainSpeed.java index d0586ed..488faaa 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/TrainSpeed.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/TrainSpeed.java @@ -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 { } @Override - protected Object update(HashMap 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) { diff --git a/src/main/java/de/srsoftware/web4rail/conditions/TrainWasInBlock.java b/src/main/java/de/srsoftware/web4rail/conditions/TrainWasInBlock.java index 61d9ce3..f553b72 100644 --- a/src/main/java/de/srsoftware/web4rail/conditions/TrainWasInBlock.java +++ b/src/main/java/de/srsoftware/web4rail/conditions/TrainWasInBlock.java @@ -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; 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 { @Override - protected Object update(HashMap 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); } } diff --git a/src/main/java/de/srsoftware/web4rail/devices/Decoder.java b/src/main/java/de/srsoftware/web4rail/devices/Decoder.java index 1927ad7..63b897f 100644 --- a/src/main/java/de/srsoftware/web4rail/devices/Decoder.java +++ b/src/main/java/de/srsoftware/web4rail/devices/Decoder.java @@ -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; 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 { private String type; private Locomotive loco; - public static Object action(HashMap 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 { 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 { private Window program(HashMap 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 { } @Override - protected Window update(HashMap 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))); diff --git a/src/main/java/de/srsoftware/web4rail/moving/Car.java b/src/main/java/de/srsoftware/web4rail/moving/Car.java index 8cf5674..59b0b15 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Car.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Car.java @@ -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{ register(); } - public static Object action(HashMap 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{ 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{ return form.addTo(fieldset); } - public static Object manager(Map 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{ return this; } - protected Object update(HashMap 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() { diff --git a/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java b/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java index 9bcef61..94cc7d1 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java @@ -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{ super(name,id); } - public static Object action(HashMap 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{ 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{ 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{ } @Override - protected Window update(HashMap params) { + protected Window update(Params params) { super.update(params); if (params.containsKey(REALM_DECODER)) { Id decoderId = Id.from(params,REALM_DECODER); diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java index 7192383..3ddc3f9 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Train.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java @@ -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; 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 { private BrakeProcess brake; - public static Object action(HashMap 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.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 { 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 { tags.add(tag); } - private Object addCar(HashMap 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 { return name().compareTo(o.toString()); } - public Window connect(HashMap 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 { if (isSet(currentBlock)) currentBlock.setTrain(this); } - private static Object create(HashMap 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 { return direction; } - private Object dropCar(HashMap 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 { return this; } - private Object setDestination(HashMap 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 { } - protected Window update(HashMap 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(); diff --git a/src/main/java/de/srsoftware/web4rail/threads/ControlUnit.java b/src/main/java/de/srsoftware/web4rail/threads/ControlUnit.java index a9eb15b..8e69e00 100644 --- a/src/main/java/de/srsoftware/web4rail/threads/ControlUnit.java +++ b/src/main/java/de/srsoftware/web4rail/threads/ControlUnit.java @@ -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; 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{ * @param params * @return */ - public Object process(HashMap 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{ 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{ * @param params * @return */ - public String update(HashMap 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"); } } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Block.java b/src/main/java/de/srsoftware/web4rail/tiles/Block.java index a2777cd..5b79696 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Block.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Block.java @@ -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{ } @Override - public Tile update(HashMap 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{ } } } - 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 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 entry:params.entrySet()) { + for (Entry 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{ 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(); diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Contact.java b/src/main/java/de/srsoftware/web4rail/tiles/Contact.java index e555a08..f3edebd 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Contact.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Contact.java @@ -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{ return this; } - public static Object process(HashMap 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{ return true; } @Override - public Tile update(HashMap 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); } } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Decoupler.java b/src/main/java/de/srsoftware/web4rail/tiles/Decoupler.java index c43061d..c9c8995 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Decoupler.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Decoupler.java @@ -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; 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{ } @Override - public Tile update(HashMap 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) { diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Relay.java b/src/main/java/de/srsoftware/web4rail/tiles/Relay.java index 25ebe72..cb370f9 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Relay.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Relay.java @@ -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{ } @Override - public Tile update(HashMap 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); } } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Signal.java b/src/main/java/de/srsoftware/web4rail/tiles/Signal.java index 62b080e..a6ea2f4 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Signal.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Signal.java @@ -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 { } @Override - public Tile update(HashMap params) { + public Tile update(Params params) { HashMap newAspects = new HashMap(); - for (Entry entry : params.entrySet()) { + for (Entry 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) { diff --git a/src/main/java/de/srsoftware/web4rail/tiles/StretchableTile.java b/src/main/java/de/srsoftware/web4rail/tiles/StretchableTile.java index 25285a3..e4e9943 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/StretchableTile.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/StretchableTile.java @@ -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; 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 { 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 { protected abstract String stretchType(); @Override - public Tile update(HashMap params) { - for (Entry entry : params.entrySet()) { + public Tile update(Params params) { + for (Entry entry : params.entrySet()) { switch (entry.getKey()) { case STRETCH_LENGTH: stretch(entry.getValue()); diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Switch.java b/src/main/java/de/srsoftware/web4rail/tiles/Switch.java index 0eb546a..e094c12 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Switch.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Switch.java @@ -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; 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{ return this; } - public static Object process(HashMap 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; diff --git a/src/main/java/de/srsoftware/web4rail/tiles/TextDisplay.java b/src/main/java/de/srsoftware/web4rail/tiles/TextDisplay.java index 49e847a..36724d7 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/TextDisplay.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/TextDisplay.java @@ -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 { } @Override - public Tile update(HashMap params) { - for (Entry entry : params.entrySet()) { + public Tile update(Params params) { + for (Entry entry : params.entrySet()) { switch (entry.getKey()) { case TEXT: - text(entry.getValue()); + text(entry.getValue().toString()); break; } } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Tile.java b/src/main/java/de/srsoftware/web4rail/tiles/Tile.java index 0ec6914..e3c4ca6 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Tile.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Tile.java @@ -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 { return t("{}({},{})", getClass().getSimpleName(), x, y); } - public Tile update(HashMap 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 { } 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); diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Turnout.java b/src/main/java/de/srsoftware/web4rail/tiles/Turnout.java index 9d97330..4cfc4e1 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Turnout.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Turnout.java @@ -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; 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{ } @Override - public Tile update(HashMap 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{ initialized = false; } } - newPort = params.get(PORT_B); + newPort = params.getString(PORT_B); if (isSet(newPort)) { int npb = Integer.parseInt(newPort); if (npb != portB) { diff --git a/src/main/java/de/srsoftware/web4rail/tiles/TurnoutL.java b/src/main/java/de/srsoftware/web4rail/tiles/TurnoutL.java index ebd83ff..9bae723 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/TurnoutL.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/TurnoutL.java @@ -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 { } @Override - public Tile update(HashMap 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); } } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/TurnoutR.java b/src/main/java/de/srsoftware/web4rail/tiles/TurnoutR.java index 20bdec0..c4b76cb 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/TurnoutR.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/TurnoutR.java @@ -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 { } @Override - public Tile update(HashMap 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); } }