From b234299e6b016bda6ebb94f4fd803280217ad3f8 Mon Sep 17 00:00:00 2001 From: Georg-Notebook Date: Sun, 18 Apr 2021 18:04:53 +0200 Subject: [PATCH] Log Rating + Create Table bugfix --- langde.ini | 7 ++- langen.ini | 7 ++- src/tourplaner/data/DbConnect.java | 17 +++---- src/tourplaner/object/Log.java | 15 ++++-- src/tourplaner/object/Tour.java | 2 +- src/tourplaner/tourplaner.fxml | 1 + src/tourplaner/ui/TourplanerController.java | 5 +- src/tourplaner/viewmodels/ViewModel.java | 52 +++++++++++++++++---- 8 files changed, 81 insertions(+), 25 deletions(-) diff --git a/langde.ini b/langde.ini index 04a6c05..0e3d46f 100644 --- a/langde.ini +++ b/langde.ini @@ -101,4 +101,9 @@ rstreckeallerlogs = gesammte Strecke aller Logs: rcalzeitallerlogs = Berechnete Zeit aller Logs: calstreckeallerloggs = Berechnete Strecke aller Touren: rdaten = Daten -rsummrepo = Zusammengefasster Report \ No newline at end of file +rsummrepo = Zusammengefasster Report + +bewertung = Bewertung +bewertungmsg = Bitte die Bewertung zwischen 0 und 5 eingeben +bewertungeror = Bitte nur Bewertungen von 0 und 5 eingeben +bewertungerror2 = Bitte nur Zahlen zum Bewerten \ No newline at end of file diff --git a/langen.ini b/langen.ini index 8571698..b9da097 100644 --- a/langen.ini +++ b/langen.ini @@ -102,4 +102,9 @@ rstreckeallerlogs = Distance of all logs: rcalzeitallerlogs = Calculated time of all logs: calstreckeallerloggs = Calculated distance of all logs: rdaten = Data -rsummrepo = Summary Report \ No newline at end of file +rsummrepo = Summary Report + +bewertung = Rating +bewertungmsg = Please enter a rating from 0 to 5 +bewertungeror = Please enter only a rating from 0 to 5 +bewertungerror2 = Please only enter numbers for rating \ No newline at end of file diff --git a/src/tourplaner/data/DbConnect.java b/src/tourplaner/data/DbConnect.java index 39cc6d5..aa0a861 100644 --- a/src/tourplaner/data/DbConnect.java +++ b/src/tourplaner/data/DbConnect.java @@ -37,7 +37,7 @@ public class DbConnect { errors.add(PostgresHelper.executeUpdateMessage("create table tour ( tourname varchar not null, dauer decimal, mapjson varchar, start varchar, ziel varchar, strecke decimal);", "Tour Table created")); errors.add(PostgresHelper.executeUpdateMessage("create unique index tour_tourname_uindex on tour (tourname);", "Tour Table unique created")); errors.add(PostgresHelper.executeUpdateMessage("alter table tour add constraint tour_pk primary key (tourname);", "Tour Table primary created")); - errors.add(PostgresHelper.executeUpdateMessage("create table log(tourname varchar constraint log_tour_tourname_fk references tour,id varchar,bemerkung varchar,datum date,strecke decimal,avg decimal,hightmeter decimal,pause decimal,gegangen decimal,dauer decimal);", "Log Table created")); + errors.add(PostgresHelper.executeUpdateMessage("create table log(tourname varchar constraint log_tour_tourname_fk references tour,id varchar,bemerkung varchar,datum date,strecke decimal,avg decimal,hightmeter decimal,pause decimal,gegangen decimal,dauer decimal,rating varchar);", "Log Table created")); return !errors.contains(false); } @@ -102,7 +102,7 @@ public class DbConnect { public ArrayList getLogs(String tourname){ this.c = PostgresHelper.con(); - String id, bemerkung ; + String id, bemerkung, rating; double dauer, strecke, pause, gegangen, avg, hightmeter; Date datum; @@ -113,15 +113,14 @@ public class DbConnect { while (rs.next()) { id = rs.getString("id"); bemerkung = rs.getString("bemerkung"); + rating = rs.getString("rating"); datum = rs.getDate("datum"); dauer = rs.getDouble("dauer"); -// avg = rs.getDouble("avg"); hightmeter = rs.getDouble("hightmeter"); pause = rs.getDouble("pause"); -// gegangen = rs.getDouble("gegangen"); strecke = rs.getDouble("strecke"); if (!tourname.isEmpty()) { - logs.add(new Log(id, dauer, datum.toLocalDate(), strecke, bemerkung,hightmeter, pause)); + logs.add(new Log(id, dauer, datum.toLocalDate(), strecke, bemerkung,hightmeter, pause, rating)); }else { return null; } @@ -145,13 +144,15 @@ public class DbConnect { */ public boolean addLog(String tourname, Log log){ if(Double.isInfinite(log.getAvgspeed())) log.setAvgspeed(-1.0); - return PostgresHelper.executeUpdate("INSERT INTO public.log (tourname, id, bemerkung, datum, strecke, avg, hightmeter, pause, gegangen, dauer) VALUES ('"+tourname+"', '"+log.getId()+"', '"+log.getBemerkung()+"', '"+log.getDatum()+"', " - +log.getStrecke()+", "+log.getAvgspeed()+", "+log.getHightmeter()+", "+log.getPause()+", "+log.getGegangen()+", "+log.getDauer()+")"); + System.out.println("INSERT INTO public.log (tourname, id, bemerkung, datum, strecke, avg, hightmeter, pause, gegangen, dauer, rating) VALUES ('"+tourname+"', '"+log.getId()+"', '"+log.getBemerkung()+"', '"+log.getDatum()+"', " + +log.getStrecke()+", "+log.getAvgspeed()+", "+log.getHightmeter()+", "+log.getPause()+", "+log.getGegangen()+", "+log.getDauer()+",'"+log.getRating()+"')"); + return PostgresHelper.executeUpdate("INSERT INTO public.log (tourname, id, bemerkung, datum, strecke, avg, hightmeter, pause, gegangen, dauer, rating) VALUES ('"+tourname+"', '"+log.getId()+"', '"+log.getBemerkung()+"', '"+log.getDatum()+"', " + +log.getStrecke()+", "+log.getAvgspeed()+", "+log.getHightmeter()+", "+log.getPause()+", "+log.getGegangen()+", "+log.getDauer()+",'"+log.getRating()+"')"); } public boolean editLog(String tourname, Log log){ return PostgresHelper.executeUpdate("UPDATE public.log SET bemerkung = '"+log.getBemerkung()+"', datum = '"+log.getDatum()+"', strecke = "+log.getStrecke()+", avg = "+log.getAvgspeed()+", hightmeter = "+ - log.getHightmeter()+", pause = "+log.getPause()+", gegangen = "+log.getGegangen()+", dauer = "+log.getDauer()+" WHERE tourname = '"+tourname+"' and id = '"+log.getId()+"'"); + log.getHightmeter()+", pause = "+log.getPause()+", gegangen = "+log.getGegangen()+", dauer = "+log.getDauer()+" WHERE tourname = '"+tourname+"' and id = '"+log.getId()+"', rating = '"+log.getRating()+"'"); } public boolean delLog(String tourname, String id){ diff --git a/src/tourplaner/object/Log.java b/src/tourplaner/object/Log.java index d499822..16b67dd 100644 --- a/src/tourplaner/object/Log.java +++ b/src/tourplaner/object/Log.java @@ -6,11 +6,11 @@ import java.time.LocalDate; import java.util.Date; public class Log { - private String id, bemerkung; + private String id, bemerkung, rating; private LocalDate datum; private double strecke, avgspeed, hightmeter, pause, dauer, gegangen; - public Log(String id, double dauer, LocalDate datum, double strecke, String bemerkung, double hightmeter, double pause) { + public Log(String id, double dauer, LocalDate datum, double strecke, String bemerkung, double hightmeter, double pause, String rating) { this.id = id; this.dauer = dauer; this.datum = datum; @@ -18,13 +18,22 @@ public class Log { this.bemerkung = bemerkung; this.hightmeter = hightmeter; this.pause = pause; + this.rating = rating; this.gegangen = this.dauer - this.pause; - this.avgspeed = this.strecke / (this.gegangen); + this.avgspeed = this.strecke / (this.gegangen/60); if(Double.isInfinite(this.avgspeed)){ this.avgspeed = -1; } } + public String getRating() { + return rating; + } + + public void setRating(String rating) { + this.rating = rating; + } + public String getBemerkung() { return bemerkung; } diff --git a/src/tourplaner/object/Tour.java b/src/tourplaner/object/Tour.java index 44adec0..39a7764 100644 --- a/src/tourplaner/object/Tour.java +++ b/src/tourplaner/object/Tour.java @@ -7,7 +7,7 @@ import java.util.concurrent.atomic.AtomicReference; * Model einer Tour */ public class Tour { - private String dauer, mapJson, name, start, ziel; + private String dauer, mapJson, name, start, ziel, rating; private double strecke; private ArrayList log; diff --git a/src/tourplaner/tourplaner.fxml b/src/tourplaner/tourplaner.fxml index c10f043..6c100b2 100644 --- a/src/tourplaner/tourplaner.fxml +++ b/src/tourplaner/tourplaner.fxml @@ -193,6 +193,7 @@ + diff --git a/src/tourplaner/ui/TourplanerController.java b/src/tourplaner/ui/TourplanerController.java index 28b4c5c..dc387c1 100644 --- a/src/tourplaner/ui/TourplanerController.java +++ b/src/tourplaner/ui/TourplanerController.java @@ -34,7 +34,7 @@ public class TourplanerController implements Initializable { public ImageView mapImageView; //Log -> rechts unten public TableView logTableView; - public TableColumn logDauerCol, logStreckeCol, logDatumCol, logAvgCol, logHightCol, logPauseCol, logGegangenCol, logBemerkungCol; + public TableColumn logDauerCol, logStreckeCol, logDatumCol, logAvgCol, logHightCol, logPauseCol, logGegangenCol, logBemerkungCol, logRatingCol1; //Menue public CheckMenuItem openmap, openpdf; public RadioMenuItem langenglisch, langdeutsch; @@ -154,6 +154,7 @@ public class TourplanerController implements Initializable { logPauseCol.setCellValueFactory(new PropertyValueFactory("pause")); logGegangenCol.setCellValueFactory(new PropertyValueFactory("gegangen")); logBemerkungCol.setCellValueFactory(new PropertyValueFactory("bemerkung")); + logRatingCol1.setCellValueFactory(new PropertyValueFactory("rating")); progressBar.addProgress(10); mapImageView.setImage(this.viewModel.getImage(this.viewModel.getSelectedTour().getName())); if(this.viewModel.isSucheAktiv()){ @@ -303,6 +304,8 @@ public class TourplanerController implements Initializable { this.tourreport.setText(ConfigHelper.getLangIniString("frepotour")); this.beendenButton.setText(ConfigHelper.getLangIniString("fbeenden")); this.sucheInput.setPromptText(ConfigHelper.getLangIniString("fsuche")+ConfigHelper.getLangIniString("fpunkte")); + + this.logRatingCol1.setText("Rating"); } @FXML diff --git a/src/tourplaner/viewmodels/ViewModel.java b/src/tourplaner/viewmodels/ViewModel.java index 0c09b77..df1d0e3 100644 --- a/src/tourplaner/viewmodels/ViewModel.java +++ b/src/tourplaner/viewmodels/ViewModel.java @@ -213,6 +213,7 @@ public class ViewModel { double dauer = dauerInput(this.selectedLog.getDauer()); double strecke = -1; double pause = -1.0; + double rating = -1.0; double hightmeter = -1.0; boolean bemerkung = false; LocalDate datum = null; @@ -227,14 +228,17 @@ public class ViewModel { if (bemerkung) { datum = dateInput(this.selectedLog.getDatum()); if (datum != null) { - Log newLog = new Log(this.selectedLog.getId(), dauer, datum, strecke, this.neueBemerkung, hightmeter, pause); - this.logData.removeIf(ld -> ld.getId().equals(this.selectedLog.getId())); - this.logData.add(newLog); + rating = ratingInput(this.selectedLog.getRating()); + if(rating >= 0.0) { + Log newLog = new Log(this.selectedLog.getId(), dauer, datum, strecke, this.neueBemerkung, hightmeter, pause, rating + ""); + this.logData.removeIf(ld -> ld.getId().equals(this.selectedLog.getId())); + this.logData.add(newLog); // tourAkt.get().delLog(this.selectedLog.getId()); // tourAkt.get().addLog(newLog); - this.tourData.removeIf(td -> td.getName().equals(this.selectedTour.getName())); - this.tourData.add(tourAkt.get()); - TourPlaner.editLog(this.selectedTour.getName(), newLog); + this.tourData.removeIf(td -> td.getName().equals(this.selectedTour.getName())); + this.tourData.add(tourAkt.get()); + TourPlaner.editLog(this.selectedTour.getName(), newLog); + } } } } @@ -279,6 +283,30 @@ public class ViewModel { ConfigHelper.getLangIniString("doppelpunkt"), realcontent); } + /** + * Eingabe des Ratings bis sie korrekt ist + * @param content Wenn der Content -1.0 ist, wird er nicht in das input feld eingeschleust, sonst schon + * @return Die eingegebene des Ratings + */ + private double ratingInput(String content){ + String realcontent = ""; + if (!content.isEmpty()){ + realcontent = content + ""; + } + double input = -1; + while(input <= 0) { + input = AlertHelper.inputNumber(ConfigHelper.getLangIniString("bewertung"), + ConfigHelper.getLangIniString("bewertungmsg"), + ConfigHelper.getLangIniString("bewertung") + + ConfigHelper.getLangIniString("doppelpunkt"), realcontent); + if(input < 0 && input > 5){ + input = -1; + AlertHelper.warn(ConfigHelper.getLangIniString("achtung"), ConfigHelper.getLangIniString("bewertungeror"), ConfigHelper.getLangIniString("bewertungeror2")); + } + } + return input; + } + /** * Datum eingabe bis diese Korrekt ist * @return Das eingegebene korekte Datum @@ -340,6 +368,7 @@ public class ViewModel { double dauer = dauerInput(-1.0); double strecke, pause, hightmeter; boolean bemerkung = false; + double rating = -1.0; LocalDate date = null; if(dauer >= 0) { strecke = streckeInput(""); @@ -352,10 +381,13 @@ public class ViewModel { if (bemerkung){ date = dateInput(LocalDate.now()); if (date != null) { - Log newLog = new Log(newId.get(), dauer, date, strecke, this.neueBemerkung, hightmeter, pause); - this.logData.add(newLog); - TourPlaner.addLog(this.selectedTour.getName(), newLog); - s.addLog(newLog); + rating = ratingInput(""); + if(rating >= 0.0) { + Log newLog = new Log(newId.get(), dauer, date, strecke, this.neueBemerkung, hightmeter, pause, rating + ""); + this.logData.add(newLog); + TourPlaner.addLog(this.selectedTour.getName(), newLog); + s.addLog(newLog); + } } } }