From 0a4faef3d27dc060b650492d42cb1da3608c4b2f Mon Sep 17 00:00:00 2001 From: Caro Date: Sat, 15 Jun 2024 14:49:04 +0200 Subject: [PATCH 1/8] Ort Klasse erweitert, Ort Liste einlesen + Ort suche --- TravelBuddyApp/src/main/java/domain/Ort.java | 28 ++++++++-- .../src/main/java/fassade/ReiseFassade.java | 53 +++++++++++++++++++ 2 files changed, 78 insertions(+), 3 deletions(-) diff --git a/TravelBuddyApp/src/main/java/domain/Ort.java b/TravelBuddyApp/src/main/java/domain/Ort.java index f04877a..96b3a17 100644 --- a/TravelBuddyApp/src/main/java/domain/Ort.java +++ b/TravelBuddyApp/src/main/java/domain/Ort.java @@ -1,20 +1,42 @@ package domain; +import java.util.Set; + public class Ort { - private String plz; + private int plz; private String name; + private double breitengrad; + private double längengrad; - public Ort(String plz, String name) { + public Ort(int plz, String name, double breitengrad, double längengrad) { this.plz = plz; this.name = name; + this.breitengrad = breitengrad; + this.längengrad = längengrad; } public String getWettervorhersage() { - return "Wettervorhersage"; } + + + public String getName() { + return name; + } + + public int getPLZ() { + return plz; + } + + public double getBreitengrad() { + return breitengrad; + } + + public double getLängengrad() { + return längengrad; + } } diff --git a/TravelBuddyApp/src/main/java/fassade/ReiseFassade.java b/TravelBuddyApp/src/main/java/fassade/ReiseFassade.java index 3b00e6e..4e9f21c 100644 --- a/TravelBuddyApp/src/main/java/fassade/ReiseFassade.java +++ b/TravelBuddyApp/src/main/java/fassade/ReiseFassade.java @@ -1,5 +1,58 @@ package fassade; +import java.io.File; +import java.io.FileNotFoundException; +import java.util.HashSet; +import java.util.Scanner; +import java.util.Set; + +import domain.Ort; +import ui.UserInterface; + public class ReiseFassade { + private Set orte; + + public ReiseFassade() throws FileNotFoundException { + orte = new HashSet<>(); + + orteLaden(); + } + + //lädt Datei aus rescources ein und speichert Orte in HashSet ab + private void orteLaden() throws FileNotFoundException { + + //UserInterface.class.getClass().getResourceAsStream("resources/PLZ.csv"); + Scanner sc = new Scanner(new File("resources/PLZ.csv")); + + int zähler = 0; + while (sc.hasNextLine()) { + String ort = sc.nextLine(); + + String[] spalten = ort.split(";"); + + orte.add(new Ort(Integer.parseInt(spalten[0]), spalten[1], Double.parseDouble(spalten[2]), Double.parseDouble(spalten[3]))); + + zähler++; + } + + System.out.println(zähler + "Orte geladen."); + } + + //gibt Trefferliste passend zum Suchbegriff zurück + public Ort[] sucheOrt(String suchbegriff) { + Set trefferliste = new HashSet<>(); + + //gibt alle Orte zurück + if(suchbegriff.equals("alle")) + trefferliste = orte; + else + //läuft über set orte + for(Ort o : orte) { + //fügt ort zur Trefferliste hinzu wenn der Suchbegriff im Namen ist und weniger als 8 Orte bereits drauf stehen + if(o.getName().contains(suchbegriff) && trefferliste.size()<8) + trefferliste.add(o); + } + return trefferliste.toArray(new Ort[0]); + } } -- 2.43.0 From 4c96ee8075e48809171b96e0b6afa12e3a9e830a Mon Sep 17 00:00:00 2001 From: Caro Date: Sat, 15 Jun 2024 15:59:19 +0200 Subject: [PATCH 2/8] entfernungsberechnung --- .../src/main/java/domain/Reiseplanung.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/TravelBuddyApp/src/main/java/domain/Reiseplanung.java b/TravelBuddyApp/src/main/java/domain/Reiseplanung.java index 24a95b9..2f561c9 100644 --- a/TravelBuddyApp/src/main/java/domain/Reiseplanung.java +++ b/TravelBuddyApp/src/main/java/domain/Reiseplanung.java @@ -1,5 +1,30 @@ package domain; +import java.lang.Math; public class Reiseplanung { + private Ort standort; + private Ort zielort; + private double entfernung; + private double dauerPKW; + private double dauerFahrrad; + private double co2AusstoßPKW; + + public Reiseplanung(Ort zielort) { + this.standort = standort; + this.zielort = zielort; + this.entfernung = entfernung; + this.dauerPKW = dauerPKW; + this.dauerFahrrad = dauerFahrrad; + this.co2AusstoßPKW =co2AusstoßPKW; + } + + public double berechneEntfernung(Ort standort, Ort zielort) { + double b1 = Math.toRadians(standort.getBreitengrad()); + double b2 = Math.toRadians(zielort.getBreitengrad()); + double l1 = Math.toRadians(standort.getLängengrad()); + double l2 = Math.toRadians(zielort.getLängengrad()); + + return 6378.388 * Math.acos(Math.sin(b1) * Math.sin(b2) + Math.cos(b1) * Math.cos(b2) * Math.cos(l2 - l1)); + } } -- 2.43.0 From 70836e2325c9c2a8b71274a26e75aaf409fea9d2 Mon Sep 17 00:00:00 2001 From: Caro Date: Sat, 15 Jun 2024 22:56:45 +0200 Subject: [PATCH 3/8] reiseplanung erweitert --- TravelBuddyApp/src/main/java/domain/Auto.java | 3 ++ .../src/main/java/domain/Reiseplanung.java | 40 +++++++++++++++---- TravelBuddyApp/src/main/java/domain/User.java | 17 +++++++- 3 files changed, 52 insertions(+), 8 deletions(-) diff --git a/TravelBuddyApp/src/main/java/domain/Auto.java b/TravelBuddyApp/src/main/java/domain/Auto.java index df73876..4279186 100644 --- a/TravelBuddyApp/src/main/java/domain/Auto.java +++ b/TravelBuddyApp/src/main/java/domain/Auto.java @@ -11,5 +11,8 @@ public class Auto { this.co2AusstossProKm = co2AusstossProKm; } + public double getCO2AusstoßProKm() { + return co2AusstossProKm; + } } diff --git a/TravelBuddyApp/src/main/java/domain/Reiseplanung.java b/TravelBuddyApp/src/main/java/domain/Reiseplanung.java index 2f561c9..66069a9 100644 --- a/TravelBuddyApp/src/main/java/domain/Reiseplanung.java +++ b/TravelBuddyApp/src/main/java/domain/Reiseplanung.java @@ -10,13 +10,17 @@ public class Reiseplanung { private double dauerFahrrad; private double co2AusstoßPKW; - public Reiseplanung(Ort zielort) { - this.standort = standort; + public Reiseplanung(User user, Ort zielort) { + this.zielort = zielort; - this.entfernung = entfernung; - this.dauerPKW = dauerPKW; - this.dauerFahrrad = dauerFahrrad; - this.co2AusstoßPKW =co2AusstoßPKW; + + Auto auto = user.getAuto(); + standort = user.getHeimatstandort(); + berechneEntfernung(this.standort, this.zielort); + dauerPKW = berechneDauer(entfernung, user.getDurchschnittsgeschwindigkeitPKW()); + dauerFahrrad = berechneDauer(entfernung, user.getDurchschnittsgeschwindigkeitFahrrad()); + berechneCO2Ausstoß(this.entfernung, auto); + } public double berechneEntfernung(Ort standort, Ort zielort) { @@ -25,6 +29,28 @@ public class Reiseplanung { double l1 = Math.toRadians(standort.getLängengrad()); double l2 = Math.toRadians(zielort.getLängengrad()); - return 6378.388 * Math.acos(Math.sin(b1) * Math.sin(b2) + Math.cos(b1) * Math.cos(b2) * Math.cos(l2 - l1)); + entfernung = (6378.388 * Math.acos(Math.sin(b1) * Math.sin(b2) + Math.cos(b1) * Math.cos(b2) * Math.cos(l2 - l1))) * 1.25; + + return entfernung; + } + + //berechnet die ungefähre Dauer zum gewählten Ort + public double berechneDauer(double entfernung, double geschwindigkeit) { + return entfernung/geschwindigkeit; + + } + + //berechnet ungefähren CO2 Ausstoß des Autos für eine Strecke + public double berechneCO2Ausstoß(double entfernung, Auto auto) { + co2AusstoßPKW = entfernung * auto.getCO2AusstoßProKm(); + return co2AusstoßPKW; + } + + public double getEntferung() { + return entfernung; + } + + public String toString() { + return "Von " + standort + " Nach " + zielort + "\nEntfernung: " + entfernung + "\nReisedauer mit dem PKW: " + dauerPKW + "\nReiserdauer mit dem Fahrrad: " + dauerFahrrad + "\nCO2-Ausstoß durch PKW: " + co2AusstoßPKW; } } diff --git a/TravelBuddyApp/src/main/java/domain/User.java b/TravelBuddyApp/src/main/java/domain/User.java index d705e9f..0fbe55a 100644 --- a/TravelBuddyApp/src/main/java/domain/User.java +++ b/TravelBuddyApp/src/main/java/domain/User.java @@ -5,7 +5,7 @@ public class User { private String username; private String password; private Ort heimatstandort; - private Auto auto; + public Auto auto; private double durchschnittsgeschwindigkeitPKW; private double durchschnittsgeschwindigkeitFahrrad; @@ -31,4 +31,19 @@ public class User { // Implementierung der Wetteranzeige } + public double getDurchschnittsgeschwindigkeitPKW() { + return durchschnittsgeschwindigkeitPKW; + } + + public double getDurchschnittsgeschwindigkeitFahrrad() { + return durchschnittsgeschwindigkeitFahrrad; + } + + public Ort getHeimatstandort() { + return heimatstandort; + } + + public Auto getAuto() { + return auto; + } } -- 2.43.0 From 378fcff16279f39e2e5819f216e06484096bc8c5 Mon Sep 17 00:00:00 2001 From: Caro Date: Sun, 16 Jun 2024 13:24:28 +0200 Subject: [PATCH 4/8] Fassade aktualisiert --- .../src/main/java/fassade/ReiseFassade.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/TravelBuddyApp/src/main/java/fassade/ReiseFassade.java b/TravelBuddyApp/src/main/java/fassade/ReiseFassade.java index 4e9f21c..98803cd 100644 --- a/TravelBuddyApp/src/main/java/fassade/ReiseFassade.java +++ b/TravelBuddyApp/src/main/java/fassade/ReiseFassade.java @@ -7,13 +7,16 @@ import java.util.Scanner; import java.util.Set; import domain.Ort; -import ui.UserInterface; +import domain.Reiseplanung; +import domain.User; public class ReiseFassade { + User user; private Set orte; - public ReiseFassade() throws FileNotFoundException { + public ReiseFassade(User user) throws FileNotFoundException { + orte = new HashSet<>(); orteLaden(); @@ -40,8 +43,9 @@ public class ReiseFassade { } //gibt Trefferliste passend zum Suchbegriff zurück - public Ort[] sucheOrt(String suchbegriff) { + public String sucheOrt(String suchbegriff) { Set trefferliste = new HashSet<>(); + String ausgabe; //gibt alle Orte zurück if(suchbegriff.equals("alle")) @@ -49,10 +53,17 @@ public class ReiseFassade { else //läuft über set orte for(Ort o : orte) { - //fügt ort zur Trefferliste hinzu wenn der Suchbegriff im Namen ist und weniger als 8 Orte bereits drauf stehen + //fügt ort zur Trefferliste hinzu wenn der Suchbegriff im Namen ist und weniger als 8 Orte bereits drauf stehen if(o.getName().contains(suchbegriff) && trefferliste.size()<8) trefferliste.add(o); } - return trefferliste.toArray(new Ort[0]); + + for(Ort o : trefferliste) { + ausgabe = ausgabe + o.getName() + " Entfernung: " + new Reiseplanung(user, o).getEntfernung() + "\n"; + } + + return ausgabe; } + + } -- 2.43.0 From f5fa33e182fc862c74d00d2065db1213a66c399f Mon Sep 17 00:00:00 2001 From: Caro Date: Sun, 16 Jun 2024 14:37:23 +0200 Subject: [PATCH 5/8] =?UTF-8?q?Test=20f=C3=BCr=20Reiseplanung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TravelBuddyApp/.classpath | 1 + .../test/java/domain/ReiseplanungTest.java | 40 +++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 TravelBuddyApp/src/test/java/domain/ReiseplanungTest.java diff --git a/TravelBuddyApp/.classpath b/TravelBuddyApp/.classpath index d2a08eb..373e075 100644 --- a/TravelBuddyApp/.classpath +++ b/TravelBuddyApp/.classpath @@ -36,5 +36,6 @@ + diff --git a/TravelBuddyApp/src/test/java/domain/ReiseplanungTest.java b/TravelBuddyApp/src/test/java/domain/ReiseplanungTest.java new file mode 100644 index 0000000..3a693ae --- /dev/null +++ b/TravelBuddyApp/src/test/java/domain/ReiseplanungTest.java @@ -0,0 +1,40 @@ +package domain; + +import static org.junit.Assert.assertEquals; +import org.junit.Test; + +public class ReiseplanungTest { + + Auto auto = new Auto("Brummi", 167.6); + Ort ort = new Ort(1067, "Dresden", 13.7210676148814, 51.0600336463379); + User user = new User("Karl", "hallo", ort, auto, 30, 15); + Ort ziel = new Ort(1705, "Freital", 13.6382950999229, 50.9981963286759); + Reiseplanung reise = new Reiseplanung(user,ziel); + + + @Test + public void testBerechneEntfernung() { + + double result = reise.berechneEntfernung(ort, ziel); + + assertEquals(14.2125, result, 0.0); + } + + @Test + public void testBerechneDauer() { + double entfernung = 136.5; + double geschwindigkeit = 70; + + double result = reise.berechneDauer(entfernung, geschwindigkeit); + + assertEquals(1.95, result, 0.0); + } + + public void testBerechneCO2Ausstoß() { + double entfernung = 73.8; + + double result = reise.berechneCO2Ausstoß(entfernung, auto); + + assertEquals(12368.88, result, 0.0); + } +} -- 2.43.0 From 963cdbad2b6c25c93421fe6cffef479573941a08 Mon Sep 17 00:00:00 2001 From: Caro Date: Mon, 17 Jun 2024 13:18:56 +0200 Subject: [PATCH 6/8] merge versuch --- TravelBuddyApp/src/main/java/domain/Auto.java | 1 + TravelBuddyApp/src/main/java/domain/Ort.java | 1 + .../src/main/java/domain/Reiseplanung.java | 1 + TravelBuddyApp/src/main/java/domain/User.java | 1 + .../src/main/java/fassade/ReiseFassade.java | 44 +++++++++---------- 5 files changed, 26 insertions(+), 22 deletions(-) diff --git a/TravelBuddyApp/src/main/java/domain/Auto.java b/TravelBuddyApp/src/main/java/domain/Auto.java index 4279186..ce988ce 100644 --- a/TravelBuddyApp/src/main/java/domain/Auto.java +++ b/TravelBuddyApp/src/main/java/domain/Auto.java @@ -13,6 +13,7 @@ public class Auto { public double getCO2AusstoßProKm() { return co2AusstossProKm; + } } diff --git a/TravelBuddyApp/src/main/java/domain/Ort.java b/TravelBuddyApp/src/main/java/domain/Ort.java index 96b3a17..8938ea8 100644 --- a/TravelBuddyApp/src/main/java/domain/Ort.java +++ b/TravelBuddyApp/src/main/java/domain/Ort.java @@ -38,5 +38,6 @@ public class Ort { public double getLängengrad() { return längengrad; + } } diff --git a/TravelBuddyApp/src/main/java/domain/Reiseplanung.java b/TravelBuddyApp/src/main/java/domain/Reiseplanung.java index 66069a9..9354cf1 100644 --- a/TravelBuddyApp/src/main/java/domain/Reiseplanung.java +++ b/TravelBuddyApp/src/main/java/domain/Reiseplanung.java @@ -48,6 +48,7 @@ public class Reiseplanung { public double getEntferung() { return entfernung; + } public String toString() { diff --git a/TravelBuddyApp/src/main/java/domain/User.java b/TravelBuddyApp/src/main/java/domain/User.java index 0fbe55a..8f0e4ff 100644 --- a/TravelBuddyApp/src/main/java/domain/User.java +++ b/TravelBuddyApp/src/main/java/domain/User.java @@ -11,6 +11,7 @@ public class User { public User(String username, String password, Ort heimatstandort, Auto auto, double durchschnittsgeschwindigkeitPKW, double durchschnittsgeschwindigkeitFahrrad) { + this.username = username; this.password = password; this.heimatstandort = heimatstandort; diff --git a/TravelBuddyApp/src/main/java/fassade/ReiseFassade.java b/TravelBuddyApp/src/main/java/fassade/ReiseFassade.java index 98803cd..000ec7e 100644 --- a/TravelBuddyApp/src/main/java/fassade/ReiseFassade.java +++ b/TravelBuddyApp/src/main/java/fassade/ReiseFassade.java @@ -19,33 +19,33 @@ public class ReiseFassade { orte = new HashSet<>(); - orteLaden(); +// orteLaden(); } - //lädt Datei aus rescources ein und speichert Orte in HashSet ab - private void orteLaden() throws FileNotFoundException { - - //UserInterface.class.getClass().getResourceAsStream("resources/PLZ.csv"); - Scanner sc = new Scanner(new File("resources/PLZ.csv")); - - int zähler = 0; - while (sc.hasNextLine()) { - String ort = sc.nextLine(); - - String[] spalten = ort.split(";"); - - orte.add(new Ort(Integer.parseInt(spalten[0]), spalten[1], Double.parseDouble(spalten[2]), Double.parseDouble(spalten[3]))); - - zähler++; - } - - System.out.println(zähler + "Orte geladen."); - } +// //lädt Datei aus rescources ein und speichert Orte in HashSet ab +// private void orteLaden() throws FileNotFoundException { +// +// //UserInterface.class.getClass().getResourceAsStream("resources/PLZ.csv"); +// Scanner sc = new Scanner(new File("resources/PLZ.csv")); +// +// int zähler = 0; +// while (sc.hasNextLine()) { +// String ort = sc.nextLine(); +// +// String[] spalten = ort.split(";"); +// +// orte.add(new Ort(Integer.parseInt(spalten[0]), spalten[1], Double.parseDouble(spalten[2]), Double.parseDouble(spalten[3]))); +// +// zähler++; +// } +// +// System.out.println(zähler + "Orte geladen."); +// } //gibt Trefferliste passend zum Suchbegriff zurück public String sucheOrt(String suchbegriff) { Set trefferliste = new HashSet<>(); - String ausgabe; + String ausgabe = " "; //gibt alle Orte zurück if(suchbegriff.equals("alle")) @@ -59,7 +59,7 @@ public class ReiseFassade { } for(Ort o : trefferliste) { - ausgabe = ausgabe + o.getName() + " Entfernung: " + new Reiseplanung(user, o).getEntfernung() + "\n"; + ausgabe = ausgabe + o.getName() + " Entfernung: " + new Reiseplanung(user, o).getEntferung() + "\n"; } return ausgabe; -- 2.43.0 From d7a46eef78075d7dc2a4f826e4048c604dc04985 Mon Sep 17 00:00:00 2001 From: Caro Date: Mon, 17 Jun 2024 22:43:43 +0200 Subject: [PATCH 7/8] =?UTF-8?q?=C3=BCberarbeiteter=20merge,=20UI=20erweite?= =?UTF-8?q?rt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/domain/KurztripEmpfehlung.java | 61 +++++++++---------- TravelBuddyApp/src/main/java/domain/Ort.java | 8 +-- .../src/main/java/fassade/ReiseFassade.java | 55 +++++++++++++---- .../src/main/java/ui/UserInterface.java | 13 ++-- 4 files changed, 83 insertions(+), 54 deletions(-) diff --git a/TravelBuddyApp/src/main/java/domain/KurztripEmpfehlung.java b/TravelBuddyApp/src/main/java/domain/KurztripEmpfehlung.java index 549e725..0ef8637 100644 --- a/TravelBuddyApp/src/main/java/domain/KurztripEmpfehlung.java +++ b/TravelBuddyApp/src/main/java/domain/KurztripEmpfehlung.java @@ -1,8 +1,5 @@ package domain; -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Random; @@ -14,7 +11,7 @@ public class KurztripEmpfehlung { private Ort heimatort; public KurztripEmpfehlung(User user) { - this.alleOrte = ladeAlleOrte(); +// this.alleOrte = ladeAlleOrte(); this.heimatort = null; } @@ -112,34 +109,34 @@ public class KurztripEmpfehlung { - private List ladeAlleOrte() { - List alleOrte = new ArrayList<>(); - - String csvFile = "src/main/resources/PLZ.csv"; - String line; - try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) { - while ((line = br.readLine()) != null) { - line = line.replaceAll("\\s+", ""); - String[] data = line.split(";"); - int plz = Integer.parseInt(data[0].replaceAll("\"", "")); - String ortName = data[1].replaceAll("\"", ""); - double breitengrad = Double.parseDouble(data[2].replaceAll("\"", "")); - double laengengrad = Double.parseDouble(data[3].replaceAll("\"", "")); - Ort ort = new Ort(plz, ortName); - ort.breitengrad = breitengrad; - ort.längengrad = laengengrad; - alleOrte.add(ort); - } - } catch (IOException e) { - System.err.println("Fehler beim Lesen der Datei: " + e.getMessage()); - e.printStackTrace(); - } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) { - System.err.println("Fehlerhaftes Datenformat in der CSV-Datei: " + e.getMessage()); - e.printStackTrace(); - } - - return alleOrte; - } +// private List ladeAlleOrte() { +// List alleOrte = new ArrayList<>(); +// +// String csvFile = "src/main/resources/PLZ.csv"; +// String line; +// try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) { +// while ((line = br.readLine()) != null) { +// line = line.replaceAll("\\s+", ""); +// String[] data = line.split(";"); +// int plz = Integer.parseInt(data[0].replaceAll("\"", "")); +// String ortName = data[1].replaceAll("\"", ""); +// double breitengrad = Double.parseDouble(data[2].replaceAll("\"", "")); +// double laengengrad = Double.parseDouble(data[3].replaceAll("\"", "")); +// Ort ort = new Ort(plz, ortName); +// ort.breitengrad = breitengrad; +// ort.längengrad = laengengrad; +// alleOrte.add(ort); +// } +// } catch (IOException e) { +// System.err.println("Fehler beim Lesen der Datei: " + e.getMessage()); +// e.printStackTrace(); +// } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) { +// System.err.println("Fehlerhaftes Datenformat in der CSV-Datei: " + e.getMessage()); +// e.printStackTrace(); +// } +// +// return alleOrte; +// } public Ort getHeimatort() { return heimatort; diff --git a/TravelBuddyApp/src/main/java/domain/Ort.java b/TravelBuddyApp/src/main/java/domain/Ort.java index 392215f..527b437 100644 --- a/TravelBuddyApp/src/main/java/domain/Ort.java +++ b/TravelBuddyApp/src/main/java/domain/Ort.java @@ -7,14 +7,14 @@ public class Ort { private int plz; private String name; - double breitengrad; - double längengrad; + public double breitengrad; + public double längengrad; public Ort(int plz, String name) { this.plz = plz; this.name = name; - this.breitengrad = breitengrad; - this.längengrad = längengrad; +// this.breitengrad = breitengrad; +// this.längengrad = längengrad; } public String getAktuellesWetter() { diff --git a/TravelBuddyApp/src/main/java/fassade/ReiseFassade.java b/TravelBuddyApp/src/main/java/fassade/ReiseFassade.java index 1fc5638..1367522 100644 --- a/TravelBuddyApp/src/main/java/fassade/ReiseFassade.java +++ b/TravelBuddyApp/src/main/java/fassade/ReiseFassade.java @@ -1,10 +1,9 @@ package fassade; -import java.io.File; -import java.io.FileNotFoundException; -import java.util.HashSet; -import java.util.Scanner; -import java.util.Set; +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; import domain.Ort; import domain.Reiseplanung; import domain.User; @@ -17,15 +16,44 @@ public class ReiseFassade { private Reiseplanung reiseplanung; private KurztripEmpfehlung kurztripEmpfehlung; User user; - private Set orte; + List alleOrte; + public ReiseFassade(User user) { - orte = new HashSet<>(); - + + alleOrte = ladeAlleOrte(); // this.kurztripEmpfehlung = new KurztripEmpfehlung(); } + public List ladeAlleOrte() { + List alleOrte = new ArrayList<>(); + + String csvFile = "src/main/resources/PLZ.csv"; + String line; + try (BufferedReader br = new BufferedReader(new FileReader(csvFile))) { + while ((line = br.readLine()) != null) { + line = line.replaceAll("\\s+", ""); + String[] data = line.split(";"); + int plz = Integer.parseInt(data[0].replaceAll("\"", "")); + String ortName = data[1].replaceAll("\"", ""); + double breitengrad = Double.parseDouble(data[2].replaceAll("\"", "")); + double laengengrad = Double.parseDouble(data[3].replaceAll("\"", "")); + Ort ort = new Ort(plz, ortName); + ort.breitengrad = breitengrad; + ort.längengrad = laengengrad; + alleOrte.add(ort); + } + } catch (IOException e) { + System.err.println("Fehler beim Lesen der Datei: " + e.getMessage()); + e.printStackTrace(); + } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) { + System.err.println("Fehlerhaftes Datenformat in der CSV-Datei: " + e.getMessage()); + e.printStackTrace(); + } + + return alleOrte; + } // //lädt Datei aus rescources ein und speichert Orte in HashSet ab // private void orteLaden() throws FileNotFoundException { @@ -49,15 +77,15 @@ private KurztripEmpfehlung kurztripEmpfehlung; //gibt Trefferliste passend zum Suchbegriff zurück public String sucheOrt(String suchbegriff) { - Set trefferliste = new HashSet<>(); + List trefferliste = new ArrayList<>(); String ausgabe = " "; //gibt alle Orte zurück if(suchbegriff.equals("alle")) - trefferliste = orte; + trefferliste = alleOrte; else //läuft über set orte - for(Ort o : orte) { + for(Ort o : alleOrte) { //fügt ort zur Trefferliste hinzu wenn der Suchbegriff im Namen ist und weniger als 8 Orte bereits drauf stehen if(o.getName().contains(suchbegriff) && trefferliste.size()<8) trefferliste.add(o); @@ -81,7 +109,10 @@ private KurztripEmpfehlung kurztripEmpfehlung; reiseplanung.berechneCo2Ausstoss(); return reiseplanung; }*/ - + public String getReiseplanung(User user, Ort ziel) { + reiseplanung = new Reiseplanung(user, ziel); + return reiseplanung.toString(); + } public void setHeimatortFromUser(User user) { kurztripEmpfehlung.setHeimatort(user.getHeimatstandort()); diff --git a/TravelBuddyApp/src/main/java/ui/UserInterface.java b/TravelBuddyApp/src/main/java/ui/UserInterface.java index cf6db13..df7cee8 100644 --- a/TravelBuddyApp/src/main/java/ui/UserInterface.java +++ b/TravelBuddyApp/src/main/java/ui/UserInterface.java @@ -4,7 +4,6 @@ import java.util.List; import java.util.Scanner; import domain.Ort; -import domain.Reiseplanung; import domain.User; import fassade.ReiseFassade; import fassade.UserFassade; @@ -131,6 +130,7 @@ public class UserInterface { private void sucheOrt() { System.out.print("Geben Sie den Namen des Ortes ein: "); String ortName = scanner.nextLine(); + System.out.println(reiseFacade.sucheOrt(ortName)); /* * List treffer = reiseFacade.sucheOrt(ortName); if (treffer.isEmpty()) { * System.out.println("Keine Treffer gefunden."); } else { @@ -143,17 +143,18 @@ public class UserInterface { } private void planeReise() { - System.out.print("Geben Sie Ihre Start-PLZ ein: "); - int startPlz = Integer.parseInt(scanner.nextLine()); - System.out.print("Geben Sie Ihren Startort ein: "); - String startOrtName = scanner.nextLine(); - Ort startort = new Ort(startPlz, startOrtName); +// System.out.print("Geben Sie Ihre Start-PLZ ein: "); +// int startPlz = Integer.parseInt(scanner.nextLine()); +// System.out.print("Geben Sie Ihren Startort ein: "); +// String startOrtName = scanner.nextLine(); +// Ort startort = new Ort(startPlz, startOrtName); System.out.print("Geben Sie die Ziel-PLZ ein: "); int zielPlz = Integer.parseInt(scanner.nextLine()); System.out.print("Geben Sie den Zielort ein: "); String zielOrtName = scanner.nextLine(); Ort zielort = new Ort(zielPlz, zielOrtName); + System.out.println(reiseFacade.getReiseplanung(user, zielort)); /* * Reiseplanung reise = reiseFacade.planeReise(startort, zielort); * System.out.println("Reiseplanung:"); System.out.println("Entfernung: " + -- 2.43.0 From 1bb8d15014e5c68392c1065a8d9e0f8f39754128 Mon Sep 17 00:00:00 2001 From: Caro Date: Mon, 17 Jun 2024 23:36:05 +0200 Subject: [PATCH 8/8] Wetteranzeige Trefferliste --- .../src/main/java/fassade/ReiseFassade.java | 29 ++++++++++++++----- .../src/main/java/ui/UserInterface.java | 13 ++++++++- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/TravelBuddyApp/src/main/java/fassade/ReiseFassade.java b/TravelBuddyApp/src/main/java/fassade/ReiseFassade.java index 1367522..e33da37 100644 --- a/TravelBuddyApp/src/main/java/fassade/ReiseFassade.java +++ b/TravelBuddyApp/src/main/java/fassade/ReiseFassade.java @@ -76,9 +76,9 @@ private KurztripEmpfehlung kurztripEmpfehlung; // } //gibt Trefferliste passend zum Suchbegriff zurück - public String sucheOrt(String suchbegriff) { + public Ort[] sucheOrt(String suchbegriff) { List trefferliste = new ArrayList<>(); - String ausgabe = " "; +// String ausgabe = " "; //gibt alle Orte zurück if(suchbegriff.equals("alle")) @@ -90,16 +90,29 @@ private KurztripEmpfehlung kurztripEmpfehlung; if(o.getName().contains(suchbegriff) && trefferliste.size()<8) trefferliste.add(o); } +// +// for(Ort o : trefferliste) { +// ausgabe = ausgabe + o.getName() + " Entfernung: " + new Reiseplanung(user, o).getEntfernung() + "\n"; +// } - for(Ort o : trefferliste) { - ausgabe = ausgabe + o.getName() + " Entfernung: " + new Reiseplanung(user, o).getEntfernung() + "\n"; - } - - return ausgabe; + return trefferliste.toArray(new Ort[0]); } - + public String anzeigeTrefferliste(Ort[] trefferliste) { + String ausgabe = " "; + int i = 1; + for(Ort o : trefferliste) { + ausgabe = ausgabe + i + o.getName() + " Entfernung: " + new Reiseplanung(user, o).getEntfernung() + "\n"; + i++; + } + return ausgabe; + } + public String ortAnzeige(int index, Ort[] trefferliste) { + String anzeige = " "; + anzeige = trefferliste[index-1].getName() + trefferliste[index-1].getPLZ() + trefferliste[index-1].getWettervorhersage(); + return anzeige; + } /*public Reiseplanung planeReise(Ort startort, Ort zielort) { Reiseplanung reiseplanung = new Reiseplanung(startort, zielort); diff --git a/TravelBuddyApp/src/main/java/ui/UserInterface.java b/TravelBuddyApp/src/main/java/ui/UserInterface.java index df7cee8..c0104a0 100644 --- a/TravelBuddyApp/src/main/java/ui/UserInterface.java +++ b/TravelBuddyApp/src/main/java/ui/UserInterface.java @@ -130,7 +130,18 @@ public class UserInterface { private void sucheOrt() { System.out.print("Geben Sie den Namen des Ortes ein: "); String ortName = scanner.nextLine(); - System.out.println(reiseFacade.sucheOrt(ortName)); +// reiseFacade.sucheOrt(ortName); + Ort[] trefferliste = reiseFacade.sucheOrt(ortName); + System.out.println(reiseFacade.anzeigeTrefferliste(trefferliste)); + + System.out.println("Wählen Sie einen Ort aus: "); + System.out.println("Geben Sie ´beenden` ein, um zu beenden"); + String input = scanner.nextLine(); + if(input == "beenden") { + return; + } + int eingabe = Integer.parseInt(input); + reiseFacade.ortAnzeige(eingabe, trefferliste); /* * List treffer = reiseFacade.sucheOrt(ortName); if (treffer.isEmpty()) { * System.out.println("Keine Treffer gefunden."); } else { -- 2.43.0