diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..fd4be7b --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,18 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 1c85357..3ddf86c 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -8,7 +8,7 @@ - + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 02c01a5..f828215 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 be.jaud OebbApi - 0.5 + 0.7 jar ÖBB delay check and output for Info Orbs @@ -29,9 +29,14 @@ ch.qos.logback logback-classic - 1.5.12 + 1.5.13 - + + de.fumix + holidays + 1.0.3 + + OebbApi @@ -88,8 +93,8 @@ maven-compiler-plugin 3.13.0 - 21 - 21 + 16 + 16 diff --git a/src/main/java/be/jaud/Main.java b/src/main/java/be/jaud/Main.java index 42acad6..b4ea9b6 100644 --- a/src/main/java/be/jaud/Main.java +++ b/src/main/java/be/jaud/Main.java @@ -12,12 +12,10 @@ import java.io.IOException; import java.io.OutputStream; import java.net.InetSocketAddress; import java.text.SimpleDateFormat; -import java.util.Collections; -import java.util.Date; -import java.util.HashMap; +import java.util.*; import java.util.concurrent.TimeUnit; public class Main { - private static final String version = "0.6"; + private static final String version = "0.7"; private static final HashMap data = new HashMap<>(); public static Settings conf; static OebbCheck check = new OebbCheck(); @@ -66,10 +64,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")), 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"))); + 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.getStringList("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.getStringList("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.getStringList("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.getStringList("monitors.monitor4.notRunningDays"))); time = System.currentTimeMillis(); } diff --git a/src/main/java/be/jaud/OebbCheck.java b/src/main/java/be/jaud/OebbCheck.java index 979e84b..36b7d39 100644 --- a/src/main/java/be/jaud/OebbCheck.java +++ b/src/main/java/be/jaud/OebbCheck.java @@ -1,5 +1,9 @@ package be.jaud; +import de.fumix.holidays.config.Config; +import de.fumix.holidays.config.Holiday; +import de.fumix.holidays.config.Region; +import de.fumix.holidays.impl.HolidaysImpl; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -13,9 +17,8 @@ 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; +import java.time.LocalDate; +import java.util.*; public class OebbCheck { public static final Logger LOG = LoggerFactory.getLogger(OebbCheck.class); @@ -32,7 +35,7 @@ public class OebbCheck { >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, List notRunningDays) { + public int getStatus(String Station, String Time, String FinalStop, String TrainType, String maxjourneys, List notRunningDays) { JSONArray journeys = null; now.setTime(new Date()); try { @@ -57,7 +60,11 @@ public class OebbCheck { } } } - if(notRunningDays.contains(now.get(Calendar.DAY_OF_WEEK))){ + Config config = Config.fromResources(); + final Region region = config.regionOf("AT").orElseThrow(() -> new IllegalArgumentException("Undefined region")); + final HolidaysImpl holidays = new HolidaysImpl(region); + Holiday dat= holidays.at(LocalDate.now()).orElse(null); + if(notRunningDays.contains(String.valueOf(now.get(Calendar.DAY_OF_WEEK))) || (dat != null && notRunningDays.contains("H"))){ return -2; } else { return -1; diff --git a/src/main/java/be/jaud/Settings.java b/src/main/java/be/jaud/Settings.java index caeaf92..f2e181e 100644 --- a/src/main/java/be/jaud/Settings.java +++ b/src/main/java/be/jaud/Settings.java @@ -39,7 +39,7 @@ public class Settings { return config.getInt(key); } - //public List getStringList(String key){ return config.getStringList(key); } - public List getIntList(String key){ return config.getIntList(key); } + + public List getStringList(String key){ return config.getStringList(key); } }