Browse Source

setting turnouts for route now handeled by the setup actions

lookup-tables
Stephan Richter 5 years ago
parent
commit
1e2edabcb1
  1. 2
      pom.xml
  2. 1
      resources/translations/Application.de.translation
  3. 4
      src/main/java/de/srsoftware/web4rail/Plan.java
  4. 20
      src/main/java/de/srsoftware/web4rail/Route.java
  5. 7
      src/main/java/de/srsoftware/web4rail/actions/SetRelay.java
  6. 18
      src/main/java/de/srsoftware/web4rail/actions/SetTurnout.java
  7. 5
      src/main/java/de/srsoftware/web4rail/moving/Train.java
  8. 18
      src/main/java/de/srsoftware/web4rail/tiles/Contact.java
  9. 29
      src/main/java/de/srsoftware/web4rail/tiles/Relay.java
  10. 2
      src/main/java/de/srsoftware/web4rail/tiles/Turnout.java

2
pom.xml

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

1
resources/translations/Application.de.translation

@ -171,6 +171,7 @@ reverse : rückwärts @@ -171,6 +171,7 @@ reverse : rückwärts
Reversed {}. : {} umgedreht.
RIGHT : rechts
Right port\: : Port für rechts
Route properties : Routen-Eigenschaften
Routes using this tile : Fahrstraßen, die diesen Abschnitt verwenden
Route will only be available, if all conditions are fulfilled. : Route ist nur verfügbar, wenn alle Bedingungen erfüllt sind.
Save : speichern

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

