diff --git a/pom.xml b/pom.xml index eabad51..a4d1f5d 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 de.srsoftware web4rail - 1.2.31 + 1.2.32 Web4Rail jar Java Model Railway Control diff --git a/src/main/java/de/srsoftware/web4rail/moving/Car.java b/src/main/java/de/srsoftware/web4rail/moving/Car.java index 47c4b1a..ae1defd 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Car.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Car.java @@ -70,8 +70,7 @@ public class Car extends BaseClass implements Comparable{ case ACTION_PROPS: return car == null ? Car.manager() : car.properties(); case ACTION_UPDATE: - car.update(params); - return Car.manager(); + return car.update(params); } if (car instanceof Locomotive) return Locomotive.action(params,plan); return t("Unknown action: {}",params.get(ACTION)); @@ -84,6 +83,7 @@ public class Car extends BaseClass implements Comparable{ clone.tags = new HashSet(tags); clone.notes = notes; clone.parent(parent()); + clone.register(); return clone; } @@ -152,13 +152,20 @@ public class Car extends BaseClass implements Comparable{ cars.values() .stream() .filter(car -> !(car instanceof Locomotive)) - .sorted((c1,c2)->c2.stockId.compareTo(c1.stockId)) + .sorted((c1,c2)->{ + try { + return Integer.parseInt(c1.stockId)-Integer.parseInt(c2.stockId); + } catch (NumberFormatException nfe) { + return c1.stockId.compareTo(c2.stockId); + } + + }) .forEach(car -> table.addRow( car.stockId, car.link(), car.maxSpeed == 0 ? "–":(car.maxSpeed+NBSP+speedUnit), car.length+NBSP+lengthUnit, - car.train, + isSet(car.train) ? car.train.link("span", car.train) : "", String.join(", ", car.tags()), car.cloneButton() )); @@ -232,7 +239,7 @@ public class Car extends BaseClass implements Comparable{ this.train = train; } - protected Car update(HashMap params) { + protected Window update(HashMap params) { super.update(params); if (params.containsKey(NAME)) name = params.get(NAME).trim(); if (params.containsKey(LENGTH)) length = Integer.parseInt(params.get(LENGTH)); @@ -246,7 +253,7 @@ public class Car extends BaseClass implements Comparable{ if (!tag.isEmpty()) tags.add(tag); } } - return this; + return properties(); } @Override diff --git a/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java b/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java index f8002b9..200a743 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Locomotive.java @@ -48,7 +48,7 @@ public class Locomotive extends Car implements Constants,Device{ Locomotive loco = id == null ? null : Locomotive.get(id); switch (params.get(ACTION)) { case ACTION_ADD: - new Locomotive(params.get(Locomotive.NAME)).parent(plan); + new Locomotive(params.get(Locomotive.NAME)).parent(plan).register(); return Locomotive.manager(); case ACTION_FASTER10: return loco.faster(10); @@ -329,10 +329,10 @@ public class Locomotive extends Car implements Constants,Device{ } @Override - protected Car update(HashMap params) { + protected Window update(HashMap params) { super.update(params); if (params.containsKey(PROTOCOL)) proto = Protocol.valueOf(params.get(PROTOCOL)); if (params.containsKey(ADDRESS)) address = Integer.parseInt(params.get(ADDRESS)); - return this; + return properties(); } } diff --git a/src/main/java/de/srsoftware/web4rail/moving/Train.java b/src/main/java/de/srsoftware/web4rail/moving/Train.java index f27224f..d7d1476 100644 --- a/src/main/java/de/srsoftware/web4rail/moving/Train.java +++ b/src/main/java/de/srsoftware/web4rail/moving/Train.java @@ -795,12 +795,12 @@ public class Train extends BaseClass implements Comparable { public Tag turn() { LOG.debug("train.turn()"); + for (Locomotive loco : locos) loco.turn(); if (isSet(direction)) { direction = direction.inverse(); - for (Locomotive loco : locos) loco.turn(); reverseTrace(); - if (isSet(currentBlock)) plan.place(currentBlock); } + if (isSet(currentBlock)) plan.place(currentBlock); return properties(); }