diff --git a/src/main/java/de/hs_mannheim/domain/System.java b/src/main/java/de/hs_mannheim/domain/System.java index 14621ac..9b843e0 100644 --- a/src/main/java/de/hs_mannheim/domain/System.java +++ b/src/main/java/de/hs_mannheim/domain/System.java @@ -57,11 +57,12 @@ public class System { return new String[1]; } - public String current_weather() throws URISyntaxException, IOException, InterruptedException{ + public String current_weather(){ - String weather = "Fehler"; + String weather = ""; double temperature = 1; + try{ HttpClient http_client = HttpClient.newHttpClient(); HttpRequest get_request = HttpRequest.newBuilder() @@ -74,8 +75,9 @@ public class System { JSONObject json = new JSONObject(get_response.body()); weather = json.getJSONArray("weather").getJSONObject(0).getString("description"); temperature = json.getJSONObject("main").getDouble("temp"); + } catch (Exception e){} - if(weather.equals("Fehler")) + if(weather.equals("")) return "Es ist ein Fehler aufgetreten!"; else return weather + ": " + temperature + " °C"; @@ -83,7 +85,101 @@ public class System { } public String weather_forecast(String destination_zip){ - return ""; + + String weather_day_1 = ""; + String weather_day_2 = ""; + String weather_day_3 = ""; + + double temperature_day_1_1 = 1; + double temperature_day_1_2 = 1; + double temperature_day_1_3 = 1; + double temperature_day_1_4 = 1; + + TreeSet temperature_day_1 = new TreeSet<>(); + double temperature_day_1_high = 1; + double temperature_day_1_low = 1; + + double temperature_day_2_1 = 1; + double temperature_day_2_2 = 1; + double temperature_day_2_3 = 1; + double temperature_day_2_4 = 1; + + TreeSet temperature_day_2 = new TreeSet<>(); + double temperature_day_2_high = 1; + double temperature_day_2_low = 1; + + double temperature_day_3_1 = 1; + double temperature_day_3_2 = 1; + double temperature_day_3_3 = 1; + double temperature_day_3_4 = 1; + + TreeSet temperature_day_3 = new TreeSet<>(); + double temperature_day_3_high = 1; + double temperature_day_3_low = 1; + + + try{ + HttpClient http_client = HttpClient.newHttpClient(); + + HttpRequest get_request = HttpRequest.newBuilder() + .uri(new URI("https://api.openweathermap.org/data/2.5/forecast?zip="+destination_zip+",de&appid="+api_key+"&units=metric&lang=de)")) + .GET() + .build(); + + HttpResponse get_response = http_client.send(get_request, BodyHandlers.ofString()); + + JSONObject json = new JSONObject(get_response.body()); + weather_day_1 = json.getJSONArray("list").getJSONObject(11).getJSONArray("weather").getJSONObject(0).getString("description"); + weather_day_2 = json.getJSONArray("list").getJSONObject(19).getJSONArray("weather").getJSONObject(0).getString("description"); + weather_day_3 = json.getJSONArray("list").getJSONObject(27).getJSONArray("weather").getJSONObject(0).getString("description"); + + temperature_day_1_1 = json.getJSONArray("list").getJSONObject(8).getJSONObject("main").getDouble("temp"); + temperature_day_1_2 = json.getJSONArray("list").getJSONObject(10).getJSONObject("main").getDouble("temp"); + temperature_day_1_3 = json.getJSONArray("list").getJSONObject(12).getJSONObject("main").getDouble("temp"); + temperature_day_1_4 = json.getJSONArray("list").getJSONObject(14).getJSONObject("main").getDouble("temp"); + + temperature_day_2_1 = json.getJSONArray("list").getJSONObject(16).getJSONObject("main").getDouble("temp"); + temperature_day_2_2 = json.getJSONArray("list").getJSONObject(18).getJSONObject("main").getDouble("temp"); + temperature_day_2_3 = json.getJSONArray("list").getJSONObject(20).getJSONObject("main").getDouble("temp"); + temperature_day_2_4 = json.getJSONArray("list").getJSONObject(22).getJSONObject("main").getDouble("temp"); + + temperature_day_3_1 = json.getJSONArray("list").getJSONObject(24).getJSONObject("main").getDouble("temp"); + temperature_day_3_2 = json.getJSONArray("list").getJSONObject(26).getJSONObject("main").getDouble("temp"); + temperature_day_3_3 = json.getJSONArray("list").getJSONObject(28).getJSONObject("main").getDouble("temp"); + temperature_day_3_4 = json.getJSONArray("list").getJSONObject(30).getJSONObject("main").getDouble("temp"); + + } catch (Exception e){} + + temperature_day_1.add(temperature_day_1_1); + temperature_day_1.add(temperature_day_1_2); + temperature_day_1.add(temperature_day_1_3); + temperature_day_1.add(temperature_day_1_4); + + temperature_day_1_high = (double) temperature_day_1.toArray()[temperature_day_1.size()-1]; + temperature_day_1_low = (double) temperature_day_1.toArray()[0]; + + temperature_day_2.add(temperature_day_2_1); + temperature_day_2.add(temperature_day_2_2); + temperature_day_2.add(temperature_day_2_3); + temperature_day_2.add(temperature_day_2_4); + + temperature_day_2_high = (double) temperature_day_2.toArray()[temperature_day_1.size()-1]; + temperature_day_2_low = (double) temperature_day_2.toArray()[0]; + + temperature_day_3.add(temperature_day_3_1); + temperature_day_3.add(temperature_day_3_2); + temperature_day_3.add(temperature_day_3_3); + temperature_day_3.add(temperature_day_3_4); + + temperature_day_3_high = (double) temperature_day_3.toArray()[temperature_day_1.size()-1]; + temperature_day_3_low = (double) temperature_day_3.toArray()[0]; + + if(weather_day_1.equals("")||weather_day_2.equals("")||weather_day_3.equals("")) + return "Es ist ein Fehler aufgetreten!"; + else + return "Morgen: " + weather_day_1 + ": Minimum: " + temperature_day_1_low + " °C" + "; Maximum: " + temperature_day_1_high + " °C\n" + + "Übermorgen: " + weather_day_2 + ": Minimum: " + temperature_day_2_low + " °C" + "; Maximum: " + temperature_day_2_high + " °C\n" + + "Überübermorgen: " + weather_day_3 + ": Minimum: " + temperature_day_3_low + " °C" + "; Maximum: " + temperature_day_3_high + " °C"; } public String distance(String destination_zip){