Compare commits

...

3 Commits
0.2 ... 0.2.2

Author SHA1 Message Date
0b8f8f996d Logik von Controller -> ViewModel verschoben 2021-03-19 22:40:30 +01:00
5d860eed3c Logo fix +
lang.ini fix+
alert fix
2021-03-18 23:38:52 +01:00
c31728a92b langde von conf.ini -> langde.ini verschoben +
fixed alert -> del log, del tour, input errors (nurZahlen, nurPositive, keinText, zuerstTourDannLog) +
Logo
2021-03-18 23:37:43 +01:00
23 changed files with 513 additions and 352 deletions

1
.gitignore vendored
View File

@ -1,3 +1,2 @@
.idea/
out/ out/
conf.ini conf.ini

8
.idea/.gitignore generated vendored Normal file
View File

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Datasource local storage ignored files
/../../../../:\FH_OFFLINE\Tourplaner\.idea/dataSources/
/dataSources.local.xml
# Editor-based HTTP Client requests
/httpRequests/

11
.idea/libraries/javadoc.xml generated Normal file
View File

@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="javadoc">
<CLASSES>
<root url="jar://$PROJECT_DIR$/javadoc/type-search-index.zip!/" />
<root url="jar://$PROJECT_DIR$/javadoc/member-search-index.zip!/" />
<root url="jar://$PROJECT_DIR$/javadoc/package-search-index.zip!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

17
.idea/libraries/lib.xml generated Normal file
View File

@ -0,0 +1,17 @@
<component name="libraryTable">
<library name="lib">
<CLASSES>
<root url="jar://$PROJECT_DIR$/lib/javafx-sdk-11.0.2/lib/javafx.fxml.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/javafx-sdk-11.0.2/lib/javafx.swing.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/javafx-sdk-11.0.2/lib/javafx-swt.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/javafx-sdk-11.0.2/lib/javafx.controls.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/javafx-sdk-11.0.2/lib/javafx.graphics.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/javafx-sdk-11.0.2/lib/javafx.web.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/javafx-sdk-11.0.2/lib/javafx.media.jar!/" />
<root url="jar://$PROJECT_DIR$/lib/javafx-sdk-11.0.2/lib/src.zip!/" />
<root url="jar://$PROJECT_DIR$/lib/javafx-sdk-11.0.2/lib/javafx.base.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

10
.idea/libraries/log4j_log4j_1_2_17.xml generated Normal file
View File

@ -0,0 +1,10 @@
<component name="libraryTable">
<library name="log4j:log4j:1.2.17" type="repository">
<properties maven-id="log4j:log4j:1.2.17" />
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/log4j/log4j/1.2.17/log4j-1.2.17.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

View File

@ -0,0 +1,10 @@
<component name="libraryTable">
<library name="org.ini4j:ini4j:0.5.4" type="repository">
<properties maven-id="org.ini4j:ini4j:0.5.4" />
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ini4j/ini4j/0.5.4/ini4j-0.5.4.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

6
.idea/misc.xml generated Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="11" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

8
.idea/modules.xml generated Normal file
View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/tourplaner.iml" filepath="$PROJECT_DIR$/tourplaner.iml" />
</modules>
</component>
</project>

124
.idea/uiDesigner.xml generated Normal file
View File

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

7
.idea/vcs.xml generated Normal file
View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View File

@ -1,25 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4"> <module type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="Spring" name="Spring">
<configuration>
<fileset id="fileset" name="ConfigHelper" removed="false">
<file>file://$MODULE_DIR$/src/tourplaner/business/ConfigHelper.java</file>
</fileset>
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true"> <component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output /> <exclude-output />
<content url="file://$MODULE_DIR$"> <content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content> </content>
<orderEntry type="jdk" jdkName="11" jdkType="JavaSDK" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="lib" level="project" /> <orderEntry type="library" name="lib" level="project" />
<orderEntry type="library" name="junit:junit:4.13.2" level="project" />
<orderEntry type="library" name="org.slf4j:slf4j-log4j12:1.7.12" 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="org.postgresql:postgresql:42.2.19" level="project" /> <orderEntry type="library" name="log4j:log4j:1.2.17" level="project" />
</component> </component>
</module> </module>

View File

@ -1,5 +1,10 @@
[start] [start]
message = Tour Planer App gestartet message = Tour Planer App gestartet
apptitle = Tour Planer
logo = logo.png
[lang]
lang = langde
[db] [db]
dbname = tourplaner dbname = tourplaner
@ -12,38 +17,3 @@ pw =
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
javadoc = https://git.dergeorg.at/dergeorg/tourplaner javadoc = https://git.dergeorg.at/dergeorg/tourplaner
[langde]
achtung = ACHTUNG
openbrowsererror = TourplanerController -> Browser:
browserexception = Browser Exception
browserexceptionmsg = Error beim öffnen des Browsers
suchfeldleer = Suchfeld ist leer!
suchtextzuerst = Bitte zuerst den Suchtext in das Suchfeld eingeben!
keinetourselected = Keine Tour ausgewählt!
tournametitle = Tourname
tournameheader = Bitte geben Sie den Namen der Tour an!
tournamemsg = Name:
namevergebenheader = Name bereits vergeben!
namevergebenmsg1 = Der Name '
namevergebenmsg2 = ' ist bereits vergeben, bitte verwenden Sie einen andern!
startpunkttitle = Tour Startpunkt
startpunktheader = Bitte geben Sie den Startpunkt der Tour an!
startpunktmsg = Startpunkt:
zielpunkttitle = Tour zielpunkt
zielpunktheader = Bitte geben Sie den Zielpunkt der Tour an!
zielpunktmsg = Zielpunkt:
deltournoselect = ViewModel -> DelTour
deltournoselectmsg = Bitte wählen Sie zuerst eine Tour aus, bevor Sie auf löschen klicken!
exceptionstackheader = Exception stacktrace:
keinelogsvorhanden = Fügen Sie erst ein Log hinzu um es anzuzeigen!
datum = Datum
dauer = Dauer
strecke = Strecke
streckemsg = Strecke des Logeintrages
dauermsg = Dauer des Logeintrages
doppelpunkt = :
fktnichtimplementiert = Diese Funktion ist noch nicht Implementiert
vergessenodernochnichtsoweit = Entweder hat DerGeorg darauf vergessen oder ist noch nicht so weit gekommen um das zu machen!
logtournotselectedmsg = Bitte wählen Sie zuerst eine Tour aus, bevor sie einen log Eintrag erstellen!

