diff --git a/config/apiserver.conf.default b/config/apiserver.conf.default index 89c4bc5..9cfdc21 100644 --- a/config/apiserver.conf.default +++ b/config/apiserver.conf.default @@ -9,6 +9,8 @@ apiserver { bgcolormain = "black" textcolormain = "red" textcolorupdate = "grey" + textcolornotrun = "orange" + bgcolornotrun = "black" monitors { monitor1 { @@ -18,6 +20,7 @@ apiserver { Station = "" FinalStop = "" maxjourneys = 1 + notRunningDays = [] } monitor2 { Title = "" @@ -26,6 +29,7 @@ apiserver { Station = "" FinalStop = "" maxjourneys = 1 + notRunningDays = [] } monitor3 { Title = "" @@ -34,6 +38,7 @@ apiserver { Station = "" FinalStop = "" maxjourneys = 1 + notRunningDays = [] } monitor4 { Title = "" @@ -42,6 +47,7 @@ apiserver { Station = "" FinalStop = "" maxjourneys = 1 + notRunningDays = [] } } } diff --git a/src/main/java/be/jaud/Main.java b/src/main/java/be/jaud/Main.java index 583bba9..c4561ad 100644 --- a/src/main/java/be/jaud/Main.java +++ b/src/main/java/be/jaud/Main.java @@ -17,7 +17,7 @@ import java.util.Date; import java.util.HashMap; import java.util.concurrent.TimeUnit; public class Main { - private static final String version = "0.4"; + private static final String version = "0.5"; private static final HashMap data = new HashMap<>(); public static Settings conf; static OebbCheck check = new OebbCheck(); @@ -66,10 +66,10 @@ public class Main { } private static void refresh() throws IOException { - data.put(conf.getString("monitors.monitor1.DepartureTime"),check.getStatus(conf.getString("monitors.monitor1.Station"),conf.getString("monitors.monitor1.DepartureTime"), conf.getString("monitors.monitor1.FinalStop"),conf.getString("monitors.monitor1.TrainType"),String.valueOf(conf.getInt("monitors.monitor1.maxjourneys")))); - data.put(conf.getString("monitors.monitor2.DepartureTime"),check.getStatus(conf.getString("monitors.monitor2.Station"),conf.getString("monitors.monitor2.DepartureTime"), conf.getString("monitors.monitor2.FinalStop"),conf.getString("monitors.monitor2.TrainType"),String.valueOf(conf.getInt("monitors.monitor2.maxjourneys")))); - data.put(conf.getString("monitors.monitor3.DepartureTime"),check.getStatus(conf.getString("monitors.monitor3.Station"),conf.getString("monitors.monitor3.DepartureTime"), conf.getString("monitors.monitor3.FinalStop"),conf.getString("monitors.monitor3.TrainType"),String.valueOf(conf.getInt("monitors.monitor3.maxjourneys")))); - data.put(conf.getString("monitors.monitor4.DepartureTime"),check.getStatus(conf.getString("monitors.monitor4.Station"),conf.getString("monitors.monitor4.DepartureTime"), conf.getString("monitors.monitor4.FinalStop"),conf.getString("monitors.monitor4.TrainType"),String.valueOf(conf.getInt("monitors.monitor4.maxjourneys")))); + data.put(conf.getString("monitors.monitor1.DepartureTime"),check.getStatus(conf.getString("monitors.monitor1.Station"),conf.getString("monitors.monitor1.DepartureTime"), conf.getString("monitors.monitor1.FinalStop"),conf.getString("monitors.monitor1.TrainType"),String.valueOf(conf.getInt("monitors.monitor1.maxjourneys")), conf.getIntList("monitors.monitor1.notRunningDays"))); + data.put(conf.getString("monitors.monitor2.DepartureTime"),check.getStatus(conf.getString("monitors.monitor2.Station"),conf.getString("monitors.monitor2.DepartureTime"), conf.getString("monitors.monitor2.FinalStop"),conf.getString("monitors.monitor2.TrainType"),String.valueOf(conf.getInt("monitors.monitor2.maxjourneys")), conf.getIntList("monitors.monitor2.notRunningDays"))); + data.put(conf.getString("monitors.monitor3.DepartureTime"),check.getStatus(conf.getString("monitors.monitor3.Station"),conf.getString("monitors.monitor3.DepartureTime"), conf.getString("monitors.monitor3.FinalStop"),conf.getString("monitors.monitor3.TrainType"),String.valueOf(conf.getInt("monitors.monitor3.maxjourneys")), conf.getIntList("monitors.monitor3.notRunningDays"))); + data.put(conf.getString("monitors.monitor4.DepartureTime"),check.getStatus(conf.getString("monitors.monitor4.Station"),conf.getString("monitors.monitor4.DepartureTime"), conf.getString("monitors.monitor4.FinalStop"),conf.getString("monitors.monitor4.TrainType"),String.valueOf(conf.getInt("monitors.monitor4.maxjourneys")), conf.getIntList("monitors.monitor4.notRunningDays"))); time = System.currentTimeMillis(); } @@ -160,14 +160,19 @@ public class Main { private static void makeLabel(JSONObject Monitor, int zeit){ if(zeit != 0){ Monitor.put("color",conf.getString("textcolordelay")); + Monitor.put("background",conf.getString("bgcolordelay")); if(zeit > 0 && zeit < 9999){ Monitor.put("data",zeit); - }else if(zeit == 9999){ + } else if(zeit == 9999) { Monitor.put("data","AUSFALL!"); - }else{ + } else if(zeit == -1) { Monitor.put("data","Fehler!"); + } else { + Monitor.put("data","Fährt heute nicht"); + Monitor.put("color",conf.getString("textcolornotrun")); + Monitor.put("background",conf.getString("bgcolornotrun")); } - Monitor.put("background",conf.getString("bgcolordelay")); + } else { Monitor.put("color",conf.getString("textcolor")); Monitor.put("data","On time"); diff --git a/src/main/java/be/jaud/OebbCheck.java b/src/main/java/be/jaud/OebbCheck.java index fd840a6..4ff7850 100644 --- a/src/main/java/be/jaud/OebbCheck.java +++ b/src/main/java/be/jaud/OebbCheck.java @@ -12,22 +12,28 @@ import java.net.HttpURLConnection; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; +import java.util.Calendar; +import java.util.Date; +import java.util.List; public class OebbCheck { public static final Logger LOG = LoggerFactory.getLogger(OebbCheck.class); + Calendar now = Calendar.getInstance(); public OebbCheck(){ } /* Returns the Delay in Minutes for a given StationID, Departure Time, final stop and Train type(i.e. REX 3, S 2....) + Returns -2 if no connection was found and the Weekday is in notRunningDay Returns -1 if no connection was found Returns 0 for no delay >0 is the delay in Minutes 9999 means the Train has been cancelled */ - public int getStatus(String Station, String Time, String FinalStop, String TrainType, String maxjourneys) { + public int getStatus(String Station, String Time, String FinalStop, String TrainType, String maxjourneys, List notRunningDays) { JSONArray journeys = null; + now.setTime(new Date()); try { journeys = getData(Station, Time, maxjourneys); } catch (URISyntaxException e) { @@ -50,7 +56,11 @@ public class OebbCheck { } } } - return -1; + if(notRunningDays.contains(now.get(Calendar.DAY_OF_WEEK))){ + return -2; + } else { + return -1; + } } return -1; } diff --git a/src/main/java/be/jaud/Settings.java b/src/main/java/be/jaud/Settings.java index ed83079..8ec4069 100644 --- a/src/main/java/be/jaud/Settings.java +++ b/src/main/java/be/jaud/Settings.java @@ -49,4 +49,6 @@ public class Settings { public List getStringList(String key){ return config.getStringList(key); } + + public List getIntList(String key){ return config.getIntList(key); } }