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

View file

@ -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<String, Integer> 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();
}

View file

@ -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<Integer> notRunningDays) {
public int getStatus(String Station, String Time, String FinalStop, String TrainType, String maxjourneys, List<String> 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;

View file

@ -39,7 +39,7 @@ public class Settings {
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<String> getStringList(String key){ return config.getStringList(key); }
}