36
langde.ini Normal file
View File

@ -0,0 +1,36 @@
[langde]
achtung = ACHTUNG
openbrowsererror = TourplanerController -> Browser:
browserexception = Browser Exception
browserexceptionmsg = Error beim öffnen des Browsers
suchfeldleer = Suchfeld ist leer!
suchtextzuerst = Bitte zuerst den Suchtext in das Suchfeld eingeben!
keinetourselected = Keine Tour ausgewählt!
tournametitle = Tourname
tournameheader = Bitte geben Sie den Namen der Tour an!
tournamemsg = Name:
namevergebenheader = Name bereits vergeben!
namevergebenmsg1 = Der Name '
namevergebenmsg2 = ' ist bereits vergeben, bitte verwenden Sie einen andern!
startpunkttitle = Tour Startpunkt
startpunktheader = Bitte geben Sie den Startpunkt der Tour an!
startpunktmsg = Startpunkt:
zielpunkttitle = Tour zielpunkt
zielpunktheader = Bitte geben Sie den Zielpunkt der Tour an!
zielpunktmsg = Zielpunkt:
deltournoselect = ViewModel -> DelTour
deltournoselectmsg = Bitte wählen Sie zuerst eine Tour aus, bevor Sie auf löschen klicken!
exceptionstackheader = Exception stacktrace:
keinelogsvorhanden = Fügen Sie erst ein Log hinzu um es anzuzeigen!
datum = Datum
dauer = Dauer
strecke = Strecke
streckemsg = Strecke des Logeintrages
dauermsg = Dauer des Logeintrages
doppelpunkt = :
fktnichtimplementiert = Diese Funktion ist noch nicht Implementiert
vergessenodernochnichtsoweit = Entweder hat DerGeorg darauf vergessen oder ist noch nicht so weit gekommen um das zu machen!
logtournotselectedmsg = Bitte wählen Sie zuerst eine Tour aus, bevor sie einen log Eintrag erstellen!
keintextimfeld = Bitte tragen Sie einen Text in das Feld ein!
nurzahlen = Bitte geben Sie nur Zahlen an!
nurpositivezahlen = Bitte geben Sie nur positive Zahlen an!

View File

