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);
}
}