Browse Source

started restructuring

lookup-tables
Stephan Richter 5 years ago
parent
commit
fd3ff8e43e
  1. 22
      resources/js/plan.js
  2. 2
      src/main/java/de/srsoftware/web4rail/Application.java
  3. 29
      src/main/java/de/srsoftware/web4rail/Constants.java
  4. 13
      src/main/java/de/srsoftware/web4rail/ControlUnit.java
  5. 113
      src/main/java/de/srsoftware/web4rail/Plan.java
  6. 8
      src/main/java/de/srsoftware/web4rail/Route.java
  7. 7
      src/main/java/de/srsoftware/web4rail/moving/Train.java

22
resources/js/plan.js

@ -25,14 +25,6 @@ function addMessage(txt){ @@ -25,14 +25,6 @@ function addMessage(txt){
messageTimer = setInterval(fadeMessage,100);
}
function fadeMessage(){
messageOpacity -= 10;
if (messageOpacity < 1) window.clearInterval(messageTimer);
var o = messageOpacity;
if (o>OPAC) o=OPAC;
$('#messages').css('opacity',o/OPAC);
}
function addTile(x,y){
return request({action:mode,tile:selected.id,x:x,y:y});
}
@ -99,6 +91,14 @@ function enableMove(ev){ @@ -99,6 +91,14 @@ function enableMove(ev){
return false; // otherwise body.click would also be triggered
}
function fadeMessage(){
messageOpacity -= 10;
if (messageOpacity < 1) window.clearInterval(messageTimer);
var o = messageOpacity;
if (o>OPAC) o=OPAC;
$('#messages').css('opacity',o/OPAC);
}
function heartbeat(data){
$('#heartbeat').show().fadeOut(2000);
return false;
@ -168,8 +168,10 @@ function request(data){ @@ -168,8 +168,10 @@ function request(data){
}
function runAction(ev){
// console.log("runAction: ",ev.target.id);
return request({action:ev.target.id,file:'default'}); // TODO: ask for name
var clicked = ev.target;
var realm = clicked.hasAttribute('class') ? clicked.getAttribute('class') : null;
//console.log("runAction: ",{action: clicked.id, realm:realm});
return request({action:ev.target.id,realm:realm}); // TODO: ask for name
}
function stream(ev){

2
src/main/java/de/srsoftware/web4rail/Application.java

@ -10,8 +10,6 @@ import java.io.OutputStreamWriter; @@ -10,8 +10,6 @@ import java.io.OutputStreamWriter;
import java.lang.reflect.InvocationTargetException;
import java.net.InetSocketAddress;
import java.net.URI;
import java.net.URL;
import java.net.URLClassLoader;
import java.net.URLDecoder;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;

29
src/main/java/de/srsoftware/web4rail/Constants.java

@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
package de.srsoftware.web4rail;
public interface Constants {
public static final String ACTION = "action";
public static final String ACTION_ADD = "add";
public static final String ACTION_ANALYZE = "analyze";
public static final String ACTION_CLICK = "click";
public static final String ACTION_CONNECT = "connect";
public static final String ACTION_EMERGENCY = "emergency";
public static final String ACTION_FASTER10 = "faster10";
public static final String ACTION_MOVE = "move";
public static final String ACTION_POWER = "power";
public static final String ACTION_PROPS = "props";
public static final String ACTION_SAVE = "save";
public static final String ACTION_SLOWER10 = "slower10";
public static final String ACTION_STOP = "stop";
public static final String ACTION_TURN = "turn";
public static final String ACTION_UPDATE = "update";
public static final String REALM = "realm";
public static final String REALM_CAR = "car";
public static final String REALM_CU = "cu";
public static final String REALM_LOCO = "loco";
public static final String REALM_ROUTE = "route";
public static final String REALM_TILE = "tile";
public static final String REALM_TRAIN = "train";
public static final String ID = "id";
}

13
src/main/java/de/srsoftware/web4rail/ControlUnit.java

@ -22,7 +22,7 @@ import de.srsoftware.web4rail.tags.Form; @@ -22,7 +22,7 @@ import de.srsoftware.web4rail.tags.Form;
import de.srsoftware.web4rail.tags.Input;
import de.srsoftware.web4rail.tags.Label;
public class ControlUnit extends Thread{
public class ControlUnit extends Thread implements Constants{
private static final Logger LOG = LoggerFactory.getLogger(ControlUnit.class);
private static final String DEFAULT_HOST = "localhost";
private static final int DEFAULT_PORT = 4303;
@ -117,8 +117,8 @@ public class ControlUnit extends Thread{ @@ -117,8 +117,8 @@ public class ControlUnit extends Thread{
public Object properties() {
Window win = new Window("cu-props", t("Properties of the control unit"));
Form form = new Form();
new Input(Plan.ACTION,Plan.ACTION_UPDATE).hideIn(form);
new Input(Plan.REALM,Plan.REALM_CU).hideIn(form);
new Input(ACTION,ACTION_UPDATE).hideIn(form);
new Input(REALM,REALM_CU).hideIn(form);
Fieldset fieldset = new Fieldset(t("Server connection"));
new Input(HOST,host).addTo(new Label(t("Hostname"))).addTo(fieldset);
new Input(PORT,port).attr("type", "numeric").addTo(new Label(t("Port"))).addTo(fieldset);
@ -228,4 +228,11 @@ public class ControlUnit extends Thread{ @@ -228,4 +228,11 @@ public class ControlUnit extends Thread{
if (json.has(BUS)) bus = json.getInt(BUS);
if (json.has(HOST)) host = json.getString(HOST);
}
public Object process(HashMap<String, String> params) {
String action = params.get(ACTION);
if (action == null) throw new NullPointerException(ACTION+" should not be null!");
return null;
}
}

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

@ -59,7 +59,7 @@ import de.srsoftware.web4rail.tiles.TurnoutRN; @@ -59,7 +59,7 @@ import de.srsoftware.web4rail.tiles.TurnoutRN;
import de.srsoftware.web4rail.tiles.TurnoutRS;
import de.srsoftware.web4rail.tiles.TurnoutRW;
public class Plan {
public class Plan implements Constants{
public enum Direction{
NORTH, SOUTH, EAST, WEST;
@ -88,43 +88,14 @@ public class Plan { @@ -88,43 +88,14 @@ public class Plan {
}
}
public static final String ACTION = "action";
private static final String ACTION_ADD = "add";
private static final String ACTION_ANALYZE = "analyze";
private static final String ACTION_MOVE = "move";
private static final String ACTION_CLICK = "click";
private static final String ACTION_SAVE = "save";
public static final String ACTION_UPDATE = "update";
private static final String TILE = "tile";
private static final Logger LOG = LoggerFactory.getLogger(Plan.class);
private static final String X = "x";
private static final String Y = "y";
private static final String FILE = "file";
private static final String DIRECTION = "direction";
private static final String ACTION_ROUTE = "openRoute";
public static final String ID = "id";
private static final String ROUTE = "route";
private static final HashMap<OutputStreamWriter,Integer> clients = new HashMap<OutputStreamWriter, Integer>();
private static final String ACTION_TRAIN = "train";
private static final String ACTION_LOCOS = "locos";
private static final String ACTION_TRAINS = "trains";
private static final String ACTION_CAR = "car";
public static final String ACTION_ADD_LOCO = "addLoco";
public static final String ACTION_ADD_TRAIN = "addTrain";
public static final String ACTION_CU_PROPS = "cuProps";
public static final String ACTION_UPDATE_CU = "update-cu";
public static final String REALM = "realm";
public static final String REALM_CU = "cu";
public static final String REALM_ROUTE = "route";
public static final String REALM_TILE = "tile";
public static final String REALM_CAR = "car";
private static final String ACTION_CONNECT = "connect";
private static final String ACTION_POWER = "power";
private static final String ACTION_EMERGENCY = "emergency";
public static final String ACTION_FASTER10 = "faster10";
public static final String ACTION_SLOWER10 = "slower10";
public static final String ACTION_STOP = "stop";
public static final String ACTION_TURN = "turn";
public HashMap<String,Tile> tiles = new HashMap<String,Tile>();
private HashSet<Block> blocks = new HashSet<Block>();
@ -139,7 +110,7 @@ public class Plan { @@ -139,7 +110,7 @@ public class Plan {
private Tag actionMenu() throws IOException {
Tag actionMenu = new Tag("div").clazz("actions").content(t("Actions"));
Tag actions = new Tag("div").clazz("list").content("");
new Div("power").content(t("Toggle power")).addTo(actions);
new Div("power").clazz(REALM_CU).content(t("Toggle power")).addTo(actions);
new Div("save").content(t("Save plan")).addTo(actions);
new Div("analyze").content(t("Analyze plan")).addTo(actions);
return actions.addTo(actionMenu);
@ -260,7 +231,7 @@ public class Plan { @@ -260,7 +231,7 @@ public class Plan {
private Tag hardwareMenu() throws IOException {
Tag tileMenu = new Tag("div").clazz("hardware").content(t("Hardware"));
Tag list = new Tag("div").clazz("list").content("");
new Div(ACTION_CU_PROPS).content(t("Control unit")).addTo(list);
new Div(ACTION_PROPS).content(t("Control unit")).addTo(list);
return list.addTo(tileMenu);
}
@ -319,10 +290,9 @@ public class Plan { @@ -319,10 +290,9 @@ public class Plan {
return plan;
}
private Object locoAction(HashMap<String, String> params) throws IOException {
private Object locoAction(HashMap<String, String> params) throws IOException {
switch (params.get(ACTION)) {
case ACTION_ADD_LOCO:
case ACTION_ADD:
new Locomotive(params.get(Locomotive.NAME));
break;
case ACTION_FASTER10:
@ -423,52 +393,23 @@ public class Plan { @@ -423,52 +393,23 @@ public class Plan {
public Object process(HashMap<String, String> params) {
try {
String realm = params.get(REALM);
if (realm == null) throw new NullPointerException(REALM+" should not be null!");
String action = params.get(ACTION);
if (action == null) throw new NullPointerException(ACTION+" should not be null!");
switch (action) {
case ACTION_ADD:
return addTile(params.get(TILE),params.get(X),params.get(Y),null);
case ACTION_ADD_LOCO:
case ACTION_FASTER10:
case ACTION_STOP:
case ACTION_SLOWER10:
case ACTION_TURN:
switch (realm) {
case REALM_CAR:
return carAction(params);
case REALM_CU:
return controlUnit.process(params);
case REALM_LOCO:
return locoAction(params);
case ACTION_ADD_TRAIN:
case ACTION_TRAIN:
case REALM_TILE:
return tileAction(params);
case REALM_TRAIN:
return trainAction(params);
case ACTION_ANALYZE:
return analyze();
case ACTION_CAR:
return carAction(params);
case ACTION_CLICK:
return click(get(params.get(Tile.ID),true));
case ACTION_CONNECT:
return connect(params);
case ACTION_CU_PROPS:
return cuProps(params);
case ACTION_LOCOS:
return Locomotive.manager();
case ACTION_EMERGENCY:
power = true;
return togglePower();
case ACTION_MOVE:
return moveTile(params.get(DIRECTION),params.get(Tile.ID));
case ACTION_POWER:
return togglePower();
case ACTION_ROUTE:
return routeProperties(Integer.parseInt(params.get(ID)));
case ACTION_SAVE:
return saveTo(params.get(FILE));
case ACTION_TRAINS:
return Train.manager();
case ACTION_UPDATE:
return update(params);
default:
LOG.warn("Unknown action: {}",action);
}
return t("Unknown action: {}",action);
return t("Unknown realm: {}",realm);
} catch (Exception e) {
String msg = e.getMessage();
if (msg == null || msg.isEmpty()) msg = t("An unknown error occured!");
@ -477,6 +418,14 @@ public class Plan { @@ -477,6 +418,14 @@ public class Plan {
}
}
private Object tileAction(HashMap<String, String> params) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException, IOException {
switch (params.get(Plan.ACTION)) {
case ACTION_ADD:
return addTile(params.get(TILE),params.get(X),params.get(Y),null);
}
return null;
}
private Object togglePower() throws IOException {
power = !power;
String PW = power?"ON":"OFF";
@ -487,12 +436,12 @@ public class Plan { @@ -487,12 +436,12 @@ public class Plan {
private Object trainAction(HashMap<String, String> params) throws IOException {
LOG.debug("Params: {}",params);
switch (params.get(ACTION)) {
case ACTION_ADD_TRAIN:
case ACTION_ADD:
Locomotive loco = (Locomotive) Locomotive.get(params.get(Train.LOCO_ID));
if (loco == null) return t("unknown locomotive: {}",params.get(Locomotive.ID));
new Train(loco);
break;
case ACTION_TRAIN:
case ACTION_PROPS:
Object result = Train.action(params);
if (!(result instanceof Train)) return result;
break;
@ -624,8 +573,8 @@ public class Plan { @@ -624,8 +573,8 @@ public class Plan {
private Tag trainMenu() throws IOException {
Tag tileMenu = new Tag("div").clazz("trains").content(t("Trains"));
Tag tiles = new Tag("div").clazz("list").content("");
new Div(ACTION_TRAINS).content(t("Manage trains")).addTo(tiles);
new Div(ACTION_LOCOS).content(t("Manage locos")).addTo(tiles);
new Div(ACTION_PROPS).clazz(REALM_TRAIN).content(t("Manage trains")).addTo(tiles);
new Div(ACTION_PROPS).clazz(REALM_LOCO).content(t("Manage locos")).addTo(tiles);
return tiles.addTo(tileMenu);
}
@ -642,7 +591,7 @@ public class Plan { @@ -642,7 +591,7 @@ public class Plan {
break;
case REALM_ROUTE:
Route route = routes.get(Integer.parseInt(params.get(ID)));
if (route == null) return t("Unknown route: {}",params.get(ROUTE));
if (route == null) return t("Unknown route: {}",params.get(ID));
route.update(params);
break;
case REALM_TILE:

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

@ -38,7 +38,7 @@ import de.srsoftware.web4rail.tiles.Tile; @@ -38,7 +38,7 @@ import de.srsoftware.web4rail.tiles.Tile;
import de.srsoftware.web4rail.tiles.Turnout;
import de.srsoftware.web4rail.tiles.Turnout.State;
public class Route {
public class Route implements Constants{
private static final Logger LOG = LoggerFactory.getLogger(Route.class);
static final String NAME = "name";
static final String PATH = "path";
@ -367,9 +367,9 @@ public class Route { @@ -367,9 +367,9 @@ public class Route {
public Tag propForm() {
Form form = new Form();
new Input(Plan.ACTION, Plan.ACTION_UPDATE).hideIn(form);
new Input(Plan.REALM,Plan.REALM_ROUTE).hideIn(form);
new Input(Plan.ID,id()).hideIn(form);
new Input(ACTION, ACTION_UPDATE).hideIn(form);
new Input(REALM,REALM_ROUTE).hideIn(form);
new Input(ID,id()).hideIn(form);
Tag label = new Tag("label").content(t("name:"));
new Tag("input").attr("type", "text").attr(NAME,"name").attr("value", name()).addTo(label);

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

@ -20,7 +20,7 @@ import org.slf4j.LoggerFactory; @@ -20,7 +20,7 @@ import org.slf4j.LoggerFactory;
import de.keawe.tools.translations.Translation;
import de.srsoftware.tools.Tag;
import de.srsoftware.web4rail.Application;
import de.srsoftware.web4rail.Plan;
import de.srsoftware.web4rail.Constants;
import de.srsoftware.web4rail.Plan.Direction;
import de.srsoftware.web4rail.Route;
import de.srsoftware.web4rail.Window;
@ -36,7 +36,7 @@ import de.srsoftware.web4rail.tiles.Contact; @@ -36,7 +36,7 @@ import de.srsoftware.web4rail.tiles.Contact;
import de.srsoftware.web4rail.tiles.Signal;
import de.srsoftware.web4rail.tiles.Tile;
public class Train {
public class Train implements Constants {
private static final Logger LOG = LoggerFactory.getLogger(Train.class);
private static final HashMap<Long, Train> trains = new HashMap<>();
@ -233,7 +233,8 @@ public class Train { @@ -233,7 +233,8 @@ public class Train {
list.addTo(win);
Form form = new Form();
new Input(Plan.ACTION, Plan.ACTION_ADD_TRAIN).hideIn(form);
new Input(ACTION, ACTION_ADD).hideIn(form);
new Input(REALM,REALM_TRAIN).hideIn(form);
Fieldset fieldset = new Fieldset(t("add new train"));
new Input(Train.NAME, t("new train")).addTo(new Label(t("Name:")+" ")).addTo(fieldset);

Loading…
Cancel
Save