@ -1,139 +1,12 @@
Tour planer Startet! 2021-03-18 22:41:23 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
Tour planer Startet! 2021-03-18 22:48:51 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
App started 2021-03-18 22:53:17 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
2021-02-26 15:59:44 INFO TourPlaner:15 - App started 2021-03-18 22:57:20 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
2021-02-26 16:06:01 FATAL TourPlanerConfig:27 - C:\Users\georg\OneDrive\FH\Swe\Tourplaner\conf.ini (Das System kann die angegebene Datei nicht finden) 2021-03-18 22:57:28 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
2021-02-26 16:08:31 INFO TourPlaner:15 - Tour Planer App gestartet 2021-03-18 22:58:33 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
2021-02-26 21:27:46 INFO TourPlaner:15 - Tour Planer App gestartet 2021-03-18 22:58:34 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
2021-02-26 21:27:46 ERROR PresenterMain:33 - 2021-03-18 23:05:00 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
/C:/Users/georg/OneDrive/FH/Swe/Tourplaner/out/production/Tourplaner/tourplaner/ui/tourplaner.fxml:56 2021-03-18 23:11:45 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
2021-03-18 23:14:55 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
2021-02-26 21:27:46 INFO PostgresHelper:15 - User Table created 2021-03-19 11:56:22 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
2021-02-26 21:27:46 ERROR ClassNotFoundException:33 - org.postgresql.Driver 2021-03-19 22:35:19 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
2021-02-26 21:27:46 ERROR NullPointerException:33 -
2021-02-26 21:30:59 INFO TourPlaner:15 - Tour Planer App gestartet
2021-02-26 21:30:59 ERROR PresenterMain:33 -
/C:/Users/georg/OneDrive/FH/Swe/Tourplaner/out/production/Tourplaner/tourplaner/ui/tourplaner.fxml:56
2021-02-26 21:30:59 INFO PostgresHelper:15 - User Table created
2021-02-26 21:31:01 ERROR PSQLException:33 - Connection to postgres.dergeorg.at:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-02-26 21:31:01 ERROR NullPointerException:33 -
2021-02-26 21:32:19 INFO TourPlaner:15 - Tour Planer App gestartet
2021-02-26 21:32:19 ERROR PresenterMain:33 -
/C:/Users/georg/OneDrive/FH/Swe/Tourplaner/out/production/Tourplaner/tourplaner/ui/tourplaner.fxml:56
2021-02-26 21:32:19 INFO PostgresHelper:15 - User Table created
2021-02-26 21:32:21 ERROR PSQLException:33 - Connection to postgres.dergeorg.at:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-02-26 21:32:21 ERROR NullPointerException:33 -
2021-02-26 21:33:05 INFO TourPlaner:15 - Tour Planer App gestartet
2021-02-26 21:33:05 ERROR PresenterMain:33 -
/C:/Users/georg/OneDrive/FH/Swe/Tourplaner/out/production/Tourplaner/tourplaner/ui/tourplaner.fxml:56
2021-02-26 21:33:05 INFO PostgresHelper:15 - User Table created
2021-02-26 21:33:07 ERROR PSQLException:33 - Connection to postgres.dergeorg.at:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-02-26 21:33:07 ERROR NullPointerException:33 -
2021-02-26 21:35:08 INFO TourPlaner:15 - Tour Planer App gestartet
2021-02-26 21:35:08 ERROR PresenterMain:33 -
/C:/Users/georg/OneDrive/FH/Swe/Tourplaner/out/production/Tourplaner/tourplaner/ui/tourplaner.fxml:56
2021-02-26 21:35:08 INFO PostgresHelper:15 - User Table created
2021-02-26 21:35:10 ERROR PSQLException:33 - Connection to postgres.dergeorg.at:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-02-26 21:35:10 ERROR NullPointerException:33 -
2021-03-03 13:12:33 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-03 13:12:34 INFO PostgresHelper:15 - User Table created
2021-03-03 13:16:04 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-03 13:16:04 ERROR PresenterMain:33 -
/C:/Users/georg/Documents/FH/Tourplaner/out/production/Tourplaner/tourplaner/ui/tourplaner.fxml:163
2021-03-03 13:16:04 INFO PostgresHelper:15 - User Table created
2021-03-03 13:20:58 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-03 13:20:58 ERROR PresenterMain:33 -
/C:/Users/georg/Documents/FH/Tourplaner/out/production/Tourplaner/tourplaner/ui/tourplaner.fxml:163
2021-03-03 13:20:58 INFO PostgresHelper:15 - User Table created
2021-03-03 15:48:05 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-03 15:48:05 ERROR PresenterMain:33 -
/C:/Users/georg/Documents/FH/Tourplaner/out/production/Tourplaner/tourplaner/ui/tourplaner.fxml:163
2021-03-03 15:48:05 INFO PostgresHelper:15 - User Table created
2021-03-03 15:50:47 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-03 15:50:47 ERROR PresenterMain:33 -
/C:/Users/georg/Documents/FH/Tourplaner/out/production/Tourplaner/tourplaner/ui/tourplaner.fxml:163
2021-03-03 15:50:47 INFO PostgresHelper:15 - User Table created
2021-03-03 15:52:06 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-03 15:52:07 INFO PostgresHelper:15 - User Table created
2021-03-16 22:03:23 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-16 22:03:23 INFO PostgresHelper:15 - User Table created
2021-03-16 22:03:25 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-16 22:03:25 ERROR NullPointerException:33 -
2021-03-16 22:03:58 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-16 22:03:58 INFO PostgresHelper:15 - User Table created
2021-03-16 22:04:00 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-16 22:04:00 ERROR NullPointerException:33 -
2021-03-16 22:04:06 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-16 22:04:06 INFO PostgresHelper:15 - User Table created
2021-03-16 22:04:08 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-16 22:04:08 ERROR NullPointerException:33 -
2021-03-17 13:13:25 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 13:13:25 INFO PostgresHelper:15 - User Table created
2021-03-17 13:13:27 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 13:13:27 ERROR NullPointerException:33 -
2021-03-17 14:39:16 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 14:39:16 INFO PostgresHelper:15 - User Table created
2021-03-17 14:39:18 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 14:39:18 ERROR NullPointerException:33 -
2021-03-17 14:46:45 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 14:46:45 INFO PostgresHelper:15 - User Table created
2021-03-17 14:46:47 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 14:46:47 ERROR NullPointerException:33 -
2021-03-17 14:48:46 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 14:48:46 INFO PostgresHelper:15 - User Table created
2021-03-17 14:48:48 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 14:48:48 ERROR NullPointerException:33 -
2021-03-17 15:20:09 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 15:20:09 INFO PostgresHelper:15 - User Table created
2021-03-17 15:20:11 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 15:20:11 ERROR NullPointerException:33 -
2021-03-17 15:36:24 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
2021-03-17 15:38:41 ERROR ViewModel -> DelTour:33 - Keine Tour ausgewählt!
2021-03-17 16:02:24 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 16:02:24 INFO PostgresHelper:15 - User Table created
2021-03-17 16:02:26 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 16:02:26 ERROR NullPointerException:33 -
2021-03-17 16:03:16 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 16:03:16 INFO PostgresHelper:15 - User Table created
2021-03-17 16:03:18 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 16:03:18 ERROR NullPointerException:33 -
2021-03-17 16:04:18 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 16:04:18 INFO PostgresHelper:15 - User Table created
2021-03-17 16:04:20 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 16:04:20 ERROR NullPointerException:33 -
2021-03-17 16:04:26 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 16:04:26 INFO PostgresHelper:15 - User Table created
2021-03-17 16:04:28 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 16:04:28 ERROR NullPointerException:33 -
2021-03-17 16:06:47 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 16:06:47 INFO PostgresHelper:15 - User Table created
2021-03-17 16:06:49 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 16:06:49 ERROR NullPointerException:33 -
2021-03-17 16:06:55 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 16:06:55 INFO PostgresHelper:15 - User Table created
2021-03-17 16:06:57 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 16:06:57 ERROR NullPointerException:33 -
2021-03-17 17:02:33 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 17:02:33 INFO PostgresHelper:15 - User Table created
2021-03-17 17:02:35 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 17:02:35 ERROR NullPointerException:33 -
2021-03-17 17:02:38 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 17:02:38 INFO PostgresHelper:15 - User Table created
2021-03-17 17:02:40 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 17:02:40 ERROR NullPointerException:33 -
2021-03-17 17:08:23 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 17:08:23 INFO PostgresHelper:15 - User Table created
2021-03-17 17:08:25 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 17:08:25 ERROR NullPointerException:33 -
2021-03-17 17:08:31 INFO TourPlaner:15 - Tour Planer App gestartet
2021-03-17 17:08:31 INFO PostgresHelper:15 - User Table created
2021-03-17 17:08:33 ERROR PSQLException:33 - Connection to 192.168.1.116:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
2021-03-17 17:08:33 ERROR NullPointerException:33 -

