Added Option to Show not running trains on certain days

This commit is contained in:
genuineparts 2025-02-16 21:15:44 +01:00
parent 43d4e43d99
commit e7a8f8987d
4 changed files with 33 additions and 10 deletions

View file

@ -9,6 +9,8 @@ apiserver {
bgcolormain = "black" bgcolormain = "black"
textcolormain = "red" textcolormain = "red"
textcolorupdate = "grey" textcolorupdate = "grey"
textcolornotrun = "orange"
bgcolornotrun = "black"
monitors { monitors {
monitor1 { monitor1 {
@ -18,6 +20,7 @@ apiserver {
Station = "" Station = ""
FinalStop = "" FinalStop = ""
maxjourneys = 1 maxjourneys = 1
notRunningDays = []
} }
monitor2 { monitor2 {
Title = "" Title = ""
@ -26,6 +29,7 @@ apiserver {
Station = "" Station = ""
FinalStop = "" FinalStop = ""
maxjourneys = 1 maxjourneys = 1
notRunningDays = []
} }
monitor3 { monitor3 {
Title = "" Title = ""
@ -34,6 +38,7 @@ apiserver {
Station = "" Station = ""
FinalStop = "" FinalStop = ""
maxjourneys = 1 maxjourneys = 1
notRunningDays = []
} }
monitor4 { monitor4 {
Title = "" Title = ""
@ -42,6 +47,7 @@ apiserver {
Station = "" Station = ""
FinalStop = "" FinalStop = ""
maxjourneys = 1 maxjourneys = 1
notRunningDays = []
} }
} }
} }

View file

@ -17,7 +17,7 @@ import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
public class Main { public class Main {
private static final String version = "0.4"; private static final String version = "0.5";
private static final HashMap<String, Integer> data = new HashMap<>(); private static final HashMap<String, Integer> data = new HashMap<>();
public static Settings conf; public static Settings conf;
static OebbCheck check = new OebbCheck(); static OebbCheck check = new OebbCheck();
@ -66,10 +66,10 @@ public class Main {
} }
private static void refresh() throws IOException { 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.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")))); 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")))); 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")))); 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(); time = System.currentTimeMillis();
} }
@ -160,14 +160,19 @@ public class Main {
private static void makeLabel(JSONObject Monitor, int zeit){ private static void makeLabel(JSONObject Monitor, int zeit){
if(zeit != 0){ if(zeit != 0){
Monitor.put("color",conf.getString("textcolordelay")); Monitor.put("color",conf.getString("textcolordelay"));
Monitor.put("background",conf.getString("bgcolordelay"));
if(zeit > 0 && zeit < 9999){ if(zeit > 0 && zeit < 9999){
Monitor.put("data",zeit); Monitor.put("data",zeit);
} else if(zeit == 9999) { } else if(zeit == 9999) {
Monitor.put("data","AUSFALL!"); Monitor.put("data","AUSFALL!");
}else{ } else if(zeit == -1) {
Monitor.put("data","Fehler!"); 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 { } else {
Monitor.put("color",conf.getString("textcolor")); Monitor.put("color",conf.getString("textcolor"));
Monitor.put("data","On time"); Monitor.put("data","On time");

View file

@ -12,22 +12,28 @@ import java.net.HttpURLConnection;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.net.URL; import java.net.URL;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
public class OebbCheck { public class OebbCheck {
public static final Logger LOG = LoggerFactory.getLogger(OebbCheck.class); public static final Logger LOG = LoggerFactory.getLogger(OebbCheck.class);
Calendar now = Calendar.getInstance();
public OebbCheck(){ 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 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 -1 if no connection was found
Returns 0 for no delay Returns 0 for no delay
>0 is the delay in Minutes >0 is the delay in Minutes
9999 means the Train has been cancelled 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<Integer> notRunningDays) {
JSONArray journeys = null; JSONArray journeys = null;
now.setTime(new Date());
try { try {
journeys = getData(Station, Time, maxjourneys); journeys = getData(Station, Time, maxjourneys);
} catch (URISyntaxException e) { } catch (URISyntaxException e) {
@ -50,8 +56,12 @@ public class OebbCheck {
} }
} }
} }
if(notRunningDays.contains(now.get(Calendar.DAY_OF_WEEK))){
return -2;
} else {
return -1; return -1;
} }
}
return -1; return -1;
} }

View file

@ -49,4 +49,6 @@ public class Settings {
public List<String> getStringList(String key){ public List<String> getStringList(String key){
return config.getStringList(key); return config.getStringList(key);
} }
public List<Integer> getIntList(String key){ return config.getIntList(key); }
} }