From f793d5b0787cafa8ae2ae44541f54c523d0b6919 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Wed, 16 Sep 2020 11:06:03 +0200 Subject: [PATCH] implemented route display on block properties --- .../java/de/srsoftware/web4rail/Plan.java | 5 +- .../java/de/srsoftware/web4rail/Route.java | 31 ++++++++- .../de/srsoftware/web4rail/tiles/Block.java | 69 ++++++++++++++++++- .../de/srsoftware/web4rail/tiles/BlockH.java | 60 +--------------- .../de/srsoftware/web4rail/tiles/BlockV.java | 61 +--------------- .../de/srsoftware/web4rail/tiles/Tile.java | 12 ++-- 6 files changed, 110 insertions(+), 128 deletions(-) diff --git a/src/main/java/de/srsoftware/web4rail/Plan.java b/src/main/java/de/srsoftware/web4rail/Plan.java index e9adcbd..2fa01bc 100644 --- a/src/main/java/de/srsoftware/web4rail/Plan.java +++ b/src/main/java/de/srsoftware/web4rail/Plan.java @@ -100,7 +100,10 @@ public class Plan { for (Block block : blocks) { for (Connector con : block.startPoints()) routes.addAll(follow(new Route().start(block),con)); } - for (Route r : routes) LOG.debug("found route: {}",r); + for (Route route : routes) { + route.start().add(route); + LOG.debug("found route: {}",route); + } return t("Found {} routes.",routes.size()); } diff --git a/src/main/java/de/srsoftware/web4rail/Route.java b/src/main/java/de/srsoftware/web4rail/Route.java index e9864d8..a642f41 100644 --- a/src/main/java/de/srsoftware/web4rail/Route.java +++ b/src/main/java/de/srsoftware/web4rail/Route.java @@ -11,6 +11,8 @@ public class Route { private Vector path; private Vector signals; + private String id; + private String name; public Tile add(Tile tile) { path.add(tile); @@ -22,12 +24,35 @@ public class Route { clone.path = new Vector<>(path); return clone; } + + public String id() { + if (id == null) { + StringBuilder sb = new StringBuilder(); + for (int i=0; i multiply(int size) { Vector routes = new Vector(); for (int i=0; i(); @@ -37,6 +62,10 @@ public class Route { @Override public String toString() { - return getClass().getSimpleName()+"("+path+")"; + return getClass().getSimpleName()+"("+id()+")"; + } + + public Block start() { + return (Block) path.get(0); } } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Block.java b/src/main/java/de/srsoftware/web4rail/tiles/Block.java index c736e9d..fc0ae2a 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Block.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Block.java @@ -1,13 +1,80 @@ 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; import java.util.Set; +import org.json.JSONObject; + +import de.srsoftware.tools.Tag; import de.srsoftware.web4rail.Connector; import de.srsoftware.web4rail.Route; public abstract class Block extends StretchableTile{ - public abstract Set routes(); + private static final String NAME = "name"; + public String name = "Block"; + private HashSet routes = new HashSet(); + + @Override + public JSONObject config() { + JSONObject config = super.config(); + config.put(NAME, name); + return config; + } + + @Override + public void configure(JSONObject config) { + super.configure(config); + if (config.has(NAME)) name = config.getString(NAME); + } + + public Set routes(){ + return routes; + } public abstract List startPoints(); + + public void add(Route route) { + routes.add(route); + } + + @Override + public Tag propForm() { + Tag form = super.propForm(); + + Tag label = new Tag("label").content(t("name:")); + new Tag("input").attr("type", "text").attr(NAME,"name").attr("value", name).addTo(label); + label.addTo(form); + + new Tag("h4").content(t("Routes from here:")).addTo(form); + Tag routeList = new Tag("ul"); + for (Route route : routes) { + new Tag("li").content(route.id()).addTo(routeList); + } + routeList.addTo(form); + + return form; + } + + @Override + public Tag tag(Map replacements) throws IOException { + if (replacements == null) replacements = new HashMap(); + replacements.put("%text%",name); + return super.tag(replacements); + } + + @Override + public String toString() { + return getClass().getSimpleName()+"("+name+") @ ("+x+","+y+")"; + } + + @Override + public Tile update(HashMap params) { + super.update(params); + if (params.containsKey(NAME)) name=params.get(NAME); + return this; + } } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/BlockH.java b/src/main/java/de/srsoftware/web4rail/tiles/BlockH.java index 99f4f61..08fdaaf 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/BlockH.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/BlockH.java @@ -1,78 +1,20 @@ package de.srsoftware.web4rail.tiles; -import java.io.IOException; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.Set; -import org.json.JSONObject; - -import de.srsoftware.tools.Tag; import de.srsoftware.web4rail.Connector; import de.srsoftware.web4rail.Plan.Direction; -import de.srsoftware.web4rail.Route; public class BlockH extends Block{ - private static final String NAME = "name"; Contact north,center,south; - private String name = "Block"; - - @Override - public JSONObject config() { - JSONObject config = super.config(); - config.put(NAME, name); - return config; - } - - @Override - public void configure(JSONObject config) { - super.configure(config); - if (config.has(NAME)) name = config.getString(NAME); - } - + @Override public int len() { return length; } - @Override - public Tag propForm() { - Tag form = super.propForm(); - - Tag label = new Tag("label").content(t("name:")); - new Tag("input").attr("type", "text").attr(NAME,"name").attr("value", name).addTo(label); - label.addTo(form); - - return form; - } - - @Override - public Set routes() { - return null; - } - @Override public List startPoints() { return List.of(new Connector(x-1, y, Direction.EAST),new Connector(x+len(), y, Direction.WEST)); } - - @Override - public Tag tag(Map replacements) throws IOException { - if (replacements == null) replacements = new HashMap(); - replacements.put("%text%",name); - return super.tag(replacements); - } - - @Override - public String toString() { - return getClass().getSimpleName()+"("+name+") @ ("+x+","+y+")"; - } - - @Override - public Tile update(HashMap params) { - super.update(params); - if (params.containsKey(NAME)) name=params.get(NAME); - return this; - } } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/BlockV.java b/src/main/java/de/srsoftware/web4rail/tiles/BlockV.java index 087e2a8..e1e0130 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/BlockV.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/BlockV.java @@ -1,79 +1,20 @@ package de.srsoftware.web4rail.tiles; -import java.io.IOException; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import java.util.Set; -import org.json.JSONObject; - -import de.srsoftware.tools.Tag; import de.srsoftware.web4rail.Connector; import de.srsoftware.web4rail.Plan.Direction; -import de.srsoftware.web4rail.Route; public class BlockV extends Block{ - private static final String NAME = "name"; Contact west,center,east; - private String name = "Block"; - - @Override - public JSONObject config() { - JSONObject config = super.config(); - config.put(NAME, name); - return config; - } - - @Override - public void configure(JSONObject config) { - super.configure(config); - if (config.has(NAME)) name = config.getString(NAME); - } @Override public int height() { return length; } - @Override - public Tag propForm() { - Tag form = super.propForm(); - - Tag label = new Tag("label").content(t("name:")); - new Tag("input").attr("type", "text").attr(NAME,"name").attr("value", name).addTo(label); - label.addTo(form); - - return form; - } - - @Override - public Set routes() { - return null; - } - @Override public List startPoints() { return List.of(new Connector(x,y-1,Direction.SOUTH),new Connector(x,y+height(),Direction.NORTH)); - } - - @Override - public Tag tag(Map replacements) throws IOException { - if (replacements == null) replacements = new HashMap(); - replacements.put("%text%",name); - return super.tag(replacements); - } - - @Override - public String toString() { - return getClass().getSimpleName()+"("+name+") @ ("+x+","+y+")"; - } - - @Override - public Tile update(HashMap params) { - super.update(params); - if (params.containsKey(NAME)) name=params.get(NAME); - return this; - } - + } } diff --git a/src/main/java/de/srsoftware/web4rail/tiles/Tile.java b/src/main/java/de/srsoftware/web4rail/tiles/Tile.java index a8f1401..ac6d050 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/Tile.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/Tile.java @@ -24,7 +24,7 @@ import de.srsoftware.web4rail.Plan.Direction; public abstract class Tile { - protected int x = -1,y = -1; + public int x = -1,y = -1; protected HashSet classes = new HashSet(); protected HashSet shadows = new HashSet(); protected static Logger LOG = LoggerFactory.getLogger(Tile.class); @@ -33,6 +33,10 @@ public abstract class Tile { classes.add("tile"); classes.add(getClass().getSimpleName()); } + + public void addShadow(Shadow shadow) { + shadows.add(shadow); + } public JSONObject config() { return new JSONObject(); @@ -149,9 +153,5 @@ public abstract class Tile { public Tile update(HashMap params) { LOG.debug("{}.update({})",getClass().getSimpleName(),params); return this; - } - - public void addShadow(Shadow shadow) { - shadows.add(shadow); - } + } }