BIN
logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

View File

@ -4,6 +4,7 @@ import javafx.application.Application;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.scene.Parent; import javafx.scene.Parent;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage; import javafx.stage.Stage;
import tourplaner.business.ConfigHelper; import tourplaner.business.ConfigHelper;
@ -21,6 +22,7 @@ public class Main extends Application {
public void start(Stage primaryStage) throws IOException { public void start(Stage primaryStage) throws IOException {
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.setScene(new Scene(root, 600, 600)); primaryStage.setScene(new Scene(root, 600, 600));
primaryStage.show(); primaryStage.show();
} }

View File

@ -11,6 +11,7 @@ import java.io.IOException;
public class ConfigHelper { public class ConfigHelper {
public static String standartConfig = "conf.ini"; // Config.ini befindet sich im Root Verzeichnis public static String standartConfig = "conf.ini"; // Config.ini befindet sich im Root Verzeichnis
public static String standartLangDe = "langde.ini"; // langde.ini befindet sich im Root Verzeichnis
/** /**
* Liest einen Int aus der Config aus * Liest einen Int aus der Config aus
@ -48,6 +49,16 @@ public class ConfigHelper {
return ini.get(sectionName, optionName, String.class); return ini.get(sectionName, optionName, String.class);
} }
/**
* Liest einen String aus der Lang datei aus
* Die Sprache wird im config file umgestellt
* @param optionName Options Name
* @return Den angeforderten String
*/
public static String getLangIniString(String optionName){
return ConfigHelper.getIniString(ConfigHelper.getStandartLangde(), ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "lang", "lang"),optionName);
}
/** /**
* Setzt ein String in der Config * Setzt ein String in der Config
* @param filename Speicherort * @param filename Speicherort
@ -92,4 +103,12 @@ public class ConfigHelper {
public static String getStandartConfig() { public static String getStandartConfig() {
return standartConfig; return standartConfig;
} }
/**
* Gibt den namen des standard langde file zurück
* @return Name des standard langde files
*/
public static String getStandartLangde() {
return standartLangDe;
}
} }

View File

@ -1,7 +1,5 @@
package tourplaner.data; package tourplaner.data;
import tourplaner.business.PostgresHelper;
import java.sql.Connection; import java.sql.Connection;
import java.sql.Statement; import java.sql.Statement;
import java.util.ArrayList; import java.util.ArrayList;

View File

@ -1,6 +1,9 @@
package tourplaner.business; package tourplaner.data;
import tourplaner.business.ConfigHelper;
import tourplaner.business.LogHelper;
import java.sql.Connection; import java.sql.Connection;
import java.sql.DriverManager; import java.sql.DriverManager;
import java.sql.Statement; import java.sql.Statement;

View File

@ -51,7 +51,7 @@
<?import javafx.scene.paint.Color?> <?import javafx.scene.paint.Color?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<VBox prefHeight="600.0" prefWidth="900.0" xmlns="http://javafx.com/javafx/15.0.1" 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.2" xmlns:fx="http://javafx.com/fxml/1" fx:controller="tourplaner.ui.TourplanerController">
<children> <children>
<MenuBar VBox.vgrow="NEVER"> <MenuBar VBox.vgrow="NEVER">
<menus> <menus>

View File