@ -688,8 +688,8 @@ public class Plan extends BaseClass{ @@ -688,8 +688,8 @@ public class Plan extends BaseClass{
LOG.debug("unsibscribed {} from {}",contact,addr);
}
stream(learningContact.addr(addr).properties().toString());
learningContact = null;
LOG.debug("learned: {} = {}",addr,learningContact);
learningContact = null;
return;
}
@ -799,7 +799,7 @@ public class Plan extends BaseClass{ @@ -799,7 +799,7 @@ public class Plan extends BaseClass{
* @return
* @throws IOException
*/
protected Object update(HashMap<String, String> params) {
public Object update(HashMap<String, String> params) {
super.update(params);
Tile tile = get(Id.from(params),true);
if (isSet(tile)) return tile.update(params);

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

@ -29,6 +29,7 @@ import de.srsoftware.web4rail.actions.FinishRoute; @@ -29,6 +29,7 @@ import de.srsoftware.web4rail.actions.FinishRoute;
import de.srsoftware.web4rail.actions.PreserveRoute;
import de.srsoftware.web4rail.actions.SetSignal;
import de.srsoftware.web4rail.actions.SetSpeed;
import de.srsoftware.web4rail.actions.SetTurnout;
import de.srsoftware.web4rail.conditions.Condition;
import de.srsoftware.web4rail.conditions.ConditionList;
import de.srsoftware.web4rail.moving.Train;
@ -231,7 +232,6 @@ public class Route extends BaseClass { @@ -231,7 +232,6 @@ public class Route extends BaseClass {
conditions.add(condition);
}
conditions.forEach(condition -> existingRoute.conditions.removeChild(condition));
for (Entry<String, ActionList> entry : triggeredActions.entrySet()) {
String trigger = entry.getKey();
ActionList existingActionList = existingRoute.triggeredActions.get(trigger);
@ -347,6 +347,11 @@ public class Route extends BaseClass { @@ -347,6 +347,11 @@ public class Route extends BaseClass {
add(lastContact.trigger(), new BrakeStop(this));
add(lastContact.trigger(), new FinishRoute(this));
}
for (Entry<Turnout, Turnout.State> entry : turnouts.entrySet()) {
Turnout turnout = entry.getKey();
Turnout.State state = entry.getValue();
add(ROUTE_SETUP,new SetTurnout(this).setTurnout(turnout).setState(state));
}
for (Signal signal : signals) add(ROUTE_START,new SetSignal(this).set(signal).to(Signal.GO));
add(ROUTE_START,new SetSpeed(this).to(999));
return this;
@ -827,19 +832,6 @@ public class Route extends BaseClass { @@ -827,19 +832,6 @@ public class Route extends BaseClass {
return true;
}
public boolean setTurnouts() {
Turnout turnout = null;
for (Entry<Turnout, Turnout.State> entry : turnouts.entrySet()) {
turnout = entry.getKey();
Turnout.State targetVal = entry.getValue();
if (!turnout.state(targetVal).succeeded()) return false;
try {
Thread.sleep(500);
} catch (InterruptedException e) {}
}
return true;
}
public String shortName() {
String[] parts = name().split("-");
return parts[0].trim()+"–"+parts[parts.length-1].trim();

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

@ -40,11 +40,8 @@ public class SetRelay extends Action { @@ -40,11 +40,8 @@ public class SetRelay extends Action {
@Override
public Action load(JSONObject json) {
super.load(json);
String relayId = json.getString(RELAY);
if (isSet(relayId)) {
relay = BaseClass.get(new Id(relayId));
state = json.getBoolean(Relay.STATE);
}
if (json.has(RELAY)) relay = BaseClass.get(new Id(json.getString(RELAY)));
if (json.has(Relay.STATE)) state = json.getBoolean(Relay.STATE);
return this;
}

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

@ -25,7 +25,13 @@ public class SetTurnout extends Action { @@ -25,7 +25,13 @@ public class SetTurnout extends Action {
@Override
public boolean fire(Context context) {
if (isNull(turnout)) return false;
return turnout.state(state).succeeded();
if (!turnout.state(state).succeeded()) return false;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return true;
}
@Override
@ -73,6 +79,16 @@ public class SetTurnout extends Action { @@ -73,6 +79,16 @@ public class SetTurnout extends Action {
super.removeChild(child);
}
public SetTurnout setState(State state) {
this.state = state;
return this;
}
public SetTurnout setTurnout(Turnout turnout) {
this.turnout = turnout;
return this;
}
public String toString() {
if (isNull(turnout)) return "["+t("click here to setup turnout")+"]";
return t("Set {} to {}",turnout,state);

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

@ -573,7 +573,6 @@ public class Train extends BaseClass implements Comparable<Train> { @@ -573,7 +573,6 @@ public class Train extends BaseClass implements Comparable<Train> {
if (isNull(nextRoute)) return;
nextRoute.set(context);
boolean error = !nextRoute.lockIgnoring(route);
error = error || !nextRoute.setTurnouts();
error = error || !nextRoute.fireSetupActions();
if (error) {
@ -712,12 +711,10 @@ public class Train extends BaseClass implements Comparable<Train> { @@ -712,12 +711,10 @@ public class Train extends BaseClass implements Comparable<Train> {
nextRoute = null;
route.set(new Context(this).block(currentBlock).direction(direction));
} else {
Context context = new Context(this).block(currentBlock).direction(direction);
Context context = new Context(this).block(currentBlock).direction(direction).train(this);
route = PathFinder.chooseRoute(context);
if (isNull(route)) return t("No free routes from {}",currentBlock);
if (!route.lock()) return t("Was not able to lock {}",route);
if (!route.setTurnouts()) error = t("Was not able to set all turnouts!");
context.train(this);
route.set(context);
if (isNull(error) && !route.fireSetupActions()) error = t("Was not able to fire all setup actions of route!");
}

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

@ -1,7 +1,6 @@ @@ -1,7 +1,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;
@ -23,7 +22,6 @@ import de.srsoftware.web4rail.tags.Select; @@ -23,7 +22,6 @@ import de.srsoftware.web4rail.tags.Select;
public class Contact extends Tile{
private static final String ADDRESS = "address";
private static final HashMap<Id, Contact> contactsById = new HashMap<Id, Contact>();
private static final HashMap<Integer, Contact> contactsByAddr = new HashMap<Integer, Contact>();
private boolean state = false;
private String trigger = null;
@ -113,10 +111,6 @@ public class Contact extends Tile{ @@ -113,10 +111,6 @@ public class Contact extends Tile{
return contactsByAddr.get(addr);
}
public static Contact get(Id contactId) {
return contactsById.get(contactId);
}
@Override
public JSONObject json() {
JSONObject json = super.json();
@ -125,11 +119,6 @@ public class Contact extends Tile{ @@ -125,11 +119,6 @@ public class Contact extends Tile{
return json;
}
public static Collection<Contact> list() {
return contactsById.values();
}
@Override
public Tile load(JSONObject json) {
if (json.has(ADDRESS)) addr(json.getInt(ADDRESS));
@ -159,7 +148,6 @@ public class Contact extends Tile{ @@ -159,7 +148,6 @@ public class Contact extends Tile{
@Override
public Tile position(int x, int y) {
super.position(x, y);
contactsById.put(id(), this);
return this;
}
@ -171,12 +159,14 @@ public class Contact extends Tile{ @@ -171,12 +159,14 @@ public class Contact extends Tile{
switch (action) {
case ACTION_ANALYZE:
if (id == null) return t("Missing ID on call to {}.process()",Contact.class.getSimpleName());
contact = contactsById.get(id);
contact = BaseClass.get(id);
if (contact == null) return t("No contact with id {} found!",id);
Tag propMenu = contact.properties();
propMenu.children().insertElementAt(new Tag("div").content(t("Trigger a feedback sensor to assign it with this contact!")), 1);
plan.learn(contact);
return propMenu;
case ACTION_UPDATE:
return plan.update(params);
}
return t("Unknown action: {}",action);
}
@ -202,7 +192,7 @@ public class Contact extends Tile{ @@ -202,7 +192,7 @@ public class Contact extends Tile{
public static Select selector(Contact preselect) {
TreeMap<String,Contact> sortedSet = new TreeMap<String, Contact>(); // Map from Name to Contact
for (Contact contact : contactsById.values()) sortedSet.put(contact.toString(), contact);
for (Contact contact : BaseClass.listElements(Contact.class)) sortedSet.put(contact.toString(), contact);
Select select = new Select(CONTACT);
for (Entry<String, Contact> entry : sortedSet.entrySet()) {
Contact contact = entry.getValue();

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

@ -160,6 +160,18 @@ public class Relay extends Tile implements Device{ @@ -160,6 +160,18 @@ public class Relay extends Tile implements Device{
}
}
public static Select selector(Relay preselected, Collection<Relay> exclude) {
if (isNull(exclude)) exclude = new Vector<Relay>();
Select select = new Select(Relay.class.getSimpleName());
new Tag("option").attr("value","0").content(t("unset")).addTo(select);
for (Relay relay : BaseClass.listElements(Relay.class)) {
if (exclude.contains(relay)) continue;
Tag opt = select.addOption(relay.id(), relay);
if (relay == preselected) opt.attr("selected", "selected");
}
return select;
}
public Relay setLabel(boolean state, String tx) {
if (state) {
stateLabelA = tx;
@ -222,6 +234,11 @@ public class Relay extends Tile implements Device{ @@ -222,6 +234,11 @@ public class Relay extends Tile implements Device{
return name;
}
@Override
public String toString() {
return getClass().getSimpleName()+" ("+(isSet(name) && !name.isEmpty() ? name+")" : "")+" @("+x+", "+y+")";
}
@Override
public Tile update(HashMap<String, String> params) {
if (params.containsKey(PROTOCOL)) protocol = Protocol.valueOf(params.get(PROTOCOL));
@ -233,16 +250,4 @@ public class Relay extends Tile implements Device{ @@ -233,16 +250,4 @@ public class Relay extends Tile implements Device{
if (params.containsKey(NAME)) name = params.get(NAME);
return super.update(params);
}
public static Select selector(Relay preselected, Collection<Relay> exclude) {
if (isNull(exclude)) exclude = new Vector<Relay>();
Select select = new Select(Relay.class.getSimpleName());
new Tag("option").attr("value","0").content(t("unset")).addTo(select);
for (Relay relay : BaseClass.listElements(Relay.class)) {
if (exclude.contains(relay)) continue;
Tag opt = select.addOption(relay.id(), relay);
if (relay == preselected) opt.attr("selected", "selected");
}
return select;
}
}

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

@ -210,7 +210,7 @@ public abstract class Turnout extends Tile implements Device{ @@ -210,7 +210,7 @@ public abstract class Turnout extends Tile implements Device{
@Override
public String title() {
return getClass().getSimpleName()+t("(Address: {}, Ports {} and {})",address,portA,portB);
return getClass().getSimpleName()+t("(Address: {}, Ports {} and {}) @ ({}, {})",address,portA,portB,x,y);
}
@Override

Loading…
Cancel
Save