From ae93f365d5b449adee9637b40b8d396f31700b7b Mon Sep 17 00:00:00 2001 From: Georg-Notebook Date: Fri, 16 Apr 2021 23:57:31 +0200 Subject: [PATCH] Sprachfile erweitert + Exporter begonnen --- langde.ini | 22 ++- src/tourplaner/business/DirectionMap.java | 26 ++- src/tourplaner/business/Exporter.java | 2 + src/tourplaner/business/HttpHelper.java | 19 +- src/tourplaner/business/JsonHelper.java | 21 ++- src/tourplaner/business/Reporter.java | 220 +++++++++------------- src/tourplaner/object/Data.java | 2 + src/tourplaner/viewmodels/ViewModel.java | 1 - 8 files changed, 166 insertions(+), 147 deletions(-) create mode 100644 src/tourplaner/business/Exporter.java create mode 100644 src/tourplaner/object/Data.java diff --git a/langde.ini b/langde.ini index 21b9201..4cddf83 100644 --- a/langde.ini +++ b/langde.ini @@ -39,4 +39,24 @@ pausemsg = Dauer der Pause hightmeter = Höhenmeter hightmetermsg = Höhenmeter des Abschnitts bemerkung = Bemerkung -bemerkungheader = Bitte geben Sie die Bemerkungen zu diesem Log eintrag ein, kann auch leer bleiben. \ No newline at end of file +bemerkungheader = Bitte geben Sie die Bemerkungen zu diesem Log eintrag ein, kann auch leer bleiben. +tourreportvon = Tour Report von -> +tourplanervon = Tourplaner by DerGeorg +reportkeywords = Tourplaner, Tour, Report +tourplaner = Tourplaner" +tour = Tour +reportvon = Report erstellt von: +reportstart = Startpunkt der Tour: +reportziel = Zielpunkt der Tour: +reportdauercal = Berechnete Dauer der Tour: +reportstreckecal = Berechnete Strecke der Tour: +logs = Logs +countlog = Anzahl der Logeinträge: +logvom = Log vom: +logdauer = Dauer: +logpause = Davon Pause: +loggegangen = Davon gegangen: +logavg = Berechnete Durchschnittliche Geschwindigkeit: +logstrecke = Entfernung: +loghight = Höhenmeter: +logbemerkung = Bemerkung: \ No newline at end of file diff --git a/src/tourplaner/business/DirectionMap.java b/src/tourplaner/business/DirectionMap.java index 7073517..0c32353 100644 --- a/src/tourplaner/business/DirectionMap.java +++ b/src/tourplaner/business/DirectionMap.java @@ -1,14 +1,13 @@ package tourplaner.business; -import javax.imageio.ImageIO; import java.awt.*; -import java.awt.image.BufferedImage; -import java.awt.image.RenderedImage; import java.io.File; import java.io.IOException; +/** + * Zuständig für das besorgen der Map für die UI und PDF-Reports und für die Berechneten infos der Tour (Dauer, Strecke) + */ public class DirectionMap { - private double dauer, strecke; private String start, end, tourname, file, filepdf; private Image map, mappdf; @@ -35,10 +34,18 @@ public class DirectionMap { FileHelper.openDefault(file); } + /** + * Get berechnete Dauer in Minuten + * @return Berechnete Dauer der Tour + */ public double getDauer() { return dauer; } + /** + * Get berechnete Strecke + * @return Berechnete Strecke der Tour + */ public double getStrecke() { return strecke; } @@ -54,12 +61,23 @@ public class DirectionMap { return HttpHelper.httpGetImage("https://www.mapquestapi.com/staticmap/v5/map?start="+start+"&end="+ende+"&size="+size+"&key="+ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "key")); } + /** + * Besorgt die Infos der Tour von Mapquest Directions + * @param start Start der Tour + * @param ende Ende der Tour + * @throws IOException Fehler beim besorgen der infos über die Tour + */ private void getDirections(String start, String ende) throws IOException { String json = HttpHelper.httpGetJsonString("https://www.mapquestapi.com/directions/v2/route?key="+ ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "key")+"&from="+start+"&to="+ende+"&outFormat=json&ambiguities=ignore&routeType=fastest&doReverseGeocode=false&enhancedNarrative=false&avoidTimedConditions=false"); this.strecke = JsonHelper.getDoubleFromJson(json, "distance"); this.dauer = formatetTimeToMinutes(JsonHelper.getStingFromJson(json, "formattedTime")); } + /** + * Formatet time HH:MM:SS in Minuten umwandeln + * @param formatetTime Formatet time HH:MM:SS + * @return Zeit in Minuten + */ private double formatetTimeToMinutes(String formatetTime){ double minutes = 0; String[] result = formatetTime.split(":"); diff --git a/src/tourplaner/business/Exporter.java b/src/tourplaner/business/Exporter.java new file mode 100644 index 0000000..1b81dd3 --- /dev/null +++ b/src/tourplaner/business/Exporter.java @@ -0,0 +1,2 @@ +package tourplaner.business;public class Exporter { +} diff --git a/src/tourplaner/business/HttpHelper.java b/src/tourplaner/business/HttpHelper.java index 0695d48..3d04da9 100644 --- a/src/tourplaner/business/HttpHelper.java +++ b/src/tourplaner/business/HttpHelper.java @@ -1,7 +1,5 @@ package tourplaner.business; - - import javax.imageio.ImageIO; import java.awt.*; import java.io.*; @@ -24,37 +22,32 @@ public class HttpHelper { return ImageIO.read(urls); } + /** + * Http GET Json string vom Url string + * @param url Url als String + * @return Json als String + * @throws IOException Fehler beim Json holen + */ public static String httpGetJsonString(String url) throws IOException { HttpURLConnection con = null; try { - var myurl = new URL(url); con = (HttpURLConnection) myurl.openConnection(); - con.setRequestMethod("GET"); - StringBuilder content; - try (BufferedReader in = new BufferedReader( new InputStreamReader(con.getInputStream()))) { - String line; content = new StringBuilder(); - while ((line = in.readLine()) != null) { - content.append(line); content.append(System.lineSeparator()); } } - return content.toString(); } finally { - assert con != null; con.disconnect(); } } - - } diff --git a/src/tourplaner/business/JsonHelper.java b/src/tourplaner/business/JsonHelper.java index bc5afab..ff04dd6 100644 --- a/src/tourplaner/business/JsonHelper.java +++ b/src/tourplaner/business/JsonHelper.java @@ -1,19 +1,38 @@ package tourplaner.business; import com.google.gson.Gson; -import com.google.gson.JsonElement; import com.google.gson.JsonObject; +/** + * Hilfsklasse für Json (Gson) + */ public class JsonHelper { + /** + * String aus json extrahieren + * @param json Json als String + * @param gets Eintrag im Json unter "route" + * @return Gesammelter String + */ public static String getStingFromJson(String json, String gets){ return getJObj(json).get("route").getAsJsonObject().get(gets).getAsString(); } + /** + * Double aus json extrahieren + * @param json Json als String + * @param gets Eintrag im Json unter "route" + * @return Gesammelter Double Wert + */ public static double getDoubleFromJson(String json, String gets){ return getJObj(json).get("route").getAsJsonObject().get(gets).getAsDouble(); } + /** + * Json String to JsonObject + * @param json Json string + * @return Neues JsonObject aus String + */ private static JsonObject getJObj(String json){ return new Gson().fromJson(json, JsonObject.class); } diff --git a/src/tourplaner/business/Reporter.java b/src/tourplaner/business/Reporter.java index d32de2f..66cb519 100644 --- a/src/tourplaner/business/Reporter.java +++ b/src/tourplaner/business/Reporter.java @@ -3,17 +3,14 @@ package tourplaner.business; import com.itextpdf.text.*; import com.itextpdf.text.Font; import com.itextpdf.text.Image; -import com.sun.scenario.effect.ImageData; import tourplaner.object.Log; import tourplaner.object.Tour; - import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.PdfWriter; import java.awt.*; -import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; @@ -21,6 +18,11 @@ import java.util.ArrayList; import java.util.Date; /** + * PDF Report generierung mit iText + * + * Erstellt Reports über einzelne Touren und fasst alle Touren zusammen + * + * iText 4 ist gratis verfügbar, siehe: * https://github.com/ymasory/iText-4.2.0 */ public class Reporter { @@ -34,6 +36,10 @@ public class Reporter { private static Font smallBold = new Font(Font.TIMES_ROMAN, 12, Font.BOLD); + /** + * Erstellt einen Tour Report + * @param tourname Name der Tour die Gereportet werden soll + */ public static void createTourReport(String tourname) { Tour tour = TourPlaner.getTour(tourname); tour.setLog(TourPlaner.getLogs(tourname)); @@ -56,32 +62,36 @@ public class Reporter { // Reader // under File -> Properties private static void addMetaData(Document document, Tour tour) { - document.addTitle("Tour Report -> " + tour.getName()); - document.addSubject("Tourplaner by DerGeorg"); - document.addKeywords("Tourplaner, Tour, Report"); - document.addAuthor("Tourplaner"); - document.addCreator("Tourplaner"); + document.addTitle(ConfigHelper.getLangIniString("tourreportvon") + tour.getName()); + document.addSubject(ConfigHelper.getLangIniString("tourplanervon")); + document.addKeywords(ConfigHelper.getLangIniString("reportkeywords")); + document.addAuthor(ConfigHelper.getLangIniString("tourplaner")); + document.addCreator(ConfigHelper.getLangIniString("tourplaner")); } + /** + * Erstellt den inhalt des Reports + * @param document Aktuelles Dokument + * @param tour Aktuelle Tour + * @throws DocumentException Fehler beim hinzufügen des Inhaltes + */ private static void addContent(Document document, Tour tour) throws DocumentException { - Anchor anchor = new Anchor("Tour Report von -> " + tour.getName(), catFont); - anchor.setName("Tour Report von -> " + tour.getName()); + Anchor anchor = new Anchor(ConfigHelper.getLangIniString("tourreportvon") + tour.getName(), catFont); + anchor.setName(ConfigHelper.getLangIniString("tourreportvon") + tour.getName()); // Second parameter is the number of the chapter Chapter catPart = new Chapter(new Paragraph(anchor), 1); - Paragraph subPara = new Paragraph("Tour", subFont); + Paragraph subPara = new Paragraph(ConfigHelper.getLangIniString("tour"), subFont); Section subCatPart = catPart.addSection(subPara); - subCatPart.add(new Paragraph("Report erstellt von: " + System.getProperty("user.name") + ", " + new Date())); - subCatPart.add(new Paragraph("Startpunkt der Tour: " + tour.getStart())); - subCatPart.add(new Paragraph("Zielpunkt der Tour: " + tour.getZiel())); - subCatPart.add(new Paragraph("Berechnete Dauer der Tour: " + tour.getDauer())); - subCatPart.add(new Paragraph("Berechnete Strecke der Tour: " + tour.getStrecke())); + subCatPart.add(new Paragraph(ConfigHelper.getLangIniString("reportvon") + System.getProperty("user.name") + ", " + new Date())); + subCatPart.add(new Paragraph(ConfigHelper.getLangIniString("reportstart") + tour.getStart())); + subCatPart.add(new Paragraph(ConfigHelper.getLangIniString("reportziel") + tour.getZiel())); + subCatPart.add(new Paragraph(ConfigHelper.getLangIniString("reportdauercal") + tour.getDauer())); + subCatPart.add(new Paragraph(ConfigHelper.getLangIniString("reportstreckecal") + tour.getStrecke())); Paragraph emptyLine = new Paragraph(); addEmptyLine(emptyLine, 5); subCatPart.add(emptyLine); - - // now add all this to the document document.add(catPart); @@ -97,127 +107,83 @@ public class Reporter { } ArrayList logs = tour.getLogs(); // Second parameter is the number of the chapter - anchor = new Anchor("Logs", catFont); - anchor.setName("Logs"); + anchor = new Anchor(ConfigHelper.getLangIniString("logs"), catFont); + anchor.setName(ConfigHelper.getLangIniString("logs")); catPart = new Chapter(new Paragraph(anchor), 2); - catPart.add(new Paragraph("Anzahl der Logeinträge: " + logs.size())); + catPart.add(new Paragraph(ConfigHelper.getLangIniString("countlog") + logs.size())); for (Log log: logs) { - subPara = new Paragraph("Log vom: " + log.getDatum() , subFont); + subPara = new Paragraph(ConfigHelper.getLangIniString("logvom") + log.getDatum() , subFont); subCatPart = catPart.addSection(subPara); - subCatPart.add(new Paragraph("Dauer: " + log.getDauer())); - subCatPart.add(new Paragraph("Davon Pause: " + log.getPause())); - subCatPart.add(new Paragraph("Davon gegangen: " + log.getGegangen())); - subCatPart.add(new Paragraph("Berechnete Durchschnittliche Geschwindigkeit: " + log.getAvgspeed())); - subCatPart.add(new Paragraph("Entfernung: " + log.getStrecke())); - subCatPart.add(new Paragraph("Höhenmeter: " + log.getHightmeter())); - subCatPart.add(new Paragraph("Bemerkung: " + log.getBemerkung())); + subCatPart.add(new Paragraph(ConfigHelper.getLangIniString("logdauer") + log.getDauer())); + subCatPart.add(new Paragraph(ConfigHelper.getLangIniString("logpause") + log.getPause())); + subCatPart.add(new Paragraph(ConfigHelper.getLangIniString("loggegangen") + log.getGegangen())); + subCatPart.add(new Paragraph(ConfigHelper.getLangIniString("logavg")+ log.getAvgspeed())); + subCatPart.add(new Paragraph(ConfigHelper.getLangIniString("logstrecke") + log.getStrecke())); + subCatPart.add(new Paragraph(ConfigHelper.getLangIniString("loghight") + log.getHightmeter())); + subCatPart.add(new Paragraph(ConfigHelper.getLangIniString("logbemerkung") + log.getBemerkung())); } // now add all this to the document document.add(catPart); } - private static void createTable(Section subCatPart) - throws BadElementException { - PdfPTable table = new PdfPTable(5); - - // t.setBorderColor(BaseColor.GRAY); - // t.setPadding(4); - // t.setSpacing(4); - // t.setBorderWidth(1); - - PdfPCell c1 = new PdfPCell(new Phrase("NR")); - c1.setHorizontalAlignment(Element.ALIGN_CENTER); - table.addCell(c1); - - c1 = new PdfPCell(new Phrase("Datum")); - c1.setHorizontalAlignment(Element.ALIGN_CENTER); - table.addCell(c1); - - c1 = new PdfPCell(new Phrase("Entfernung")); - c1.setHorizontalAlignment(Element.ALIGN_CENTER); - table.addCell(c1); - - c1 = new PdfPCell(new Phrase("Höhenmeter")); - c1.setHorizontalAlignment(Element.ALIGN_CENTER); - table.addCell(c1); - - c1 = new PdfPCell(new Phrase("AVG Geschwindigkeit")); - c1.setHorizontalAlignment(Element.ALIGN_CENTER); - table.addCell(c1); - - - table.setHeaderRows(1); - - table.addCell("1.0"); - table.addCell("1.1"); - table.addCell("1.2"); - table.addCell("1.3"); - table.addCell("1.4"); - table.addCell("1.5"); - - table.addCell("2.0"); - table.addCell("2.1"); - table.addCell("2.2"); - table.addCell("2.3"); - table.addCell("2.4"); - table.addCell("2.5"); - - subCatPart.add(table); - - } - private static void createTable2(Section subCatPart) - throws BadElementException { - PdfPTable table = new PdfPTable(5); - - // t.setBorderColor(BaseColor.GRAY); - // t.setPadding(4); - // t.setSpacing(4); - // t.setBorderWidth(1); - - PdfPCell c1 = new PdfPCell(new Phrase("NR")); - c1.setHorizontalAlignment(Element.ALIGN_CENTER); - table.addCell(c1); - - c1 = new PdfPCell(new Phrase("Dauer")); - c1.setHorizontalAlignment(Element.ALIGN_CENTER); - table.addCell(c1); - - c1 = new PdfPCell(new Phrase("Davon Gegangen")); - c1.setHorizontalAlignment(Element.ALIGN_CENTER); - table.addCell(c1); - - c1 = new PdfPCell(new Phrase("Davon Pause")); - c1.setHorizontalAlignment(Element.ALIGN_CENTER); - table.addCell(c1); - - c1 = new PdfPCell(new Phrase("Bemerkung")); - c1.setHorizontalAlignment(Element.ALIGN_CENTER); - table.addCell(c1); - - - table.setHeaderRows(1); - - table.addCell("1.0"); - table.addCell("1.1"); - table.addCell("1.2"); - table.addCell("1.3"); - table.addCell("1.4"); - table.addCell("1.5"); - - table.addCell("2.0"); - table.addCell("2.1"); - table.addCell("2.2"); - table.addCell("2.3"); - table.addCell("2.4"); - table.addCell("2.5"); - - subCatPart.add(table); - } - + /** + * Fügt eine leere zeile an den Paragraph an + * @param paragraph Hier wird hinzugefügt + * @param number Um wie viele Leere Zeilen hinzugefügt werden soll + */ private static void addEmptyLine(Paragraph paragraph, int number) { for (int i = 0; i < number; i++) { paragraph.add(new Paragraph(" ")); } } +// private static void createTable(Section subCatPart) +// throws BadElementException { +// PdfPTable table = new PdfPTable(5); +// +// // t.setBorderColor(BaseColor.GRAY); +// // t.setPadding(4); +// // t.setSpacing(4); +// // t.setBorderWidth(1); +// +// PdfPCell c1 = new PdfPCell(new Phrase("NR")); +// c1.setHorizontalAlignment(Element.ALIGN_CENTER); +// table.addCell(c1); +// +// c1 = new PdfPCell(new Phrase("Datum")); +// c1.setHorizontalAlignment(Element.ALIGN_CENTER); +// table.addCell(c1); +// +// c1 = new PdfPCell(new Phrase("Entfernung")); +// c1.setHorizontalAlignment(Element.ALIGN_CENTER); +// table.addCell(c1); +// +// c1 = new PdfPCell(new Phrase("Höhenmeter")); +// c1.setHorizontalAlignment(Element.ALIGN_CENTER); +// table.addCell(c1); +// +// c1 = new PdfPCell(new Phrase("AVG Geschwindigkeit")); +// c1.setHorizontalAlignment(Element.ALIGN_CENTER); +// table.addCell(c1); +// +// +// table.setHeaderRows(1); +// +// table.addCell("1.0"); +// table.addCell("1.1"); +// table.addCell("1.2"); +// table.addCell("1.3"); +// table.addCell("1.4"); +// table.addCell("1.5"); +// +// table.addCell("2.0"); +// table.addCell("2.1"); +// table.addCell("2.2"); +// table.addCell("2.3"); +// table.addCell("2.4"); +// table.addCell("2.5"); +// +// subCatPart.add(table); +// +// } } diff --git a/src/tourplaner/object/Data.java b/src/tourplaner/object/Data.java new file mode 100644 index 0000000..1a5cb89 --- /dev/null +++ b/src/tourplaner/object/Data.java @@ -0,0 +1,2 @@ +package tourplaner.object;public class Data { +} diff --git a/src/tourplaner/viewmodels/ViewModel.java b/src/tourplaner/viewmodels/ViewModel.java index 58429bf..335172d 100644 --- a/src/tourplaner/viewmodels/ViewModel.java +++ b/src/tourplaner/viewmodels/ViewModel.java @@ -481,7 +481,6 @@ public class ViewModel { public ObservableList getTourData() { tourData.removeAll(); -// ObservableList data = ; tourData.addAll(TourPlaner.getAllTours()); return tourData; }