@ -1,17 +1,17 @@
package tourplaner.business; package tourplaner.ui;
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;
import javafx.scene.control.TextArea; import javafx.scene.control.TextArea;
import javafx.scene.image.Image;
import javafx.scene.layout.*; import javafx.scene.layout.*;
import javafx.scene.text.Text;
import javafx.stage.Stage; import javafx.stage.Stage;
import tourplaner.business.ConfigHelper;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.io.StringWriter; import java.io.StringWriter;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Date;
import java.util.Optional; import java.util.Optional;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
@ -72,7 +72,7 @@ public class AlertHelper {
PrintWriter pw = new PrintWriter(sw); PrintWriter pw = new PrintWriter(sw);
ex.printStackTrace(pw); ex.printStackTrace(pw);
String exceptionText = sw.toString(); String exceptionText = sw.toString();
Label label = new Label(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "exceptionstackheader")); Label label = new Label(ConfigHelper.getLangIniString("exceptionstackheader"));
TextArea textArea = new TextArea(exceptionText); TextArea textArea = new TextArea(exceptionText);
textArea.setEditable(false); textArea.setEditable(false);
textArea.setWrapText(true); textArea.setWrapText(true);
@ -100,7 +100,9 @@ public class AlertHelper {
alert.setTitle(title); alert.setTitle(title);
alert.setHeaderText(header); alert.setHeaderText(header);
alert.setContentText(msg); alert.setContentText(msg);
Stage stage = (Stage) alert.getDialogPane().getScene().getWindow();
stage.getIcons().add(
new Image("file:"+ ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "logo")));
alert.showAndWait(); alert.showAndWait();
} }
@ -112,18 +114,39 @@ public class AlertHelper {
* @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 returnStr = "";
while (returnStr.isEmpty()) {
Optional<String> result = inputHelper(title, header, msg);
AtomicReference<String> returnText = new AtomicReference<>("");
result.ifPresent(returnText::set);
returnStr = returnText.get();
if (returnStr.isEmpty()) {
AlertHelper.warn(ConfigHelper.getLangIniString("tournametitle"),
ConfigHelper.getLangIniString("achtung"),
ConfigHelper.getLangIniString("keintextimfeld"));
}
}
return returnStr;
}
/**
* Erstellt einen Text Input Dialog
* @param title Title des Dialogs
* @param header Header des Dialogs
* @param msg Nachricht des Dialogs
* @return Result des Inputs
*/
private static Optional<String> inputHelper(String title, String header, String msg){
TextInputDialog dialog = new TextInputDialog(); TextInputDialog dialog = new TextInputDialog();
dialog.setTitle(title); dialog.setTitle(title);
dialog.setHeaderText(header); dialog.setHeaderText(header);
dialog.setContentText(msg); dialog.setContentText(msg);
Optional<String> result = dialog.showAndWait(); Stage stage = (Stage) dialog.getDialogPane().getScene().getWindow();
AtomicReference<String> returnText = new AtomicReference<>(""); stage.getIcons().add(
result.ifPresent(returnText::set); new Image("file:"+ ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "logo")));
if(!returnText.get().isEmpty()){
return returnText.get(); return dialog.showAndWait();
}else{
return null;
}
} }
/** /**
@ -134,22 +157,27 @@ public class AlertHelper {
* @return -1 bei error sonst ein Int * @return -1 bei error sonst ein Int
*/ */
public static int inputNumber(String title, String header, String msg) { public static int inputNumber(String title, String header, String msg) {
TextInputDialog dialog = new TextInputDialog(); int returnInt = -2;
dialog.setTitle(title); while (returnInt <= 0 ) {
dialog.setHeaderText(header); Optional<String> result = inputHelper(title, header, msg);
dialog.setContentText(msg);
Optional<String> result = dialog.showAndWait();
AtomicReference<Integer> returnText = new AtomicReference<Integer>(-1); AtomicReference<Integer> returnText = new AtomicReference<Integer>(-1);
result.ifPresent(s -> { result.ifPresent(s -> {
try { try {
int resultInt = Integer.parseInt(result.get()); int resultInt = Integer.parseInt(result.get());
returnText.set(resultInt); returnText.set(resultInt);
}catch (NumberFormatException e){ if (resultInt < 0){
AlertHelper.warn(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "achtung"), "Bitte nur Zahlen eingeben!", "Bitte geben sie nur Zahlen von 0 - 10 an!"); AlertHelper.warn(title, ConfigHelper.getLangIniString("achtung"), ConfigHelper.getLangIniString("nurpositivezahlen"));
}
} catch (NumberFormatException e) {
AlertHelper.warn(title, ConfigHelper.getLangIniString("achtung"), ConfigHelper.getLangIniString("nurzahlen"));
returnText.set(-1); returnText.set(-1);
} }
}); });
return returnText.get(); returnInt = returnText.get();
}
return returnInt;
} }
/** /**
@ -160,6 +188,8 @@ public class AlertHelper {
public static LocalDate datePicker(String title){ public static LocalDate datePicker(String title){
final DatePicker datePicker = new DatePicker(LocalDate.now()); final DatePicker datePicker = new DatePicker(LocalDate.now());
final Stage stage = new Stage(); final Stage stage = new Stage();
stage.getIcons().add(
new Image("file:"+ ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "logo")));
AtomicReference<LocalDate> selectedDate = new AtomicReference<>(); AtomicReference<LocalDate> selectedDate = new AtomicReference<>();
datePicker.setOnAction(event -> { datePicker.setOnAction(event -> {
LocalDate date = datePicker.getValue(); LocalDate date = datePicker.getValue();

View File

@ -9,7 +9,6 @@ import javafx.scene.control.Label;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory; import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.input.MouseEvent; import javafx.scene.input.MouseEvent;
import tourplaner.business.AlertHelper;
import tourplaner.business.ConfigHelper; import tourplaner.business.ConfigHelper;
import tourplaner.business.LogHelper; import tourplaner.business.LogHelper;
import tourplaner.object.Log; import tourplaner.object.Log;
@ -28,7 +27,7 @@ import java.util.concurrent.atomic.AtomicReference;
public class TourplanerController implements Initializable { public class TourplanerController implements Initializable {
//VM //VM
public ViewModel viewModel = new ViewModel(); private final ViewModel viewModel = new ViewModel();
//Tour list -> links //Tour list -> links
public ListView<String> TourListView = new ListView<>(); public ListView<String> TourListView = new ListView<>();
//Tabs zu Tour -> rechts oben //Tabs zu Tour -> rechts oben
@ -47,7 +46,7 @@ public class TourplanerController implements Initializable {
*/ */
@FXML @FXML
private void gitWebBrowser(){ private void gitWebBrowser(){
openBrowser(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "hilfe", "gitrepo"), "Git"); this.viewModel.gitWebBrowser();
} }
/** /**
@ -56,7 +55,7 @@ public class TourplanerController implements Initializable {
*/ */
@FXML @FXML
private void javaDocBrowser(){ private void javaDocBrowser(){
openBrowser(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "hilfe", "javadoc"), "JavaDoc"); this.viewModel.javaDocBrowser();
} }
/** /**
@ -65,27 +64,10 @@ public class TourplanerController implements Initializable {
*/ */
@FXML @FXML
private void doxygenDocBrowser(){ private void doxygenDocBrowser(){
openBrowser(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "hilfe", "doxygendoc"), "Doxygen"); this.viewModel.doxygenDocBrowser();
} }
/**
* Öffnet einen link im Standart Browser
* @param uriString
* @param appname
*/
private void openBrowser(String uriString, String appname){
Desktop desktop = java.awt.Desktop.getDesktop();
try {
URI oURL = new URI(
uriString);
desktop.browse(oURL);
} catch (URISyntaxException | IOException e) {
LogHelper.error(e.getMessage(), ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "openbrowsererror") + appname);
AlertHelper.exerror(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "browserexception"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "openbrowsererror") + appname,
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "browserexceptionmsg"), e);
}
}
/** /**
* Wird gestartet wenn eine Tour in der Tour listView ausgewählt wird * Wird gestartet wenn eine Tour in der Tour listView ausgewählt wird
@ -105,7 +87,7 @@ public class TourplanerController implements Initializable {
nameCol.setCellValueFactory(new PropertyValueFactory<Tour, String>("name")); nameCol.setCellValueFactory(new PropertyValueFactory<Tour, String>("name"));
//Log anzeigen //Log anzeigen
logTableView.setPlaceholder(new Label( ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "keinelogsvorhanden"))); logTableView.setPlaceholder(new Label( ConfigHelper.getLangIniString("keinelogsvorhanden")));
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"));
@ -137,9 +119,9 @@ public class TourplanerController implements Initializable {
@FXML @FXML
private void delTour(){ private void delTour(){
this.beschreibungTableView.getItems().removeIf(s -> true); //löscht alles aus der tabelle this.beschreibungTableView.getItems().removeIf(s -> true); //löscht alles aus der tabelle
this.titleTextView.setText(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "keinetourselected")); this.titleTextView.setText(ConfigHelper.getLangIniString("keinetourselected"));
this.viewModel.delTour(); this.viewModel.delTour();
logTableView.setPlaceholder(new Label( ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "keinetourselected"))); logTableView.setPlaceholder(new Label( ConfigHelper.getLangIniString("keinetourselected")));
} }
/** /**
@ -148,14 +130,7 @@ public class TourplanerController implements Initializable {
*/ */
@FXML @FXML
private void suche(){ private void suche(){
String sucheInput = this.sucheInput.getText(); this.viewModel.suche(this.sucheInput.getText());
if(sucheInput.isEmpty()){
AlertHelper.warn(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "achtung"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "suchfeldleer"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "suchtextzuerst"));
}else {
this.viewModel.suche(sucheInput);
}
} }
/** /**
@ -164,56 +139,13 @@ public class TourplanerController implements Initializable {
*/ */
@FXML @FXML
private void addLog(){ private void addLog(){
Tour selectedTour = this.viewModel.getSelectedTour(); this.viewModel.addLog();
if (selectedTour == null){
AlertHelper.warn(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "achtung"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "keinetourselected"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "logtournotselectedmsg"));
}else {
ObservableList<Tour> tourData = this.viewModel.getTourData();
tourData.forEach(s -> {
if (s.getName().equals(selectedTour.getName())) {
ObservableList<Log> logData = this.viewModel.getLogData();
AtomicReference<String> newId = new AtomicReference<>();
newId.set(UUID.randomUUID().toString());
logData.forEach(ss -> {
if (ss.getId().equals(newId.get())) {
newId.set(UUID.randomUUID().toString());
}
});
double neueDauer = -1;
double neueStrecke = -1;
LocalDate neuesDatum = null;
while (neuesDatum == null) {
neuesDatum = AlertHelper.datePicker(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "datum"));
}
while (neueDauer == -1) {
neueDauer = AlertHelper.inputNumber(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "dauer"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "dauermsg"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "dauer") +
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "doppelpunkt"));
}
while (neueStrecke == -1) {
neueStrecke = AlertHelper.inputNumber(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "strecke"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "streckemsg"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "strecke") +
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "doppelpunkt"));
}
Log newLog = new Log(newId.get(), neueDauer + "", neuesDatum, neueStrecke);
logData.add(newLog);
s.addLog(newLog);
}
});
}
} }
@FXML @FXML
private void delLog(){ private void delLog(){
Log selectedLog = this.viewModel.getSelectedLog(); this.viewModel.delLog();
if(selectedLog != null) {
this.viewModel.delLog(selectedLog.getId());
}
} }
/** /**
@ -222,9 +154,7 @@ public class TourplanerController implements Initializable {
*/ */
@FXML @FXML
private void logItemSelected(MouseEvent mouseEvent){ private void logItemSelected(MouseEvent mouseEvent){
String selectedItem = logTableView.getSelectionModel().getSelectedItem().getId(); this.viewModel.selectLog(logTableView.getSelectionModel().getSelectedItem().getId());
this.viewModel.selectLog(selectedItem);
System.out.println(selectedItem);
} }
/** /**
@ -239,10 +169,10 @@ public class TourplanerController implements Initializable {
TourListView.setOrientation(Orientation.VERTICAL); TourListView.setOrientation(Orientation.VERTICAL);
TourListView.setItems(this.viewModel.getTourNamen()); TourListView.setItems(this.viewModel.getTourNamen());
//Tabs zu Tour -> rechts oben //Tabs zu Tour -> rechts oben
beschreibungTableView.setPlaceholder(new Label( ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "keinetourselected"))); beschreibungTableView.setPlaceholder(new Label( ConfigHelper.getLangIniString("keinetourselected")));
titleTextView.setText( ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "keinetourselected")); titleTextView.setText( ConfigHelper.getLangIniString("keinetourselected"));
//Log -> rechts unten //Log -> rechts unten
logTableView.setPlaceholder(new Label( ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "keinetourselected"))); logTableView.setPlaceholder(new Label( ConfigHelper.getLangIniString("keinetourselected")));
} }
@ -250,10 +180,8 @@ public class TourplanerController implements Initializable {
* Funktion für noch nicht implementierte sachen wie im Menu der 'Bearbeiten' und 'Optionen' Knopf * Funktion für noch nicht implementierte sachen wie im Menu der 'Bearbeiten' und 'Optionen' Knopf
*/ */
@FXML @FXML
public void nimpButton(){ private void nimpButton(){
AlertHelper.inform(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "achtung"), this.viewModel.nimpButton();
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "fktnichtimplementiert"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "vergessenodernochnichtsoweit"));
} }
} }

View File

@ -2,13 +2,19 @@ package tourplaner.viewmodels;
import javafx.collections.FXCollections; import javafx.collections.FXCollections;
import javafx.collections.ObservableList; import javafx.collections.ObservableList;
import tourplaner.business.AlertHelper; import javafx.fxml.FXML;
import tourplaner.ui.AlertHelper;
import tourplaner.business.ConfigHelper; import tourplaner.business.ConfigHelper;
import tourplaner.business.LogHelper; import tourplaner.business.LogHelper;
import tourplaner.object.Log; import tourplaner.object.Log;
import tourplaner.object.Tour; import tourplaner.object.Tour;
import java.util.concurrent.atomic.AtomicInteger; import java.awt.*;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.time.LocalDate;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
public class ViewModel { public class ViewModel {
@ -22,32 +28,74 @@ public class ViewModel {
private Log selectedLog; private Log selectedLog;
/**
* Fügt einen Log eintrag zu einer Tour hinzu.
* Ist keine Tour ausgewählt, dann kommt eine Warnung an den User!
*/
@FXML
public void addLog(){
if (this.selectedTour == null){
AlertHelper.warn(ConfigHelper.getLangIniString("achtung"),
ConfigHelper.getLangIniString("keinetourselected"),
ConfigHelper.getLangIniString("logtournotselectedmsg"));
}else {
this.tourData.forEach(s -> {
if (s.getName().equals(this.selectedTour.getName())) {
AtomicReference<String> newId = new AtomicReference<>();
newId.set(UUID.randomUUID().toString());
this.logData.forEach(ss -> {
if (ss.getId().equals(newId.get())) {
newId.set(UUID.randomUUID().toString());
}
});
LocalDate neuesDatum = null;
while (neuesDatum == null) {
neuesDatum = AlertHelper.datePicker(ConfigHelper.getLangIniString("datum"));
}
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);
}
});
}
}
/** /**
* Fügt eine neue Tour hinzu * Fügt eine neue Tour hinzu
*/ */
public void addTour(){ public void addTour(){
while(this.neueTourName == null) { while(this.neueTourName == null) {
this.neueTourName = AlertHelper.inputText(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "tournametitle"), this.neueTourName = AlertHelper.inputText(ConfigHelper.getLangIniString("tournametitle"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "tournameheader"), ConfigHelper.getLangIniString("tournameheader"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "tournamemsg")); ConfigHelper.getLangIniString("tournamemsg"));
if (getTour(this.neueTourName) != null) { if (getTour(this.neueTourName) != null) {
AlertHelper.warn(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "achtung"), AlertHelper.warn(ConfigHelper.getLangIniString("achtung"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "namevergebenheader"), ConfigHelper.getLangIniString("namevergebenheader"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "namevergebenmsg1") ConfigHelper.getLangIniString("namevergebenmsg1")
+ this.neueTourName + + this.neueTourName +
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "namevergebenmsg2")); ConfigHelper.getLangIniString("namevergebenmsg2"));
this.neueTourName = null; this.neueTourName = null;
} }
} }
while(this.neueTourStart == null){ while(this.neueTourStart == null){
this.neueTourStart = AlertHelper.inputText(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "startpunkttitle"), this.neueTourStart = AlertHelper.inputText(ConfigHelper.getLangIniString("startpunkttitle"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "startpunktheader"), ConfigHelper.getLangIniString("startpunktheader"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "startpunktmsg")); ConfigHelper.getLangIniString("startpunktmsg"));
} }
while(this.neueTourZiel == null){ while(this.neueTourZiel == null){
this.neueTourZiel = AlertHelper.inputText(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "zielpunkttitle"), this.neueTourZiel = AlertHelper.inputText(ConfigHelper.getLangIniString("zielpunkttitle"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "zielpunktheader"), ConfigHelper.getLangIniString("zielpunktheader"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "zielpunktmsg")); ConfigHelper.getLangIniString("zielpunktmsg"));
} }
if (getTour(this.neueTourName) == null) { if (getTour(this.neueTourName) == null) {
tourData.add(new Tour(this.neueTourName, "TBD", "TBD", 0, this.neueTourStart, this.neueTourZiel)); tourData.add(new Tour(this.neueTourName, "TBD", "TBD", 0, this.neueTourStart, this.neueTourZiel));
@ -59,16 +107,16 @@ public class ViewModel {
} }
/** /**
* Entfernt ein Log anhand dessen Id * Entfernt ein Log anhand des selectierten Logs
* @param id Id des Logs welches entfernt werden soll
*/ */
public void delLog(String id){ public void delLog(){
this.logData.removeIf(s -> s.getId().equals(id)); if(this.selectedLog != null) {
this.logData.removeIf(s -> s.getId().equals(this.selectedLog.getId()));
AtomicReference<Tour> tourToEdit = new AtomicReference<>(); AtomicReference<Tour> tourToEdit = new AtomicReference<>();
this.tourData.forEach(s -> { this.tourData.forEach(s -> {
if (s.getLogs() != null) { if (s.getLogs() != null) {
s.getLogs().forEach(ss -> { s.getLogs().forEach(ss -> {
if (ss.getId().equals(id)) { if (ss.getId().equals(this.selectedLog.getId())) {
tourToEdit.set(s); tourToEdit.set(s);
} }
}); });
@ -77,9 +125,15 @@ public class ViewModel {
if (tourToEdit.get() != null){ if (tourToEdit.get() != null){
Tour toEdit = tourToEdit.get(); Tour toEdit = tourToEdit.get();
toEdit.delLog(id); toEdit.delLog(this.selectedLog.getId());
this.tourData.removeIf(s -> s.getName().equals(toEdit.getName())); this.tourData.removeIf(s -> s.getName().equals(toEdit.getName()));
this.tourData.add(toEdit); this.tourData.add(toEdit);
this.selectedLog = null;
}
}else{
AlertHelper.warn(ConfigHelper.getLangIniString("achtung"),
ConfigHelper.getLangIniString("keinetourselected"),
ConfigHelper.getLangIniString("deltournoselectmsg"));
} }
} }
@ -201,19 +255,78 @@ public class ViewModel {
tourData.removeIf(s -> s.getName().equals(tourname)); tourData.removeIf(s -> s.getName().equals(tourname));
tourNamen.removeIf(s -> s.equals(tourname)); tourNamen.removeIf(s -> s.equals(tourname));
logData.removeIf(s -> true); logData.removeIf(s -> true);
setSelectedTour(null);
}catch (NullPointerException e){ }catch (NullPointerException e){
LogHelper.error(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "keinetourselected"), LogHelper.error(ConfigHelper.getLangIniString("keinetourselected"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "deltournoselect")); ConfigHelper.getLangIniString("deltournoselect"));
AlertHelper.warn(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "achtung"), AlertHelper.warn(ConfigHelper.getLangIniString("achtung"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "keinetourselected"), ConfigHelper.getLangIniString("keinetourselected"),
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "deltournoselectmsg")); ConfigHelper.getLangIniString("deltournoselectmsg"));
} }
} }
/** /**
* Sucht eine Tour * Sucht eine Tour
* @param sucheInput Text nach dem gesucht werden soll
*/ */
public void suche(String suchString){ public void suche(String sucheInput){
if(sucheInput.isEmpty()){
AlertHelper.warn(ConfigHelper.getLangIniString("achtung"),
ConfigHelper.getLangIniString("suchfeldleer"),
ConfigHelper.getLangIniString("suchtextzuerst"));
}
// TODO: 19.03.2021 Suchlogik
}
/**
* Öffnet github im standart browser
*
*/
public void gitWebBrowser(){
openBrowser(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "hilfe", "gitrepo"), "Git");
}
/**
* Öffnet Java Doc im standart browser
*
*/
public void javaDocBrowser(){
openBrowser(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "hilfe", "javadoc"), "JavaDoc");
}
/**
* Öffnet Doxygen Doc im standart browser
*
*/
public void doxygenDocBrowser(){
openBrowser(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "hilfe", "doxygendoc"), "Doxygen");
}
/**
* Öffnet einen link im Standart Browser
* @param uriString
* @param appname
*/
private void openBrowser(String uriString, String appname){
Desktop desktop = java.awt.Desktop.getDesktop();
try {
URI oURL = new URI(
uriString);
desktop.browse(oURL);
} catch (URISyntaxException | IOException e) {
LogHelper.error(e.getMessage(), ConfigHelper.getLangIniString("openbrowsererror") + appname);
AlertHelper.exerror(ConfigHelper.getLangIniString("browserexception"),
ConfigHelper.getLangIniString("openbrowsererror") + appname,
ConfigHelper.getLangIniString("browserexceptionmsg"), e);
}
}
/**
* Funktion für noch nicht implementierte sachen wie im Menu der 'Bearbeiten' und 'Optionen' Knopf
*/
public void nimpButton(){
AlertHelper.inform(ConfigHelper.getLangIniString("achtung"),
ConfigHelper.getLangIniString("fktnichtimplementiert"),
ConfigHelper.getLangIniString("vergessenodernochnichtsoweit"));
} }
} }