testmerge #1
|
@ -5,6 +5,7 @@ public class Auto {
|
||||||
private String name;
|
private String name;
|
||||||
private double co2AusstossProKm;
|
private double co2AusstossProKm;
|
||||||
|
|
||||||
|
|
||||||
public Auto(String name, double co2AusstossProKm) {
|
public Auto(String name, double co2AusstossProKm) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.co2AusstossProKm = co2AusstossProKm;
|
this.co2AusstossProKm = co2AusstossProKm;
|
||||||
|
@ -25,5 +26,5 @@ public class Auto {
|
||||||
public void setCO2AusstossProKm(double co2AusstossProKm) {
|
public void setCO2AusstossProKm(double co2AusstossProKm) {
|
||||||
this.co2AusstossProKm = co2AusstossProKm;
|
this.co2AusstossProKm = co2AusstossProKm;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,19 +1,17 @@
|
||||||
package domain;
|
package domain;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.FileReader;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
public class KurztripEmpfehlung {
|
public class KurztripEmpfehlung {
|
||||||
|
|
||||||
|
User user;
|
||||||
private List<Ort> alleOrte;
|
private List<Ort> alleOrte;
|
||||||
private Ort heimatort;
|
private Ort heimatort;
|
||||||
|
|
||||||
public KurztripEmpfehlung() {
|
public KurztripEmpfehlung(User user) {
|
||||||
this.alleOrte = ladeAlleOrte();
|
// this.alleOrte = ladeAlleOrte();
|
||||||
this.heimatort = null;
|
this.heimatort = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,7 +30,8 @@ public class KurztripEmpfehlung {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Ort ort : alleOrte) {
|
for (Ort ort : alleOrte) {
|
||||||
double entfernung = berechneEntfernung(heimatort, ort);
|
Reiseplanung reise = new Reiseplanung(user, ort);
|
||||||
|
double entfernung = reise.berechneEntfernung(heimatort, ort);
|
||||||
if (entfernung <= maxEntfernung) {
|
if (entfernung <= maxEntfernung) {
|
||||||
gefilterteOrte.add(ort);
|
gefilterteOrte.add(ort);
|
||||||
}
|
}
|
||||||
|
@ -57,7 +56,8 @@ public class KurztripEmpfehlung {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Ort ort : alleOrte) {
|
for (Ort ort : alleOrte) {
|
||||||
double entfernung = berechneEntfernung(heimatort, ort);
|
Reiseplanung reise = new Reiseplanung(user, ort);
|
||||||
|
double entfernung = reise.berechneEntfernung(heimatort, ort);
|
||||||
if (entfernung >= minEntfernung) {
|
if (entfernung >= minEntfernung) {
|
||||||
gefilterteOrte.add(ort);
|
gefilterteOrte.add(ort);
|
||||||
}
|
}
|
||||||
|
@ -90,53 +90,55 @@ public class KurztripEmpfehlung {
|
||||||
return zufallsorte;
|
return zufallsorte;
|
||||||
}
|
}
|
||||||
|
|
||||||
public double berechneEntfernung(Ort standort, Ort zielort) {
|
// public double berechneEntfernung(Ort standort, Ort zielort) {
|
||||||
double b1 = Math.toRadians(standort.getBreitengrad());
|
// double b1 = Math.toRadians(standort.getBreitengrad());
|
||||||
double b2 = Math.toRadians(zielort.getBreitengrad());
|
// double b2 = Math.toRadians(zielort.getBreitengrad());
|
||||||
double l1 = Math.toRadians(standort.getLängengrad());
|
// double l1 = Math.toRadians(standort.getLängengrad());
|
||||||
double l2 = Math.toRadians(zielort.getLängengrad());
|
// double l2 = Math.toRadians(zielort.getLängengrad());
|
||||||
|
//
|
||||||
double deltaL = l2 - l1;
|
// double deltaL = l2 - l1;
|
||||||
double cosDeltaL = Math.cos(deltaL);
|
// double cosDeltaL = Math.cos(deltaL);
|
||||||
double acosArgument = Math.sin(b1) * Math.sin(b2) + Math.cos(b1) * Math.cos(b2) * cosDeltaL;
|
// double acosArgument = Math.sin(b1) * Math.sin(b2) + Math.cos(b1) * Math.cos(b2) * cosDeltaL;
|
||||||
|
//
|
||||||
acosArgument = Math.max(-1.0, Math.min(1.0, acosArgument));
|
// acosArgument = Math.max(-1.0, Math.min(1.0, acosArgument));
|
||||||
|
//
|
||||||
double entfernung = 6378.388 * Math.acos(acosArgument);
|
// double entfernung = 6378.388 * Math.acos(acosArgument);
|
||||||
|
//
|
||||||
return entfernung;
|
// return entfernung;
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private List<Ort> ladeAlleOrte() {
|
// private List<Ort> ladeAlleOrte() {
|
||||||
List<Ort> alleOrte = new ArrayList<>();
|
// List<Ort> 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;
|
||||||
|
// }
|
||||||
|
|
||||||
String csvFile = "src/main/resources/PLZ.csv";
|
public Ort getHeimatort() {
|
||||||
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, breitengrad, 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 Object getHeimatort() {
|
|
||||||
return heimatort;
|
return heimatort;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,49 +1,25 @@
|
||||||
package domain;
|
package domain;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
|
||||||
public class Ort {
|
public class Ort {
|
||||||
|
|
||||||
private int plz;
|
private int plz;
|
||||||
private String ortName;
|
private String name;
|
||||||
private double breitengrad;
|
public double breitengrad;
|
||||||
private double längengrad;
|
public double längengrad;
|
||||||
|
|
||||||
|
|
||||||
public Ort(int plz, String name) {
|
public Ort(int plz, String name) {
|
||||||
this.plz = plz;
|
this.plz = plz;
|
||||||
this.ortName = name;
|
this.name = name;
|
||||||
}
|
// this.breitengrad = breitengrad;
|
||||||
|
// this.längengrad = längengrad;
|
||||||
|
}
|
||||||
|
|
||||||
public Ort(int plz, String name, double breitengrad, double längengrad) {
|
|
||||||
this.plz = plz;
|
|
||||||
this.ortName = name;
|
|
||||||
this.breitengrad = breitengrad;
|
|
||||||
this.längengrad = längengrad;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getPLZ() {
|
|
||||||
return plz;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOrtName() {
|
|
||||||
return ortName;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public double getBreitengrad() {
|
|
||||||
return breitengrad;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getLängengrad() {
|
|
||||||
return längengrad;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getAktuellesWetter() {
|
public String getAktuellesWetter() {
|
||||||
try {
|
try {
|
||||||
return WetterService.getAktuellesWetter(ortName);
|
return WetterService.getAktuellesWetter(name);
|
||||||
} catch (IOException | InterruptedException e) {
|
} catch (IOException | InterruptedException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return "Fehler beim Abrufen des aktuellen Wetters";
|
return "Fehler beim Abrufen des aktuellen Wetters";
|
||||||
|
@ -51,11 +27,30 @@ public class Ort {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getWettervorhersage() {
|
public String getWettervorhersage() {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return WetterService.getWettervorhersage(ortName);
|
return WetterService.getWettervorhersage(name);
|
||||||
} catch (IOException | InterruptedException e) {
|
} catch (IOException | InterruptedException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return "Fehler beim Abrufen der Wettervorhersage";
|
return "Fehler beim Abrufen der Wettervorhersage";
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPLZ() {
|
||||||
|
return plz;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getBreitengrad() {
|
||||||
|
return breitengrad;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getLängengrad() {
|
||||||
|
return längengrad;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package domain;
|
package domain;
|
||||||
|
|
||||||
|
import java.lang.Math;
|
||||||
public class Reiseplanung {
|
public class Reiseplanung {
|
||||||
|
|
||||||
private Ort standort;
|
private Ort standort;
|
||||||
|
@ -7,43 +8,67 @@ public class Reiseplanung {
|
||||||
private double entfernung;
|
private double entfernung;
|
||||||
private double dauerPKW;
|
private double dauerPKW;
|
||||||
private double dauerFahrrad;
|
private double dauerFahrrad;
|
||||||
private double co2AusstoßPKW;
|
private double co2AusstoßPKW;
|
||||||
|
|
||||||
public Reiseplanung(Ort standort, Ort zielort, double durchschnittsgeschwindigkeitPKW,
|
public Reiseplanung(User user, Ort zielort) {
|
||||||
double durchschnittsgeschwindigkeitFahrrad, double co2AusstossProKmPKW) {
|
|
||||||
this.standort = standort;
|
|
||||||
this.zielort = zielort;
|
this.zielort = zielort;
|
||||||
this.entfernung = berechneEntfernung(standort, zielort);
|
|
||||||
this.dauerPKW = entfernung / durchschnittsgeschwindigkeitPKW;
|
Auto auto = user.getAuto();
|
||||||
this.dauerFahrrad = entfernung / durchschnittsgeschwindigkeitFahrrad;
|
standort = user.getHeimatstandort();
|
||||||
this.co2AusstoßPKW = entfernung * co2AusstossProKmPKW;
|
berechneEntfernung(this.standort, this.zielort);
|
||||||
|
dauerPKW = berechneDauer(user.getDurchschnittsgeschwindigkeitPKW());
|
||||||
|
dauerFahrrad = berechneDauer(user.getDurchschnittsgeschwindigkeitFahrrad());
|
||||||
|
berechneCO2Ausstoß(this.entfernung, auto);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public double berechneEntfernung(Ort standort, Ort zielort) {
|
public double berechneEntfernung(Ort standort, Ort zielort) {
|
||||||
double b1 = Math.toRadians(standort.getBreitengrad());
|
double b1 = Math.toRadians(standort.getBreitengrad());
|
||||||
double b2 = Math.toRadians(zielort.getBreitengrad());
|
double b2 = Math.toRadians(zielort.getBreitengrad());
|
||||||
double l1 = Math.toRadians(standort.getLängengrad());
|
double l1 = Math.toRadians(standort.getLängengrad());
|
||||||
double l2 = Math.toRadians(zielort.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;
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public double getEntfernung() {
|
|
||||||
return entfernung;
|
return entfernung;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//berechnet die ungefähre Dauer zum gewählten Ort
|
||||||
|
public double berechneDauer(double geschwindigkeit) {
|
||||||
public String berechneReiseDauer(double durchschnittsgeschwindigkeit) {
|
return entfernung/geschwindigkeit;
|
||||||
double dauer = entfernung / durchschnittsgeschwindigkeit;
|
|
||||||
return String.format("Die Reise dauert ca. %.2f Stunden.", dauer);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public double berechneCO2Ausstoss() {
|
//berechnet ungefähren CO2 Ausstoß des Autos für eine Strecke
|
||||||
|
public double berechneCO2Ausstoß(double entfernung, Auto auto) {
|
||||||
|
co2AusstoßPKW = entfernung * auto.getCO2AusstossProKm();
|
||||||
return co2AusstoßPKW;
|
return co2AusstoßPKW;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public double getEntfernung() {
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
// public Reiseplanung(Ort standort, Ort zielort, double durchschnittsgeschwindigkeitPKW,
|
||||||
|
// double durchschnittsgeschwindigkeitFahrrad, double co2AusstossProKmPKW) {
|
||||||
|
// this.standort = standort;
|
||||||
|
// this.zielort = zielort;
|
||||||
|
// this.entfernung = berechneEntfernung(standort, zielort);
|
||||||
|
// this.dauerPKW = entfernung / durchschnittsgeschwindigkeitPKW;
|
||||||
|
// this.dauerFahrrad = entfernung / durchschnittsgeschwindigkeitFahrrad;
|
||||||
|
// this.co2AusstoßPKW = entfernung * co2AusstossProKmPKW;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// public String berechneReiseDauer(double durchschnittsgeschwindigkeit) {
|
||||||
|
// double dauer = entfernung / durchschnittsgeschwindigkeit;
|
||||||
|
// return String.format("Die Reise dauert ca. %.2f Stunden.", dauer);
|
||||||
|
// }
|
||||||
|
|
||||||
public double getDauerPKW() {
|
public double getDauerPKW() {
|
||||||
return dauerPKW;
|
return dauerPKW;
|
||||||
|
@ -53,7 +78,7 @@ public class Reiseplanung {
|
||||||
return dauerFahrrad;
|
return dauerFahrrad;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public double getCO2Ausstoß() {
|
||||||
|
return co2AusstoßPKW;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ public class User {
|
||||||
private String username;
|
private String username;
|
||||||
private String hashedPassword;
|
private String hashedPassword;
|
||||||
private Ort heimatstandort;
|
private Ort heimatstandort;
|
||||||
private Auto auto;
|
public Auto auto;
|
||||||
private double durchschnittsgeschwindigkeitPKW;
|
private double durchschnittsgeschwindigkeitPKW;
|
||||||
private double durchschnittsgeschwindigkeitFahrrad;
|
private double durchschnittsgeschwindigkeitFahrrad;
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ public class User {
|
||||||
|
|
||||||
try (PrintWriter writer = new PrintWriter(new FileWriter("users.txt", true))) {
|
try (PrintWriter writer = new PrintWriter(new FileWriter("users.txt", true))) {
|
||||||
writer.println(username + "," + hashedPassword + "," + heimatstandort.getPLZ() + ","
|
writer.println(username + "," + hashedPassword + "," + heimatstandort.getPLZ() + ","
|
||||||
+ heimatstandort.getOrtName() + "," + auto.getName() + "," + auto.getCO2AusstossProKm() + ","
|
+ heimatstandort.getName() + "," + auto.getName() + "," + auto.getCO2AusstossProKm() + ","
|
||||||
+ durchschnittsgeschwindigkeitPKW + "," + durchschnittsgeschwindigkeitFahrrad);
|
+ durchschnittsgeschwindigkeitPKW + "," + durchschnittsgeschwindigkeitFahrrad);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -114,7 +114,7 @@ public class User {
|
||||||
|
|
||||||
public String zeigeWetterHeimatstandort() {
|
public String zeigeWetterHeimatstandort() {
|
||||||
try {
|
try {
|
||||||
return WetterService.getAktuellesWetter(heimatstandort.getOrtName());
|
return WetterService.getAktuellesWetter(heimatstandort.getName());
|
||||||
} catch (IOException | InterruptedException e) {
|
} catch (IOException | InterruptedException e) {
|
||||||
return "Fehler beim Abrufen des Wetters: " + e.getMessage();
|
return "Fehler beim Abrufen des Wetters: " + e.getMessage();
|
||||||
}
|
}
|
||||||
|
@ -122,7 +122,7 @@ public class User {
|
||||||
|
|
||||||
public String zeigeWettervorhersageHeimatstandort() {
|
public String zeigeWettervorhersageHeimatstandort() {
|
||||||
try {
|
try {
|
||||||
return WetterService.getWettervorhersage(heimatstandort.getOrtName());
|
return WetterService.getWettervorhersage(heimatstandort.getName());
|
||||||
} catch (IOException | InterruptedException e) {
|
} catch (IOException | InterruptedException e) {
|
||||||
return "Fehler beim Abrufen der Wettervorhersage: " + e.getMessage();
|
return "Fehler beim Abrufen der Wettervorhersage: " + e.getMessage();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,24 +1,118 @@
|
||||||
package fassade;
|
package fassade;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
import java.util.List;
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
import domain.KurztripEmpfehlung;
|
import java.util.ArrayList;
|
||||||
import domain.Ort;
|
import domain.Ort;
|
||||||
import domain.Reiseplanung;
|
import domain.Reiseplanung;
|
||||||
import domain.User;
|
import domain.User;
|
||||||
|
import java.util.List;
|
||||||
|
import domain.KurztripEmpfehlung;
|
||||||
|
|
||||||
public class ReiseFassade {
|
public class ReiseFassade {
|
||||||
|
|
||||||
private Reiseplanung reiseplanung;
|
|
||||||
private KurztripEmpfehlung kurztripEmpfehlung;
|
|
||||||
|
|
||||||
public ReiseFassade() {
|
private Reiseplanung reiseplanung;
|
||||||
|
private KurztripEmpfehlung kurztripEmpfehlung;
|
||||||
this.kurztripEmpfehlung = new KurztripEmpfehlung();
|
User user;
|
||||||
}
|
List<Ort> alleOrte;
|
||||||
|
|
||||||
|
|
||||||
|
public ReiseFassade(User user) {
|
||||||
|
|
||||||
|
|
||||||
|
alleOrte = ladeAlleOrte();
|
||||||
|
// this.kurztripEmpfehlung = new KurztripEmpfehlung();
|
||||||
|
|
||||||
|
}
|
||||||
|
public List<Ort> ladeAlleOrte() {
|
||||||
|
List<Ort> 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 {
|
||||||
|
//
|
||||||
|
// //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) {
|
||||||
|
List<Ort> trefferliste = new ArrayList<>();
|
||||||
|
// String ausgabe = " ";
|
||||||
|
|
||||||
|
//gibt alle Orte zurück
|
||||||
|
if(suchbegriff.equals("alle"))
|
||||||
|
trefferliste = alleOrte;
|
||||||
|
else
|
||||||
|
//läuft über set 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);
|
||||||
|
}
|
||||||
|
//
|
||||||
|
// for(Ort o : trefferliste) {
|
||||||
|
// ausgabe = ausgabe + o.getName() + " Entfernung: " + new Reiseplanung(user, o).getEntfernung() + "\n";
|
||||||
|
// }
|
||||||
|
|
||||||
|
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) {
|
/*public Reiseplanung planeReise(Ort startort, Ort zielort) {
|
||||||
Reiseplanung reiseplanung = new Reiseplanung(startort, zielort);
|
Reiseplanung reiseplanung = new Reiseplanung(startort, zielort);
|
||||||
|
@ -28,7 +122,10 @@ public class ReiseFassade {
|
||||||
reiseplanung.berechneCo2Ausstoss();
|
reiseplanung.berechneCo2Ausstoss();
|
||||||
return reiseplanung;
|
return reiseplanung;
|
||||||
}*/
|
}*/
|
||||||
|
public String getReiseplanung(User user, Ort ziel) {
|
||||||
|
reiseplanung = new Reiseplanung(user, ziel);
|
||||||
|
return reiseplanung.toString();
|
||||||
|
}
|
||||||
|
|
||||||
public void setHeimatortFromUser(User user) {
|
public void setHeimatortFromUser(User user) {
|
||||||
kurztripEmpfehlung.setHeimatort(user.getHeimatstandort());
|
kurztripEmpfehlung.setHeimatort(user.getHeimatstandort());
|
||||||
|
@ -41,18 +138,19 @@ public class ReiseFassade {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String berechneReiseDauerPKW() {
|
public String berechneReiseDauerPKW() {
|
||||||
return reiseplanung.berechneReiseDauer(reiseplanung.getDauerPKW());
|
double dauer = reiseplanung.berechneDauer(reiseplanung.getDauerPKW());
|
||||||
|
return String.format("Die Reise dauert ca. %.2f Stunden.", dauer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String berechneReiseDauerFahrrad() {
|
public String berechneReiseDauerFahrrad() {
|
||||||
return reiseplanung.berechneReiseDauer(reiseplanung.getDauerFahrrad());
|
double dauer = reiseplanung.berechneDauer(reiseplanung.getDauerFahrrad());
|
||||||
|
return String.format("Die Reise dauert ca. %.2f Stunden.", dauer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public double berechneCO2AusstossPKW() {
|
public double berechneCO2AusstossPKW() {
|
||||||
return reiseplanung.berechneCO2Ausstoss();
|
return reiseplanung.getCO2Ausstoß();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public List<Ort> zufallsorteFahrrad(int maxEntfernung) {
|
public List<Ort> zufallsorteFahrrad(int maxEntfernung) {
|
||||||
return kurztripEmpfehlung.zufallsorteFahrrad(maxEntfernung);
|
return kurztripEmpfehlung.zufallsorteFahrrad(maxEntfernung);
|
||||||
|
@ -61,6 +159,5 @@ public class ReiseFassade {
|
||||||
public List<Ort> zufallsortePKW(int minEntfernung) {
|
public List<Ort> zufallsortePKW(int minEntfernung) {
|
||||||
return kurztripEmpfehlung.zufallsortePKW(minEntfernung);
|
return kurztripEmpfehlung.zufallsortePKW(minEntfernung);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,6 @@ import java.util.List;
|
||||||
import java.util.Scanner;
|
import java.util.Scanner;
|
||||||
|
|
||||||
import domain.Ort;
|
import domain.Ort;
|
||||||
import domain.Reiseplanung;
|
|
||||||
import domain.User;
|
import domain.User;
|
||||||
import fassade.ReiseFassade;
|
import fassade.ReiseFassade;
|
||||||
import fassade.UserFassade;
|
import fassade.UserFassade;
|
||||||
|
@ -18,7 +17,7 @@ public class UserInterface {
|
||||||
|
|
||||||
public UserInterface() {
|
public UserInterface() {
|
||||||
|
|
||||||
this.reiseFacade = new ReiseFassade();
|
this.reiseFacade = new ReiseFassade(user);
|
||||||
this.userFacade = new UserFassade();
|
this.userFacade = new UserFassade();
|
||||||
this.scanner = new Scanner(System.in);
|
this.scanner = new Scanner(System.in);
|
||||||
start();
|
start();
|
||||||
|
@ -122,7 +121,7 @@ public class UserInterface {
|
||||||
reiseFacade.setHeimatortFromUser(user);
|
reiseFacade.setHeimatortFromUser(user);
|
||||||
System.out.println("\nLogin erfolgreich! Willkommen zurück, " + user.getUsername() + "!");
|
System.out.println("\nLogin erfolgreich! Willkommen zurück, " + user.getUsername() + "!");
|
||||||
String wetter = user.zeigeWetterHeimatstandort();
|
String wetter = user.zeigeWetterHeimatstandort();
|
||||||
System.out.println("Aktuelles Wetter in " + user.getHeimatstandort().getOrtName() + ": " + wetter);
|
System.out.println("Aktuelles Wetter in " + user.getHeimatstandort().getName() + ": " + wetter);
|
||||||
} else {
|
} else {
|
||||||
System.out.println("\nBenutzername oder Passwort ist falsch:(");
|
System.out.println("\nBenutzername oder Passwort ist falsch:(");
|
||||||
}
|
}
|
||||||
|
@ -131,6 +130,18 @@ public class UserInterface {
|
||||||
private void sucheOrt() {
|
private void sucheOrt() {
|
||||||
System.out.print("Geben Sie den Namen des Ortes ein: ");
|
System.out.print("Geben Sie den Namen des Ortes ein: ");
|
||||||
String ortName = scanner.nextLine();
|
String ortName = scanner.nextLine();
|
||||||
|
// 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<Ort> treffer = reiseFacade.sucheOrt(ortName); if (treffer.isEmpty()) {
|
* List<Ort> treffer = reiseFacade.sucheOrt(ortName); if (treffer.isEmpty()) {
|
||||||
* System.out.println("Keine Treffer gefunden."); } else {
|
* System.out.println("Keine Treffer gefunden."); } else {
|
||||||
|
@ -143,17 +154,18 @@ public class UserInterface {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void planeReise() {
|
private void planeReise() {
|
||||||
System.out.print("Geben Sie Ihre Start-PLZ ein: ");
|
// System.out.print("Geben Sie Ihre Start-PLZ ein: ");
|
||||||
int startPlz = Integer.parseInt(scanner.nextLine());
|
// int startPlz = Integer.parseInt(scanner.nextLine());
|
||||||
System.out.print("Geben Sie Ihren Startort ein: ");
|
// System.out.print("Geben Sie Ihren Startort ein: ");
|
||||||
String startOrtName = scanner.nextLine();
|
// String startOrtName = scanner.nextLine();
|
||||||
Ort startort = new Ort(startPlz, startOrtName);
|
// Ort startort = new Ort(startPlz, startOrtName);
|
||||||
System.out.print("Geben Sie die Ziel-PLZ ein: ");
|
System.out.print("Geben Sie die Ziel-PLZ ein: ");
|
||||||
int zielPlz = Integer.parseInt(scanner.nextLine());
|
int zielPlz = Integer.parseInt(scanner.nextLine());
|
||||||
System.out.print("Geben Sie den Zielort ein: ");
|
System.out.print("Geben Sie den Zielort ein: ");
|
||||||
String zielOrtName = scanner.nextLine();
|
String zielOrtName = scanner.nextLine();
|
||||||
Ort zielort = new Ort(zielPlz, zielOrtName);
|
Ort zielort = new Ort(zielPlz, zielOrtName);
|
||||||
|
|
||||||
|
System.out.println(reiseFacade.getReiseplanung(user, zielort));
|
||||||
/*
|
/*
|
||||||
* Reiseplanung reise = reiseFacade.planeReise(startort, zielort);
|
* Reiseplanung reise = reiseFacade.planeReise(startort, zielort);
|
||||||
* System.out.println("Reiseplanung:"); System.out.println("Entfernung: " +
|
* System.out.println("Reiseplanung:"); System.out.println("Entfernung: " +
|
||||||
|
@ -166,7 +178,7 @@ public class UserInterface {
|
||||||
|
|
||||||
private void kurztripEmpfehlen() {
|
private void kurztripEmpfehlen() {
|
||||||
if (user != null && user.getHeimatstandort() != null) {
|
if (user != null && user.getHeimatstandort() != null) {
|
||||||
System.out.println("Empfehlung basiert auf Heimatort: " + user.getHeimatstandort().getOrtName());
|
System.out.println("Empfehlung basiert auf Heimatort: " + user.getHeimatstandort().getName());
|
||||||
|
|
||||||
reiseFacade.setHeimatortFromUser(user);
|
reiseFacade.setHeimatortFromUser(user);
|
||||||
|
|
||||||
|
@ -181,7 +193,7 @@ public class UserInterface {
|
||||||
} else {
|
} else {
|
||||||
System.out.println("Folgende Orte wurden für einen Fahrrad-Kurztrip empfohlen:");
|
System.out.println("Folgende Orte wurden für einen Fahrrad-Kurztrip empfohlen:");
|
||||||
for (Ort ort : fahrradOrte) {
|
for (Ort ort : fahrradOrte) {
|
||||||
System.out.println("- " + ort.getOrtName() + " (PLZ: " + ort.getPLZ() + ")");
|
System.out.println("- " + ort.getName() + " (PLZ: " + ort.getPLZ() + ")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -192,7 +204,7 @@ public class UserInterface {
|
||||||
} else {
|
} else {
|
||||||
System.out.println("Folgende Orte wurden für einen Auto-Kurztrip empfohlen:");
|
System.out.println("Folgende Orte wurden für einen Auto-Kurztrip empfohlen:");
|
||||||
for (Ort ort : autoOrte) {
|
for (Ort ort : autoOrte) {
|
||||||
System.out.println("- " + ort.getOrtName() + " (PLZ: " + ort.getPLZ() + ")");
|
System.out.println("- " + ort.getName() + " (PLZ: " + ort.getPLZ() + ")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue