Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
be2bb0c6fa | |||
0e43c28c67 | |||
2265014db3 | |||
100da38493 |
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,2 +1,4 @@
|
|||||||
out/
|
out/
|
||||||
conf.ini
|
conf.ini
|
||||||
|
log/log4j/log.out/
|
||||||
|
reports/
|
||||||
|
9
.idea/libraries/iText_4_2_0_com_itextpdf.xml
generated
Normal file
9
.idea/libraries/iText_4_2_0_com_itextpdf.xml
generated
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<component name="libraryTable">
|
||||||
|
<library name="iText-4.2.0-com.itextpdf">
|
||||||
|
<CLASSES>
|
||||||
|
<root url="jar://$PROJECT_DIR$/lib/iText-4.2.0-com.itextpdf.jar!/" />
|
||||||
|
</CLASSES>
|
||||||
|
<JAVADOC />
|
||||||
|
<SOURCES />
|
||||||
|
</library>
|
||||||
|
</component>
|
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,7 @@
|
|||||||
<orderEntry type="library" name="lib" level="project" />
|
<orderEntry type="library" name="lib" level="project" />
|
||||||
<orderEntry type="library" name="org.ini4j:ini4j:0.5.4" 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="log4j:log4j:1.2.17" level="project" />
|
||||||
|
<orderEntry type="library" name="org.postgresql:postgresql:42.2.19" level="project" />
|
||||||
|
<orderEntry type="library" name="iText-4.2.0-com.itextpdf" level="project" />
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</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 =
|
user =
|
||||||
pw =
|
pw =
|
||||||
|
|
||||||
|
[report]
|
||||||
|
path = ./reports/
|
||||||
|
|
||||||
[hilfe]
|
[hilfe]
|
||||||
gitrepo = https://git.dergeorg.at/dergeorg/tourplaner
|
gitrepo = https://git.dergeorg.at/dergeorg/tourplaner
|
||||||
doxygendoc = 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!
|
keintextimfeld = Bitte tragen Sie einen Text in das Feld ein!
|
||||||
nurzahlen = Bitte geben Sie nur Zahlen an!
|
nurzahlen = Bitte geben Sie nur Zahlen an!
|
||||||
nurpositivezahlen = Bitte geben Sie nur positive 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.
|
BIN
lib/iText-4.2.0-com.itextpdf.jar
Normal file
BIN
lib/iText-4.2.0-com.itextpdf.jar
Normal file
Binary file not shown.
@ -1,12 +1,171 @@
|
|||||||
2021-03-18 22:41:23 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
2021-04-15 00:36:26 ERROR FileNotFoundException:33 - D:\FH_OFFLINE\tourplaner\conf.ini (Das System kann die angegebene Datei nicht finden)
|
||||||
2021-03-18 22:48:51 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
2021-04-15 00:36:26 ERROR NullPointerException:33 -
|
||||||
2021-03-18 22:53:17 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
2021-04-15 00:37:18 ERROR FileNotFoundException:33 - D:\FH_OFFLINE\tourplaner\conf.ini (Das System kann die angegebene Datei nicht finden)
|
||||||
2021-03-18 22:57:20 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
2021-04-15 00:37:18 ERROR NullPointerException:33 -
|
||||||
2021-03-18 22:57:28 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
2021-04-15 00:38:24 ERROR PSQLException:33 - Der Verbindungsversuch schlug fehl.
|
||||||
2021-03-18 22:58:33 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
2021-04-15 00:38:31 ERROR SQLException:33 - No suitable driver found for jdbc:postgresql://http://postgres.dergeorg.at:5432/tourplaner
|
||||||
2021-03-18 22:58:34 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
2021-04-15 00:38:38 INFO PostgresHelper:15 - Tour Table created
|
||||||
2021-03-18 23:05:00 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
2021-04-15 00:38:38 ERROR PSQLException:33 - ERROR: relation "tour" already exists
|
||||||
2021-03-18 23:11:45 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
2021-04-15 00:38:38 INFO PostgresHelper:15 - Tour Table unique created
|
||||||
2021-03-18 23:14:55 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
2021-04-15 00:38:38 ERROR PSQLException:33 - ERROR: relation "tour_tourname_uindex" already exists
|
||||||
2021-03-19 11:56:22 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
2021-04-15 00:38:38 INFO PostgresHelper:15 - Tour Table primary created
|
||||||
2021-03-19 22:35:19 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
|
2021-04-15 00:38:38 ERROR PSQLException:33 - ERROR: multiple primary keys for table "tour" are not allowed
|
||||||
|
2021-04-15 00:38:38 INFO PostgresHelper:15 - Log Table created
|
||||||
|
2021-04-15 00:38:38 ERROR PSQLException:33 - ERROR: relation "log" already exists
|
||||||
|
2021-04-15 00:40:43 INFO PostgresHelper:15 - Tour Table created
|
||||||
|
2021-04-15 00:40:43 ERROR PSQLException:33 - ERROR: relation "tour" already exists
|
||||||
|
2021-04-15 00:40:43 INFO PostgresHelper:15 - Tour Table unique created
|
||||||
|
2021-04-15 00:40:43 ERROR PSQLException:33 - ERROR: relation "tour_tourname_uindex" already exists
|
||||||
|
2021-04-15 00:40:43 INFO PostgresHelper:15 - Tour Table primary created
|
||||||
|
2021-04-15 00:40:43 ERROR PSQLException:33 - ERROR: multiple primary keys for table "tour" are not allowed
|
||||||
|
2021-04-15 00:40:43 INFO PostgresHelper:15 - Log Table created
|
||||||
|
2021-04-15 00:40:43 ERROR PSQLException:33 - ERROR: relation "log" already exists
|
||||||
|
2021-04-15 00:44:11 INFO PostgresHelper:15 - Tour Table created
|
||||||
|
2021-04-15 00:44:11 ERROR PSQLException:33 - ERROR: relation "tour" already exists
|
||||||
|
2021-04-15 00:44:11 INFO PostgresHelper:15 - Tour Table unique created
|
||||||
|
2021-04-15 00:44:11 ERROR PSQLException:33 - ERROR: relation "tour_tourname_uindex" already exists
|
||||||
|
2021-04-15 00:44:11 INFO PostgresHelper:15 - Tour Table primary created
|
||||||
|
2021-04-15 00:44:11 ERROR PSQLException:33 - ERROR: multiple primary keys for table "tour" are not allowed
|
||||||
|
2021-04-15 00:44:11 INFO PostgresHelper:15 - Log Table created
|
||||||
|
2021-04-15 00:44:11 ERROR PSQLException:33 - ERROR: relation "log" already exists
|
||||||
|
2021-04-15 16:30:08 INFO PostgresHelper:15 - Tour Table created
|
||||||
|
2021-04-15 16:30:08 ERROR PSQLException:33 - ERROR: relation "tour" already exists
|
||||||
|
2021-04-15 16:30:08 INFO PostgresHelper:15 - Tour Table unique created
|
||||||
|
2021-04-15 16:30:08 ERROR PSQLException:33 - ERROR: relation "tour_tourname_uindex" already exists
|
||||||
|
2021-04-15 16:30:08 INFO PostgresHelper:15 - Tour Table primary created
|
||||||
|
2021-04-15 16:30:08 ERROR PSQLException:33 - ERROR: multiple primary keys for table "tour" are not allowed
|
||||||
|
2021-04-15 16:30:08 INFO PostgresHelper:15 - Log Table created
|
||||||
|
2021-04-15 16:30:08 ERROR PSQLException:33 - ERROR: relation "log" already exists
|
||||||
|
2021-04-15 16:33:57 INFO PostgresHelper:15 - Tour Table created
|
||||||
|
2021-04-15 16:33:57 ERROR PSQLException:33 - ERROR: relation "tour" already exists
|
||||||
|
2021-04-15 16:33:57 INFO PostgresHelper:15 - Tour Table unique created
|
||||||
|
2021-04-15 16:33:57 ERROR PSQLException:33 - ERROR: relation "tour_tourname_uindex" already exists
|
||||||
|
2021-04-15 16:33:57 INFO PostgresHelper:15 - Tour Table primary created
|
||||||
|
2021-04-15 16:33:57 ERROR PSQLException:33 - ERROR: multiple primary keys for table "tour" are not allowed
|
||||||
|
2021-04-15 16:33:57 INFO PostgresHelper:15 - Log Table created
|
||||||
|
2021-04-15 16:33:57 ERROR PSQLException:33 - ERROR: relation "log" already exists
|
||||||
|
2021-04-15 16:38:55 INFO PostgresHelper:15 - Tour Table created
|
||||||
|
2021-04-15 16:38:55 ERROR PSQLException:33 - ERROR: relation "tour" already exists
|
||||||
|
2021-04-15 16:38:55 INFO PostgresHelper:15 - Tour Table unique created
|
||||||
|
2021-04-15 16:38:55 ERROR PSQLException:33 - ERROR: relation "tour_tourname_uindex" already exists
|
||||||
|
2021-04-15 16:38:55 INFO PostgresHelper:15 - Tour Table primary created
|
||||||
|
2021-04-15 16:38:55 ERROR PSQLException:33 - ERROR: multiple primary keys for table "tour" are not allowed
|
||||||
|
2021-04-15 16:38:55 INFO PostgresHelper:15 - Log Table created
|
||||||
|
2021-04-15 16:38:55 ERROR PSQLException:33 - ERROR: relation "log" already exists
|
||||||
|
2021-04-15 16:50:23 INFO PostgresHelper:15 - Tour Table created
|
||||||
|
2021-04-15 16:50:23 ERROR PSQLException:33 - ERROR: relation "tour" already exists
|
||||||
|
2021-04-15 16:50:23 INFO PostgresHelper:15 - Tour Table unique created
|
||||||
|
2021-04-15 16:50:23 ERROR PSQLException:33 - ERROR: relation "tour_tourname_uindex" already exists
|
||||||
|
2021-04-15 16:50:23 INFO PostgresHelper:15 - Tour Table primary created
|
||||||
|
2021-04-15 16:50:23 ERROR PSQLException:33 - ERROR: multiple primary keys for table "tour" are not allowed
|
||||||
|
2021-04-15 16:50:23 INFO PostgresHelper:15 - Log Table created
|
||||||
|
2021-04-15 16:50:23 ERROR PSQLException:33 - ERROR: relation "log" already exists
|
||||||
|
2021-04-15 16:51:01 INFO PostgresHelper:15 - Tour Table created
|
||||||
|
2021-04-15 16:51:01 ERROR PSQLException:33 - ERROR: relation "tour" already exists
|
||||||
|
2021-04-15 16:51:01 INFO PostgresHelper:15 - Tour Table unique created
|
||||||
|
2021-04-15 16:51:01 ERROR PSQLException:33 - ERROR: relation "tour_tourname_uindex" already exists
|
||||||
|
2021-04-15 16:51:01 INFO PostgresHelper:15 - Tour Table primary created
|
||||||
|
2021-04-15 16:51:01 ERROR PSQLException:33 - ERROR: multiple primary keys for table "tour" are not allowed
|
||||||
|
2021-04-15 16:51:01 INFO PostgresHelper:15 - Log Table created
|
||||||
|
2021-04-15 16:51:01 ERROR PSQLException:33 - ERROR: relation "log" already exists
|
||||||
|
2021-04-15 17:08:17 INFO PostgresHelper:15 - Tour Table created
|
||||||
|
2021-04-15 17:08:17 ERROR PSQLException:33 - ERROR: relation "tour" already exists
|
||||||
|
2021-04-15 17:08:17 INFO PostgresHelper:15 - Tour Table unique created
|
||||||
|
2021-04-15 17:08:17 ERROR PSQLException:33 - ERROR: relation "tour_tourname_uindex" already exists
|
||||||
|
2021-04-15 17:08:17 INFO PostgresHelper:15 - Tour Table primary created
|
||||||
|
2021-04-15 17:08:17 ERROR PSQLException:33 - ERROR: multiple primary keys for table "tour" are not allowed
|
||||||
|
2021-04-15 17:08:17 INFO PostgresHelper:15 - Log Table created
|
||||||
|
2021-04-15 17:08:17 ERROR PSQLException:33 - ERROR: relation "log" already exists
|
||||||
|
2021-04-15 17:08:21 ERROR FileNotFoundException:33 - .\reports\Tour 1.pdf (Das System kann den angegebenen Pfad nicht finden)
|
||||||
|
2021-04-15 17:21:48 INFO PostgresHelper:15 - Tour Table created
|
||||||
|
2021-04-15 17:21:48 ERROR PSQLException:33 - ERROR: relation "tour" already exists
|
||||||
|
2021-04-15 17:21:48 INFO PostgresHelper:15 - Tour Table unique created
|
||||||
|
2021-04-15 17:21:48 ERROR PSQLException:33 - ERROR: relation "tour_tourname_uindex" already exists
|
||||||
|
2021-04-15 17:21:48 INFO PostgresHelper:15 - Tour Table primary created
|
||||||
|
2021-04-15 17:21:48 ERROR PSQLException:33 - ERROR: multiple primary keys for table "tour" are not allowed
|
||||||
|
2021-04-15 17:21:48 INFO PostgresHelper:15 - Log Table created
|
||||||
|
2021-04-15 17:21:48 ERROR PSQLException:33 - ERROR: relation "log" already exists
|
||||||
|
2021-04-15 17:21:57 ERROR FileNotFoundException:33 - .\reports\Tour 1.pdf (Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird)
|
||||||
|
2021-04-15 17:31:40 INFO PostgresHelper:15 - Tour Table created
|
||||||
|
2021-04-15 17:31:40 ERROR PSQLException:33 - ERROR: relation "tour" already exists
|
||||||
|
2021-04-15 17:31:40 INFO PostgresHelper:15 - Tour Table unique created
|
||||||
|
2021-04-15 17:31:40 ERROR PSQLException:33 - ERROR: relation "tour_tourname_uindex" already exists
|
||||||
|
2021-04-15 17:31:40 INFO PostgresHelper:15 - Tour Table primary created
|
||||||
|
2021-04-15 17:31:40 ERROR PSQLException:33 - ERROR: multiple primary keys for table "tour" are not allowed
|
||||||
|
2021-04-15 17:31:40 INFO PostgresHelper:15 - Log Table created
|
||||||
|
2021-04-15 17:31:40 ERROR PSQLException:33 - ERROR: relation "log" already exists
|
||||||
|
2021-04-15 17:32:30 INFO PostgresHelper:15 - Tour Table created
|
||||||
|
2021-04-15 17:32:30 ERROR PSQLException:33 - ERROR: relation "tour" already exists
|
||||||
|
2021-04-15 17:32:30 INFO PostgresHelper:15 - Tour Table unique created
|
||||||
|
2021-04-15 17:32:30 ERROR PSQLException:33 - ERROR: relation "tour_tourname_uindex" already exists
|
||||||
|
2021-04-15 17:32:30 INFO PostgresHelper:15 - Tour Table primary created
|
||||||
|
2021-04-15 17:32:30 ERROR PSQLException:33 - ERROR: multiple primary keys for table "tour" are not allowed
|
||||||
|
2021-04-15 17:32:30 INFO PostgresHelper:15 - Log Table created
|
||||||
|
2021-04-15 17:32:30 ERROR PSQLException:33 - ERROR: relation "log" already exists
|
||||||
|
2021-04-15 17:37:57 INFO PostgresHelper:15 - Tour Table created
|
||||||
|
2021-04-15 17:37:57 ERROR PSQLException:33 - ERROR: relation "tour" already exists
|
||||||
|
2021-04-15 17:37:57 INFO PostgresHelper:15 - Tour Table unique created
|
||||||
|
2021-04-15 17:37:58 ERROR PSQLException:33 - ERROR: relation "tour_tourname_uindex" already exists
|
||||||
|
2021-04-15 17:37:58 INFO PostgresHelper:15 - Tour Table primary created
|
||||||
|
2021-04-15 17:37:58 ERROR PSQLException:33 - ERROR: multiple primary keys for table "tour" are not allowed
|
||||||
|
2021-04-15 17:37:58 INFO PostgresHelper:15 - Log Table created
|
||||||
|
2021-04-15 17:37:58 ERROR PSQLException:33 - ERROR: relation "log" already exists
|
||||||
|
2021-04-15 17:38:41 INFO PostgresHelper:15 - Tour Table created
|
||||||
|
2021-04-15 17:38:41 ERROR PSQLException:33 - ERROR: relation "tour" already exists
|
||||||
|
2021-04-15 17:38:41 INFO PostgresHelper:15 - Tour Table unique created
|
||||||
|
2021-04-15 17:38:41 ERROR PSQLException:33 - ERROR: relation "tour_tourname_uindex" already exists
|
||||||
|
2021-04-15 17:38:41 INFO PostgresHelper:15 - Tour Table primary created
|
||||||
|
2021-04-15 17:38:41 ERROR PSQLException:33 - ERROR: multiple primary keys for table "tour" are not allowed
|
||||||
|
2021-04-15 17:38:41 INFO PostgresHelper:15 - Log Table created
|
||||||
|
2021-04-15 17:38:41 ERROR PSQLException:33 - ERROR: relation "log" already exists
|
||||||
|
2021-04-15 17:40:30 INFO PostgresHelper:15 - Tour Table created
|
||||||
|
2021-04-15 17:40:30 ERROR PSQLException:33 - ERROR: relation "tour" already exists
|
||||||
|
2021-04-15 17:40:30 INFO PostgresHelper:15 - Tour Table unique created
|
||||||
|
2021-04-15 17:40:30 ERROR PSQLException:33 - ERROR: relation "tour_tourname_uindex" already exists
|
||||||
|
2021-04-15 17:40:30 INFO PostgresHelper:15 - Tour Table primary created
|
||||||
|
2021-04-15 17:40:30 ERROR PSQLException:33 - ERROR: multiple primary keys for table "tour" are not allowed
|
||||||
|
2021-04-15 17:40:30 INFO PostgresHelper:15 - Log Table created
|
||||||
|
2021-04-15 17:40:30 ERROR PSQLException:33 - ERROR: relation "log" already exists
|
||||||
|
2021-04-15 17:48:48 INFO PostgresHelper:15 - Tour Table created
|
||||||
|
2021-04-15 17:48:48 ERROR PSQLException:33 - ERROR: relation "tour" already exists
|
||||||
|
2021-04-15 17:48:48 INFO PostgresHelper:15 - Tour Table unique created
|
||||||
|
2021-04-15 17:48:48 ERROR PSQLException:33 - ERROR: relation "tour_tourname_uindex" already exists
|
||||||
|
2021-04-15 17:48:48 INFO PostgresHelper:15 - Tour Table primary created
|
||||||
|
2021-04-15 17:48:48 ERROR PSQLException:33 - ERROR: multiple primary keys for table "tour" are not allowed
|
||||||
|
2021-04-15 17:48:48 INFO PostgresHelper:15 - Log Table created
|
||||||
|
2021-04-15 17:48:48 ERROR PSQLException:33 - ERROR: relation "log" already exists
|
||||||
|
2021-04-15 17:49:14 INFO PostgresHelper:15 - Tour Table created
|
||||||
|
2021-04-15 17:49:14 ERROR PSQLException:33 - ERROR: relation "tour" already exists
|
||||||
|
2021-04-15 17:49:14 INFO PostgresHelper:15 - Tour Table unique created
|
||||||
|
2021-04-15 17:49:14 ERROR PSQLException:33 - ERROR: relation "tour_tourname_uindex" already exists
|
||||||
|
2021-04-15 17:49:14 INFO PostgresHelper:15 - Tour Table primary created
|
||||||
|
2021-04-15 17:49:14 ERROR PSQLException:33 - ERROR: multiple primary keys for table "tour" are not allowed
|
||||||
|
2021-04-15 17:49:14 INFO PostgresHelper:15 - Log Table created
|
||||||
|
2021-04-15 17:49:14 ERROR PSQLException:33 - ERROR: relation "log" already exists
|
||||||
|
2021-04-15 18:00:58 INFO PostgresHelper:15 - Tour Table created
|
||||||
|
2021-04-15 18:00:58 ERROR PSQLException:33 - ERROR: relation "tour" already exists
|
||||||
|
2021-04-15 18:00:58 INFO PostgresHelper:15 - Tour Table unique created
|
||||||
|
2021-04-15 18:00:58 ERROR PSQLException:33 - ERROR: relation "tour_tourname_uindex" already exists
|
||||||
|
2021-04-15 18:00:58 INFO PostgresHelper:15 - Tour Table primary created
|
||||||
|
2021-04-15 18:00:59 ERROR PSQLException:33 - ERROR: multiple primary keys for table "tour" are not allowed
|
||||||
|
2021-04-15 18:00:59 INFO PostgresHelper:15 - Log Table created
|
||||||
|
2021-04-15 18:00:59 ERROR PSQLException:33 - ERROR: relation "log" already exists
|
||||||
|
2021-04-15 18:09:56 ERROR FileNotFoundException:33 - .\reports\Tour 1.pdf (Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird)
|
||||||
|
2021-04-15 18:10:01 INFO PostgresHelper:15 - Tour Table created
|
||||||
|
2021-04-15 18:10:01 ERROR PSQLException:33 - ERROR: relation "tour" already exists
|
||||||
|
2021-04-15 18:10:01 INFO PostgresHelper:15 - Tour Table unique created
|
||||||
|
2021-04-15 18:10:01 ERROR PSQLException:33 - ERROR: relation "tour_tourname_uindex" already exists
|
||||||
|
2021-04-15 18:10:01 INFO PostgresHelper:15 - Tour Table primary created
|
||||||
|
2021-04-15 18:10:01 ERROR PSQLException:33 - ERROR: multiple primary keys for table "tour" are not allowed
|
||||||
|
2021-04-15 18:10:01 INFO PostgresHelper:15 - Log Table created
|
||||||
|
2021-04-15 18:10:01 ERROR PSQLException:33 - ERROR: relation "log" already exists
|
||||||
|
2021-04-15 18:10:06 ERROR FileNotFoundException:33 - .\reports\Tour 1.pdf (Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird)
|
||||||
|
2021-04-15 18:12:47 INFO PostgresHelper:15 - Tour Table created
|
||||||
|
2021-04-15 18:12:47 ERROR PSQLException:33 - ERROR: relation "tour" already exists
|
||||||
|
2021-04-15 18:12:47 INFO PostgresHelper:15 - Tour Table unique created
|
||||||
|
2021-04-15 18:12:47 ERROR PSQLException:33 - ERROR: relation "tour_tourname_uindex" already exists
|
||||||
|
2021-04-15 18:12:47 INFO PostgresHelper:15 - Tour Table primary created
|
||||||
|
2021-04-15 18:12:47 ERROR PSQLException:33 - ERROR: multiple primary keys for table "tour" are not allowed
|
||||||
|
2021-04-15 18:12:47 INFO PostgresHelper:15 - Log Table created
|
||||||
|
2021-04-15 18:12:47 ERROR PSQLException:33 - ERROR: relation "log" already exists
|
||||||
|
2021-04-15 18:13:38 ERROR FileNotFoundException:33 - .\reports\Tour 1.pdf (Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird)
|
||||||
|
@ -8,6 +8,7 @@ import javafx.scene.image.Image;
|
|||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
|
|
||||||
import tourplaner.business.ConfigHelper;
|
import tourplaner.business.ConfigHelper;
|
||||||
|
import tourplaner.business.TourPlaner;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
@ -23,7 +24,8 @@ public class Main extends Application {
|
|||||||
Parent root = FXMLLoader.load(Main.class.getResource("tourplaner.fxml"));
|
Parent root = FXMLLoader.load(Main.class.getResource("tourplaner.fxml"));
|
||||||
primaryStage.setTitle(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "apptitle"));
|
primaryStage.setTitle(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "apptitle"));
|
||||||
primaryStage.getIcons().add(new Image("file:"+ ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "logo")));
|
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();
|
primaryStage.show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
237
src/tourplaner/business/Reporter.java
Normal file
237
src/tourplaner/business/Reporter.java
Normal file
@ -0,0 +1,237 @@
|
|||||||
|
package tourplaner.business;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
public class Reporter {
|
||||||
|
|
||||||
|
private static Font catFont = new Font(Font.TIMES_ROMAN, 18,
|
||||||
|
Font.BOLD);
|
||||||
|
private static Font redFont = new Font(Font.TIMES_ROMAN, 12,
|
||||||
|
Font.NORMAL, Color.RED);
|
||||||
|
private static Font subFont = new Font(Font.TIMES_ROMAN, 16,
|
||||||
|
Font.BOLD);
|
||||||
|
private static Font smallBold = new Font(Font.TIMES_ROMAN, 12,
|
||||||
|
Font.BOLD);
|
||||||
|
|
||||||
|
public static void createTourReport(String tourname) {
|
||||||
|
Tour tour = TourPlaner.getTour(tourname);
|
||||||
|
tour.setLog(TourPlaner.getLogs(tourname));
|
||||||
|
String file = ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "report", "path") + tourname+".pdf";
|
||||||
|
try {
|
||||||
|
Document document = new Document();
|
||||||
|
PdfWriter.getInstance(document, new FileOutputStream(file));
|
||||||
|
document.open();
|
||||||
|
addMetaData(document, tour);
|
||||||
|
// addTitlePage(document, tour);
|
||||||
|
addContent(document, tour);
|
||||||
|
document.close();
|
||||||
|
} catch (DocumentException | FileNotFoundException e) {
|
||||||
|
LogHelper.error(e.getMessage(), e.getClass().getName());
|
||||||
|
}
|
||||||
|
openDefault(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
// iText allows to add metadata to the PDF which can be viewed in your Adobe
|
||||||
|
// 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");
|
||||||
|
}
|
||||||
|
|
||||||
|
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());
|
||||||
|
|
||||||
|
// Second parameter is the number of the chapter
|
||||||
|
Chapter catPart = new Chapter(new Paragraph(anchor), 1);
|
||||||
|
|
||||||
|
Paragraph subPara = new Paragraph("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()));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// now add all this to the document
|
||||||
|
document.add(catPart);
|
||||||
|
|
||||||
|
|
||||||
|
ArrayList<Log> logs = tour.getLogs();
|
||||||
|
// Second parameter is the number of the chapter
|
||||||
|
anchor = new Anchor("Logs", catFont);
|
||||||
|
anchor.setName("Logs");
|
||||||
|
catPart = new Chapter(new Paragraph(anchor), 2);
|
||||||
|
catPart.add(new Paragraph("Anzahl der Logeinträge: " + logs.size()));
|
||||||
|
|
||||||
|
for (Log log: logs) {
|
||||||
|
subPara = new Paragraph("Log vom: " + 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()));
|
||||||
|
}
|
||||||
|
// 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void addEmptyLine(Paragraph paragraph, int number) {
|
||||||
|
for (int i = 0; i < number; i++) {
|
||||||
|
paragraph.add(new Paragraph(" "));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void openDefault(String f){
|
||||||
|
// A reference to a text file
|
||||||
|
File file = new File(f);
|
||||||
|
|
||||||
|
try {
|
||||||
|
Desktop desktop = Desktop.getDesktop();
|
||||||
|
|
||||||
|
// Open a file using the default program for the file type. In the example
|
||||||
|
// we will launch a default registered program to open a text file. For
|
||||||
|
// example on Windows operating system this call might launch a notepad.exe
|
||||||
|
// to open the file.
|
||||||
|
desktop.open(file);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -2,6 +2,11 @@ package tourplaner.business;
|
|||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import tourplaner.data.DbConnect;
|
import tourplaner.data.DbConnect;
|
||||||
|
import tourplaner.object.Log;
|
||||||
|
import tourplaner.object.Tour;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Haupt Logik des Tourplaners
|
* Haupt Logik des Tourplaners
|
||||||
@ -9,14 +14,74 @@ import tourplaner.data.DbConnect;
|
|||||||
public class TourPlaner{
|
public class TourPlaner{
|
||||||
private Logger logger;
|
private Logger logger;
|
||||||
|
|
||||||
public TourPlaner(){
|
/**
|
||||||
LogHelper.info(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "message"),
|
* Erstellt alle DB Tabellen falls nötig
|
||||||
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "app"));
|
*/
|
||||||
|
public static void init(){
|
||||||
new DbConnect().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(){
|
||||||
|
return new DbConnect().getAllTouren();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bearbeitet eine Tour
|
||||||
|
* @param oldname Alter Tourname
|
||||||
|
* @param tour Neuer Tourname
|
||||||
|
* @return false bei error
|
||||||
|
*/
|
||||||
|
public static boolean editTour(String oldname, Tour tour){
|
||||||
|
return new DbConnect().editTour(oldname, tour);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean delTour(String tourname){
|
||||||
|
return new DbConnect().delTour(tourname);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fügt eine Tour hinzu
|
||||||
|
* @param newTour Neue Tour
|
||||||
|
* @return false bei error
|
||||||
|
*/
|
||||||
|
public static boolean addTour(Tour newTour){
|
||||||
|
return new DbConnect().addTour(newTour);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static ArrayList<Log> getLogs(String tourname){
|
||||||
|
return new DbConnect().getLogs(tourname);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void doReport(String tourname){
|
||||||
|
Reporter.createTourReport(tourname);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Tour getTour(String tourname){
|
||||||
|
return new DbConnect().getTour(tourname);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean addLog(String tourname, Log log){
|
||||||
|
if(Double.isInfinite(log.getAvgspeed())) log.setAvgspeed(-1.0);
|
||||||
|
return new DbConnect().addLog(tourname, log);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean delLog(String tourname, String id){
|
||||||
|
return new DbConnect().delLog(tourname, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean editLog(String tourname, Log log){
|
||||||
|
if(Double.isInfinite(log.getAvgspeed())) log.setAvgspeed(-1.0);
|
||||||
|
return new DbConnect().editLog(tourname, log);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static String getMapJson(String start, String ziel){
|
||||||
|
// TODO: 14.04.2021 Map Quest
|
||||||
return start + " " + ziel;
|
return start + " " + ziel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,14 @@
|
|||||||
package tourplaner.data;
|
package tourplaner.data;
|
||||||
|
|
||||||
|
import javafx.geometry.Pos;
|
||||||
|
import tourplaner.object.Log;
|
||||||
|
import tourplaner.object.Tour;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
|
import java.sql.Date;
|
||||||
|
import java.sql.ResultSet;
|
||||||
import java.sql.Statement;
|
import java.sql.Statement;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -26,10 +33,188 @@ public class DbConnect {
|
|||||||
* @return True bei erfolg, sonst error
|
* @return True bei erfolg, sonst error
|
||||||
*/
|
*/
|
||||||
public boolean init() {
|
public boolean init() {
|
||||||
// TODO: 26.02.2021 Alle sql im init sind noch falsch
|
|
||||||
ArrayList<Boolean> errors = new ArrayList<>();
|
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);
|
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) {
|
||||||
|
String tourname = tour.getName();
|
||||||
|
ArrayList<Boolean> result = new ArrayList<>();
|
||||||
|
ArrayList<Log> logs = getLogs(oldname);
|
||||||
|
result.add(delLogs(oldname));
|
||||||
|
result.add(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 + "';"));
|
||||||
|
logs.forEach(log -> {
|
||||||
|
result.add(addLog(tourname, log));
|
||||||
|
});
|
||||||
|
return !result.contains(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean delLogs(String tourname){
|
||||||
|
return PostgresHelper.executeUpdate("DELETE FROM public.log WHERE tourname = '"+tourname+"'");
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 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){
|
||||||
|
ArrayList<Boolean> result = new ArrayList<>();
|
||||||
|
result.add(delLogs(tourname));
|
||||||
|
result.add(PostgresHelper.executeUpdate("DELETE FROM public.tour WHERE tourname = '"+tourname+"'"));
|
||||||
|
return !result.contains(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<Log> getLogs(String tourname){
|
||||||
|
|
||||||
|
this.c = PostgresHelper.con();
|
||||||
|
String id, bemerkung ;
|
||||||
|
double dauer, strecke, pause, gegangen, avg, hightmeter;
|
||||||
|
Date datum;
|
||||||
|
|
||||||
|
ArrayList<Log> logs = new ArrayList<>();
|
||||||
|
try {
|
||||||
|
stmt = this.c.createStatement();
|
||||||
|
ResultSet rs = stmt.executeQuery("SELECT * FROM public.log where tourname = '"+ tourname +"'");
|
||||||
|
while (rs.next()) {
|
||||||
|
id = rs.getString("id");
|
||||||
|
bemerkung = rs.getString("bemerkung");
|
||||||
|
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));
|
||||||
|
}else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rs.close();
|
||||||
|
stmt.close();
|
||||||
|
this.c.close();
|
||||||
|
return logs;
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.err.println(e.getClass().getName() + ": " + e.getMessage());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Füght einen Logeintrag ein
|
||||||
|
* @param tourname Zu welcher Tour der Logeintrag gehört
|
||||||
|
* @param log Der Logeintrag
|
||||||
|
* @return false bei error
|
||||||
|
*/
|
||||||
|
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()+")");
|
||||||
|
}
|
||||||
|
|
||||||
|
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()+"'");
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean delLog(String tourname, String id){
|
||||||
|
System.out.println("DELETE FROM public.log WHERE tourname = '"+tourname+"' and id = '"+id+"'");
|
||||||
|
return PostgresHelper.executeUpdate("DELETE FROM public.log WHERE tourname = '"+tourname+"' and id = '"+id+"'");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holt eine Tour aus der Datenbank
|
||||||
|
* @param tn Tourname
|
||||||
|
* @return Null bei fehler, sonst eine List aus den IDs
|
||||||
|
*/
|
||||||
|
public Tour getTour(String tn){
|
||||||
|
this.c = PostgresHelper.con();
|
||||||
|
String tourname, mapjson, start, ziel;
|
||||||
|
double dauer, strecke;
|
||||||
|
|
||||||
|
Tour touren = null;
|
||||||
|
try {
|
||||||
|
stmt = this.c.createStatement();
|
||||||
|
ResultSet rs = stmt.executeQuery("select * from tour where tourname = '"+tn+"';");
|
||||||
|
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 = 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.ConfigHelper;
|
||||||
import tourplaner.business.LogHelper;
|
import tourplaner.business.LogHelper;
|
||||||
|
import tourplaner.object.Tour;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.DriverManager;
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.ResultSet;
|
||||||
import java.sql.Statement;
|
import java.sql.Statement;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hilfsfunktionen für die verwendung der Postgres DB
|
* Hilfsfunktionen für die verwendung der Postgres DB
|
||||||
*/
|
*/
|
||||||
public class PostgresHelper {
|
public class PostgresHelper {
|
||||||
|
private Connection c;
|
||||||
|
private Statement stmt;
|
||||||
/**
|
/**
|
||||||
* Verbindet mit der Datenbank
|
* Verbindet mit der Datenbank
|
||||||
* @return Das Connection Objekt
|
* @return Das Connection Objekt
|
||||||
@ -21,6 +25,8 @@ public class PostgresHelper {
|
|||||||
Connection c = null;
|
Connection c = null;
|
||||||
try {
|
try {
|
||||||
Class.forName("org.postgresql.Driver");
|
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
|
c = DriverManager
|
||||||
.getConnection("jdbc:postgresql://" + ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "db", "url") + ":" + ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "db", "port") + "/" + ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "db", "dbname"),
|
.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"));
|
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "db", "user"), ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "db", "pw"));
|
||||||
|
@ -6,15 +6,60 @@ import java.time.LocalDate;
|
|||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
public class Log {
|
public class Log {
|
||||||
private String id, dauer;
|
private String id, bemerkung;
|
||||||
private LocalDate datum;
|
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.id = id;
|
||||||
this.dauer = dauer;
|
this.dauer = dauer;
|
||||||
this.datum = datum;
|
this.datum = datum;
|
||||||
this.strecke = strecke;
|
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() {
|
public String getId() {
|
||||||
@ -25,11 +70,11 @@ public class Log {
|
|||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDauer() {
|
public double getDauer() {
|
||||||
return dauer;
|
return dauer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDauer(String dauer) {
|
public void setDauer(double dauer) {
|
||||||
this.dauer = dauer;
|
this.dauer = dauer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,6 +21,20 @@ public class Tour {
|
|||||||
this.log = new ArrayList<>();
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLog(ArrayList<Log> log) {
|
||||||
|
this.log = log;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holt einen einzigen Log Eintrag anhand der Id
|
* Holt einen einzigen Log Eintrag anhand der Id
|
||||||
* @param id Id des Eintrags der zu besorgen ist
|
* @param id Id des Eintrags der zu besorgen ist
|
||||||
|
@ -32,26 +32,13 @@
|
|||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<?import javafx.geometry.Insets?>
|
<?import javafx.geometry.*?>
|
||||||
<?import javafx.scene.control.Button?>
|
<?import javafx.scene.control.*?>
|
||||||
<?import javafx.scene.control.Label?>
|
<?import javafx.scene.layout.*?>
|
||||||
<?import javafx.scene.control.ListView?>
|
<?import javafx.scene.paint.*?>
|
||||||
<?import javafx.scene.control.Menu?>
|
<?import javafx.scene.text.*?>
|
||||||
<?import javafx.scene.control.MenuBar?>
|
|
||||||
<?import javafx.scene.control.MenuItem?>
|
|
||||||
<?import javafx.scene.control.SplitPane?>
|
|
||||||
<?import javafx.scene.control.Tab?>
|
|
||||||
<?import javafx.scene.control.TabPane?>
|
|
||||||
<?import javafx.scene.control.TableColumn?>
|
|
||||||
<?import javafx.scene.control.TableView?>
|
|
||||||
<?import javafx.scene.control.TextField?>
|
|
||||||
<?import javafx.scene.layout.AnchorPane?>
|
|
||||||
<?import javafx.scene.layout.HBox?>
|
|
||||||
<?import javafx.scene.layout.VBox?>
|
|
||||||
<?import javafx.scene.paint.Color?>
|
|
||||||
<?import javafx.scene.text.Font?>
|
|
||||||
|
|
||||||
<VBox prefHeight="600.0" prefWidth="900.0" xmlns="http://javafx.com/javafx/11.0.2" xmlns:fx="http://javafx.com/fxml/1" fx:controller="tourplaner.ui.TourplanerController">
|
<VBox prefHeight="600.0" prefWidth="900.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="tourplaner.ui.TourplanerController">
|
||||||
<children>
|
<children>
|
||||||
<MenuBar VBox.vgrow="NEVER">
|
<MenuBar VBox.vgrow="NEVER">
|
||||||
<menus>
|
<menus>
|
||||||
@ -67,6 +54,7 @@
|
|||||||
</Menu>
|
</Menu>
|
||||||
<Menu mnemonicParsing="false" text="Optionen">
|
<Menu mnemonicParsing="false" text="Optionen">
|
||||||
<items>
|
<items>
|
||||||
|
<MenuItem mnemonicParsing="false" onAction="#tourReport" text="Tour Report erstellen" />
|
||||||
<MenuItem mnemonicParsing="false" onAction="#nimpButton" text="Keine Funktion" />
|
<MenuItem mnemonicParsing="false" onAction="#nimpButton" text="Keine Funktion" />
|
||||||
</items>
|
</items>
|
||||||
</Menu>
|
</Menu>
|
||||||
@ -86,6 +74,7 @@
|
|||||||
<Button fx:id="tourAdd" layoutX="58.0" mnemonicParsing="false" onAction="#addTour" text="+" />
|
<Button fx:id="tourAdd" layoutX="58.0" mnemonicParsing="false" onAction="#addTour" text="+" />
|
||||||
<Label layoutX="14.0" layoutY="4.0" text="Tours" />
|
<Label layoutX="14.0" layoutY="4.0" text="Tours" />
|
||||||
<Button fx:id="tourDel" layoutX="89.0" mnemonicParsing="false" onAction="#delTour" text="-" />
|
<Button fx:id="tourDel" layoutX="89.0" mnemonicParsing="false" onAction="#delTour" text="-" />
|
||||||
|
<Button layoutX="117.0" mnemonicParsing="false" onAction="#editTourBtn" text="Edit" />
|
||||||
</children></AnchorPane>
|
</children></AnchorPane>
|
||||||
<TextField fx:id="sucheInput" promptText="Suche..." />
|
<TextField fx:id="sucheInput" promptText="Suche..." />
|
||||||
<Button fx:id="sucheButton" mnemonicParsing="false" onAction="#suche" text="Suchen" />
|
<Button fx:id="sucheButton" mnemonicParsing="false" onAction="#suche" text="Suchen" />
|
||||||
@ -94,7 +83,7 @@
|
|||||||
<Insets bottom="3.0" left="3.0" right="3.0" top="3.0" />
|
<Insets bottom="3.0" left="3.0" right="3.0" top="3.0" />
|
||||||
</padding>
|
</padding>
|
||||||
</HBox>
|
</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>
|
<items>
|
||||||
<AnchorPane prefWidth="239.0">
|
<AnchorPane prefWidth="239.0">
|
||||||
<children>
|
<children>
|
||||||
@ -131,7 +120,7 @@
|
|||||||
<content>
|
<content>
|
||||||
<AnchorPane>
|
<AnchorPane>
|
||||||
<children>
|
<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>
|
<columns>
|
||||||
<TableColumn fx:id="nameCol" maxWidth="1.7976931348623157E308" minWidth="70.0" prefWidth="-1.0" text="Tourname" />
|
<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" />
|
<TableColumn fx:id="dauerCol" maxWidth="1.7976931348623157E308" minWidth="40.0" prefWidth="-1.0" text="Dauer" />
|
||||||
@ -154,9 +143,9 @@
|
|||||||
<children>
|
<children>
|
||||||
<VBox prefWidth="100.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
<VBox prefWidth="100.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
<children>
|
<children>
|
||||||
<AnchorPane prefWidth="676.0">
|
<AnchorPane>
|
||||||
<children>
|
<children>
|
||||||
<HBox id="HBox" alignment="CENTER_LEFT" prefWidth="702.0" spacing="5.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
<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>
|
<children>
|
||||||
<Label text="Logs:">
|
<Label text="Logs:">
|
||||||
<HBox.margin>
|
<HBox.margin>
|
||||||
@ -170,9 +159,10 @@
|
|||||||
</Button>
|
</Button>
|
||||||
<Button fx:id="logDel" mnemonicParsing="false" onAction="#delLog" prefWidth="21.0" text="-" textAlignment="CENTER">
|
<Button fx:id="logDel" mnemonicParsing="false" onAction="#delLog" prefWidth="21.0" text="-" textAlignment="CENTER">
|
||||||
<HBox.margin>
|
<HBox.margin>
|
||||||
<Insets right="10.0" />
|
<Insets />
|
||||||
</HBox.margin>
|
</HBox.margin>
|
||||||
</Button>
|
</Button>
|
||||||
|
<Button mnemonicParsing="false" onAction="#editLogBtn" text="Edit" />
|
||||||
</children>
|
</children>
|
||||||
<padding>
|
<padding>
|
||||||
<Insets bottom="3.0" left="3.0" right="3.0" top="3.0" />
|
<Insets bottom="3.0" left="3.0" right="3.0" top="3.0" />
|
||||||
@ -180,13 +170,18 @@
|
|||||||
</HBox>
|
</HBox>
|
||||||
</children>
|
</children>
|
||||||
</AnchorPane>
|
</AnchorPane>
|
||||||
<AnchorPane prefWidth="200.0">
|
<AnchorPane>
|
||||||
<children>
|
<children>
|
||||||
<TableView fx:id="logTableView" onMouseClicked="#logItemSelected" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
<TableView fx:id="logTableView" onMouseClicked="#logItemSelected" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
<columns>
|
<columns>
|
||||||
<TableColumn fx:id="logDatumCol" prefWidth="238.0" text="Datum" />
|
<TableColumn fx:id="logDatumCol" prefWidth="49.0" text="Datum" />
|
||||||
<TableColumn fx:id="logDauerCol" prefWidth="223.0" text="Dauer" />
|
<TableColumn fx:id="logDauerCol" prefWidth="126.0" text="Dauer" />
|
||||||
<TableColumn fx:id="logStreckeCol" prefWidth="240.0" text="Entfernung" />
|
<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>
|
</columns>
|
||||||
<columnResizePolicy>
|
<columnResizePolicy>
|
||||||
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
|
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package tourplaner.ui;
|
package tourplaner.ui;
|
||||||
|
|
||||||
|
import javafx.event.EventHandler;
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
import javafx.scene.control.*;
|
import javafx.scene.control.*;
|
||||||
import javafx.scene.control.Label;
|
import javafx.scene.control.Label;
|
||||||
@ -7,6 +8,7 @@ import javafx.scene.control.TextArea;
|
|||||||
import javafx.scene.image.Image;
|
import javafx.scene.image.Image;
|
||||||
import javafx.scene.layout.*;
|
import javafx.scene.layout.*;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
|
import javafx.stage.WindowEvent;
|
||||||
import tourplaner.business.ConfigHelper;
|
import tourplaner.business.ConfigHelper;
|
||||||
|
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
@ -107,23 +109,40 @@ public class AlertHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Texteingabe
|
* Texteingabe die nicht leer sein darf
|
||||||
* @param title Title des Dialogs
|
* @param title Title des Dialogs
|
||||||
* @param header Header des Dialogs
|
* @param header Header des Dialogs
|
||||||
* @param msg Nachricht des Dialogs
|
* @param msg Nachricht des Dialogs
|
||||||
* @return Null bei keiner eingabe
|
* @return Null bei keiner eingabe
|
||||||
*/
|
*/
|
||||||
public static String inputText(String title, String header, String msg) {
|
public static String inputText(String title, String header, String msg, String content){
|
||||||
String returnStr = "";
|
return inputTextNotNull(title, header, msg, content, true);
|
||||||
while (returnStr.isEmpty()) {
|
}
|
||||||
Optional<String> result = inputHelper(title, header, msg);
|
|
||||||
|
/**
|
||||||
|
* 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);
|
||||||
|
|
||||||
AtomicReference<String> returnText = new AtomicReference<>("");
|
AtomicReference<String> returnText = new AtomicReference<>("");
|
||||||
result.ifPresent(returnText::set);
|
if(result.isPresent()) {
|
||||||
returnStr = returnText.get();
|
result.ifPresent(returnText::set);
|
||||||
if (returnStr.isEmpty()) {
|
returnStr = returnText.get();
|
||||||
AlertHelper.warn(ConfigHelper.getLangIniString("tournametitle"),
|
if (returnStr.isEmpty() && notNull) {
|
||||||
ConfigHelper.getLangIniString("achtung"),
|
AlertHelper.warn(ConfigHelper.getLangIniString("tournametitle"),
|
||||||
ConfigHelper.getLangIniString("keintextimfeld"));
|
ConfigHelper.getLangIniString("achtung"),
|
||||||
|
ConfigHelper.getLangIniString("keintextimfeld"));
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
return "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return returnStr;
|
return returnStr;
|
||||||
@ -136,11 +155,12 @@ public class AlertHelper {
|
|||||||
* @param msg Nachricht des Dialogs
|
* @param msg Nachricht des Dialogs
|
||||||
* @return Result des Inputs
|
* @return Result des Inputs
|
||||||
*/
|
*/
|
||||||
private static Optional<String> inputHelper(String title, String header, String msg){
|
private static Optional<String> inputHelper(String title, String header, String msg, String content){
|
||||||
TextInputDialog dialog = new TextInputDialog();
|
TextInputDialog dialog = new TextInputDialog(content);
|
||||||
dialog.setTitle(title);
|
dialog.setTitle(title);
|
||||||
dialog.setHeaderText(header);
|
dialog.setHeaderText(header);
|
||||||
dialog.setContentText(msg);
|
dialog.setContentText(msg);
|
||||||
|
|
||||||
Stage stage = (Stage) dialog.getDialogPane().getScene().getWindow();
|
Stage stage = (Stage) dialog.getDialogPane().getScene().getWindow();
|
||||||
stage.getIcons().add(
|
stage.getIcons().add(
|
||||||
new Image("file:"+ ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "logo")));
|
new Image("file:"+ ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "logo")));
|
||||||
@ -149,48 +169,53 @@ public class AlertHelper {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Positive Nummer eingabe. Wenn Convertierung zu int nicht klappt -> -1
|
* Positive Nummer eingabe. Wenn Convertierung zu int nicht klappt -> -1
|
||||||
* @param title Title des Dialogs
|
* @param title Title des Dialogs
|
||||||
* @param header Header des Dialogs
|
* @param header Header des Dialogs
|
||||||
* @param msg Nachricht des Dialogs
|
* @param msg Nachricht des Dialogs
|
||||||
* @return -1 bei error sonst ein Int
|
* @return -1.0 bei error sonst ein double
|
||||||
*/
|
*/
|
||||||
public static int inputNumber(String title, String header, String msg) {
|
public static double inputNumber(String title, String header, String msg, String content) {
|
||||||
int returnInt = -2;
|
double returnDouble = -2.0;
|
||||||
while (returnInt <= 0 ) {
|
while (returnDouble < -1.0) {
|
||||||
Optional<String> result = inputHelper(title, header, msg);
|
Optional<String> result = inputHelper(title, header, msg, content);
|
||||||
AtomicReference<Integer> returnText = new AtomicReference<Integer>(-1);
|
AtomicReference<Double> returnText = new AtomicReference<Double>(-1.0);
|
||||||
result.ifPresent(s -> {
|
result.ifPresent(s -> {
|
||||||
try {
|
try {
|
||||||
int resultInt = Integer.parseInt(result.get());
|
double resultDouble = Double.parseDouble(result.get());
|
||||||
returnText.set(resultInt);
|
// int resultInt = Integer.parseInt(result.get());
|
||||||
if (resultInt < 0){
|
returnText.set(resultDouble);
|
||||||
|
if (resultDouble < 0){
|
||||||
AlertHelper.warn(title, ConfigHelper.getLangIniString("achtung"), ConfigHelper.getLangIniString("nurpositivezahlen"));
|
AlertHelper.warn(title, ConfigHelper.getLangIniString("achtung"), ConfigHelper.getLangIniString("nurpositivezahlen"));
|
||||||
}
|
}
|
||||||
} catch (NumberFormatException e) {
|
} catch (NumberFormatException e) {
|
||||||
AlertHelper.warn(title, ConfigHelper.getLangIniString("achtung"), ConfigHelper.getLangIniString("nurzahlen"));
|
AlertHelper.warn(title, ConfigHelper.getLangIniString("achtung"), ConfigHelper.getLangIniString("nurzahlen"));
|
||||||
returnText.set(-1);
|
returnText.set(-2.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
returnInt = returnText.get();
|
returnDouble = returnText.get();
|
||||||
}
|
}
|
||||||
|
return returnDouble;
|
||||||
return returnInt;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Date Picker Dialog, sobald ein Datum ausgewählt wurde, wird es automatisch bestätigt und der dialog geschlossen
|
* Date Picker Dialog, sobald ein Datum ausgewählt wurde, wird es automatisch bestätigt und der dialog geschlossen
|
||||||
* @param title Name des Dialogs
|
* @param content Aktuelles datum
|
||||||
* @return Gewähltes datum
|
* @return Gewähltes datum
|
||||||
*/
|
*/
|
||||||
public static LocalDate datePicker(String title){
|
public static LocalDate datePicker(LocalDate content){
|
||||||
final DatePicker datePicker = new DatePicker(LocalDate.now());
|
final DatePicker datePicker = new DatePicker(content);
|
||||||
final Stage stage = new Stage();
|
final Stage stage = new Stage();
|
||||||
stage.getIcons().add(
|
stage.getIcons().add(
|
||||||
new Image("file:"+ ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "logo")));
|
new Image("file:"+ ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "logo")));
|
||||||
AtomicReference<LocalDate> selectedDate = new AtomicReference<>();
|
AtomicReference<LocalDate> selectedDate = new AtomicReference<>();
|
||||||
|
stage.setOnCloseRequest(ev -> {
|
||||||
|
stage.close();
|
||||||
|
});
|
||||||
|
|
||||||
datePicker.setOnAction(event -> {
|
datePicker.setOnAction(event -> {
|
||||||
LocalDate date = datePicker.getValue();
|
LocalDate date = datePicker.getValue();
|
||||||
System.out.println("Selected date: " + date);
|
System.out.println("Selected date: " + date);
|
||||||
|
@ -11,6 +11,7 @@ import javafx.scene.control.cell.PropertyValueFactory;
|
|||||||
import javafx.scene.input.MouseEvent;
|
import javafx.scene.input.MouseEvent;
|
||||||
import tourplaner.business.ConfigHelper;
|
import tourplaner.business.ConfigHelper;
|
||||||
import tourplaner.business.LogHelper;
|
import tourplaner.business.LogHelper;
|
||||||
|
import tourplaner.business.TourPlaner;
|
||||||
import tourplaner.object.Log;
|
import tourplaner.object.Log;
|
||||||
import tourplaner.object.Tour;
|
import tourplaner.object.Tour;
|
||||||
import tourplaner.viewmodels.ViewModel;
|
import tourplaner.viewmodels.ViewModel;
|
||||||
@ -38,8 +39,25 @@ public class TourplanerController implements Initializable {
|
|||||||
public TextField titleTextView, sucheInput;
|
public TextField titleTextView, sucheInput;
|
||||||
//Log -> rechts unten
|
//Log -> rechts unten
|
||||||
public TableView<Log> logTableView;
|
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();
|
||||||
|
syncTour(this.viewModel.getSelectedTour().getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private void editLogBtn(){
|
||||||
|
this.viewModel.editLog();
|
||||||
|
syncLogs();
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Öffnet github im standart browser
|
* Öffnet github im standart browser
|
||||||
*
|
*
|
||||||
@ -67,6 +85,19 @@ public class TourplanerController implements Initializable {
|
|||||||
this.viewModel.doxygenDocBrowser();
|
this.viewModel.doxygenDocBrowser();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void syncTour(String selectedItem){
|
||||||
|
beschreibungTableView.getItems().removeIf(s -> true); //Leert die Table View komplett
|
||||||
|
beschreibungTableView.getItems().add(this.viewModel.getTour(selectedItem));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void syncTourNamen(){
|
||||||
|
TourListView.setItems(this.viewModel.getTourNamen());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void syncLogs(){
|
||||||
|
logTableView.getItems().removeIf(s -> true);
|
||||||
|
logTableView.setItems(this.viewModel.getLogData());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -78,8 +109,7 @@ public class TourplanerController implements Initializable {
|
|||||||
String selectedItem = TourListView.getSelectionModel().getSelectedItem();
|
String selectedItem = TourListView.getSelectionModel().getSelectedItem();
|
||||||
this.viewModel.selectTour(selectedItem);
|
this.viewModel.selectTour(selectedItem);
|
||||||
titleTextView.setText(selectedItem);
|
titleTextView.setText(selectedItem);
|
||||||
beschreibungTableView.getItems().removeIf(s -> true); //Leert die Table View komplett
|
syncTour(selectedItem);
|
||||||
beschreibungTableView.getItems().add(this.viewModel.getTour(selectedItem));
|
|
||||||
startCol.setCellValueFactory(new PropertyValueFactory<Tour, String>("start"));
|
startCol.setCellValueFactory(new PropertyValueFactory<Tour, String>("start"));
|
||||||
zielCol.setCellValueFactory(new PropertyValueFactory<Tour, String>("ziel"));
|
zielCol.setCellValueFactory(new PropertyValueFactory<Tour, String>("ziel"));
|
||||||
dauerCol.setCellValueFactory(new PropertyValueFactory<Tour, String>("dauer"));
|
dauerCol.setCellValueFactory(new PropertyValueFactory<Tour, String>("dauer"));
|
||||||
@ -88,10 +118,17 @@ public class TourplanerController implements Initializable {
|
|||||||
|
|
||||||
//Log anzeigen
|
//Log anzeigen
|
||||||
logTableView.setPlaceholder(new Label( ConfigHelper.getLangIniString("keinelogsvorhanden")));
|
logTableView.setPlaceholder(new Label( ConfigHelper.getLangIniString("keinelogsvorhanden")));
|
||||||
|
logTableView.getItems().removeIf(s -> true);
|
||||||
logTableView.setItems(this.viewModel.getLogData());
|
logTableView.setItems(this.viewModel.getLogData());
|
||||||
logDauerCol.setCellValueFactory(new PropertyValueFactory<Log, String>("dauer"));
|
logDauerCol.setCellValueFactory(new PropertyValueFactory<Log, String>("dauer"));
|
||||||
logStreckeCol.setCellValueFactory(new PropertyValueFactory<Log, String>("strecke"));
|
logStreckeCol.setCellValueFactory(new PropertyValueFactory<Log, String>("strecke"));
|
||||||
logDatumCol.setCellValueFactory(new PropertyValueFactory<Log, String>("datum"));
|
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"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -140,12 +177,13 @@ public class TourplanerController implements Initializable {
|
|||||||
@FXML
|
@FXML
|
||||||
private void addLog(){
|
private void addLog(){
|
||||||
this.viewModel.addLog();
|
this.viewModel.addLog();
|
||||||
|
syncLogs();
|
||||||
}
|
}
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
private void delLog(){
|
private void delLog(){
|
||||||
this.viewModel.delLog();
|
this.viewModel.delLog();
|
||||||
|
syncLogs();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -167,7 +205,7 @@ public class TourplanerController implements Initializable {
|
|||||||
//Tour list -> links
|
//Tour list -> links
|
||||||
TourListView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
|
TourListView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
|
||||||
TourListView.setOrientation(Orientation.VERTICAL);
|
TourListView.setOrientation(Orientation.VERTICAL);
|
||||||
TourListView.setItems(this.viewModel.getTourNamen());
|
syncTourNamen();
|
||||||
//Tabs zu Tour -> rechts oben
|
//Tabs zu Tour -> rechts oben
|
||||||
beschreibungTableView.setPlaceholder(new Label( ConfigHelper.getLangIniString("keinetourselected")));
|
beschreibungTableView.setPlaceholder(new Label( ConfigHelper.getLangIniString("keinetourselected")));
|
||||||
titleTextView.setText( ConfigHelper.getLangIniString("keinetourselected"));
|
titleTextView.setText( ConfigHelper.getLangIniString("keinetourselected"));
|
||||||
|
@ -2,7 +2,7 @@ package tourplaner.viewmodels;
|
|||||||
|
|
||||||
import javafx.collections.FXCollections;
|
import javafx.collections.FXCollections;
|
||||||
import javafx.collections.ObservableList;
|
import javafx.collections.ObservableList;
|
||||||
import javafx.fxml.FXML;
|
import tourplaner.business.TourPlaner;
|
||||||
import tourplaner.ui.AlertHelper;
|
import tourplaner.ui.AlertHelper;
|
||||||
import tourplaner.business.ConfigHelper;
|
import tourplaner.business.ConfigHelper;
|
||||||
import tourplaner.business.LogHelper;
|
import tourplaner.business.LogHelper;
|
||||||
@ -14,31 +14,291 @@ import java.io.IOException;
|
|||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
public class ViewModel {
|
public class ViewModel {
|
||||||
//Tour
|
//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<Tour> tourData = FXCollections.observableArrayList();
|
||||||
private final ObservableList<String> tourNamen = FXCollections.observableArrayList("Test 1", "Test 2");
|
private final ObservableList<String> tourNamen = FXCollections.observableArrayList();
|
||||||
private Tour selectedTour;
|
private Tour selectedTour;
|
||||||
private String neueTourName, neueTourStart, neueTourZiel;
|
private String neueTourName, neueTourStart, neueTourZiel, neueBemerkung;
|
||||||
//Log
|
//Log
|
||||||
private final ObservableList<Log> logData = FXCollections.observableArrayList();
|
private final ObservableList<Log> logData = FXCollections.observableArrayList();
|
||||||
private Log selectedLog;
|
private Log selectedLog;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fügt einen Log eintrag zu einer Tour hinzu.
|
* Bearbeitet eine bereits bestehende Tour
|
||||||
* Ist keine Tour ausgewählt, dann kommt eine Warnung an den User!
|
* prüft ob eine tour ausgewählt ist
|
||||||
*/
|
*/
|
||||||
@FXML
|
public void editTour(){
|
||||||
public void addLog(){
|
|
||||||
if (this.selectedTour == null){
|
if (this.selectedTour == null){
|
||||||
AlertHelper.warn(ConfigHelper.getLangIniString("achtung"),
|
AlertHelper.warn(ConfigHelper.getLangIniString("achtung"),
|
||||||
ConfigHelper.getLangIniString("keinetourselected"),
|
ConfigHelper.getLangIniString("keinetourselected"),
|
||||||
ConfigHelper.getLangIniString("logtournotselectedmsg"));
|
ConfigHelper.getLangIniString("logtournotselectedmsg"));
|
||||||
}else {
|
}else {
|
||||||
|
AtomicInteger index = new AtomicInteger(-1);
|
||||||
|
AtomicInteger aktIndex = new AtomicInteger(-1);
|
||||||
|
this.tourData.forEach(s -> {
|
||||||
|
index.getAndIncrement();
|
||||||
|
if (s.getName().equals(this.selectedTour.getName())) {
|
||||||
|
aktIndex.set(index.intValue());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if(aktIndex.intValue() != -1){
|
||||||
|
|
||||||
|
if(tourNameInputDuplicatCheck(this.selectedTour.getName(), false)) {
|
||||||
|
if (tourStartInput(this.selectedTour.getStart())) {
|
||||||
|
if (tourZielInput(this.selectedTour.getZiel())) {
|
||||||
|
|
||||||
|
this.tourData.removeIf(tour -> tour.getName().equals(this.selectedTour.getName()));
|
||||||
|
this.tourNamen.removeIf(tour -> tour.equals(this.selectedTour.getName()));
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.neueTourName = null;
|
||||||
|
this.neueTourStart = null;
|
||||||
|
this.neueTourZiel = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Input mit duplications check des Namens und ohne content im input feld
|
||||||
|
*/
|
||||||
|
private void tourNameInput(){
|
||||||
|
tourNameInputDuplicatCheck("", true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Input des Tour Namen wird so lange durchgeführt, bis er korrekt ist. Das heißt:
|
||||||
|
* er darf nicht schon vorhanden sein und er darf nicht Null sein
|
||||||
|
* @param checkDuplicate Prüft ob name bereits vorhanden ist
|
||||||
|
* @param content inhalt des Input fields
|
||||||
|
* @return false beim schließen des input dialogs
|
||||||
|
*/
|
||||||
|
private boolean tourNameInputDuplicatCheck(String content, boolean checkDuplicate){
|
||||||
|
while(this.neueTourName == null) {
|
||||||
|
this.neueTourName = AlertHelper.inputText(ConfigHelper.getLangIniString("tournametitle"),
|
||||||
|
ConfigHelper.getLangIniString("tournameheader"),
|
||||||
|
ConfigHelper.getLangIniString("tournamemsg"), content);
|
||||||
|
System.out.println(this.neueTourName);
|
||||||
|
if(this.neueTourName.isEmpty()){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (getTour(this.neueTourName) != null && checkDuplicate) {
|
||||||
|
AlertHelper.warn(ConfigHelper.getLangIniString("achtung"),
|
||||||
|
ConfigHelper.getLangIniString("namevergebenheader"),
|
||||||
|
ConfigHelper.getLangIniString("namevergebenmsg1")
|
||||||
|
+ this.neueTourName +
|
||||||
|
ConfigHelper.getLangIniString("namevergebenmsg2"));
|
||||||
|
this.neueTourName = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Input der Startpunkt der Tour
|
||||||
|
* Wird erst beendet wenn die eingabe erfolgreich war
|
||||||
|
* @param content inhalt des Input fields
|
||||||
|
* @return false beim schließen des input dialogs
|
||||||
|
*/
|
||||||
|
private boolean tourStartInput(String content){
|
||||||
|
while(this.neueTourStart == null){
|
||||||
|
this.neueTourStart = AlertHelper.inputText(ConfigHelper.getLangIniString("startpunkttitle"),
|
||||||
|
ConfigHelper.getLangIniString("startpunktheader"),
|
||||||
|
ConfigHelper.getLangIniString("startpunktmsg"), content);
|
||||||
|
if(this.neueTourStart.isEmpty()){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Input des Zielpunktes der Tour
|
||||||
|
* Wird erst beendet wenn die eingabe erfolgreich war
|
||||||
|
* @param content inhalt des Input fields
|
||||||
|
* @return false beim schließen des input dialogs
|
||||||
|
*/
|
||||||
|
private boolean tourZielInput(String content){
|
||||||
|
while(this.neueTourZiel == null){
|
||||||
|
this.neueTourZiel = AlertHelper.inputText(ConfigHelper.getLangIniString("zielpunkttitle"),
|
||||||
|
ConfigHelper.getLangIniString("zielpunktheader"),
|
||||||
|
ConfigHelper.getLangIniString("zielpunktmsg"), content);
|
||||||
|
if(this.neueTourZiel.isEmpty()){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fügt eine neue Tour hinzu
|
||||||
|
*/
|
||||||
|
public void addTour(){
|
||||||
|
tourNameInput();
|
||||||
|
tourStartInput("");
|
||||||
|
tourZielInput("");
|
||||||
|
if (getTour(this.neueTourName) == null) {
|
||||||
|
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;
|
||||||
|
this.neueTourName = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean keineTourSelected(){
|
||||||
|
if (this.selectedTour == null){
|
||||||
|
AlertHelper.warn(ConfigHelper.getLangIniString("achtung"),
|
||||||
|
ConfigHelper.getLangIniString("keinetourselected"),
|
||||||
|
ConfigHelper.getLangIniString("logtournotselectedmsg"));
|
||||||
|
return true;
|
||||||
|
}else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bearbeitet einen gewählten Log eintrag
|
||||||
|
*/
|
||||||
|
public void editLog(){
|
||||||
|
AtomicReference<Tour> tourAkt = new AtomicReference<>();
|
||||||
|
AtomicReference<Log> logAkt = new AtomicReference<>();
|
||||||
|
this.tourData.forEach(tourd -> {
|
||||||
|
if(tourd.getName().equals(this.selectedTour.getName())) {
|
||||||
|
tourd.getLogs().forEach(log -> {
|
||||||
|
if(this.selectedLog.getId().equals(log.getId())){
|
||||||
|
logAkt.set(log);
|
||||||
|
tourAkt.set(tourd);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
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, this.neueBemerkung, hightmeter, pause);
|
||||||
|
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.neueBemerkung = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Eingabe der Strecke bis diese Korrekt ist
|
||||||
|
* @return Korrekte eingegebene Strecke
|
||||||
|
*/
|
||||||
|
private double streckeInput(String content){
|
||||||
|
return AlertHelper.inputNumber(ConfigHelper.getLangIniString("strecke"),
|
||||||
|
ConfigHelper.getLangIniString("streckemsg"),
|
||||||
|
ConfigHelper.getLangIniString("strecke") +
|
||||||
|
ConfigHelper.getLangIniString("doppelpunkt"), content);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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(double content){
|
||||||
|
String realcontent = "";
|
||||||
|
if (content != -1){
|
||||||
|
realcontent = content + "";
|
||||||
|
}
|
||||||
|
return AlertHelper.inputNumber(ConfigHelper.getLangIniString("dauer"),
|
||||||
|
ConfigHelper.getLangIniString("dauermsg"),
|
||||||
|
ConfigHelper.getLangIniString("dauer") +
|
||||||
|
ConfigHelper.getLangIniString("doppelpunkt"), realcontent);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Datum eingabe bis diese Korrekt ist
|
||||||
|
* @return Das eingegebene korekte Datum
|
||||||
|
*/
|
||||||
|
private LocalDate dateInput(LocalDate date){
|
||||||
|
LocalDate neuesDatum = null;
|
||||||
|
neuesDatum = AlertHelper.datePicker(date);
|
||||||
|
System.out.println(neuesDatum);
|
||||||
|
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!
|
||||||
|
*/
|
||||||
|
public void addLog(){
|
||||||
|
if (!keineTourSelected()){
|
||||||
this.tourData.forEach(s -> {
|
this.tourData.forEach(s -> {
|
||||||
if (s.getName().equals(this.selectedTour.getName())) {
|
if (s.getName().equals(this.selectedTour.getName())) {
|
||||||
AtomicReference<String> newId = new AtomicReference<>();
|
AtomicReference<String> newId = new AtomicReference<>();
|
||||||
@ -48,88 +308,47 @@ public class ViewModel {
|
|||||||
newId.set(UUID.randomUUID().toString());
|
newId.set(UUID.randomUUID().toString());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
LocalDate neuesDatum = null;
|
double dauer = dauerInput(-1.0);
|
||||||
while (neuesDatum == null) {
|
double strecke, pause, hightmeter;
|
||||||
neuesDatum = AlertHelper.datePicker(ConfigHelper.getLangIniString("datum"));
|
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, this.neueBemerkung, hightmeter, pause);
|
||||||
|
this.logData.add(newLog);
|
||||||
|
TourPlaner.addLog(this.selectedTour.getName(), newLog);
|
||||||
|
s.addLog(newLog);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
double neueDauer = AlertHelper.inputNumber(ConfigHelper.getLangIniString("dauer"),
|
|
||||||
ConfigHelper.getLangIniString("dauermsg"),
|
|
||||||
ConfigHelper.getLangIniString("dauer") +
|
|
||||||
ConfigHelper.getLangIniString("doppelpunkt"));
|
|
||||||
double neueStrecke = AlertHelper.inputNumber(ConfigHelper.getLangIniString("strecke"),
|
|
||||||
ConfigHelper.getLangIniString("streckemsg"),
|
|
||||||
ConfigHelper.getLangIniString("strecke") +
|
|
||||||
ConfigHelper.getLangIniString("doppelpunkt"));
|
|
||||||
|
|
||||||
Log newLog = new Log(newId.get(), neueDauer + "", neuesDatum, neueStrecke);
|
|
||||||
this.logData.add(newLog);
|
|
||||||
s.addLog(newLog);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
this.neueBemerkung = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fügt eine neue Tour hinzu
|
|
||||||
*/
|
|
||||||
public void addTour(){
|
|
||||||
while(this.neueTourName == null) {
|
|
||||||
this.neueTourName = AlertHelper.inputText(ConfigHelper.getLangIniString("tournametitle"),
|
|
||||||
ConfigHelper.getLangIniString("tournameheader"),
|
|
||||||
ConfigHelper.getLangIniString("tournamemsg"));
|
|
||||||
if (getTour(this.neueTourName) != null) {
|
|
||||||
AlertHelper.warn(ConfigHelper.getLangIniString("achtung"),
|
|
||||||
ConfigHelper.getLangIniString("namevergebenheader"),
|
|
||||||
ConfigHelper.getLangIniString("namevergebenmsg1")
|
|
||||||
+ this.neueTourName +
|
|
||||||
ConfigHelper.getLangIniString("namevergebenmsg2"));
|
|
||||||
this.neueTourName = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
while(this.neueTourStart == null){
|
|
||||||
this.neueTourStart = AlertHelper.inputText(ConfigHelper.getLangIniString("startpunkttitle"),
|
|
||||||
ConfigHelper.getLangIniString("startpunktheader"),
|
|
||||||
ConfigHelper.getLangIniString("startpunktmsg"));
|
|
||||||
}
|
|
||||||
while(this.neueTourZiel == null){
|
|
||||||
this.neueTourZiel = AlertHelper.inputText(ConfigHelper.getLangIniString("zielpunkttitle"),
|
|
||||||
ConfigHelper.getLangIniString("zielpunktheader"),
|
|
||||||
ConfigHelper.getLangIniString("zielpunktmsg"));
|
|
||||||
}
|
|
||||||
if (getTour(this.neueTourName) == null) {
|
|
||||||
tourData.add(new Tour(this.neueTourName, "TBD", "TBD", 0, this.neueTourStart, this.neueTourZiel));
|
|
||||||
tourNamen.add(this.neueTourName);
|
|
||||||
}
|
|
||||||
this.neueTourStart = null;
|
|
||||||
this.neueTourZiel = null;
|
|
||||||
this.neueTourName = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Entfernt ein Log anhand des selectierten Logs
|
* Entfernt ein Log anhand des selectierten Logs
|
||||||
*/
|
*/
|
||||||
public void delLog(){
|
public void delLog(){
|
||||||
if(this.selectedLog != null) {
|
if(this.selectedLog != null) {
|
||||||
this.logData.removeIf(s -> s.getId().equals(this.selectedLog.getId()));
|
TourPlaner.delLog(this.selectedTour.getName(), this.selectedLog.getId());
|
||||||
AtomicReference<Tour> tourToEdit = new AtomicReference<>();
|
|
||||||
this.tourData.forEach(s -> {
|
|
||||||
if (s.getLogs() != null) {
|
|
||||||
s.getLogs().forEach(ss -> {
|
|
||||||
if (ss.getId().equals(this.selectedLog.getId())) {
|
|
||||||
tourToEdit.set(s);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (tourToEdit.get() != null){
|
|
||||||
Tour toEdit = tourToEdit.get();
|
|
||||||
toEdit.delLog(this.selectedLog.getId());
|
|
||||||
this.tourData.removeIf(s -> s.getName().equals(toEdit.getName()));
|
|
||||||
this.tourData.add(toEdit);
|
|
||||||
this.selectedLog = null;
|
this.selectedLog = null;
|
||||||
}
|
|
||||||
}else{
|
}else{
|
||||||
AlertHelper.warn(ConfigHelper.getLangIniString("achtung"),
|
AlertHelper.warn(ConfigHelper.getLangIniString("achtung"),
|
||||||
ConfigHelper.getLangIniString("keinetourselected"),
|
ConfigHelper.getLangIniString("keinetourselected"),
|
||||||
@ -169,6 +388,8 @@ public class ViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public ObservableList<Log> getLogData() {
|
public ObservableList<Log> getLogData() {
|
||||||
|
logData.removeAll();
|
||||||
|
logData.addAll(TourPlaner.getLogs(this.selectedTour.getName()));
|
||||||
return logData;
|
return logData;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -223,6 +444,12 @@ public class ViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public ObservableList<String> getTourNamen() {
|
public ObservableList<String> getTourNamen() {
|
||||||
|
ArrayList<String> namen = new ArrayList<>();
|
||||||
|
getTourData().forEach(s -> {
|
||||||
|
namen.add(s.getName());
|
||||||
|
});
|
||||||
|
tourNamen.removeAll();
|
||||||
|
tourNamen.addAll(namen);
|
||||||
return tourNamen;
|
return tourNamen;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -243,6 +470,9 @@ public class ViewModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public ObservableList<Tour> getTourData() {
|
public ObservableList<Tour> getTourData() {
|
||||||
|
tourData.removeAll();
|
||||||
|
// ObservableList<Tour> data = ;
|
||||||
|
tourData.addAll(TourPlaner.getAllTours());
|
||||||
return tourData;
|
return tourData;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -256,6 +486,7 @@ public class ViewModel {
|
|||||||
tourNamen.removeIf(s -> s.equals(tourname));
|
tourNamen.removeIf(s -> s.equals(tourname));
|
||||||
logData.removeIf(s -> true);
|
logData.removeIf(s -> true);
|
||||||
setSelectedTour(null);
|
setSelectedTour(null);
|
||||||
|
TourPlaner.delTour(tourname);
|
||||||
}catch (NullPointerException e){
|
}catch (NullPointerException e){
|
||||||
LogHelper.error(ConfigHelper.getLangIniString("keinetourselected"),
|
LogHelper.error(ConfigHelper.getLangIniString("keinetourselected"),
|
||||||
ConfigHelper.getLangIniString("deltournoselect"));
|
ConfigHelper.getLangIniString("deltournoselect"));
|
||||||
@ -329,4 +560,17 @@ public class ViewModel {
|
|||||||
ConfigHelper.getLangIniString("fktnichtimplementiert"),
|
ConfigHelper.getLangIniString("fktnichtimplementiert"),
|
||||||
ConfigHelper.getLangIniString("vergessenodernochnichtsoweit"));
|
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 {
|
||||||
|
TourPlaner.doReport(this.selectedTour.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user