Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
e5c9e8dbf0 | |||
a2164dc303 | |||
1ff4a2cd6c | |||
c5d51edf57 | |||
526c47a643 | |||
2360566063 | |||
0c8ccce950 |
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
.idea/
|
||||||
|
out/
|
||||||
|
conf.ini
|
@ -0,0 +1,8 @@
|
|||||||
|
# Tourplaner
|
||||||
|
|
||||||
|
# Config
|
||||||
|
* DB informationen müssen in das config.ini.sample unter [db] eingetragen werden
|
||||||
|
* Datei muss in config.ini umbenannt werden
|
||||||
|
* [langde] beinhaltet alle Deutschen Texte der Gui
|
||||||
|
* [start] beinhaltet den Title und infos die beim start verabeitet werden
|
||||||
|
* [hilfe] beinhaltet die Links zu den Hilfeseiten
|
@ -1,5 +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$">
|
||||||
@ -8,10 +17,9 @@
|
|||||||
<orderEntry type="jdk" jdkName="11" jdkType="JavaSDK" />
|
<orderEntry type="jdk" jdkName="11" jdkType="JavaSDK" />
|
||||||
<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="log4j:log4j:1.2.17" level="project" />
|
|
||||||
<orderEntry type="library" name="junit:junit:4.13.2" level="project" />
|
<orderEntry type="library" name="junit:junit:4.13.2" level="project" />
|
||||||
<orderEntry type="library" name="org.cfg4j:cfg4j-core:4.4.1" level="project" />
|
<orderEntry type="library" name="org.slf4j:slf4j-log4j12:1.7.12" level="project" />
|
||||||
<orderEntry type="library" name="org.cfg4j:cfg4j:3.3.2" level="project" />
|
<orderEntry type="library" name="org.ini4j:ini4j:0.5.4" level="project" />
|
||||||
<orderEntry type="library" name="org.springframework:spring-beans:4.0.0.RELEASE" level="project" />
|
<orderEntry type="library" name="org.postgresql:postgresql:42.2.19" level="project" />
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
49
conf.ini.sample
Normal file
49
conf.ini.sample
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
[start]
|
||||||
|
message = Tour Planer App gestartet
|
||||||
|
|
||||||
|
[db]
|
||||||
|
dbname = tourplaner
|
||||||
|
url =
|
||||||
|
port = 5432
|
||||||
|
user =
|
||||||
|
pw =
|
||||||
|
|
||||||
|
[hilfe]
|
||||||
|
gitrepo = https://git.dergeorg.at/dergeorg/tourplaner
|
||||||
|
doxygendoc = 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!
|
@ -5,14 +5,14 @@
|
|||||||
<simplesect>
|
<simplesect>
|
||||||
<title>Classes </title>
|
<title>Classes </title>
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem><para>class <link linkend="_classtourplaner_1_1model_1_1_tour">tourplaner.model.Tour</link></para>
|
<listitem><para>class <link linkend="_classtourplaner_1_1model_1_1_tour">tourplaner.object.Tour</link></para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</simplesect>
|
</simplesect>
|
||||||
<simplesect>
|
<simplesect>
|
||||||
<title>Packages </title>
|
<title>Packages </title>
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
<listitem><para>package <link linkend="_namespacetourplaner_1_1model">tourplaner.model</link></para>
|
<listitem><para>package <link linkend="_namespacetourplaner_1_1model">tourplaner.object</link></para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
</simplesect>
|
</simplesect>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
|
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
|
||||||
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_annotated" xml:lang="en-US">
|
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_annotated" xml:lang="en-US">
|
||||||
<title>Class List</title>
|
<title>Class List</title>
|
||||||
Here are the classes, structs, unions and interfaces with brief descriptions:<link linkend="_classtourplaner_1_1data_1_1_db_connect">tourplaner.data.DbConnect</link><link linkend="_classtourplaner_1_1business_1_1_log_helper">tourplaner.business.LogHelper</link><link linkend="_classtourplaner_1_1_main">tourplaner.Main</link><link linkend="_classtourplaner_1_1ui_1_1_presenter_main">tourplaner.ui.PresenterMain</link><link linkend="_classtourplaner_1_1model_1_1_tour">tourplaner.model.Tour</link><link linkend="_classtourplaner_1_1business_1_1_tour_planer">tourplaner.business.TourPlaner</link></section>
|
Here are the classes, structs, unions and interfaces with brief descriptions:<link linkend="_classtourplaner_1_1data_1_1_db_connect">tourplaner.data.DbConnect</link><link linkend="_classtourplaner_1_1business_1_1_log_helper">tourplaner.business.LogHelper</link><link linkend="_classtourplaner_1_1_main">tourplaner.Main</link><link linkend="_classtourplaner_1_1ui_1_1_presenter_main">tourplaner.ui.PresenterMain</link><link linkend="_classtourplaner_1_1model_1_1_tour">tourplaner.object.Tour</link><link linkend="_classtourplaner_1_1business_1_1_tour_planer">tourplaner.business.TourPlaner</link></section>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
|
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
|
||||||
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_classtourplaner_1_1model_1_1_tour" xml:lang="en-US">
|
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_classtourplaner_1_1model_1_1_tour" xml:lang="en-US">
|
||||||
<title>tourplaner.model.Tour Class Reference</title>
|
<title>tourplaner.object.Tour Class Reference</title>
|
||||||
<indexterm><primary>tourplaner.model.Tour</primary></indexterm>
|
<indexterm><primary>tourplaner.object.Tour</primary></indexterm>
|
||||||
<section>
|
<section>
|
||||||
<title>Detailed Description</title>
|
<title>Detailed Description</title>
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
|
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
|
||||||
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_namespacetourplaner_1_1model" xml:lang="en-US">
|
<section xmlns="http://docbook.org/ns/docbook" version="5.0" xmlns:xlink="http://www.w3.org/1999/xlink" xml:id="_namespacetourplaner_1_1model" xml:lang="en-US">
|
||||||
<title>Package tourplaner.model</title>
|
<title>Package tourplaner.object</title>
|
||||||
<indexterm><primary>tourplaner.model</primary></indexterm>
|
<indexterm><primary>tourplaner.object</primary></indexterm>
|
||||||
<simplesect>
|
<simplesect>
|
||||||
<title>Classes </title>
|
<title>Classes </title>
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
|
@ -93,12 +93,12 @@ $(document).ready(function(){initNavTree('_tour_8java.html',''); initResizable()
|
|||||||
<table class="memberdecls">
|
<table class="memberdecls">
|
||||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
|
||||||
Classes</h2></td></tr>
|
Classes</h2></td></tr>
|
||||||
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classtourplaner_1_1model_1_1_tour.html">tourplaner.model.Tour</a></td></tr>
|
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="classtourplaner_1_1model_1_1_tour.html">tourplaner.object.Tour</a></td></tr>
|
||||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||||
</table><table class="memberdecls">
|
</table><table class="memberdecls">
|
||||||
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
|
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
|
||||||
Packages</h2></td></tr>
|
Packages</h2></td></tr>
|
||||||
<tr class="memitem:namespacetourplaner_1_1model"><td class="memItemLeft" align="right" valign="top">package  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetourplaner_1_1model.html">tourplaner.model</a></td></tr>
|
<tr class="memitem:namespacetourplaner_1_1model"><td class="memItemLeft" align="right" valign="top">package  </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacetourplaner_1_1model.html">tourplaner.object</a></td></tr>
|
||||||
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
|
||||||
</table>
|
</table>
|
||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
|
@ -103,7 +103,7 @@ $(document).ready(function(){initNavTree('classes.html',''); initResizable(); })
|
|||||||
<dd><a class="el" href="classtourplaner_1_1ui_1_1_presenter_main.html">PresenterMain</a> (<a class="el" href="namespacetourplaner_1_1ui.html">tourplaner.ui</a>)</dd></dl>
|
<dd><a class="el" href="classtourplaner_1_1ui_1_1_presenter_main.html">PresenterMain</a> (<a class="el" href="namespacetourplaner_1_1ui.html">tourplaner.ui</a>)</dd></dl>
|
||||||
<dl class="classindex even">
|
<dl class="classindex even">
|
||||||
<dt class="alphachar"><a name="letter_T">T</a></dt>
|
<dt class="alphachar"><a name="letter_T">T</a></dt>
|
||||||
<dd><a class="el" href="classtourplaner_1_1model_1_1_tour.html">Tour</a> (<a class="el" href="namespacetourplaner_1_1model.html">tourplaner.model</a>)</dd><dd><a class="el" href="classtourplaner_1_1business_1_1_tour_planer.html">TourPlaner</a> (<a class="el" href="namespacetourplaner_1_1business.html">tourplaner.business</a>)</dd></dl>
|
<dd><a class="el" href="classtourplaner_1_1model_1_1_tour.html">Tour</a> (<a class="el" href="namespacetourplaner_1_1model.html">tourplaner.object</a>)</dd><dd><a class="el" href="classtourplaner_1_1business_1_1_tour_planer.html">TourPlaner</a> (<a class="el" href="namespacetourplaner_1_1business.html">tourplaner.business</a>)</dd></dl>
|
||||||
</div>
|
</div>
|
||||||
</div><!-- contents -->
|
</div><!-- contents -->
|
||||||
</div><!-- doc-content -->
|
</div><!-- doc-content -->
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||||
<meta name="generator" content="Doxygen 1.9.1"/>
|
<meta name="generator" content="Doxygen 1.9.1"/>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||||
<title>Tourplaner: tourplaner.model.Tour Class Reference</title>
|
<title>Tourplaner: tourplaner.object.Tour Class Reference</title>
|
||||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||||
<script type="text/javascript" src="jquery.js"></script>
|
<script type="text/javascript" src="jquery.js"></script>
|
||||||
<script type="text/javascript" src="dynsections.js"></script>
|
<script type="text/javascript" src="dynsections.js"></script>
|
||||||
@ -84,7 +84,7 @@ $(document).ready(function(){initNavTree('classtourplaner_1_1model_1_1_tour.html
|
|||||||
|
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div class="headertitle">
|
<div class="headertitle">
|
||||||
<div class="title">tourplaner.model.Tour Class Reference</div> </div>
|
<div class="title">tourplaner.object.Tour Class Reference</div> </div>
|
||||||
</div><!--header-->
|
</div><!--header-->
|
||||||
<div class="contents">
|
<div class="contents">
|
||||||
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
||||||
|
@ -92,7 +92,7 @@ $(document).ready(function(){initNavTree('hierarchy.html',''); initResizable();
|
|||||||
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1data_1_1_db_connect.html" target="_self">tourplaner.data.DbConnect</a></td><td class="desc"></td></tr>
|
<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1data_1_1_db_connect.html" target="_self">tourplaner.data.DbConnect</a></td><td class="desc"></td></tr>
|
||||||
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1business_1_1_log_helper.html" target="_self">tourplaner.business.LogHelper</a></td><td class="desc"></td></tr>
|
<tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1business_1_1_log_helper.html" target="_self">tourplaner.business.LogHelper</a></td><td class="desc"></td></tr>
|
||||||
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1ui_1_1_presenter_main.html" target="_self">tourplaner.ui.PresenterMain</a></td><td class="desc"></td></tr>
|
<tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1ui_1_1_presenter_main.html" target="_self">tourplaner.ui.PresenterMain</a></td><td class="desc"></td></tr>
|
||||||
<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1model_1_1_tour.html" target="_self">tourplaner.model.Tour</a></td><td class="desc"></td></tr>
|
<tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1model_1_1_tour.html" target="_self">tourplaner.object.Tour</a></td><td class="desc"></td></tr>
|
||||||
<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1business_1_1_tour_planer.html" target="_self">tourplaner.business.TourPlaner</a></td><td class="desc"></td></tr>
|
<tr id="row_4_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1business_1_1_tour_planer.html" target="_self">tourplaner.business.TourPlaner</a></td><td class="desc"></td></tr>
|
||||||
<tr id="row_5_"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_5_" class="arrow" onclick="toggleFolder('5_')">▼</span><span class="icona"><span class="icon">C</span></span><b>Application</b></td><td class="desc"></td></tr>
|
<tr id="row_5_"><td class="entry"><span style="width:0px;display:inline-block;"> </span><span id="arr_5_" class="arrow" onclick="toggleFolder('5_')">▼</span><span class="icona"><span class="icon">C</span></span><b>Application</b></td><td class="desc"></td></tr>
|
||||||
<tr id="row_5_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1_main.html" target="_self">tourplaner.Main</a></td><td class="desc"></td></tr>
|
<tr id="row_5_0_" class="even"><td class="entry"><span style="width:32px;display:inline-block;"> </span><span class="icona"><span class="icon">C</span></span><a class="el" href="classtourplaner_1_1_main.html" target="_self">tourplaner.Main</a></td><td class="desc"></td></tr>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||||
<meta name="generator" content="Doxygen 1.9.1"/>
|
<meta name="generator" content="Doxygen 1.9.1"/>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||||
<title>Tourplaner: Package tourplaner.model</title>
|
<title>Tourplaner: Package tourplaner.object</title>
|
||||||
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
<link href="tabs.css" rel="stylesheet" type="text/css"/>
|
||||||
<script type="text/javascript" src="jquery.js"></script>
|
<script type="text/javascript" src="jquery.js"></script>
|
||||||
<script type="text/javascript" src="dynsections.js"></script>
|
<script type="text/javascript" src="dynsections.js"></script>
|
||||||
@ -86,7 +86,7 @@ $(document).ready(function(){initNavTree('namespacetourplaner_1_1model.html','')
|
|||||||
<div class="summary">
|
<div class="summary">
|
||||||
<a href="#nested-classes">Classes</a> </div>
|
<a href="#nested-classes">Classes</a> </div>
|
||||||
<div class="headertitle">
|
<div class="headertitle">
|
||||||
<div class="title">Package tourplaner.model</div> </div>
|
<div class="title">Package tourplaner.object</div> </div>
|
||||||
</div><!--header-->
|
</div><!--header-->
|
||||||
<div class="contents">
|
<div class="contents">
|
||||||
<table class="memberdecls">
|
<table class="memberdecls">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
\hypertarget{classtourplaner_1_1model_1_1_tour}{}\doxysection{tourplaner.\+model.\+Tour Class Reference}
|
\hypertarget{classtourplaner_1_1model_1_1_tour}{}\doxysection{tourplaner.\+model.\+Tour Class Reference}
|
||||||
\label{classtourplaner_1_1model_1_1_tour}\index{tourplaner.model.Tour@{tourplaner.model.Tour}}
|
\label{classtourplaner_1_1model_1_1_tour}\index{tourplaner.object.Tour@{tourplaner.object.Tour}}
|
||||||
|
|
||||||
|
|
||||||
\doxysubsection{Detailed Description}
|
\doxysubsection{Detailed Description}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
\hypertarget{namespacetourplaner_1_1model}{}\doxysection{Package tourplaner.\+model}
|
\hypertarget{namespacetourplaner_1_1model}{}\doxysection{Package tourplaner.\+model}
|
||||||
\label{namespacetourplaner_1_1model}\index{tourplaner.model@{tourplaner.model}}
|
\label{namespacetourplaner_1_1model}\index{tourplaner.object@{tourplaner.object}}
|
||||||
\doxysubsection*{Classes}
|
\doxysubsection*{Classes}
|
||||||
\begin{DoxyCompactItemize}
|
\begin{DoxyCompactItemize}
|
||||||
\item
|
\item
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
.TH "tourplaner.model" 3 "Thu Feb 25 2021" "Version 0.0.2" "Tourplaner" \" -*- nroff -*-
|
.TH "tourplaner.object" 3 "Thu Feb 25 2021" "Version 0.0.2" "Tourplaner" \" -*- nroff -*-
|
||||||
.ad l
|
.ad l
|
||||||
.nh
|
.nh
|
||||||
.SH NAME
|
.SH NAME
|
||||||
tourplaner.model
|
tourplaner.object
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.br
|
.br
|
||||||
.PP
|
.PP
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
.TH "tourplaner.model.Tour" 3 "Thu Feb 25 2021" "Version 0.0.2" "Tourplaner" \" -*- nroff -*-
|
.TH "tourplaner.object.Tour" 3 "Thu Feb 25 2021" "Version 0.0.2" "Tourplaner" \" -*- nroff -*-
|
||||||
.ad l
|
.ad l
|
||||||
.nh
|
.nh
|
||||||
.SH NAME
|
.SH NAME
|
||||||
tourplaner.model.Tour
|
tourplaner.object.Tour
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.br
|
.br
|
||||||
.PP
|
.PP
|
||||||
|
@ -127,7 +127,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||||||
</th>
|
</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr id="i4" class="altColor">
|
<tr id="i4" class="altColor">
|
||||||
<td class="colFirst"><a href="tourplaner/model/Tour.html" title="class in tourplaner.model">Tour</a></td>
|
<td class="colFirst"><a href="tourplaner/model/Tour.html" title="class in tourplaner.object">Tour</a></td>
|
||||||
<th class="colLast" scope="row">
|
<th class="colLast" scope="row">
|
||||||
<div class="block">Model einer Tour</div>
|
<div class="block">Model einer Tour</div>
|
||||||
</th>
|
</th>
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
<li><a href="tourplaner/business/LogHelper.html" title="class in tourplaner.business">LogHelper</a></li>
|
<li><a href="tourplaner/business/LogHelper.html" title="class in tourplaner.business">LogHelper</a></li>
|
||||||
<li><a href="tourplaner/Main.html" title="class in tourplaner">Main</a></li>
|
<li><a href="tourplaner/Main.html" title="class in tourplaner">Main</a></li>
|
||||||
<li><a href="tourplaner/ui/PresenterMain.html" title="class in tourplaner.ui">PresenterMain</a></li>
|
<li><a href="tourplaner/ui/PresenterMain.html" title="class in tourplaner.ui">PresenterMain</a></li>
|
||||||
<li><a href="tourplaner/model/Tour.html" title="class in tourplaner.model">Tour</a></li>
|
<li><a href="tourplaner/model/Tour.html" title="class in tourplaner.object">Tour</a></li>
|
||||||
<li><a href="tourplaner/business/TourPlaner.html" title="class in tourplaner.business">TourPlaner</a></li>
|
<li><a href="tourplaner/business/TourPlaner.html" title="class in tourplaner.business">TourPlaner</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</main>
|
</main>
|
||||||
|
@ -118,7 +118,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||||||
<td class="colLast"> </td>
|
<td class="colLast"> </td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="rowColor">
|
<tr class="rowColor">
|
||||||
<th class="colFirst" scope="row"><a href="tourplaner/model/package-summary.html">tourplaner.model</a></th>
|
<th class="colFirst" scope="row"><a href="tourplaner/model/package-summary.html">tourplaner.object</a></th>
|
||||||
<td class="colLast"> </td>
|
<td class="colLast"> </td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="altColor">
|
<tr class="altColor">
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
tourplaner
|
tourplaner
|
||||||
tourplaner.business
|
tourplaner.business
|
||||||
tourplaner.data
|
tourplaner.data
|
||||||
tourplaner.model
|
tourplaner.object
|
||||||
tourplaner.ui
|
tourplaner.ui
|
||||||
|
@ -97,11 +97,11 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||||||
</a>
|
</a>
|
||||||
<h2 class="title">T</h2>
|
<h2 class="title">T</h2>
|
||||||
<dl>
|
<dl>
|
||||||
<dt><a href="../tourplaner/model/Tour.html" title="class in tourplaner.model"><span class="typeNameLink">Tour</span></a> - Class in <a href="../tourplaner/model/package-summary.html">tourplaner.model</a></dt>
|
<dt><a href="../tourplaner/model/Tour.html" title="class in tourplaner.object"><span class="typeNameLink">Tour</span></a> - Class in <a href="../tourplaner/model/package-summary.html">tourplaner.object</a></dt>
|
||||||
<dd>
|
<dd>
|
||||||
<div class="block">Model einer Tour</div>
|
<div class="block">Model einer Tour</div>
|
||||||
</dd>
|
</dd>
|
||||||
<dt><span class="memberNameLink"><a href="../tourplaner/model/Tour.html#%3Cinit%3E()">Tour()</a></span> - Constructor for class tourplaner.model.<a href="../tourplaner/model/Tour.html" title="class in tourplaner.model">Tour</a></dt>
|
<dt><span class="memberNameLink"><a href="../tourplaner/model/Tour.html#%3Cinit%3E()">Tour()</a></span> - Constructor for class tourplaner.object.<a href="../tourplaner/model/Tour.html" title="class in tourplaner.object">Tour</a></dt>
|
||||||
<dd> </dd>
|
<dd> </dd>
|
||||||
<dt><a href="../tourplaner/package-summary.html">tourplaner</a> - package tourplaner</dt>
|
<dt><a href="../tourplaner/package-summary.html">tourplaner</a> - package tourplaner</dt>
|
||||||
<dd> </dd>
|
<dd> </dd>
|
||||||
@ -117,7 +117,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||||||
<dd> </dd>
|
<dd> </dd>
|
||||||
<dt><a href="../tourplaner/data/package-summary.html">tourplaner.data</a> - package tourplaner.data</dt>
|
<dt><a href="../tourplaner/data/package-summary.html">tourplaner.data</a> - package tourplaner.data</dt>
|
||||||
<dd> </dd>
|
<dd> </dd>
|
||||||
<dt><a href="../tourplaner/model/package-summary.html">tourplaner.model</a> - package tourplaner.model</dt>
|
<dt><a href="../tourplaner/model/package-summary.html">tourplaner.object</a> - package tourplaner.object</dt>
|
||||||
<dd> </dd>
|
<dd> </dd>
|
||||||
<dt><a href="../tourplaner/ui/package-summary.html">tourplaner.ui</a> - package tourplaner.ui</dt>
|
<dt><a href="../tourplaner/ui/package-summary.html">tourplaner.ui</a> - package tourplaner.ui</dt>
|
||||||
<dd> </dd>
|
<dd> </dd>
|
||||||
|
@ -113,7 +113,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||||||
<td class="colLast"> </td>
|
<td class="colLast"> </td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="rowColor" id="i3">
|
<tr class="rowColor" id="i3">
|
||||||
<th class="colFirst" scope="row"><a href="tourplaner/model/package-summary.html">tourplaner.model</a></th>
|
<th class="colFirst" scope="row"><a href="tourplaner/model/package-summary.html">tourplaner.object</a></th>
|
||||||
<td class="colLast"> </td>
|
<td class="colLast"> </td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr class="altColor" id="i4">
|
<tr class="altColor" id="i4">
|
||||||
|
@ -99,7 +99,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||||||
<li><a href="tourplaner/package-tree.html">tourplaner</a>, </li>
|
<li><a href="tourplaner/package-tree.html">tourplaner</a>, </li>
|
||||||
<li><a href="tourplaner/business/package-tree.html">tourplaner.business</a>, </li>
|
<li><a href="tourplaner/business/package-tree.html">tourplaner.business</a>, </li>
|
||||||
<li><a href="tourplaner/data/package-tree.html">tourplaner.data</a>, </li>
|
<li><a href="tourplaner/data/package-tree.html">tourplaner.data</a>, </li>
|
||||||
<li><a href="tourplaner/model/package-tree.html">tourplaner.model</a>, </li>
|
<li><a href="tourplaner/model/package-tree.html">tourplaner.object</a>, </li>
|
||||||
<li><a href="tourplaner/ui/package-tree.html">tourplaner.ui</a></li>
|
<li><a href="tourplaner/ui/package-tree.html">tourplaner.ui</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@ -117,7 +117,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||||||
<li class="circle">tourplaner.data.<a href="tourplaner/data/DbConnect.html" title="class in tourplaner.data"><span class="typeNameLink">DbConnect</span></a></li>
|
<li class="circle">tourplaner.data.<a href="tourplaner/data/DbConnect.html" title="class in tourplaner.data"><span class="typeNameLink">DbConnect</span></a></li>
|
||||||
<li class="circle">tourplaner.business.<a href="tourplaner/business/LogHelper.html" title="class in tourplaner.business"><span class="typeNameLink">LogHelper</span></a></li>
|
<li class="circle">tourplaner.business.<a href="tourplaner/business/LogHelper.html" title="class in tourplaner.business"><span class="typeNameLink">LogHelper</span></a></li>
|
||||||
<li class="circle">tourplaner.ui.<a href="tourplaner/ui/PresenterMain.html" title="class in tourplaner.ui"><span class="typeNameLink">PresenterMain</span></a></li>
|
<li class="circle">tourplaner.ui.<a href="tourplaner/ui/PresenterMain.html" title="class in tourplaner.ui"><span class="typeNameLink">PresenterMain</span></a></li>
|
||||||
<li class="circle">tourplaner.model.<a href="tourplaner/model/Tour.html" title="class in tourplaner.model"><span class="typeNameLink">Tour</span></a></li>
|
<li class="circle">tourplaner.object.<a href="tourplaner/model/Tour.html" title="class in tourplaner.object"><span class="typeNameLink">Tour</span></a></li>
|
||||||
<li class="circle">tourplaner.business.<a href="tourplaner/business/TourPlaner.html" title="class in tourplaner.business"><span class="typeNameLink">TourPlaner</span></a></li>
|
<li class="circle">tourplaner.business.<a href="tourplaner/business/TourPlaner.html" title="class in tourplaner.business"><span class="typeNameLink">TourPlaner</span></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
@ -109,7 +109,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||||||
<!-- ======== START OF CLASS DATA ======== -->
|
<!-- ======== START OF CLASS DATA ======== -->
|
||||||
<main role="main">
|
<main role="main">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<div class="subTitle"><span class="packageLabelInType">Package</span> <a href="package-summary.html">tourplaner.model</a></div>
|
<div class="subTitle"><span class="packageLabelInType">Package</span> <a href="package-summary.html">tourplaner.object</a></div>
|
||||||
<h2 title="Class Tour" class="title">Class Tour</h2>
|
<h2 title="Class Tour" class="title">Class Tour</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="contentContainer">
|
<div class="contentContainer">
|
||||||
@ -117,7 +117,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||||||
<li>java.lang.Object</li>
|
<li>java.lang.Object</li>
|
||||||
<li>
|
<li>
|
||||||
<ul class="inheritance">
|
<ul class="inheritance">
|
||||||
<li>tourplaner.model.Tour</li>
|
<li>tourplaner.object.Tour</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<html lang="de">
|
<html lang="de">
|
||||||
<head>
|
<head>
|
||||||
<!-- Generated by javadoc (11.0.9) on Thu Feb 25 13:07:23 CET 2021 -->
|
<!-- Generated by javadoc (11.0.9) on Thu Feb 25 13:07:23 CET 2021 -->
|
||||||
<title>tourplaner.model</title>
|
<title>tourplaner.object</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
<meta name="dc.created" content="2021-02-25">
|
<meta name="dc.created" content="2021-02-25">
|
||||||
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
|
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
|
||||||
@ -93,7 +93,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||||||
</header>
|
</header>
|
||||||
<main role="main">
|
<main role="main">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<h1 title="Package" class="title">Package tourplaner.model</h1>
|
<h1 title="Package" class="title">Package tourplaner.object</h1>
|
||||||
</div>
|
</div>
|
||||||
<div class="contentContainer">
|
<div class="contentContainer">
|
||||||
<ul class="blockList">
|
<ul class="blockList">
|
||||||
@ -106,7 +106,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||||||
</tr>
|
</tr>
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr class="altColor">
|
<tr class="altColor">
|
||||||
<th class="colFirst" scope="row"><a href="Tour.html" title="class in tourplaner.model">Tour</a></th>
|
<th class="colFirst" scope="row"><a href="Tour.html" title="class in tourplaner.object">Tour</a></th>
|
||||||
<td class="colLast">
|
<td class="colLast">
|
||||||
<div class="block">Model einer Tour</div>
|
<div class="block">Model einer Tour</div>
|
||||||
</td>
|
</td>
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<html lang="de">
|
<html lang="de">
|
||||||
<head>
|
<head>
|
||||||
<!-- Generated by javadoc (11.0.9) on Thu Feb 25 13:07:23 CET 2021 -->
|
<!-- Generated by javadoc (11.0.9) on Thu Feb 25 13:07:23 CET 2021 -->
|
||||||
<title>tourplaner.model Class Hierarchy</title>
|
<title>tourplaner.object Class Hierarchy</title>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||||
<meta name="dc.created" content="2021-02-25">
|
<meta name="dc.created" content="2021-02-25">
|
||||||
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
|
<link rel="stylesheet" type="text/css" href="../../stylesheet.css" title="Style">
|
||||||
@ -93,7 +93,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||||||
</header>
|
</header>
|
||||||
<main role="main">
|
<main role="main">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<h1 class="title">Hierarchy For Package tourplaner.model</h1>
|
<h1 class="title">Hierarchy For Package tourplaner.object</h1>
|
||||||
<span class="packageHierarchyLabel">Package Hierarchies:</span>
|
<span class="packageHierarchyLabel">Package Hierarchies:</span>
|
||||||
<ul class="horizontal">
|
<ul class="horizontal">
|
||||||
<li><a href="../../overview-tree.html">All Packages</a></li>
|
<li><a href="../../overview-tree.html">All Packages</a></li>
|
||||||
@ -105,7 +105,7 @@ $('.navPadding').css('padding-top', $('.fixedNav').css("height"));
|
|||||||
<ul>
|
<ul>
|
||||||
<li class="circle">java.lang.Object
|
<li class="circle">java.lang.Object
|
||||||
<ul>
|
<ul>
|
||||||
<li class="circle">tourplaner.model.<a href="Tour.html" title="class in tourplaner.model"><span class="typeNameLink">Tour</span></a></li>
|
<li class="circle">tourplaner.object.<a href="Tour.html" title="class in tourplaner.object"><span class="typeNameLink">Tour</span></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
139
log/log4j/log.out
Normal file
139
log/log4j/log.out
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
Tour planer Startet!
|
||||||
|
Tour planer Startet!
|
||||||
|
App started
|
||||||
|
2021-02-26 15:59:44 INFO TourPlaner:15 - App started
|
||||||
|
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-02-26 16:08:31 INFO TourPlaner:15 - Tour Planer App gestartet
|
||||||
|
2021-02-26 21:27:46 INFO TourPlaner:15 - Tour Planer App gestartet
|
||||||
|
2021-02-26 21:27:46 ERROR PresenterMain:33 -
|
||||||
|
/C:/Users/georg/OneDrive/FH/Swe/Tourplaner/out/production/Tourplaner/tourplaner/ui/tourplaner.fxml:56
|
||||||
|
|
||||||
|
2021-02-26 21:27:46 INFO PostgresHelper:15 - User Table created
|
||||||
|
2021-02-26 21:27:46 ERROR ClassNotFoundException:33 - org.postgresql.Driver
|
||||||
|
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 -
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
16
src/log4j.properties
Normal file
16
src/log4j.properties
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# Root logger option
|
||||||
|
log4j.rootLogger=DEBUG, stdout, file
|
||||||
|
|
||||||
|
# Redirect log messages to console
|
||||||
|
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
||||||
|
log4j.appender.stdout.Target=System.out
|
||||||
|
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
||||||
|
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
|
||||||
|
|
||||||
|
# Redirect log messages to a log file, support file rolling.
|
||||||
|
log4j.appender.file=org.apache.log4j.RollingFileAppender
|
||||||
|
log4j.appender.file.File=log/log4j/log.out
|
||||||
|
log4j.appender.file.MaxFileSize=5MB
|
||||||
|
log4j.appender.file.MaxBackupIndex=10
|
||||||
|
log4j.appender.file.layout=org.apache.log4j.PatternLayout
|
||||||
|
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
|
@ -5,18 +5,23 @@ import javafx.fxml.FXMLLoader;
|
|||||||
import javafx.scene.Parent;
|
import javafx.scene.Parent;
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import tourplaner.business.LogHelper;
|
|
||||||
import tourplaner.business.TourPlaner;
|
import tourplaner.business.ConfigHelper;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
public class Main extends Application {
|
public class Main extends Application {
|
||||||
|
|
||||||
@Override
|
|
||||||
public void start(Stage primaryStage) throws Exception{
|
|
||||||
TourPlaner tourplaner = new TourPlaner(primaryStage);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static void main(String[] args){
|
public static void main(String[] args){
|
||||||
launch(args);
|
launch(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void start(Stage primaryStage) throws IOException {
|
||||||
|
Parent root = FXMLLoader.load(Main.class.getResource("tourplaner.fxml"));
|
||||||
|
primaryStage.setTitle(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "apptitle"));
|
||||||
|
primaryStage.setScene(new Scene(root, 600, 600));
|
||||||
|
primaryStage.show();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
177
src/tourplaner/business/AlertHelper.java
Normal file
177
src/tourplaner/business/AlertHelper.java
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
package tourplaner.business;
|
||||||
|
|
||||||
|
import javafx.scene.Scene;
|
||||||
|
import javafx.scene.control.*;
|
||||||
|
import javafx.scene.control.Label;
|
||||||
|
import javafx.scene.control.TextArea;
|
||||||
|
import javafx.scene.layout.*;
|
||||||
|
import javafx.scene.text.Text;
|
||||||
|
import javafx.stage.Stage;
|
||||||
|
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.io.StringWriter;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
|
public class AlertHelper {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Warning Dialog
|
||||||
|
* @param title Title des Dialogs
|
||||||
|
* @param header Header des Dialogs
|
||||||
|
* @param msg Nachricht des Dialogs
|
||||||
|
*/
|
||||||
|
public static void warn(String title, String header, String msg){
|
||||||
|
alertType(Alert.AlertType.WARNING, title, header, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Info Dialog
|
||||||
|
* @param title Title des Dialogs
|
||||||
|
* @param header Header des Dialogs
|
||||||
|
* @param msg Nachricht des Dialogs
|
||||||
|
*/
|
||||||
|
public static void inform(String title, String header, String msg){
|
||||||
|
alertType(Alert.AlertType.INFORMATION, title, header, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Info Dialog ohne Header
|
||||||
|
* @param title Title des Dialogs
|
||||||
|
* @param msg Nachricht des Dialogs
|
||||||
|
*/
|
||||||
|
public static void informNoHeader(String title, String msg){
|
||||||
|
inform(title, null, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Error Dialog
|
||||||
|
* @param title Title des Dialogs
|
||||||
|
* @param header Header des Dialogs
|
||||||
|
* @param msg Nachricht des Dialogs
|
||||||
|
*/
|
||||||
|
public static void error(String title, String header, String msg){
|
||||||
|
alertType(Alert.AlertType.ERROR, title, header, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ausgabe einer Exception in einem Dialog
|
||||||
|
* @param title Title des Dialogs
|
||||||
|
* @param header Header des Dialogs
|
||||||
|
* @param msg Nachricht des Dialogs
|
||||||
|
* @param ex Die exception die ausgegeben werden soll
|
||||||
|
*/
|
||||||
|
public static void exerror(String title, String header, String msg, Exception ex){
|
||||||
|
Alert alert = new Alert(Alert.AlertType.ERROR);
|
||||||
|
alert.setTitle(title);
|
||||||
|
alert.setHeaderText(header);
|
||||||
|
alert.setContentText(msg);
|
||||||
|
StringWriter sw = new StringWriter();
|
||||||
|
PrintWriter pw = new PrintWriter(sw);
|
||||||
|
ex.printStackTrace(pw);
|
||||||
|
String exceptionText = sw.toString();
|
||||||
|
Label label = new Label(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "exceptionstackheader"));
|
||||||
|
TextArea textArea = new TextArea(exceptionText);
|
||||||
|
textArea.setEditable(false);
|
||||||
|
textArea.setWrapText(true);
|
||||||
|
textArea.setMaxWidth(Double.MAX_VALUE);
|
||||||
|
textArea.setMaxHeight(Double.MAX_VALUE);
|
||||||
|
GridPane.setVgrow(textArea, Priority.ALWAYS);
|
||||||
|
GridPane.setHgrow(textArea, Priority.ALWAYS);
|
||||||
|
GridPane expContent = new GridPane();
|
||||||
|
expContent.setMaxWidth(Double.MAX_VALUE);
|
||||||
|
expContent.add(label, 0, 0);
|
||||||
|
expContent.add(textArea, 0, 1);
|
||||||
|
alert.getDialogPane().setExpandableContent(expContent);
|
||||||
|
alert.showAndWait();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param alertly Typ des Dialogs
|
||||||
|
* @param title Title des Dialogs
|
||||||
|
* @param header Header des Dialogs
|
||||||
|
* @param msg Nachricht des Dialogs
|
||||||
|
*/
|
||||||
|
private static void alertType(Alert.AlertType alertly, String title, String header, String msg){
|
||||||
|
Alert alert = new Alert(alertly);
|
||||||
|
alert.setTitle(title);
|
||||||
|
alert.setHeaderText(header);
|
||||||
|
alert.setContentText(msg);
|
||||||
|
|
||||||
|
alert.showAndWait();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Texteingabe
|
||||||
|
* @param title Title des Dialogs
|
||||||
|
* @param header Header des Dialogs
|
||||||
|
* @param msg Nachricht des Dialogs
|
||||||
|
* @return Null bei keiner eingabe
|
||||||
|
*/
|
||||||
|
public static String inputText(String title, String header, String msg) {
|
||||||
|
TextInputDialog dialog = new TextInputDialog();
|
||||||
|
dialog.setTitle(title);
|
||||||
|
dialog.setHeaderText(header);
|
||||||
|
dialog.setContentText(msg);
|
||||||
|
Optional<String> result = dialog.showAndWait();
|
||||||
|
AtomicReference<String> returnText = new AtomicReference<>("");
|
||||||
|
result.ifPresent(returnText::set);
|
||||||
|
if(!returnText.get().isEmpty()){
|
||||||
|
return returnText.get();
|
||||||
|
}else{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Positive Nummer eingabe. Wenn Convertierung zu int nicht klappt -> -1
|
||||||
|
* @param title Title des Dialogs
|
||||||
|
* @param header Header des Dialogs
|
||||||
|
* @param msg Nachricht des Dialogs
|
||||||
|
* @return -1 bei error sonst ein Int
|
||||||
|
*/
|
||||||
|
public static int inputNumber(String title, String header, String msg) {
|
||||||
|
TextInputDialog dialog = new TextInputDialog();
|
||||||
|
dialog.setTitle(title);
|
||||||
|
dialog.setHeaderText(header);
|
||||||
|
dialog.setContentText(msg);
|
||||||
|
Optional<String> result = dialog.showAndWait();
|
||||||
|
AtomicReference<Integer> returnText = new AtomicReference<Integer>(-1);
|
||||||
|
result.ifPresent(s -> {
|
||||||
|
try {
|
||||||
|
int resultInt = Integer.parseInt(result.get());
|
||||||
|
returnText.set(resultInt);
|
||||||
|
}catch (NumberFormatException e){
|
||||||
|
AlertHelper.warn(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "achtung"), "Bitte nur Zahlen eingeben!", "Bitte geben sie nur Zahlen von 0 - 10 an!");
|
||||||
|
returnText.set(-1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return returnText.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Date Picker Dialog, sobald ein Datum ausgewählt wurde, wird es automatisch bestätigt und der dialog geschlossen
|
||||||
|
* @param title Name des Dialogs
|
||||||
|
* @return Gewähltes datum
|
||||||
|
*/
|
||||||
|
public static LocalDate datePicker(String title){
|
||||||
|
final DatePicker datePicker = new DatePicker(LocalDate.now());
|
||||||
|
final Stage stage = new Stage();
|
||||||
|
AtomicReference<LocalDate> selectedDate = new AtomicReference<>();
|
||||||
|
datePicker.setOnAction(event -> {
|
||||||
|
LocalDate date = datePicker.getValue();
|
||||||
|
System.out.println("Selected date: " + date);
|
||||||
|
selectedDate.set(date);
|
||||||
|
stage.close();
|
||||||
|
});
|
||||||
|
|
||||||
|
stage.setScene(
|
||||||
|
new Scene(datePicker)
|
||||||
|
);
|
||||||
|
stage.showAndWait();
|
||||||
|
return selectedDate.get();
|
||||||
|
}
|
||||||
|
}
|
@ -1,8 +1,95 @@
|
|||||||
package tourplaner.business;
|
package tourplaner.business;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.ini4j.Wini;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Dient dem ein und auslesen von .ini Dateien
|
||||||
|
*/
|
||||||
public class ConfigHelper {
|
public class ConfigHelper {
|
||||||
@Value("${configFilesPath:./config}")
|
|
||||||
private String filesPath; // Run with -DconfigFilesPath=<configFilesPath> parameter to override
|
public static String standartConfig = "conf.ini"; // Config.ini befindet sich im Root Verzeichnis
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Liest einen Int aus der Config aus
|
||||||
|
* @param filename Speicherort
|
||||||
|
* @param sectionName Sections Name
|
||||||
|
* @param optionName Options Name
|
||||||
|
* @return Den angeforderten String
|
||||||
|
*/
|
||||||
|
public static int getIniInt(String filename, String sectionName, String optionName){
|
||||||
|
Wini ini = null;
|
||||||
|
try {
|
||||||
|
ini = new Wini(new File(filename));
|
||||||
|
} catch (IOException e) {
|
||||||
|
LogHelper.error(e.getMessage(), e.getClass().getName());
|
||||||
|
}
|
||||||
|
assert ini != null;
|
||||||
|
return ini.get(sectionName, optionName, int.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Liest einen String aus der Config aus
|
||||||
|
* @param filename Speicherort
|
||||||
|
* @param sectionName Sections Name
|
||||||
|
* @param optionName Options Name
|
||||||
|
* @return Den angeforderten String
|
||||||
|
*/
|
||||||
|
public static String getIniString(String filename, String sectionName, String optionName){
|
||||||
|
Wini ini = null;
|
||||||
|
try {
|
||||||
|
ini = new Wini(new File(filename));
|
||||||
|
} catch (IOException e) {
|
||||||
|
LogHelper.error(e.getMessage(), e.getClass().getName());
|
||||||
|
}
|
||||||
|
assert ini != null;
|
||||||
|
return ini.get(sectionName, optionName, String.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setzt ein String in der Config
|
||||||
|
* @param filename Speicherort
|
||||||
|
* @param sectionName Sections Name
|
||||||
|
* @param optionName Options Name
|
||||||
|
* @param value Wert der eingetragen werden soll
|
||||||
|
*/
|
||||||
|
public static void setIniString(String filename, String sectionName, String optionName, String value) {
|
||||||
|
Wini ini = null;
|
||||||
|
try {
|
||||||
|
ini = new Wini(new File(filename));
|
||||||
|
ini.put(sectionName, optionName, value);
|
||||||
|
ini.store();
|
||||||
|
} catch (IOException e) {
|
||||||
|
LogHelper.error(e.getMessage(), e.getClass().getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Setzt ein int in der Config
|
||||||
|
* @param filename Speicherort
|
||||||
|
* @param sectionName Sections Name
|
||||||
|
* @param optionName Options Name
|
||||||
|
* @param value Wert der eingetragen werden soll
|
||||||
|
*/
|
||||||
|
public static void setIniInt(String filename, String sectionName, String optionName, int value){
|
||||||
|
Wini ini = null;
|
||||||
|
try {
|
||||||
|
ini = new Wini(new File(filename));
|
||||||
|
ini.put(sectionName, optionName, value);
|
||||||
|
ini.store();
|
||||||
|
} catch (IOException e) {
|
||||||
|
LogHelper.error(e.getMessage(), e.getClass().getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gibt den namen des standard Config file zurück
|
||||||
|
* @return Name des standard config files
|
||||||
|
*/
|
||||||
|
public static String getStandartConfig() {
|
||||||
|
return standartConfig;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,31 +1,54 @@
|
|||||||
package tourplaner.business;
|
package tourplaner.business;
|
||||||
import org.apache.log4j.*;
|
import org.apache.log4j.*;
|
||||||
import org.apache.log4j.xml.DOMConfigurator;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hilft beim Logging mit log4j
|
* Hilft beim Logging mit log4j
|
||||||
*/
|
*/
|
||||||
public class LogHelper{
|
public class LogHelper{
|
||||||
private static Logger logger = Logger.getRootLogger();
|
/**
|
||||||
|
* Log info in file und Console
|
||||||
|
* @param msg Nachricht in dem Log
|
||||||
|
* @param name Name des Log Eintrags
|
||||||
|
*/
|
||||||
|
public static void info(String msg, String name){
|
||||||
|
getLog(name).info(msg);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holt den passenden logger für die Anwendung
|
* Log info in file und Console
|
||||||
* @return Der Aktuelle passende Logger, null bei error
|
* @param msg Nachricht in dem Log
|
||||||
|
* @param name Name des Log Eintrags
|
||||||
*/
|
*/
|
||||||
public static Logger getLogger() {
|
public static void warn(String msg, String name){
|
||||||
try {
|
getLog(name).warn(msg);
|
||||||
SimpleLayout layout = new SimpleLayout();
|
|
||||||
ConsoleAppender consoleAppender = new ConsoleAppender(layout);
|
|
||||||
logger.addAppender(consoleAppender);
|
|
||||||
FileAppender fileAppender = new FileAppender(layout, "../../../logs/tourplaner.log", true);
|
|
||||||
logger.addAppender(fileAppender);
|
|
||||||
// ALL | DEBUG | INFO | WARN | ERROR | FATAL | OFF:
|
|
||||||
logger.setLevel(Level.DEBUG);
|
|
||||||
return logger;
|
|
||||||
} catch (Exception ex) {
|
|
||||||
System.err.println(ex.getMessage());
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Log info in file und Console
|
||||||
|
* @param msg Nachricht in dem Log
|
||||||
|
* @param name Name des Log Eintrags
|
||||||
|
*/
|
||||||
|
public static void error(String msg, String name){
|
||||||
|
getLog(name).error(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Log info in file und Console
|
||||||
|
* @param msg Nachricht in dem Log
|
||||||
|
* @param name Name des Log Eintrags
|
||||||
|
*/
|
||||||
|
public static void fatal(String msg, String name){
|
||||||
|
getLog(name).fatal(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instanziert den Logger
|
||||||
|
* @param name Name des Loggers
|
||||||
|
* @return Den Logger
|
||||||
|
*/
|
||||||
|
private static Logger getLog(String name){
|
||||||
|
return Logger.getLogger(name); // Instanziert den Logger
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
60
src/tourplaner/business/PostgresHelper.java
Normal file
60
src/tourplaner/business/PostgresHelper.java
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
package tourplaner.business;
|
||||||
|
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.Statement;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hilfsfunktionen für die verwendung der Postgres DB
|
||||||
|
*/
|
||||||
|
public class PostgresHelper {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verbindet mit der Datenbank
|
||||||
|
* @return Das Connection Objekt
|
||||||
|
*/
|
||||||
|
public static Connection con() {
|
||||||
|
Connection c = null;
|
||||||
|
try {
|
||||||
|
Class.forName("org.postgresql.Driver");
|
||||||
|
c = DriverManager
|
||||||
|
.getConnection("jdbc:postgresql://" + ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "db", "url") + ":" + ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "db", "port") + "/" + ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "db", "dbname"),
|
||||||
|
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "db", "user"), ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "db", "pw"));
|
||||||
|
} catch (Exception e) {
|
||||||
|
LogHelper.error(e.getMessage(), e.getClass().getName());
|
||||||
|
}
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Führt ein Sql statement ohne rückgabe aus, mit message nachricht
|
||||||
|
* @param sql Sql command
|
||||||
|
* @param message Mesasage die vor dem Durchführen angezeigt wird
|
||||||
|
* @return True bei erfolg, sonst false
|
||||||
|
*/
|
||||||
|
public static boolean executeUpdateMessage(String sql, String message){
|
||||||
|
LogHelper.info(message, "PostgresHelper");
|
||||||
|
return executeUpdate(sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Führt ein Sql statement ohne rückgabe aus
|
||||||
|
* @param sql Sql command
|
||||||
|
* @return True bei erfolg, sonst false
|
||||||
|
*/
|
||||||
|
public static boolean executeUpdate(String sql){
|
||||||
|
Connection c = con();
|
||||||
|
Statement stmt;
|
||||||
|
try {
|
||||||
|
stmt = c.createStatement();
|
||||||
|
stmt.executeUpdate(sql);
|
||||||
|
stmt.close();
|
||||||
|
c.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
LogHelper.error(e.getMessage(), e.getClass().getName());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
@ -1,10 +1,7 @@
|
|||||||
package tourplaner.business;
|
package tourplaner.business;
|
||||||
|
|
||||||
import javafx.stage.Stage;
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import tourplaner.ui.PresenterMain;
|
import tourplaner.data.DbConnect;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Haupt Logik des Tourplaners
|
* Haupt Logik des Tourplaners
|
||||||
@ -12,13 +9,14 @@ import java.io.IOException;
|
|||||||
public class TourPlaner{
|
public class TourPlaner{
|
||||||
private Logger logger;
|
private Logger logger;
|
||||||
|
|
||||||
/**
|
public TourPlaner(){
|
||||||
* Startet alle bennötigten Komponenten
|
LogHelper.info(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "message"),
|
||||||
* @param primaryStage Stage für den Presenter
|
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "start", "app"));
|
||||||
*/
|
new DbConnect().init();
|
||||||
public TourPlaner(Stage primaryStage){
|
|
||||||
logger = LogHelper.getLogger(); // Initialiesiert das Logging
|
}
|
||||||
logger.info("Tour planer Startet!");
|
|
||||||
PresenterMain presenterMain = new PresenterMain(primaryStage, logger); // Start Presenter/GUI
|
public String getMapJson(String start, String ziel){
|
||||||
|
return start + " " + ziel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,37 @@
|
|||||||
package tourplaner.data;
|
package tourplaner.data;
|
||||||
|
|
||||||
|
import tourplaner.business.PostgresHelper;
|
||||||
|
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.Statement;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Verwaltet die Datenbankverbindung zu dem Postgres Server
|
* Verwaltet die Datenbankverbindung zu dem Postgres Server
|
||||||
*/
|
*/
|
||||||
public class DbConnect {
|
public class DbConnect {
|
||||||
|
private Connection c;
|
||||||
|
private Statement stmt;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Erstellt alle Beispieldaten und simuliert somit den
|
||||||
|
* Verbindungsaufbau zu einer DB
|
||||||
|
*/
|
||||||
|
public DbConnect() {
|
||||||
|
this.c = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Erstellt alle Tabellen die für den Betrieb der Software bennötigt werden
|
||||||
|
* @return True bei erfolg, sonst error
|
||||||
|
*/
|
||||||
|
public boolean init() {
|
||||||
|
// TODO: 26.02.2021 Alle sql im init sind noch falsch
|
||||||
|
ArrayList<Boolean> errors = new ArrayList<>();
|
||||||
|
errors.add(PostgresHelper.executeUpdateMessage("CREATE TABLE IF NOT EXISTS USERS (username TEXT PRIMARY KEY NOT NULL, nachname TEXT NOT NULL, email TEXT NOT NULL, password TEXT NOT NULL, bio TEXT, image TEXT, coins integer default 20 not null)", "User Table created"));
|
||||||
|
return !errors.contains(false);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
package tourplaner.model;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Model einer Tour
|
|
||||||
*/
|
|
||||||
public class Tour {
|
|
||||||
}
|
|
51
src/tourplaner/object/Log.java
Normal file
51
src/tourplaner/object/Log.java
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
package tourplaner.object;
|
||||||
|
|
||||||
|
import jdk.jshell.spi.ExecutionControl;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
public class Log {
|
||||||
|
private String id, dauer;
|
||||||
|
private LocalDate datum;
|
||||||
|
private double strecke;
|
||||||
|
|
||||||
|
public Log(String id, String dauer, LocalDate datum, double strecke) {
|
||||||
|
this.id = id;
|
||||||
|
this.dauer = dauer;
|
||||||
|
this.datum = datum;
|
||||||
|
this.strecke = strecke;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDauer() {
|
||||||
|
return dauer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDauer(String dauer) {
|
||||||
|
this.dauer = dauer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalDate getDatum() {
|
||||||
|
return datum;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDatum(LocalDate datum) {
|
||||||
|
this.datum = datum;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getStrecke() {
|
||||||
|
return strecke;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStrecke(double strecke) {
|
||||||
|
this.strecke = strecke;
|
||||||
|
}
|
||||||
|
}
|
110
src/tourplaner/object/Tour.java
Normal file
110
src/tourplaner/object/Tour.java
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
package tourplaner.object;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Model einer Tour
|
||||||
|
*/
|
||||||
|
public class Tour {
|
||||||
|
private String dauer, mapJson, name, start, ziel;
|
||||||
|
private double strecke;
|
||||||
|
private ArrayList<Log> log;
|
||||||
|
|
||||||
|
public Tour(String name, String dauer, String mapJson, double strecke, String start, String ziel) {
|
||||||
|
this.dauer = dauer;
|
||||||
|
this.mapJson = mapJson;
|
||||||
|
this.strecke = strecke;
|
||||||
|
this.name = name;
|
||||||
|
this.start = start;
|
||||||
|
this.ziel = ziel;
|
||||||
|
this.log = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holt einen einzigen Log Eintrag anhand der Id
|
||||||
|
* @param id Id des Eintrags der zu besorgen ist
|
||||||
|
* @return Der gefundene Log Eintrag
|
||||||
|
*/
|
||||||
|
public Log getLog(String id){
|
||||||
|
AtomicReference<Log> returnLog = new AtomicReference<>();
|
||||||
|
this.log.forEach(s -> {
|
||||||
|
if(s.getId().equals(id)){
|
||||||
|
returnLog.set(s);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return returnLog.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fügt ein Log Eintrag hinzu
|
||||||
|
* @param newLog Der neue Log Eintrag
|
||||||
|
*/
|
||||||
|
public void addLog(Log newLog){
|
||||||
|
this.log.add(newLog);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gibt alle log Einträge zurück
|
||||||
|
* @return Alle log Einträge in einer Arraylist
|
||||||
|
*/
|
||||||
|
public ArrayList<Log> getLogs(){
|
||||||
|
return this.log;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Löscht einen Log eintrag anhand der ID
|
||||||
|
* @param id Id die zum löschen ist
|
||||||
|
*/
|
||||||
|
public void delLog(String id){
|
||||||
|
this.log.removeIf(s -> s.getId().equals(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDauer() {
|
||||||
|
return dauer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDauer(String dauer) {
|
||||||
|
this.dauer = dauer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMapJson() {
|
||||||
|
return mapJson;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMapJson(String mapJson) {
|
||||||
|
this.mapJson = mapJson;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getStrecke() {
|
||||||
|
return strecke;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStrecke(double strecke) {
|
||||||
|
this.strecke = strecke;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getStart() {
|
||||||
|
return start;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStart(String start) {
|
||||||
|
this.start = start;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getZiel() {
|
||||||
|
return ziel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setZiel(String ziel) {
|
||||||
|
this.ziel = ziel;
|
||||||
|
}
|
||||||
|
}
|
@ -39,7 +39,6 @@
|
|||||||
<?import javafx.scene.control.Menu?>
|
<?import javafx.scene.control.Menu?>
|
||||||
<?import javafx.scene.control.MenuBar?>
|
<?import javafx.scene.control.MenuBar?>
|
||||||
<?import javafx.scene.control.MenuItem?>
|
<?import javafx.scene.control.MenuItem?>
|
||||||
<?import javafx.scene.control.SeparatorMenuItem?>
|
|
||||||
<?import javafx.scene.control.SplitPane?>
|
<?import javafx.scene.control.SplitPane?>
|
||||||
<?import javafx.scene.control.Tab?>
|
<?import javafx.scene.control.Tab?>
|
||||||
<?import javafx.scene.control.TabPane?>
|
<?import javafx.scene.control.TabPane?>
|
||||||
@ -52,71 +51,44 @@
|
|||||||
<?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">
|
<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">
|
||||||
<children>
|
<children>
|
||||||
<MenuBar VBox.vgrow="NEVER">
|
<MenuBar VBox.vgrow="NEVER">
|
||||||
<menus>
|
<menus>
|
||||||
<Menu mnemonicParsing="false" text="File">
|
<Menu fx:id="menueFile" mnemonicParsing="false" text="Datei">
|
||||||
<items>
|
<items>
|
||||||
<MenuItem mnemonicParsing="false" text="New" />
|
<MenuItem fx:id="beendenButton" mnemonicParsing="false" onAction="#quitApp" text="Beenden" />
|
||||||
<MenuItem mnemonicParsing="false" text="Open…" />
|
|
||||||
<Menu mnemonicParsing="false" text="Open Recent" />
|
|
||||||
<SeparatorMenuItem mnemonicParsing="false" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Close" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Save" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Save As…" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Revert" />
|
|
||||||
<SeparatorMenuItem mnemonicParsing="false" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Preferences…" />
|
|
||||||
<SeparatorMenuItem mnemonicParsing="false" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Quit" />
|
|
||||||
</items>
|
</items>
|
||||||
</Menu>
|
</Menu>
|
||||||
<Menu mnemonicParsing="false" text="Edit">
|
<Menu mnemonicParsing="false" text="Bearbeiten">
|
||||||
<items>
|
<items>
|
||||||
<MenuItem mnemonicParsing="false" text="Undo" />
|
<MenuItem mnemonicParsing="false" onAction="#nimpButton" text="Keine Funktion" />
|
||||||
<MenuItem mnemonicParsing="false" text="Redo" />
|
|
||||||
<SeparatorMenuItem mnemonicParsing="false" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Cut" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Copy" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Paste" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Delete" />
|
|
||||||
<SeparatorMenuItem mnemonicParsing="false" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Select All" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Unselect All" />
|
|
||||||
</items>
|
</items>
|
||||||
</Menu>
|
</Menu>
|
||||||
<Menu mnemonicParsing="false" text="Options">
|
<Menu mnemonicParsing="false" text="Optionen">
|
||||||
<items>
|
<items>
|
||||||
<MenuItem mnemonicParsing="false" text="Undo" />
|
<MenuItem mnemonicParsing="false" onAction="#nimpButton" text="Keine Funktion" />
|
||||||
<MenuItem mnemonicParsing="false" text="Redo" />
|
|
||||||
<SeparatorMenuItem mnemonicParsing="false" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Cut" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Copy" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Paste" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Delete" />
|
|
||||||
<SeparatorMenuItem mnemonicParsing="false" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Select All" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Unselect All" />
|
|
||||||
</items>
|
</items>
|
||||||
</Menu>
|
</Menu>
|
||||||
<Menu mnemonicParsing="false" text="Help">
|
<Menu mnemonicParsing="false" text="Hilfe">
|
||||||
<items>
|
<items>
|
||||||
<MenuItem mnemonicParsing="false" text="About MyHelloApp" />
|
<MenuItem mnemonicParsing="false" onAction="#gitWebBrowser" text="Git Repo" />
|
||||||
|
<MenuItem mnemonicParsing="false" onAction="#javaDocBrowser" text="JavaDoc" />
|
||||||
|
<MenuItem mnemonicParsing="false" onAction="#doxygenDocBrowser" text="Doxygen Doc" />
|
||||||
</items>
|
</items>
|
||||||
</Menu>
|
</Menu>
|
||||||
</menus>
|
</menus>
|
||||||
</MenuBar>
|
</MenuBar>
|
||||||
<HBox id="HBox" alignment="CENTER_LEFT" layoutX="10.0" layoutY="588.0" spacing="5.0">
|
<HBox id="HBox" alignment="CENTER_LEFT" layoutX="10.0" layoutY="588.0" spacing="5.0">
|
||||||
<children>
|
<children>
|
||||||
<AnchorPane prefHeight="-1.0" prefWidth="-1.0" HBox.hgrow="ALWAYS">
|
<AnchorPane prefWidth="-1.0" HBox.hgrow="ALWAYS">
|
||||||
<children>
|
<children>
|
||||||
<Button layoutX="58.0" mnemonicParsing="false" 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 layoutX="89.0" mnemonicParsing="false" text="-" />
|
<Button fx:id="tourDel" layoutX="89.0" mnemonicParsing="false" onAction="#delTour" text="-" />
|
||||||
</children></AnchorPane>
|
</children></AnchorPane>
|
||||||
<TextField text="Suche...." />
|
<TextField fx:id="sucheInput" promptText="Suche..." />
|
||||||
<Button mnemonicParsing="false" text="Suchen" />
|
<Button fx:id="sucheButton" mnemonicParsing="false" onAction="#suche" text="Suchen" />
|
||||||
</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" />
|
||||||
@ -124,20 +96,16 @@
|
|||||||
</HBox>
|
</HBox>
|
||||||
<SplitPane dividerPositions="0.21492204899777284" focusTraversable="true" prefHeight="522.0" prefWidth="900.0" VBox.vgrow="ALWAYS">
|
<SplitPane dividerPositions="0.21492204899777284" focusTraversable="true" prefHeight="522.0" prefWidth="900.0" VBox.vgrow="ALWAYS">
|
||||||
<items>
|
<items>
|
||||||
<AnchorPane prefHeight="520.0" prefWidth="239.0">
|
<AnchorPane prefWidth="239.0">
|
||||||
<children>
|
<children>
|
||||||
<ListView layoutX="-1.0" prefHeight="520.0" prefWidth="190.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
<ListView fx:id="TourListView" layoutX="-1.0" onMouseClicked="#tourListSelectedItem" prefHeight="520.0" prefWidth="190.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||||
<padding>
|
|
||||||
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
|
|
||||||
</padding>
|
|
||||||
</ListView>
|
|
||||||
</children>
|
</children>
|
||||||
</AnchorPane>
|
</AnchorPane>
|
||||||
<SplitPane dividerPositions="0.5" orientation="VERTICAL" prefHeight="496.0" prefWidth="620.0">
|
<SplitPane dividerPositions="0.5" orientation="VERTICAL" prefHeight="496.0" prefWidth="620.0">
|
||||||
<items>
|
<items>
|
||||||
<VBox prefHeight="200.0" prefWidth="100.0">
|
<VBox prefWidth="100.0">
|
||||||
<children>
|
<children>
|
||||||
<AnchorPane prefHeight="51.0" prefWidth="676.0">
|
<AnchorPane prefWidth="676.0">
|
||||||
<children>
|
<children>
|
||||||
<HBox id="HBox" alignment="CENTER_LEFT" prefHeight="7.0" prefWidth="44.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" prefHeight="7.0" prefWidth="44.0" spacing="5.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
<children>
|
<children>
|
||||||
@ -146,19 +114,34 @@
|
|||||||
<Insets left="10.0" />
|
<Insets left="10.0" />
|
||||||
</HBox.margin>
|
</HBox.margin>
|
||||||
</Label>
|
</Label>
|
||||||
<TextField />
|
<TextField fx:id="titleTextView" editable="false" />
|
||||||
</children>
|
</children>
|
||||||
</HBox>
|
</HBox>
|
||||||
</children>
|
</children>
|
||||||
</AnchorPane>
|
</AnchorPane>
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0">
|
<AnchorPane prefWidth="200.0">
|
||||||
<children>
|
<children>
|
||||||
<TabPane layoutX="1.0" layoutY="69.0" prefHeight="225.0" prefWidth="702.0" tabClosingPolicy="UNAVAILABLE" AnchorPane.bottomAnchor="-67.0" AnchorPane.leftAnchor="1.0" AnchorPane.rightAnchor="1.0" AnchorPane.topAnchor="0.0">
|
<TabPane fx:id="viewTabPane" layoutX="1.0" layoutY="69.0" prefWidth="702.0" tabClosingPolicy="UNAVAILABLE" AnchorPane.bottomAnchor="-67.0" AnchorPane.leftAnchor="1.0" AnchorPane.rightAnchor="1.0" AnchorPane.topAnchor="0.0">
|
||||||
<tabs>
|
<tabs>
|
||||||
<Tab text="Route" />
|
<Tab fx:id="kartenTab" text="Karte">
|
||||||
<Tab text="Description">
|
|
||||||
<content>
|
<content>
|
||||||
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
|
<AnchorPane />
|
||||||
|
</content></Tab>
|
||||||
|
<Tab fx:id="beschreibungTab" text="Beschreibung">
|
||||||
|
<content>
|
||||||
|
<AnchorPane>
|
||||||
|
<children>
|
||||||
|
<TableView fx:id="beschreibungTableView" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
|
<columns>
|
||||||
|
<TableColumn fx:id="nameCol" maxWidth="1.7976931348623157E308" minWidth="70.0" prefWidth="-1.0" text="Tourname" />
|
||||||
|
<TableColumn fx:id="dauerCol" maxWidth="1.7976931348623157E308" minWidth="40.0" prefWidth="-1.0" text="Dauer" />
|
||||||
|
<TableColumn fx:id="streckeCol" maxWidth="1.7976931348623157E308" minWidth="50.0" prefWidth="-1.0" text="Strecke" />
|
||||||
|
<TableColumn fx:id="startCol" maxWidth="1.7976931348623157E308" minWidth="100.0" prefWidth="-1.0" text="Startpunk" />
|
||||||
|
<TableColumn fx:id="zielCol" maxWidth="1.7976931348623157E308" minWidth="100.0" prefWidth="-1.0" text="Zielpunkt" />
|
||||||
|
</columns>
|
||||||
|
</TableView>
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
</content>
|
</content>
|
||||||
</Tab>
|
</Tab>
|
||||||
</tabs>
|
</tabs>
|
||||||
@ -167,25 +150,25 @@
|
|||||||
</AnchorPane>
|
</AnchorPane>
|
||||||
</children>
|
</children>
|
||||||
</VBox>
|
</VBox>
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0">
|
<AnchorPane prefWidth="200.0">
|
||||||
<children>
|
<children>
|
||||||
<VBox prefHeight="200.0" 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 prefHeight="51.0" prefWidth="676.0">
|
<AnchorPane prefWidth="676.0">
|
||||||
<children>
|
<children>
|
||||||
<HBox id="HBox" alignment="CENTER_LEFT" prefHeight="38.0" 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" prefWidth="702.0" spacing="5.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
<children>
|
<children>
|
||||||
<Label text="Logs:">
|
<Label text="Logs:">
|
||||||
<HBox.margin>
|
<HBox.margin>
|
||||||
<Insets left="10.0" />
|
<Insets left="10.0" />
|
||||||
</HBox.margin>
|
</HBox.margin>
|
||||||
</Label>
|
</Label>
|
||||||
<Button mnemonicParsing="false" text="+" textAlignment="CENTER">
|
<Button mnemonicParsing="false" onAction="#addLog" text="+" textAlignment="CENTER">
|
||||||
<HBox.margin>
|
<HBox.margin>
|
||||||
<Insets />
|
<Insets />
|
||||||
</HBox.margin>
|
</HBox.margin>
|
||||||
</Button>
|
</Button>
|
||||||
<Button mnemonicParsing="false" 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 right="10.0" />
|
||||||
</HBox.margin>
|
</HBox.margin>
|
||||||
@ -197,14 +180,17 @@
|
|||||||
</HBox>
|
</HBox>
|
||||||
</children>
|
</children>
|
||||||
</AnchorPane>
|
</AnchorPane>
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0">
|
<AnchorPane prefWidth="200.0">
|
||||||
<children>
|
<children>
|
||||||
<TableView prefHeight="209.0" prefWidth="702.0" 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 prefWidth="238.0" text="Date" />
|
<TableColumn fx:id="logDatumCol" prefWidth="238.0" text="Datum" />
|
||||||
<TableColumn prefWidth="223.0" text="Duration" />
|
<TableColumn fx:id="logDauerCol" prefWidth="223.0" text="Dauer" />
|
||||||
<TableColumn prefWidth="240.0" text="Distance" />
|
<TableColumn fx:id="logStreckeCol" prefWidth="240.0" text="Entfernung" />
|
||||||
</columns>
|
</columns>
|
||||||
|
<columnResizePolicy>
|
||||||
|
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
|
||||||
|
</columnResizePolicy>
|
||||||
</TableView>
|
</TableView>
|
||||||
</children>
|
</children>
|
||||||
</AnchorPane>
|
</AnchorPane>
|
@ -1,33 +0,0 @@
|
|||||||
package tourplaner.ui;
|
|
||||||
|
|
||||||
import javafx.fxml.FXMLLoader;
|
|
||||||
import javafx.scene.Parent;
|
|
||||||
import javafx.scene.Scene;
|
|
||||||
import javafx.stage.Stage;
|
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Presenter des Tourplaners
|
|
||||||
*/
|
|
||||||
public class PresenterMain {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Startet die Gui
|
|
||||||
* @param primaryStage Stage der GUI
|
|
||||||
* @param logger Aktueller Logger
|
|
||||||
*/
|
|
||||||
public PresenterMain(Stage primaryStage, Logger logger){
|
|
||||||
Parent root = null;
|
|
||||||
try {
|
|
||||||
root = FXMLLoader.load(getClass().getResource("../ui/tourplaner.fxml"));
|
|
||||||
primaryStage.setTitle("DerGeorg Touren Planer");
|
|
||||||
primaryStage.setScene(new Scene(root, 600, 600));
|
|
||||||
primaryStage.show();
|
|
||||||
} catch (IOException e) {
|
|
||||||
logger.error(e.getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
259
src/tourplaner/ui/TourplanerController.java
Normal file
259
src/tourplaner/ui/TourplanerController.java
Normal file
@ -0,0 +1,259 @@
|
|||||||
|
package tourplaner.ui;
|
||||||
|
|
||||||
|
import javafx.collections.ObservableList;
|
||||||
|
import javafx.fxml.FXML;
|
||||||
|
import javafx.fxml.Initializable;
|
||||||
|
import javafx.geometry.Orientation;
|
||||||
|
import javafx.scene.control.*;
|
||||||
|
import javafx.scene.control.Label;
|
||||||
|
import javafx.scene.control.TextField;
|
||||||
|
import javafx.scene.control.cell.PropertyValueFactory;
|
||||||
|
import javafx.scene.input.MouseEvent;
|
||||||
|
import tourplaner.business.AlertHelper;
|
||||||
|
import tourplaner.business.ConfigHelper;
|
||||||
|
import tourplaner.business.LogHelper;
|
||||||
|
import tourplaner.object.Log;
|
||||||
|
import tourplaner.object.Tour;
|
||||||
|
import tourplaner.viewmodels.ViewModel;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.URI;
|
||||||
|
import java.net.URISyntaxException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.util.ResourceBundle;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
|
public class TourplanerController implements Initializable {
|
||||||
|
//VM
|
||||||
|
public ViewModel viewModel = new ViewModel();
|
||||||
|
//Tour list -> links
|
||||||
|
public ListView<String> TourListView = new ListView<>();
|
||||||
|
//Tabs zu Tour -> rechts oben
|
||||||
|
public TabPane viewTabPane;
|
||||||
|
public Tab kartenTab, beschreibungTab;
|
||||||
|
public TableView<Tour> beschreibungTableView;
|
||||||
|
public TableColumn<Tour, String> startCol, zielCol, dauerCol, streckeCol, nameCol;
|
||||||
|
public TextField titleTextView, sucheInput;
|
||||||
|
//Log -> rechts unten
|
||||||
|
public TableView<Log> logTableView;
|
||||||
|
public TableColumn<Log, String> logDauerCol, logStreckeCol, logDatumCol;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Öffnet github im standart browser
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@FXML
|
||||||
|
private void gitWebBrowser(){
|
||||||
|
openBrowser(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "hilfe", "gitrepo"), "Git");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Öffnet Java Doc im standart browser
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@FXML
|
||||||
|
private void javaDocBrowser(){
|
||||||
|
openBrowser(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "hilfe", "javadoc"), "JavaDoc");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Öffnet Doxygen Doc im standart browser
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@FXML
|
||||||
|
private 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.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
|
||||||
|
* @param mouseEvent Triggered Event
|
||||||
|
*/
|
||||||
|
@FXML
|
||||||
|
private void tourListSelectedItem(MouseEvent mouseEvent){
|
||||||
|
String selectedItem = TourListView.getSelectionModel().getSelectedItem();
|
||||||
|
this.viewModel.selectTour(selectedItem);
|
||||||
|
titleTextView.setText(selectedItem);
|
||||||
|
beschreibungTableView.getItems().removeIf(s -> true); //Leert die Table View komplett
|
||||||
|
beschreibungTableView.getItems().add(this.viewModel.getTour(selectedItem));
|
||||||
|
startCol.setCellValueFactory(new PropertyValueFactory<Tour, String>("start"));
|
||||||
|
zielCol.setCellValueFactory(new PropertyValueFactory<Tour, String>("ziel"));
|
||||||
|
dauerCol.setCellValueFactory(new PropertyValueFactory<Tour, String>("dauer"));
|
||||||
|
streckeCol.setCellValueFactory(new PropertyValueFactory<Tour, String>("strecke"));
|
||||||
|
nameCol.setCellValueFactory(new PropertyValueFactory<Tour, String>("name"));
|
||||||
|
|
||||||
|
//Log anzeigen
|
||||||
|
logTableView.setPlaceholder(new Label( ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "keinelogsvorhanden")));
|
||||||
|
logTableView.setItems(this.viewModel.getLogData());
|
||||||
|
logDauerCol.setCellValueFactory(new PropertyValueFactory<Log, String>("dauer"));
|
||||||
|
logStreckeCol.setCellValueFactory(new PropertyValueFactory<Log, String>("strecke"));
|
||||||
|
logDatumCol.setCellValueFactory(new PropertyValueFactory<Log, String>("datum"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Beendet die App
|
||||||
|
* Verbunden mit dem Menu -> Datei -> Beenden
|
||||||
|
*/
|
||||||
|
@FXML
|
||||||
|
private void quitApp(){
|
||||||
|
System.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fügt eine Tour hinzu
|
||||||
|
* Verbunden mit Button -> Tour -> +
|
||||||
|
*/
|
||||||
|
@FXML
|
||||||
|
private void addTour(){
|
||||||
|
this.viewModel.addTour();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Entfernt eine ausgewählte Tour
|
||||||
|
* Verbunden mit Button -> Tour -> -
|
||||||
|
*/
|
||||||
|
@FXML
|
||||||
|
private void delTour(){
|
||||||
|
this.beschreibungTableView.getItems().removeIf(s -> true); //löscht alles aus der tabelle
|
||||||
|
this.titleTextView.setText(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "keinetourselected"));
|
||||||
|
this.viewModel.delTour();
|
||||||
|
logTableView.setPlaceholder(new Label( ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "keinetourselected")));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sucht eine Tour
|
||||||
|
* Verbunden mit Button -> Suche
|
||||||
|
*/
|
||||||
|
@FXML
|
||||||
|
private void suche(){
|
||||||
|
String sucheInput = 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fügt einen Log eintrag zu einer Tour hinzu.
|
||||||
|
* Ist keine Tour ausgewählt, dann kommt eine Warnung an den User!
|
||||||
|
*/
|
||||||
|
@FXML
|
||||||
|
private void addLog(){
|
||||||
|
Tour selectedTour = this.viewModel.getSelectedTour();
|
||||||
|
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
|
||||||
|
private void delLog(){
|
||||||
|
Log selectedLog = this.viewModel.getSelectedLog();
|
||||||
|
if(selectedLog != null) {
|
||||||
|
this.viewModel.delLog(selectedLog.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ein Log eintrag wurde ausgewählt
|
||||||
|
* @param mouseEvent Aktuelles Mouse Event
|
||||||
|
*/
|
||||||
|
@FXML
|
||||||
|
private void logItemSelected(MouseEvent mouseEvent){
|
||||||
|
String selectedItem = logTableView.getSelectionModel().getSelectedItem().getId();
|
||||||
|
this.viewModel.selectLog(selectedItem);
|
||||||
|
System.out.println(selectedItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wird beim Start ausgeführt
|
||||||
|
* @param url
|
||||||
|
* @param resourceBundle
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void initialize(URL url, ResourceBundle resourceBundle) {
|
||||||
|
//Tour list -> links
|
||||||
|
TourListView.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
|
||||||
|
TourListView.setOrientation(Orientation.VERTICAL);
|
||||||
|
TourListView.setItems(this.viewModel.getTourNamen());
|
||||||
|
//Tabs zu Tour -> rechts oben
|
||||||
|
beschreibungTableView.setPlaceholder(new Label( ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "keinetourselected")));
|
||||||
|
titleTextView.setText( ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "keinetourselected"));
|
||||||
|
//Log -> rechts unten
|
||||||
|
logTableView.setPlaceholder(new Label( ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "keinetourselected")));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Funktion für noch nicht implementierte sachen wie im Menu der 'Bearbeiten' und 'Optionen' Knopf
|
||||||
|
*/
|
||||||
|
@FXML
|
||||||
|
public void nimpButton(){
|
||||||
|
AlertHelper.inform(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "achtung"),
|
||||||
|
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "fktnichtimplementiert"),
|
||||||
|
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "vergessenodernochnichtsoweit"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,237 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Copyright (c) 2015, 2019, Gluon and/or its affiliates.
|
|
||||||
All rights reserved. Use is subject to license terms.
|
|
||||||
|
|
||||||
This file is available and licensed under the following license:
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions
|
|
||||||
are met:
|
|
||||||
|
|
||||||
- Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer.
|
|
||||||
- Redistributions in binary form must reproduce the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer in
|
|
||||||
the documentation and/or other materials provided with the distribution.
|
|
||||||
- Neither the name of Oracle Corporation nor the names of its
|
|
||||||
contributors may be used to endorse or promote products derived
|
|
||||||
from this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<?import javafx.geometry.Insets?>
|
|
||||||
<?import javafx.scene.control.Button?>
|
|
||||||
<?import javafx.scene.control.Label?>
|
|
||||||
<?import javafx.scene.control.ListView?>
|
|
||||||
<?import javafx.scene.control.Menu?>
|
|
||||||
<?import javafx.scene.control.MenuBar?>
|
|
||||||
<?import javafx.scene.control.MenuItem?>
|
|
||||||
<?import javafx.scene.control.SeparatorMenuItem?>
|
|
||||||
<?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/15.0.1" xmlns:fx="http://javafx.com/fxml/1">
|
|
||||||
<children>
|
|
||||||
<MenuBar VBox.vgrow="NEVER">
|
|
||||||
<menus>
|
|
||||||
<Menu mnemonicParsing="false" text="File">
|
|
||||||
<items>
|
|
||||||
<MenuItem mnemonicParsing="false" text="New" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Open…" />
|
|
||||||
<Menu mnemonicParsing="false" text="Open Recent" />
|
|
||||||
<SeparatorMenuItem mnemonicParsing="false" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Close" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Save" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Save As…" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Revert" />
|
|
||||||
<SeparatorMenuItem mnemonicParsing="false" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Preferences…" />
|
|
||||||
<SeparatorMenuItem mnemonicParsing="false" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Quit" />
|
|
||||||
</items>
|
|
||||||
</Menu>
|
|
||||||
<Menu mnemonicParsing="false" text="Edit">
|
|
||||||
<items>
|
|
||||||
<MenuItem mnemonicParsing="false" text="Undo" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Redo" />
|
|
||||||
<SeparatorMenuItem mnemonicParsing="false" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Cut" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Copy" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Paste" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Delete" />
|
|
||||||
<SeparatorMenuItem mnemonicParsing="false" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Select All" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Unselect All" />
|
|
||||||
</items>
|
|
||||||
</Menu>
|
|
||||||
<Menu mnemonicParsing="false" text="Options">
|
|
||||||
<items>
|
|
||||||
<MenuItem mnemonicParsing="false" text="Undo" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Redo" />
|
|
||||||
<SeparatorMenuItem mnemonicParsing="false" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Cut" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Copy" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Paste" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Delete" />
|
|
||||||
<SeparatorMenuItem mnemonicParsing="false" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Select All" />
|
|
||||||
<MenuItem mnemonicParsing="false" text="Unselect All" />
|
|
||||||
</items>
|
|
||||||
</Menu>
|
|
||||||
<Menu mnemonicParsing="false" text="Help">
|
|
||||||
<items>
|
|
||||||
<MenuItem mnemonicParsing="false" text="About MyHelloApp" />
|
|
||||||
</items>
|
|
||||||
</Menu>
|
|
||||||
</menus>
|
|
||||||
</MenuBar>
|
|
||||||
<HBox id="HBox" alignment="CENTER_LEFT" layoutX="10.0" layoutY="588.0" spacing="5.0">
|
|
||||||
<children>
|
|
||||||
<AnchorPane prefHeight="-1.0" prefWidth="-1.0" HBox.hgrow="ALWAYS">
|
|
||||||
<children>
|
|
||||||
<Button layoutX="58.0" mnemonicParsing="false" text="+" />
|
|
||||||
<Label layoutX="14.0" layoutY="4.0" text="Tours" />
|
|
||||||
<Button layoutX="89.0" mnemonicParsing="false" text="-" />
|
|
||||||
</children></AnchorPane>
|
|
||||||
<TextField text="Suche...." />
|
|
||||||
<Button mnemonicParsing="false" text="Suchen" />
|
|
||||||
</children>
|
|
||||||
<padding>
|
|
||||||
<Insets bottom="3.0" left="3.0" right="3.0" top="3.0" />
|
|
||||||
</padding>
|
|
||||||
</HBox>
|
|
||||||
<SplitPane dividerPositions="0.21492204899777284" focusTraversable="true" prefHeight="522.0" prefWidth="900.0" VBox.vgrow="ALWAYS">
|
|
||||||
<items>
|
|
||||||
<AnchorPane prefHeight="520.0" prefWidth="239.0">
|
|
||||||
<children>
|
|
||||||
<ListView layoutX="-1.0" prefHeight="520.0" prefWidth="190.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
|
||||||
<padding>
|
|
||||||
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
|
|
||||||
</padding>
|
|
||||||
</ListView>
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<SplitPane dividerPositions="0.5" orientation="VERTICAL" prefHeight="496.0" prefWidth="620.0">
|
|
||||||
<items>
|
|
||||||
<VBox prefHeight="200.0" prefWidth="100.0">
|
|
||||||
<children>
|
|
||||||
<AnchorPane prefHeight="51.0" prefWidth="676.0">
|
|
||||||
<children>
|
|
||||||
<HBox id="HBox" alignment="CENTER_LEFT" prefHeight="7.0" prefWidth="44.0" spacing="5.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
|
||||||
<children>
|
|
||||||
<Label text="Title:">
|
|
||||||
<HBox.margin>
|
|
||||||
<Insets left="10.0" />
|
|
||||||
</HBox.margin>
|
|
||||||
</Label>
|
|
||||||
<TextField />
|
|
||||||
</children>
|
|
||||||
</HBox>
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0">
|
|
||||||
<children>
|
|
||||||
<TabPane layoutX="1.0" layoutY="69.0" prefHeight="225.0" prefWidth="702.0" tabClosingPolicy="UNAVAILABLE" AnchorPane.bottomAnchor="-67.0" AnchorPane.leftAnchor="1.0" AnchorPane.rightAnchor="1.0" AnchorPane.topAnchor="0.0">
|
|
||||||
<tabs>
|
|
||||||
<Tab text="Route" />
|
|
||||||
<Tab text="Description">
|
|
||||||
<content>
|
|
||||||
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
|
|
||||||
</content>
|
|
||||||
</Tab>
|
|
||||||
</tabs>
|
|
||||||
</TabPane>
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
</children>
|
|
||||||
</VBox>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0">
|
|
||||||
<children>
|
|
||||||
<VBox prefHeight="200.0" prefWidth="100.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
|
||||||
<children>
|
|
||||||
<AnchorPane prefHeight="51.0" prefWidth="676.0">
|
|
||||||
<children>
|
|
||||||
<HBox id="HBox" alignment="CENTER_LEFT" prefHeight="38.0" prefWidth="702.0" spacing="5.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
|
||||||
<children>
|
|
||||||
<Label text="Logs:">
|
|
||||||
<HBox.margin>
|
|
||||||
<Insets left="10.0" />
|
|
||||||
</HBox.margin>
|
|
||||||
</Label>
|
|
||||||
<Button mnemonicParsing="false" text="+" textAlignment="CENTER">
|
|
||||||
<HBox.margin>
|
|
||||||
<Insets />
|
|
||||||
</HBox.margin>
|
|
||||||
</Button>
|
|
||||||
<Button mnemonicParsing="false" prefWidth="21.0" text="-" textAlignment="CENTER">
|
|
||||||
<HBox.margin>
|
|
||||||
<Insets right="10.0" />
|
|
||||||
</HBox.margin>
|
|
||||||
</Button>
|
|
||||||
</children>
|
|
||||||
<padding>
|
|
||||||
<Insets bottom="3.0" left="3.0" right="3.0" top="3.0" />
|
|
||||||
</padding>
|
|
||||||
</HBox>
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0">
|
|
||||||
<children>
|
|
||||||
<TableView prefHeight="209.0" prefWidth="702.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
|
||||||
<columns>
|
|
||||||
<TableColumn prefWidth="238.0" text="Date" />
|
|
||||||
<TableColumn prefWidth="223.0" text="Duration" />
|
|
||||||
<TableColumn prefWidth="240.0" text="Distance" />
|
|
||||||
</columns>
|
|
||||||
</TableView>
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
</children>
|
|
||||||
</VBox>
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
</items>
|
|
||||||
</SplitPane>
|
|
||||||
</items>
|
|
||||||
</SplitPane>
|
|
||||||
<HBox id="HBox" alignment="CENTER_LEFT" spacing="5.0" VBox.vgrow="NEVER">
|
|
||||||
<children>
|
|
||||||
<Label maxHeight="1.7976931348623157E308" maxWidth="-1.0" text="Left status" HBox.hgrow="ALWAYS">
|
|
||||||
<font>
|
|
||||||
<Font size="11.0" fx:id="x3" />
|
|
||||||
</font>
|
|
||||||
<textFill>
|
|
||||||
<Color red="0.625" green="0.625" blue="0.625" fx:id="x4" />
|
|
||||||
</textFill>
|
|
||||||
</Label>
|
|
||||||
<AnchorPane prefHeight="-1.0" prefWidth="-1.0" HBox.hgrow="ALWAYS" />
|
|
||||||
<Label font="$x3" maxWidth="-1.0" text="Right status" textFill="$x4" HBox.hgrow="NEVER" />
|
|
||||||
</children>
|
|
||||||
<padding>
|
|
||||||
<Insets bottom="3.0" left="3.0" right="3.0" top="3.0" />
|
|
||||||
</padding>
|
|
||||||
</HBox>
|
|
||||||
</children>
|
|
||||||
</VBox>
|
|
219
src/tourplaner/viewmodels/ViewModel.java
Normal file
219
src/tourplaner/viewmodels/ViewModel.java
Normal file
@ -0,0 +1,219 @@
|
|||||||
|
package tourplaner.viewmodels;
|
||||||
|
|
||||||
|
import javafx.collections.FXCollections;
|
||||||
|
import javafx.collections.ObservableList;
|
||||||
|
import tourplaner.business.AlertHelper;
|
||||||
|
import tourplaner.business.ConfigHelper;
|
||||||
|
import tourplaner.business.LogHelper;
|
||||||
|
import tourplaner.object.Log;
|
||||||
|
import tourplaner.object.Tour;
|
||||||
|
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
|
|
||||||
|
public class ViewModel {
|
||||||
|
//Tour
|
||||||
|
private final ObservableList<Tour> tourData = FXCollections.observableArrayList(new Tour("Test 1", "120", "json dings", 22.3, "Wien", "Graz"),new Tour("Test 2", "210", "json dings", 42.3, "Da", "Dort"));
|
||||||
|
private final ObservableList<String> tourNamen = FXCollections.observableArrayList("Test 1", "Test 2");
|
||||||
|
private Tour selectedTour;
|
||||||
|
private String neueTourName, neueTourStart, neueTourZiel;
|
||||||
|
//Log
|
||||||
|
private final ObservableList<Log> logData = FXCollections.observableArrayList();
|
||||||
|
private Log selectedLog;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fügt eine neue Tour hinzu
|
||||||
|
*/
|
||||||
|
public void addTour(){
|
||||||
|
while(this.neueTourName == null) {
|
||||||
|
this.neueTourName = AlertHelper.inputText(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "tournametitle"),
|
||||||
|
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "tournameheader"),
|
||||||
|
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "tournamemsg"));
|
||||||
|
if (getTour(this.neueTourName) != null) {
|
||||||
|
AlertHelper.warn(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "achtung"),
|
||||||
|
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "namevergebenheader"),
|
||||||
|
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "namevergebenmsg1")
|
||||||
|
+ this.neueTourName +
|
||||||
|
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "namevergebenmsg2"));
|
||||||
|
this.neueTourName = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
while(this.neueTourStart == null){
|
||||||
|
this.neueTourStart = AlertHelper.inputText(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "startpunkttitle"),
|
||||||
|
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "startpunktheader"),
|
||||||
|
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "startpunktmsg"));
|
||||||
|
}
|
||||||
|
while(this.neueTourZiel == null){
|
||||||
|
this.neueTourZiel = AlertHelper.inputText(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "zielpunkttitle"),
|
||||||
|
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "zielpunktheader"),
|
||||||
|
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "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 dessen Id
|
||||||
|
* @param id Id des Logs welches entfernt werden soll
|
||||||
|
*/
|
||||||
|
public void delLog(String id){
|
||||||
|
this.logData.removeIf(s -> s.getId().equals(id));
|
||||||
|
AtomicReference<Tour> tourToEdit = new AtomicReference<>();
|
||||||
|
this.tourData.forEach(s -> {
|
||||||
|
if (s.getLogs() != null) {
|
||||||
|
s.getLogs().forEach(ss -> {
|
||||||
|
if (ss.getId().equals(id)) {
|
||||||
|
tourToEdit.set(s);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (tourToEdit.get() != null){
|
||||||
|
Tour toEdit = tourToEdit.get();
|
||||||
|
toEdit.delLog(id);
|
||||||
|
this.tourData.removeIf(s -> s.getName().equals(toEdit.getName()));
|
||||||
|
this.tourData.add(toEdit);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Selectiert ein Log anhand der Id
|
||||||
|
* @param id Id welche zu selectieren ist
|
||||||
|
*/
|
||||||
|
public void selectLog(String id){
|
||||||
|
this.selectedLog = getLog(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holt das selectierte Log als Log Objekt
|
||||||
|
* @return Das selectierte Log Objekt
|
||||||
|
*/
|
||||||
|
public Log getSelectedLog(){
|
||||||
|
return this.selectedLog;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holt ein Log anhand seiner ID
|
||||||
|
* @param id Id des Log Eintrags
|
||||||
|
* @return Das gefundene Log
|
||||||
|
*/
|
||||||
|
public Log getLog(String id){
|
||||||
|
AtomicReference<Log> returnLog = new AtomicReference<>();
|
||||||
|
this.logData.forEach(s -> {
|
||||||
|
if(s.getId().equals(id)){
|
||||||
|
returnLog.set(s);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return returnLog.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ObservableList<Log> getLogData() {
|
||||||
|
return logData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSelectedTour(Tour selectedTour) {
|
||||||
|
this.selectedTour = selectedTour;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Holt das Tourobjekt anhand des Namens
|
||||||
|
* @param tourname Name der Tour
|
||||||
|
* @return Gefundene Tour
|
||||||
|
*/
|
||||||
|
public Tour getTour(String tourname){
|
||||||
|
AtomicReference<Tour> returnTour = new AtomicReference<>();
|
||||||
|
tourData.forEach(s -> {
|
||||||
|
if(s.getName().equals(tourname)){
|
||||||
|
returnTour.set(s);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return returnTour.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Selectiert eine Tour anhand des eindeutigen Namens
|
||||||
|
* @param tourname Der Name der Tour
|
||||||
|
*/
|
||||||
|
public void selectTour(String tourname){
|
||||||
|
this.selectedTour = getTour(tourname);
|
||||||
|
this.logData.removeIf(s -> true); // Löscht alles aus dem Array
|
||||||
|
this.logData.addAll(this.selectedTour.getLogs());
|
||||||
|
}
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * Selectiert eine Tour anhand des Tour Objects.
|
||||||
|
// * Kann z.b. verwerndet werden um das selectierte Tour Object zu bearbeiten
|
||||||
|
// * @param selected
|
||||||
|
// */
|
||||||
|
// public void setSelectedTour(Tour selected){
|
||||||
|
// this.selectedTour = selected;
|
||||||
|
// }
|
||||||
|
|
||||||
|
public Tour getSelectedTour() {
|
||||||
|
return selectedTour;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNeueTourZiel() {
|
||||||
|
return neueTourZiel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNeueTourZiel(String neueTourZiel) {
|
||||||
|
this.neueTourZiel = neueTourZiel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ObservableList<String> getTourNamen() {
|
||||||
|
return tourNamen;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNeueTourName() {
|
||||||
|
return neueTourName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNeueTourName(String neueTourName) {
|
||||||
|
this.neueTourName = neueTourName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNeueTourStart() {
|
||||||
|
return neueTourStart;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNeueTourStart(String neueTourStart) {
|
||||||
|
this.neueTourStart = neueTourStart;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ObservableList<Tour> getTourData() {
|
||||||
|
return tourData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Entfernt eine Tour anhand der ausgewählten Tour
|
||||||
|
*/
|
||||||
|
public void delTour(){
|
||||||
|
try {
|
||||||
|
String tourname = this.selectedTour.getName();
|
||||||
|
tourData.removeIf(s -> s.getName().equals(tourname));
|
||||||
|
tourNamen.removeIf(s -> s.equals(tourname));
|
||||||
|
logData.removeIf(s -> true);
|
||||||
|
}catch (NullPointerException e){
|
||||||
|
LogHelper.error(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "keinetourselected"),
|
||||||
|
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "deltournoselect"));
|
||||||
|
AlertHelper.warn(ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "achtung"),
|
||||||
|
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "keinetourselected"),
|
||||||
|
ConfigHelper.getIniString(ConfigHelper.getStandartConfig(), "langde", "deltournoselectmsg"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sucht eine Tour
|
||||||
|
*/
|
||||||
|
public void suche(String suchString){
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user