Added Holiday check

This commit is contained in:
genuineparts 2025-05-29 10:24:36 +02:00
parent 0520005e27
commit c951776d65
7 changed files with 55 additions and 21 deletions

18
.idea/gradle.xml generated Normal file
View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="externalProjectPath" value="$PROJECT_DIR$/../holidays" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$/../holidays" />
<option value="$PROJECT_DIR$/../holidays/examples" />
<option value="$PROJECT_DIR$/../holidays/lib" />
</set>
</option>
</GradleProjectSettings>
</option>
</component>
</project>

2
.idea/misc.xml generated
View file

@ -8,7 +8,7 @@
</list> </list>
</option> </option>
</component> </component>
<component name="ProjectRootManager" version="2" project-jdk-name="openjdk-23" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_24" project-jdk-name="corretto-16" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" /> <output url="file://$PROJECT_DIR$/out" />
</component> </component>
</project> </project>

6
.idea/vcs.xml generated Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

15
pom.xml
View file

@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>be.jaud</groupId> <groupId>be.jaud</groupId>
<artifactId>OebbApi</artifactId> <artifactId>OebbApi</artifactId>
<version>0.5</version> <version>0.7</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>ÖBB delay check and output for Info Orbs</name> <name>ÖBB delay check and output for Info Orbs</name>
<properties> <properties>
@ -29,9 +29,14 @@
<dependency> <dependency>
<groupId>ch.qos.logback</groupId> <groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId> <artifactId>logback-classic</artifactId>
<version>1.5.12</version> <version>1.5.13</version>
</dependency> </dependency>
</dependencies> <dependency>
<groupId>de.fumix</groupId>
<artifactId>holidays</artifactId>
<version>1.0.3</version>
</dependency>
</dependencies>
<build> <build>
<finalName>OebbApi</finalName> <finalName>OebbApi</finalName>
<plugins> <plugins>
@ -88,8 +93,8 @@
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version> <version>3.13.0</version>
<configuration> <configuration>
<source>21</source> <source>16</source>
<target>21</target> <target>16</target>
</configuration> </configuration>
</plugin> </plugin>
</plugins> </plugins>

View file

@ -12,12 +12,10 @@ import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Collections; import java.util.*;
import java.util.Date;
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.6"; private static final String version = "0.7";
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 +64,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")), conf.getIntList("monitors.monitor1.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.getIntList("monitors.monitor2.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.getIntList("monitors.monitor3.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.getIntList("monitors.monitor4.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(); time = System.currentTimeMillis();
} }

View file

@ -1,5 +1,9 @@
package be.jaud; 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.JSONArray;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
@ -13,9 +17,8 @@ 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.time.LocalDate;
import java.util.Date; import java.util.*;
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);
@ -32,7 +35,7 @@ public class OebbCheck {
>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, List<Integer> notRunningDays) { public int getStatus(String Station, String Time, String FinalStop, String TrainType, String maxjourneys, List<String> notRunningDays) {
JSONArray journeys = null; JSONArray journeys = null;
now.setTime(new Date()); now.setTime(new Date());
try { 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; return -2;
} else { } else {
return -1; return -1;

View file

@ -39,7 +39,7 @@ public class Settings {
return config.getInt(key); return config.getInt(key);
} }
//public List<String> getStringList(String key){ return config.getStringList(key); }
public List<Integer> getIntList(String key){ return config.getIntList(key); } public List<Integer> getIntList(String key){ return config.getIntList(key); }
public List<String> getStringList(String key){ return config.getStringList(key); }
} }