Compare commits

...

2 Commits

Author SHA1 Message Date
9fe6f34ba3 Kleine Map für Report 2021-04-15 23:24:31 +02:00
3f60d618ff Static map -> Tour edit, del 2021-04-15 22:59:38 +02:00
10 changed files with 104 additions and 29 deletions

View File

@ -24,5 +24,6 @@ javadoc = https://git.dergeorg.at/dergeorg/tourplaner
[map]
key =
size = 1500,400
sizePdf = 600,400
path = D:\\TourplanerImages\\
file_pre = file:///

View File

@ -10,21 +10,39 @@ import java.io.IOException;
public class DirectionMap {
private double dauer, strecke;
private String start, end, tourname, file;
private Image map;
private String start, end, tourname, file, filepdf;
private Image map, mappdf;
/**
* Holt die Map als image und alle Daten zur berechneten Route
*
* @param start Startpunkt
* @param ende Endpunkt
* @param tourname Name der Aktuellen Tour
* @throws IOException Fehler beim Image der Map
*/
public DirectionMap (String start, String ende, String tourname) throws IOException {
this.map = getMap(start, ende);
this.map = getMap(start, ende, ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "size"));
this.mappdf = getMap(start, ende, ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "sizePdf"));
this.start = start;
this.end = ende;
this.tourname = tourname;
this.file = ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "path") + this.tourname + ".jpg";
FileHelper.saveImage(this.map, "jpg", new File(file));
this.filepdf = ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "path") + this.tourname + "_pdf.jpg";
FileHelper.saveImage(this.map, "jpg", new File(this.file));
FileHelper.saveImage(this.mappdf, "jpg", new File(this.filepdf));
FileHelper.openDefault(file);
}
private Image getMap(String start, String ende) throws IOException {
return HttpHelper.httpGetStaticMap(start, ende);
/**
* Downloadet die Map von Mapquest
* @param start Startpunkt
* @param ende Endpunkt
* @return Image von der Map
* @throws IOException Fehler beim Get der Map
*/
private Image getMap(String start, String ende, String size) throws IOException {
return HttpHelper.httpGetImage("https://www.mapquestapi.com/staticmap/v5/map?start="+start+"&end="+ende+"&size="+size+"&key="+ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "key"));
}

View File

@ -9,6 +9,10 @@ import java.io.IOException;
public class FileHelper {
/**
* Öffnet ein File mit dem Standart Program
* @param f File Path als string
*/
public static void openDefault(String f){
// A reference to a text file
File file = new File(f);
@ -26,11 +30,33 @@ public class FileHelper {
}
}
/**
* Speichert ein Image
* @param img Das zu speichernde Bild
* @param type Dateityp z.b. jpg
* @param file Wo die datei zu speichern ist
* @throws IOException
*/
public static void saveImage(Image img, String type, File file) throws IOException {
ImageIO.write(ImgHelper.toBufferedImage(img), type, file);
}
/**
* Holt ein image von einem File
* @param file File mit dem image
* @return Das buffered image
* @throws IOException Fehler beim öffnen des bildes
*/
public static BufferedImage getImage(File file) throws IOException {
return ImageIO.read(file);
}
/**
* Löscht ein File
* @param file File das zu löschen ist
* @return false bei error
*/
public static boolean delFile(File file){
return file.delete();
}
}

View File

@ -5,10 +5,19 @@ import java.awt.*;
import java.io.IOException;
import java.net.URL;
/**
* Http Hilfsfunktionen
*/
public class HttpHelper {
public static Image httpGetStaticMap(String start, String end) throws IOException {
URL url = new URL("https://www.mapquestapi.com/staticmap/v5/map?start="+start+"&end="+end+"&size="+ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "size")+"&key="+ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "key"));
return ImageIO.read(url);
/**
* Holt ein Image von gegebener URL
* @param url Url als Sting
* @return Image von der Url
* @throws IOException Fehler beim Bild holen
*/
public static Image httpGetImage(String url) throws IOException {
URL urls = new URL(url);
return ImageIO.read(urls);
}
}

View File

