Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
bb8a796bd4 | |||
dd1357ec1d | |||
0e43c28c67 |
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,2 +1,4 @@
|
||||
out/
|
||||
conf.ini
|
||||
log/log4j/log.out/
|
||||
reports/
|
||||
|
12
.idea/dataSources.xml
generated
Normal file
12
.idea/dataSources.xml
generated
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||
<data-source source="LOCAL" name="postgres@postgres.dergeorg.at" uuid="304c5f90-6427-4696-beb2-a9a4e6b29a05">
|
||||
<driver-ref>postgresql</driver-ref>
|
||||
<synchronize>true</synchronize>
|
||||
<jdbc-driver>org.postgresql.Driver</jdbc-driver>
|
||||
<jdbc-url>jdbc:postgresql://postgres.dergeorg.at:5432/postgres</jdbc-url>
|
||||
<working-dir>$ProjectFileDir$</working-dir>
|
||||
</data-source>
|
||||
</component>
|
||||
</project>
|
13
.idea/libraries/org_apache_pdfbox_pdfbox_1_8_9.xml
generated
Normal file
13
.idea/libraries/org_apache_pdfbox_pdfbox_1_8_9.xml
generated
Normal file
@ -0,0 +1,13 @@
|
||||
<component name="libraryTable">
|
||||
<library name="org.apache.pdfbox:pdfbox:1.8.9" type="repository">
|
||||
<properties maven-id="org.apache.pdfbox:pdfbox:1.8.9" />
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/pdfbox/pdfbox/1.8.9/pdfbox-1.8.9.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/pdfbox/fontbox/1.8.9/fontbox-1.8.9.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/apache/pdfbox/jempbox/1.8.9/jempbox-1.8.9.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
11
.idea/libraries/org_postgresql_postgresql_42_2_19.xml
generated
Normal file
11
.idea/libraries/org_postgresql_postgresql_42_2_19.xml
generated
Normal file
@ -0,0 +1,11 @@
|
||||
<component name="libraryTable">
|
||||
<library name="org.postgresql:postgresql:42.2.19" type="repository">
|
||||
<properties maven-id="org.postgresql:postgresql:42.2.19" />
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/postgresql/postgresql/42.2.19/postgresql-42.2.19.jar!/" />
|
||||
<root url="jar://$MAVEN_REPOSITORY$/org/checkerframework/checker-qual/3.5.0/checker-qual-3.5.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</component>
|
7
.idea/sqldialects.xml
generated
Normal file
7
.idea/sqldialects.xml
generated
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="SqlDialectMappings">
|
||||
<file url="file://$PROJECT_DIR$/src/tourplaner/data/PostgresHelper.java" dialect="GenericSQL" />
|
||||
<file url="PROJECT" dialect="PostgreSQL" />
|
||||
</component>
|
||||
</project>
|
@ -10,5 +10,6 @@
|
||||
<orderEntry type="library" name="lib" level="project" />
|
||||
<orderEntry type="library" name="org.ini4j:ini4j:0.5.4" level="project" />
|
||||
<orderEntry type="library" name="log4j:log4j:1.2.17" level="project" />
|
||||
<orderEntry type="library" name="org.apache.pdfbox:pdfbox:1.8.9" level="project" />
|
||||
</component>
|
||||
</module>
|
20
TourplanerTabellen.sql
Normal file
20
TourplanerTabellen.sql
Normal file
@ -0,0 +1,20 @@
|
||||
// Tour Tabelle
|
||||
|
||||
create table tour
|
||||
(
|
||||
tourname varchar not null,
|
||||
dauer decimal,
|
||||
mapjson varchar,
|
||||
start varchar,
|
||||
ziel varchar,
|
||||
strecke decimal
|
||||
);
|
||||
|
||||
create unique index tour_tourname_uindex
|
||||
on tour (tourname);
|
||||
|
||||
alter table tour add constraint tour_pk primary key (tourname);
|
||||
|
||||
#// Log Table
|
||||
|
||||
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);
|
@ -13,6 +13,9 @@ port = 5432
|
||||
user =
|
||||
pw =
|
||||
|
||||
[report]
|
||||
path = ./reports/
|
||||
|
||||
[hilfe]
|
||||
gitrepo = https://git.dergeorg.at/dergeorg/tourplaner
|
||||
doxygendoc = https://git.dergeorg.at/dergeorg/tourplaner
|
||||
|
@ -34,3 +34,9 @@ logtournotselectedmsg = Bitte wählen Sie zuerst eine Tour aus, bevor sie einen
|
||||
keintextimfeld = Bitte tragen Sie einen Text in das Feld ein!
|
||||
nurzahlen = Bitte geben Sie nur Zahlen an!
|
||||
nurpositivezahlen = Bitte geben Sie nur positive Zahlen an!
|
||||
pause = Pause
|
||||
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.
|
@ -1,13 +0,0 @@
|
||||
2021-03-18 22:41:23 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
||||
2021-03-18 22:48:51 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
||||
2021-03-18 22:53:17 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
||||
2021-03-18 22:57:20 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
||||
2021-03-18 22:57:28 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
||||
2021-03-18 22:58:33 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
||||
2021-03-18 22:58:34 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
||||
2021-03-18 23:05:00 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
||||
2021-03-18 23:11:45 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
||||
2021-03-18 23:14:55 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
||||
2021-03-19 11:56:22 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
||||
2021-03-19 22:35:19 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
||||
2021-03-19 23:23:36 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
@ -8,6 +8,7 @@ import javafx.scene.image.Image;
|
||||
import javafx.stage.Stage;
|
||||
|
||||
import tourplaner.business.ConfigHelper;
|
||||
import tourplaner.business.TourPlaner;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@ -23,7 +24,8 @@ public class Main extends Application {
|
||||
Parent root = FXMLLoader.load(Main.class.getResource("tourplaner.fxml"));
|
||||
primaryStage.setTitle(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "apptitle"));
|
||||
primaryStage.getIcons().add(new Image("file:"+ ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "logo")));
|
||||
primaryStage.setScene(new Scene(root, 600, 600));
|
||||
TourPlaner.init();
|
||||
primaryStage.setScene(new Scene(root, 1500, 1000));
|
||||
primaryStage.show();
|
||||
}
|
||||
}
|
||||
|
34
src/tourplaner/business/Reporter.java
Normal file
34
src/tourplaner/business/Reporter.java
Normal file
@ -0,0 +1,34 @@
|
||||
package tourplaner.business;
|
||||
|
||||
import org.apache.pdfbox.exceptions.COSVisitorException;
|
||||
import org.apache.pdfbox.pdmodel.PDDocument;
|
||||
import org.apache.pdfbox.pdmodel.PDPage;
|
||||
import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
|
||||
import org.apache.pdfbox.pdmodel.font.PDFont;
|
||||
import org.apache.pdfbox.pdmodel.font.PDType1Font;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
public class Reporter {
|
||||
|
||||
public static void createTourReport(String tourname) throws IOException, COSVisitorException {
|
||||
PDDocument document = new PDDocument();
|
||||
PDPage page = new PDPage();
|
||||
document.addPage(page);
|
||||
|
||||
PDFont font = PDType1Font.HELVETICA;
|
||||
PDPageContentStream contentStream = new PDPageContentStream(document, page);
|
||||
contentStream.beginText();
|
||||
contentStream.setFont(font, 12);
|
||||
contentStream.moveTextPositionByAmount(100,700);
|
||||
contentStream.drawString(tourname);
|
||||
// contentStream.drawString();
|
||||
contentStream.endText();
|
||||
|
||||
contentStream.close();
|
||||
|
||||
document.save(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "report", "path") + "test.pdf");
|
||||
document.close();
|
||||
}
|
||||
|
||||
}
|
@ -2,6 +2,10 @@ package tourplaner.business;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import tourplaner.data.DbConnect;
|
||||
import tourplaner.data.PostgresHelper;
|
||||
import tourplaner.object.Tour;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Haupt Logik des Tourplaners
|
||||
@ -9,14 +13,53 @@ import tourplaner.data.DbConnect;
|
||||
public class TourPlaner{
|
||||
private Logger logger;
|
||||
|
||||
public TourPlaner(){
|
||||
LogHelper.info(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "message"),
|
||||
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "app"));
|
||||
/**
|
||||
* Erstellt alle DB Tabellen falls nötig
|
||||
*/
|
||||
public static void init(){
|
||||
new DbConnect().init();
|
||||
|
||||
}
|
||||
|
||||
public String getMapJson(String start, String ziel){
|
||||
/**
|
||||
* Holt alle touren aus der DB
|
||||
* @return Alle touren als ArrayList
|
||||
*/
|
||||
public static ArrayList<Tour> getAllTours(){
|
||||
DbConnect dbConnect = new DbConnect();
|
||||
ArrayList<Tour> touren = dbConnect.getAllTouren();
|
||||
return touren;
|
||||
}
|
||||
|
||||
/**
|
||||
* Bearbeitet eine Tour
|
||||
* @param oldname Alter Tourname
|
||||
* @param tour Neuer Tourname
|
||||
* @return false bei error
|
||||
*/
|
||||
public static boolean editTour(String oldname, Tour tour){
|
||||
DbConnect dbConnect = new DbConnect();
|
||||
return dbConnect.editTour(oldname, tour);
|
||||
}
|
||||
|
||||
public static boolean delTour(String tourname){
|
||||
DbConnect dbConnect = new DbConnect();
|
||||
return dbConnect.delTour(tourname);
|
||||
}
|
||||
|
||||
/**
|
||||
* Fügt eine Tour hinzu
|
||||
* @param newTour Neue Tour
|
||||
* @return false bei error
|
||||
*/
|
||||
public static boolean addTour(Tour newTour){
|
||||
DbConnect dbConnect = new DbConnect();
|
||||
return dbConnect.addTour(newTour);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static String getMapJson(String start, String ziel){
|
||||
// TODO: 14.04.2021 Map Quest
|
||||
return start + " " + ziel;
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,9 @@
|
||||
package tourplaner.data;
|
||||
|
||||
import tourplaner.object.Tour;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
|
||||
@ -26,10 +29,77 @@ public class DbConnect {
|
||||
* @return True bei erfolg, sonst error
|
||||
*/
|
||||
public boolean init() {
|
||||
// TODO: 26.02.2021 Alle sql im init sind noch falsch
|
||||
ArrayList<Boolean> errors = new ArrayList<>();
|
||||
errors.add(PostgresHelper.executeUpdateMessage("CREATE TABLE IF NOT EXISTS USERS (username TEXT PRIMARY KEY NOT NULL, nachname TEXT NOT NULL, email TEXT NOT NULL, password TEXT NOT NULL, bio TEXT, image TEXT, coins integer default 20 not null)", "User Table created"));
|
||||
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"));
|
||||
return !errors.contains(false);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Bearbeitet eine Tour
|
||||
* @param oldname Alter Tour name
|
||||
* @param tour Neues Tour Object
|
||||
* @return false bei error
|
||||
*/
|
||||
public boolean editTour(String oldname, Tour tour) {
|
||||
return PostgresHelper.executeUpdate("UPDATE public.tour SET tourname = '"+tour.getName()+"', dauer = 1, mapjson = '"+tour.getMapJson()+"', start = '"+tour.getStart()+"', ziel = '"+tour.getZiel()+"', strecke = "+tour.getStrecke()+" WHERE tourname ='" + oldname + "';");
|
||||
}
|
||||
|
||||
/**
|
||||
* Fügt eine Tour hinzu
|
||||
* @param tour Neue Tour
|
||||
* @return false bei error
|
||||
*/
|
||||
public boolean addTour(Tour tour){
|
||||
return PostgresHelper.executeUpdate("INSERT INTO public.tour (tourname, dauer, mapjson, start, ziel, strecke) VALUES ('"+tour.getName()+"', "+tour.getDauer()+", '"+tour.getMapJson()+"', '"+tour.getStart()+"', '"+tour.getZiel()+"', "+tour.getStrecke()+")");
|
||||
}
|
||||
|
||||
/**
|
||||
* Löscht eine Tour anhand des Tournamens
|
||||
* @param tourname Tourname der zu löschen ist
|
||||
* @return false bei error
|
||||
*/
|
||||
public boolean delTour(String tourname){
|
||||
return PostgresHelper.executeUpdate("DELETE FROM public.tour WHERE tourname = '"+tourname+"'");
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt alle Touren aus der Datenbank
|
||||
* @return Null bei fehler, sonst eine List aus den IDs
|
||||
*/
|
||||
public ArrayList<Tour> getAllTouren(){
|
||||
this.c = PostgresHelper.con();
|
||||
String tourname, mapjson, start, ziel;
|
||||
double dauer, strecke;
|
||||
|
||||
ArrayList<Tour> touren = new ArrayList<>();
|
||||
try {
|
||||
stmt = this.c.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("select * from tour;");
|
||||
while (rs.next()) {
|
||||
tourname = rs.getString("tourname");
|
||||
mapjson = rs.getString("mapjson");
|
||||
start = rs.getString("start");
|
||||
ziel = rs.getString("ziel");
|
||||
dauer = rs.getDouble("dauer");
|
||||
strecke = rs.getDouble("strecke");
|
||||
if (!tourname.isEmpty()) {
|
||||
touren.add(new Tour(tourname, dauer + "", mapjson, strecke, start, ziel));
|
||||
}else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
rs.close();
|
||||
stmt.close();
|
||||
this.c.close();
|
||||
return touren;
|
||||
} catch (Exception e) {
|
||||
System.err.println(e.getClass().getName() + ": " + e.getMessage());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -3,16 +3,20 @@ package tourplaner.data;
|
||||
|
||||
import tourplaner.business.ConfigHelper;
|
||||
import tourplaner.business.LogHelper;
|
||||
import tourplaner.object.Tour;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.Statement;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Hilfsfunktionen für die verwendung der Postgres DB
|
||||
*/
|
||||
public class PostgresHelper {
|
||||
|
||||
private Connection c;
|
||||
private Statement stmt;
|
||||
/**
|
||||
* Verbindet mit der Datenbank
|
||||
* @return Das Connection Objekt
|
||||
@ -21,6 +25,8 @@ public class PostgresHelper {
|
||||
Connection c = null;
|
||||
try {
|
||||
Class.forName("org.postgresql.Driver");
|
||||
System.out.println("jdbc:postgresql://" + ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "db", "url") + ":" + ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "db", "port") + "/" + ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "db", "dbname")+
|
||||
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "db", "user")+ ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "db", "pw"));
|
||||
c = DriverManager
|
||||
.getConnection("jdbc:postgresql://" + ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "db", "url") + ":" + ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "db", "port") + "/" + ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "db", "dbname"),
|
||||
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "db", "user"), ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "db", "pw"));
|
||||
|
@ -6,15 +6,60 @@ import java.time.LocalDate;
|
||||
import java.util.Date;
|
||||
|
||||
public class Log {
|
||||
private String id, dauer;
|
||||
private String id, bemerkung;
|
||||
private LocalDate datum;
|
||||
private double strecke;
|
||||
private double strecke, avgspeed, hightmeter, pause, dauer, gegangen;
|
||||
|
||||
public Log(String id, String dauer, LocalDate datum, double strecke) {
|
||||
public Log(String id, double dauer, LocalDate datum, double strecke, String bemerkung, double hightmeter, double pause) {
|
||||
this.id = id;
|
||||
this.dauer = dauer;
|
||||
this.datum = datum;
|
||||
this.strecke = strecke;
|
||||
this.bemerkung = bemerkung;
|
||||
this.hightmeter = hightmeter;
|
||||
this.pause = pause;
|
||||
this.gegangen = this.dauer - this.pause;
|
||||
this.avgspeed = this.strecke / (this.gegangen);
|
||||
}
|
||||
|
||||
public String getBemerkung() {
|
||||
return bemerkung;
|
||||
}
|
||||
|
||||
public void setBemerkung(String bemerkung) {
|
||||
this.bemerkung = bemerkung;
|
||||
}
|
||||
|
||||
public double getAvgspeed() {
|
||||
return avgspeed;
|
||||
}
|
||||
|
||||
public void setAvgspeed(double avgspeed) {
|
||||
this.avgspeed = avgspeed;
|
||||
}
|
||||
|
||||
public double getHightmeter() {
|
||||
return hightmeter;
|
||||
}
|
||||
|
||||
public void setHightmeter(double hightmeter) {
|
||||
this.hightmeter = hightmeter;
|
||||
}
|
||||
|
||||
public double getPause() {
|
||||
return pause;
|
||||
}
|
||||
|
||||
public void setPause(double pause) {
|
||||
this.pause = pause;
|
||||
}
|
||||
|
||||
public double getGegangen() {
|
||||
return gegangen;
|
||||
}
|
||||
|
||||
public void setGegangen(double gegangen) {
|
||||
this.gegangen = gegangen;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
@ -25,11 +70,11 @@ public class Log {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getDauer() {
|
||||
public double getDauer() {
|
||||
return dauer;
|
||||
}
|
||||
|
||||
public void setDauer(String dauer) {
|
||||
public void setDauer(double dauer) {
|
||||
this.dauer = dauer;
|
||||
}
|
||||
|
||||
|
@ -21,6 +21,16 @@ public class Tour {
|
||||
this.log = new ArrayList<>();
|
||||
}
|
||||
|
||||
public void setTour(Tour tour){
|
||||
this.dauer = tour.getDauer();
|
||||
this.mapJson = tour.getMapJson();
|
||||
this.strecke = tour.getStrecke();
|
||||
this.name = tour.getName();
|
||||
this.start = tour.getStart();
|
||||
this.ziel = tour.getZiel();
|
||||
this.log = tour.getLogs();
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt einen einzigen Log Eintrag anhand der Id
|
||||
* @param id Id des Eintrags der zu besorgen ist
|
||||
|
@ -54,6 +54,7 @@
|
||||
</Menu>
|
||||
<Menu mnemonicParsing="false" text="Optionen">
|
||||
<items>
|
||||
<MenuItem mnemonicParsing="false" onAction="#tourReport" text="Tour Report erstellen" />
|
||||
<MenuItem mnemonicParsing="false" onAction="#nimpButton" text="Keine Funktion" />
|
||||
</items>
|
||||
</Menu>
|
||||
@ -82,7 +83,7 @@
|
||||
<Insets bottom="3.0" left="3.0" right="3.0" top="3.0" />
|
||||
</padding>
|
||||
</HBox>
|
||||
<SplitPane dividerPositions="0.21492204899777284" focusTraversable="true" prefHeight="522.0" prefWidth="900.0" VBox.vgrow="ALWAYS">
|
||||
<SplitPane dividerPositions="0.060133630289532294" focusTraversable="true" prefHeight="522.0" prefWidth="300.0" VBox.vgrow="ALWAYS">
|
||||
<items>
|
||||
<AnchorPane prefWidth="239.0">
|
||||
<children>
|
||||
@ -119,7 +120,7 @@
|
||||
<content>
|
||||
<AnchorPane>
|
||||
<children>
|
||||
<TableView fx:id="beschreibungTableView" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||
<TableView fx:id="beschreibungTableView" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||
<columns>
|
||||
<TableColumn fx:id="nameCol" maxWidth="1.7976931348623157E308" minWidth="70.0" prefWidth="-1.0" text="Tourname" />
|
||||
<TableColumn fx:id="dauerCol" maxWidth="1.7976931348623157E308" minWidth="40.0" prefWidth="-1.0" text="Dauer" />
|
||||
@ -142,7 +143,7 @@
|
||||
<children>
|
||||
<VBox prefWidth="100.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||
<children>
|
||||
<AnchorPane prefWidth="676.0">
|
||||
<AnchorPane>
|
||||
<children>
|
||||
<HBox id="HBox" alignment="CENTER_LEFT" layoutY="2.0" prefWidth="702.0" spacing="5.0" AnchorPane.bottomAnchor="-2.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="2.0">
|
||||
<children>
|
||||
@ -169,13 +170,18 @@
|
||||
</HBox>
|
||||
</children>
|
||||
</AnchorPane>
|
||||
<AnchorPane prefWidth="200.0">
|
||||
<AnchorPane>
|
||||
<children>
|
||||
<TableView fx:id="logTableView" onMouseClicked="#logItemSelected" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||
<columns>
|
||||
<TableColumn fx:id="logDatumCol" prefWidth="238.0" text="Datum" />
|
||||
<TableColumn fx:id="logDauerCol" prefWidth="223.0" text="Dauer" />
|
||||
<TableColumn fx:id="logDatumCol" prefWidth="49.0" text="Datum" />
|
||||
<TableColumn fx:id="logDauerCol" prefWidth="126.0" text="Dauer" />
|
||||
<TableColumn fx:id="logStreckeCol" prefWidth="240.0" text="Entfernung" />
|
||||
<TableColumn fx:id="logAvgCol" prefWidth="75.0" text="AVG Geschwindigkeit" />
|
||||
<TableColumn fx:id="logHightCol" prefWidth="75.0" text="Höhenmeter" />
|
||||
<TableColumn fx:id="logPauseCol" prefWidth="75.0" text="Davon Pause" />
|
||||
<TableColumn fx:id="logGegangenCol" prefWidth="75.0" text="Davon Unterwegs" />
|
||||
<TableColumn fx:id="logBemerkungCol" prefWidth="75.0" text="Bemerkung" />
|
||||
</columns>
|
||||
<columnResizePolicy>
|
||||
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
|
||||
|
@ -109,13 +109,25 @@ public class AlertHelper {
|
||||
}
|
||||
|
||||
/**
|
||||
* Texteingabe
|
||||
* Texteingabe die nicht leer sein darf
|
||||
* @param title Title des Dialogs
|
||||
* @param header Header des Dialogs
|
||||
* @param msg Nachricht des Dialogs
|
||||
* @return Null bei keiner eingabe
|
||||
*/
|
||||
public static String inputText(String title, String header, String msg, String content) {
|
||||
public static String inputText(String title, String header, String msg, String content){
|
||||
return inputTextNotNull(title, header, msg, content, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Texteingabe
|
||||
* @param title Title des Dialogs
|
||||
* @param header Header des Dialogs
|
||||
* @param msg Nachricht des Dialogs
|
||||
* @param notNull true wenn der input nicht leer sein darf
|
||||
* @return Null bei keiner eingabe
|
||||
*/
|
||||
public static String inputTextNotNull(String title, String header, String msg, String content, boolean notNull) {
|
||||
String returnStr = null;
|
||||
while (returnStr == null) {
|
||||
Optional<String> result = inputHelper(title, header, msg, content);
|
||||
@ -124,7 +136,7 @@ public class AlertHelper {
|
||||
if(result.isPresent()) {
|
||||
result.ifPresent(returnText::set);
|
||||
returnStr = returnText.get();
|
||||
if (returnStr.isEmpty()) {
|
||||
if (returnStr.isEmpty() && notNull) {
|
||||
AlertHelper.warn(ConfigHelper.getLangIniString("tournametitle"),
|
||||
ConfigHelper.getLangIniString("achtung"),
|
||||
ConfigHelper.getLangIniString("keintextimfeld"));
|
||||
|
@ -38,12 +38,19 @@ public class TourplanerController implements Initializable {
|
||||
public TextField titleTextView, sucheInput;
|
||||
//Log -> rechts unten
|
||||
public TableView<Log> logTableView;
|
||||
public TableColumn<Log, String> logDauerCol, logStreckeCol, logDatumCol;
|
||||
public TableColumn<Log, String> logDauerCol, logStreckeCol, logDatumCol, logAvgCol, logHightCol, logPauseCol, logGegangenCol, logBemerkungCol;
|
||||
|
||||
@FXML
|
||||
private void tourReport(){
|
||||
this.viewModel.tourReport();
|
||||
}
|
||||
|
||||
|
||||
@FXML
|
||||
private void editTourBtn(){
|
||||
this.viewModel.editTour();
|
||||
beschreibungTableView.getItems().removeIf(s -> true); //Leert die Table View komplett
|
||||
beschreibungTableView.getItems().add(this.viewModel.getTour(this.viewModel.getSelectedTour().getName()));
|
||||
}
|
||||
|
||||
@FXML
|
||||
@ -102,6 +109,12 @@ public class TourplanerController implements Initializable {
|
||||
logDauerCol.setCellValueFactory(new PropertyValueFactory<Log, String>("dauer"));
|
||||
logStreckeCol.setCellValueFactory(new PropertyValueFactory<Log, String>("strecke"));
|
||||
logDatumCol.setCellValueFactory(new PropertyValueFactory<Log, String>("datum"));
|
||||
logAvgCol.setCellValueFactory(new PropertyValueFactory<Log, String>("avgspeed"));
|
||||
logHightCol.setCellValueFactory(new PropertyValueFactory<Log, String>("hightmeter"));
|
||||
logPauseCol.setCellValueFactory(new PropertyValueFactory<Log, String>("pause"));
|
||||
logGegangenCol.setCellValueFactory(new PropertyValueFactory<Log, String>("gegangen"));
|
||||
logBemerkungCol.setCellValueFactory(new PropertyValueFactory<Log, String>("bemerkung"));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2,6 +2,10 @@ package tourplaner.viewmodels;
|
||||
|
||||
import javafx.collections.FXCollections;
|
||||
import javafx.collections.ObservableList;
|
||||
import org.apache.pdfbox.exceptions.COSVisitorException;
|
||||
import tourplaner.business.Reporter;
|
||||
import tourplaner.business.TourPlaner;
|
||||
import tourplaner.data.DbConnect;
|
||||
import tourplaner.ui.AlertHelper;
|
||||
import tourplaner.business.ConfigHelper;
|
||||
import tourplaner.business.LogHelper;
|
||||
@ -13,16 +17,17 @@ import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
public class ViewModel {
|
||||
//Tour
|
||||
private final ObservableList<Tour> tourData = FXCollections.observableArrayList(new Tour("Test 1", "120", "json dings", 22.3, "Wien", "Graz"),new Tour("Test 2", "210", "json dings", 42.3, "Da", "Dort"));
|
||||
private final ObservableList<String> tourNamen = FXCollections.observableArrayList("Test 1", "Test 2");
|
||||
private final ObservableList<Tour> tourData = FXCollections.observableArrayList();
|
||||
private final ObservableList<String> tourNamen = FXCollections.observableArrayList();
|
||||
private Tour selectedTour;
|
||||
private String neueTourName, neueTourStart, neueTourZiel;
|
||||
private String neueTourName, neueTourStart, neueTourZiel, neueBemerkung;
|
||||
//Log
|
||||
private final ObservableList<Log> logData = FXCollections.observableArrayList();
|
||||
private Log selectedLog;
|
||||
@ -55,8 +60,11 @@ public class ViewModel {
|
||||
|
||||
this.tourData.removeIf(tour -> tour.getName().equals(this.selectedTour.getName()));
|
||||
this.tourNamen.removeIf(tour -> tour.equals(this.selectedTour.getName()));
|
||||
this.tourData.add(new Tour(this.neueTourName, "TBD", "TBD", 0, this.neueTourStart, this.neueTourZiel));
|
||||
Tour newTour = new Tour(this.neueTourName, "TBD", "TBD", 0, this.neueTourStart, this.neueTourZiel);
|
||||
this.tourData.add(newTour);
|
||||
this.tourNamen.add(this.neueTourName);
|
||||
LogHelper.info("Edit Tour: " + this.neueTourName + " upload zu Postgres war: " + TourPlaner.editTour(this.selectedTour.getName(), newTour), "ViewModel - EditTour");
|
||||
selectTour(this.neueTourName);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -135,7 +143,7 @@ public class ViewModel {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -147,8 +155,10 @@ public class ViewModel {
|
||||
tourStartInput("");
|
||||
tourZielInput("");
|
||||
if (getTour(this.neueTourName) == null) {
|
||||
tourData.add(new Tour(this.neueTourName, "TBD", "TBD", 0, this.neueTourStart, this.neueTourZiel));
|
||||
Tour newTour = new Tour(this.neueTourName, "1", "1", 0, this.neueTourStart, this.neueTourZiel);
|
||||
tourData.add(newTour);
|
||||
tourNamen.add(this.neueTourName);
|
||||
TourPlaner.addTour(newTour);
|
||||
}
|
||||
this.neueTourStart = null;
|
||||
this.neueTourZiel = null;
|
||||
@ -184,13 +194,22 @@ public class ViewModel {
|
||||
});
|
||||
double dauer = dauerInput(this.selectedLog.getDauer());
|
||||
double strecke = -1;
|
||||
double pause = -1.0;
|
||||
double hightmeter = -1.0;
|
||||
boolean bemerkung = false;
|
||||
LocalDate datum = null;
|
||||
if (dauer >= 0) {
|
||||
strecke = streckeInput(this.selectedLog.getStrecke() + "");
|
||||
if (strecke >= 0) {
|
||||
pause = pauseInput("");
|
||||
if(pause >= 0.0) {
|
||||
hightmeter = hightmeterInput("");
|
||||
if (hightmeter >= 0.0) {
|
||||
bemerkung = bemerkungInput("");
|
||||
if (bemerkung) {
|
||||
datum = dateInput(this.selectedLog.getDatum());
|
||||
if(datum != null){
|
||||
Log newLog = new Log(this.selectedLog.getId(), dauer + "", datum,strecke);
|
||||
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);
|
||||
tourAkt.get().delLog(this.selectedLog.getId());
|
||||
@ -201,6 +220,10 @@ public class ViewModel {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
this.neueBemerkung = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Eingabe der Strecke bis diese Korrekt ist
|
||||
@ -215,13 +238,18 @@ public class ViewModel {
|
||||
|
||||
/**
|
||||
* Eingabe der Dauer 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 Dauer
|
||||
*/
|
||||
private double dauerInput(String content){
|
||||
private double dauerInput(double content){
|
||||
String realcontent = "";
|
||||
if (content != -1){
|
||||
realcontent = content + "";
|
||||
}
|
||||
return AlertHelper.inputNumber(ConfigHelper.getLangIniString("dauer"),
|
||||
ConfigHelper.getLangIniString("dauermsg"),
|
||||
ConfigHelper.getLangIniString("dauer") +
|
||||
ConfigHelper.getLangIniString("doppelpunkt"), content);
|
||||
ConfigHelper.getLangIniString("doppelpunkt"), realcontent);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -235,6 +263,38 @@ public class ViewModel {
|
||||
return neuesDatum;
|
||||
}
|
||||
|
||||
/**
|
||||
* Bemerkung input, darf auch leer bleiben
|
||||
* @param content Startwert im Input feld
|
||||
* @return True bei erfolg, wenn es abgebrochen wird ist es false
|
||||
*/
|
||||
private boolean bemerkungInput(String content){
|
||||
this.neueBemerkung = AlertHelper.inputTextNotNull(ConfigHelper.getLangIniString("bemerkung"),
|
||||
ConfigHelper.getLangIniString("bemerkungheader"),
|
||||
ConfigHelper.getLangIniString("bemerkung")+
|
||||
ConfigHelper.getLangIniString("doppelpunkt"), content, false);
|
||||
return !(this.neueBemerkung == null);
|
||||
}
|
||||
|
||||
private double hightmeterInput(String content) {
|
||||
return AlertHelper.inputNumber(ConfigHelper.getLangIniString("hightmeter"),
|
||||
ConfigHelper.getLangIniString("hightmetermsg"),
|
||||
ConfigHelper.getLangIniString("hightmeter") +
|
||||
ConfigHelper.getLangIniString("doppelpunkt"), content);
|
||||
}
|
||||
|
||||
/**
|
||||
* Pause eingabe bis diese Korrekt ist
|
||||
* @param content Default value für das Input Feld
|
||||
* @return -1 bei error
|
||||
*/
|
||||
private double pauseInput(String content){
|
||||
return AlertHelper.inputNumber(ConfigHelper.getLangIniString("pause"),
|
||||
ConfigHelper.getLangIniString("pausemsg"),
|
||||
ConfigHelper.getLangIniString("pause") +
|
||||
ConfigHelper.getLangIniString("doppelpunkt"), content);
|
||||
}
|
||||
|
||||
/**
|
||||
* Fügt einen Log eintrag zu einer Tour hinzu.
|
||||
* Ist keine Tour ausgewählt, dann kommt eine Warnung an den User!
|
||||
@ -250,22 +310,33 @@ public class ViewModel {
|
||||
newId.set(UUID.randomUUID().toString());
|
||||
}
|
||||
});
|
||||
double dauer = dauerInput("");
|
||||
double strecke;
|
||||
double dauer = dauerInput(-1.0);
|
||||
double strecke, pause, hightmeter;
|
||||
boolean bemerkung = false;
|
||||
LocalDate date = null;
|
||||
if(dauer >= 0) {
|
||||
strecke = streckeInput("");
|
||||
if (strecke >= 0.0) {
|
||||
pause = pauseInput("");
|
||||
if(pause >= 0.0) {
|
||||
hightmeter = hightmeterInput("");
|
||||
if (hightmeter >= 0.0) {
|
||||
bemerkung = bemerkungInput("");
|
||||
if (bemerkung){
|
||||
date = dateInput(LocalDate.now());
|
||||
if (date != null){
|
||||
Log newLog = new Log(newId.get(), dauer + "", date, strecke);
|
||||
if (date != null) {
|
||||
Log newLog = new Log(newId.get(), dauer, date, strecke, this.neueBemerkung, hightmeter, pause);
|
||||
this.logData.add(newLog);
|
||||
s.addLog(newLog);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
this.neueBemerkung = null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -389,6 +460,12 @@ public class ViewModel {
|
||||
}
|
||||
|
||||
public ObservableList<String> getTourNamen() {
|
||||
ArrayList<String> namen = new ArrayList<>();
|
||||
getTourData().forEach(s -> {
|
||||
namen.add(s.getName());
|
||||
});
|
||||
tourNamen.removeAll();
|
||||
tourNamen.addAll(namen);
|
||||
return tourNamen;
|
||||
}
|
||||
|
||||
@ -409,6 +486,9 @@ public class ViewModel {
|
||||
}
|
||||
|
||||
public ObservableList<Tour> getTourData() {
|
||||
tourData.removeAll();
|
||||
// ObservableList<Tour> data = ;
|
||||
tourData.addAll(TourPlaner.getAllTours());
|
||||
return tourData;
|
||||
}
|
||||
|
||||
@ -422,6 +502,7 @@ public class ViewModel {
|
||||
tourNamen.removeIf(s -> s.equals(tourname));
|
||||
logData.removeIf(s -> true);
|
||||
setSelectedTour(null);
|
||||
TourPlaner.delTour(tourname);
|
||||
}catch (NullPointerException e){
|
||||
LogHelper.error(ConfigHelper.getLangIniString("keinetourselected"),
|
||||
ConfigHelper.getLangIniString("deltournoselect"));
|
||||
@ -495,4 +576,24 @@ public class ViewModel {
|
||||
ConfigHelper.getLangIniString("fktnichtimplementiert"),
|
||||
ConfigHelper.getLangIniString("vergessenodernochnichtsoweit"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Startet den Tour Report
|
||||
*/
|
||||
public void tourReport() {
|
||||
if (this.selectedTour == null){
|
||||
AlertHelper.warn(ConfigHelper.getLangIniString("achtung"),
|
||||
ConfigHelper.getLangIniString("keinetourselected"),
|
||||
ConfigHelper.getLangIniString("logtournotselectedmsg"));
|
||||
}else {
|
||||
try {
|
||||
Reporter.createTourReport(this.selectedTour.getName());
|
||||
} catch (IOException e) {
|
||||
LogHelper.error(e.getMessage(), e.getClass().getName());
|
||||
} catch (COSVisitorException e) {
|
||||
LogHelper.error(e.getMessage(), e.getClass().getName());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user