@ -3,6 +3,9 @@ package tourplaner.business;
import java.awt.*;
import java.awt.image.BufferedImage;
/**
* Image Hilfsfunktionen
*/
public class ImgHelper {
/**

View File

@ -1,21 +1,13 @@
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.Anchor;
import com.itextpdf.text.BadElementException;
import com.itextpdf.text.Chapter;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.List;
import com.itextpdf.text.ListItem;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Section;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
@ -28,6 +20,9 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
/**
* https://github.com/ymasory/iText-4.2.0
*/
public class Reporter {
private static Font catFont = new Font(Font.TIMES_ROMAN, 18,
@ -82,15 +77,24 @@ public class Reporter {
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()));
Paragraph emptyLine = new Paragraph();
addEmptyLine(emptyLine, 5);
subCatPart.add(emptyLine);
// now add all this to the document
document.add(catPart);
Image image1 = null;
try {
image1 = Image.getInstance(TourPlaner.getImagePdfPath(tour.getName()));
image1.setAlignment(Element.ALIGN_CENTER);
image1.scaleAbsolute(600, 400);
document.add(image1);
} catch (IOException e) {
LogHelper.error(e);
}
ArrayList<Log> logs = tour.getLogs();
// Second parameter is the number of the chapter
anchor = new Anchor("Logs", catFont);

View File

@ -37,11 +37,16 @@ public class TourPlaner{
* @param tour Neuer Tourname
* @return false bei error
*/
public static boolean editTour(String oldname, Tour tour){
public static boolean editTour(String oldname, Tour tour) throws IOException {
FileHelper.delFile(new File(getImagePath(oldname)));
FileHelper.delFile(new File(getImagePdfPath(oldname)));
new DirectionMap(tour.getStart(), tour.getZiel(), tour.getName());
return new DbConnect().editTour(oldname, tour);
}
public static boolean delTour(String tourname){
FileHelper.delFile(new File(getImagePath(tourname)));
FileHelper.delFile(new File(getImagePdfPath(tourname)));
return new DbConnect().delTour(tourname);
}
/**
@ -50,7 +55,7 @@ public class TourPlaner{
* @return false bei error
*/
public static boolean addTour(Tour newTour) throws IOException {
DirectionMap directionMap = new DirectionMap(newTour.getStart(), newTour.getZiel(), newTour.getName());
new DirectionMap(newTour.getStart(), newTour.getZiel(), newTour.getName());
return new DbConnect().addTour(newTour);
}
@ -61,6 +66,9 @@ public class TourPlaner{
public static String getImagePath(String tourname){
return ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "path") + tourname + ".jpg";
}
public static String getImagePdfPath(String tourname){
return ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "map", "path") + tourname + "_pdf.jpg";
}
public static void openImage(String tourname){
FileHelper.openDefault(getImagePath(tourname));

View File

@ -115,7 +115,7 @@
<tabs>
<Tab fx:id="kartenTab" text="Karte">
<AnchorPane>
<ImageView fx:id="mapImageView" pickOnBounds="true" preserveRatio="true" AnchorPane.bottomAnchor="80.0" AnchorPane.leftAnchor="13.0" AnchorPane.rightAnchor="825.0" AnchorPane.topAnchor="0.0" />
<ImageView fx:id="mapImageView" pickOnBounds="true" preserveRatio="true" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
</AnchorPane>
</Tab>
<Tab fx:id="beschreibungTab" text="Beschreibung">

View File

@ -51,7 +51,11 @@ public class TourplanerController implements Initializable {
@FXML
private void editTourBtn(){
this.viewModel.editTour();
try {
this.viewModel.editTour();
} catch (IOException e) {
LogHelper.error(e);
}
syncTour(this.viewModel.getSelectedTour().getName());
}
@ -90,6 +94,7 @@ public class TourplanerController implements Initializable {
private void syncTour(String selectedItem){
beschreibungTableView.getItems().removeIf(s -> true); //Leert die Table View komplett
beschreibungTableView.getItems().add(this.viewModel.getTour(selectedItem));
mapImageView.setImage(this.viewModel.getImage(selectedItem));
}
private void syncTourNamen(){
@ -163,6 +168,7 @@ public class TourplanerController implements Initializable {
this.titleTextView.setText(ConfigHelper.getLangIniString("keinetourselected"));
this.viewModel.delTour();
logTableView.setPlaceholder(new Label( ConfigHelper.getLangIniString("keinetourselected")));
mapImageView.setImage(null);
}
/**

View File

@ -40,7 +40,7 @@ public class ViewModel {
* Bearbeitet eine bereits bestehende Tour
* prüft ob eine tour ausgewählt ist
*/
public void editTour(){
public void editTour() throws IOException {
if (this.selectedTour == null){
AlertHelper.warn(ConfigHelper.getLangIniString("achtung"),
ConfigHelper.getLangIniString("keinetourselected"),