From 9ac974ce7bf3f653ca4d54974d734442ec712b31 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Thu, 25 Jan 2018 19:53:59 +0100
Subject: [PATCH] Fixed #21 - convert project to maven; Fixed #20 - insert time
 later gui throws NullPointerException

---
 .classpath                                    |  41 ++++++--
 .gitignore                                    |   6 +-
 .project                                      |   6 +-
 .settings/org.eclipse.jdt.core.prefs          |   1 +
 .settings/org.eclipse.m2e.core.prefs          |   4 +
 build.fxbuild                                 |   8 --
 pom.xml                                       |  94 ++++++++++++++++++
 .../smarttime}/charts/BarChartGenerator.java  |   8 +-
 .../smarttime}/charts/ChartGUIController.java |  10 +-
 .../smarttime}/charts/PieChartGenerator.java  |   6 +-
 .../smarttime}/charts/SummaryGenerator.java   |   6 +-
 .../smarttime/controller}/EditController.java |  10 +-
 .../controller}/InsertTimeController.java     |  10 +-
 .../controller}/ProjektFensterController.java |   8 +-
 .../controller}/TimePickerController.java     |   2 +-
 .../controller}/UserInterfaceController.java  |  34 +++----
 .../deadlocker8/smarttime}/core/Exporter.java |  28 +++---
 .../deadlocker8/smarttime}/core/Importer.java |  27 ++---
 .../smarttime}/core/LogObject.java            |   2 +-
 .../de/deadlocker8/smarttime}/core/SQL.java   |   2 +-
 .../deadlocker8/smarttime}/core/Settings.java |   2 +-
 .../de/deadlocker8/smarttime}/core/Timer.java |   2 +-
 .../de/deadlocker8/smarttime}/core/Utils.java |   4 +-
 .../de/deadlocker8/smarttime/main}/Main.java  |  13 +--
 .../de/deadlocker8/smarttime}/_de.properties  |   0
 .../de/deadlocker8/smarttime/css}/Chart.css   |   0
 .../smarttime/css}/application.css            |   0
 .../smarttime/fxml}/InsertTimeGUI.fxml        |   2 +-
 .../smarttime/fxml/TimePicker.fxml            |  10 ++
 .../deadlocker8/smarttime/fxml}/chartGUI.fxml |   2 +-
 .../deadlocker8/smarttime/fxml}/editGUI.fxml  |   2 +-
 .../smarttime/fxml}/projektFenster.fxml       |   2 +-
 .../smarttime/fxml}/userInterface.fxml        |   2 +-
 .../de/deadlocker8/smarttime}/icon.png        | Bin
 src/userInterface/TimePicker.fxml             |  13 ---
 35 files changed, 245 insertions(+), 122 deletions(-)
 create mode 100644 .settings/org.eclipse.m2e.core.prefs
 delete mode 100644 build.fxbuild
 create mode 100644 pom.xml
 rename src/{ => main/java/de/deadlocker8/smarttime}/charts/BarChartGenerator.java (94%)
 rename src/{ => main/java/de/deadlocker8/smarttime}/charts/ChartGUIController.java (98%)
 rename src/{ => main/java/de/deadlocker8/smarttime}/charts/PieChartGenerator.java (97%)
 rename src/{ => main/java/de/deadlocker8/smarttime}/charts/SummaryGenerator.java (96%)
 rename src/{userInterface => main/java/de/deadlocker8/smarttime/controller}/EditController.java (93%)
 rename src/{userInterface => main/java/de/deadlocker8/smarttime/controller}/InsertTimeController.java (98%)
 rename src/{userInterface => main/java/de/deadlocker8/smarttime/controller}/ProjektFensterController.java (94%)
 rename src/{userInterface => main/java/de/deadlocker8/smarttime/controller}/TimePickerController.java (99%)
 rename src/{userInterface => main/java/de/deadlocker8/smarttime/controller}/UserInterfaceController.java (96%)
 rename src/{ => main/java/de/deadlocker8/smarttime}/core/Exporter.java (65%)
 rename src/{ => main/java/de/deadlocker8/smarttime}/core/Importer.java (83%)
 rename src/{ => main/java/de/deadlocker8/smarttime}/core/LogObject.java (98%)
 rename src/{ => main/java/de/deadlocker8/smarttime}/core/SQL.java (99%)
 rename src/{ => main/java/de/deadlocker8/smarttime}/core/Settings.java (95%)
 rename src/{ => main/java/de/deadlocker8/smarttime}/core/Timer.java (95%)
 rename src/{ => main/java/de/deadlocker8/smarttime}/core/Utils.java (95%)
 rename src/{userInterface => main/java/de/deadlocker8/smarttime/main}/Main.java (79%)
 rename src/{userInterface => main/resources/de/deadlocker8/smarttime}/_de.properties (100%)
 rename src/{charts => main/resources/de/deadlocker8/smarttime/css}/Chart.css (100%)
 rename src/{userInterface => main/resources/de/deadlocker8/smarttime/css}/application.css (100%)
 rename src/{userInterface => main/resources/de/deadlocker8/smarttime/fxml}/InsertTimeGUI.fxml (97%)
 create mode 100644 src/main/resources/de/deadlocker8/smarttime/fxml/TimePicker.fxml
 rename src/{charts => main/resources/de/deadlocker8/smarttime/fxml}/chartGUI.fxml (96%)
 rename src/{userInterface => main/resources/de/deadlocker8/smarttime/fxml}/editGUI.fxml (91%)
 rename src/{userInterface => main/resources/de/deadlocker8/smarttime/fxml}/projektFenster.fxml (89%)
 rename src/{userInterface => main/resources/de/deadlocker8/smarttime/fxml}/userInterface.fxml (99%)
 rename src/{userInterface => main/resources/de/deadlocker8/smarttime}/icon.png (100%)
 delete mode 100644 src/userInterface/TimePicker.fxml

diff --git a/.classpath b/.classpath
index fff3d8e..8e795b1 100644
--- a/.classpath
+++ b/.classpath
@@ -1,11 +1,36 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-	<classpathentry excluding="core/CreateMe.java|core/CurrentWork.java|userInterface/CopyOfUserInterfaceController.java|userInterface/Save.java" kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/controlsfx"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/_Tools"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/SQLite"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/JSON"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/GSON"/>
-	<classpathentry kind="output" path="class"/>
+	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
 </classpath>
diff --git a/.gitignore b/.gitignore
index efdffc7..4b882c9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,5 @@
-class/
\ No newline at end of file
+class/
+bin/
+target/
+
+build/[0-9]*.[0-9]*.[0-9]*
\ No newline at end of file
diff --git a/.project b/.project
index c6c7301..5df00f1 100644
--- a/.project
+++ b/.project
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-	<name>SmartTime-v5.0</name>
+	<name>SmartTime</name>
 	<comment></comment>
 	<projects>
 	</projects>
@@ -11,13 +11,13 @@
 			</arguments>
 		</buildCommand>
 		<buildCommand>
-			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
 			<arguments>
 			</arguments>
 		</buildCommand>
 	</buildSpec>
 	<natures>
-		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
 		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
 	</natures>
 </projectDescription>
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
index a698e59..13b3428 100644
--- a/.settings/org.eclipse.jdt.core.prefs
+++ b/.settings/org.eclipse.jdt.core.prefs
@@ -9,4 +9,5 @@ org.eclipse.jdt.core.compiler.debug.localVariable=generate
 org.eclipse.jdt.core.compiler.debug.sourceFile=generate
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
 org.eclipse.jdt.core.compiler.source=1.8
diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/.settings/org.eclipse.m2e.core.prefs
@@ -0,0 +1,4 @@
+activeProfiles=
+eclipse.preferences.version=1
+resolveWorkspaceProjects=true
+version=1
diff --git a/build.fxbuild b/build.fxbuild
deleted file mode 100644
index f21c65c..0000000
--- a/build.fxbuild
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="ASCII"?>
-<anttasks:AntTask xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:anttasks="http://org.eclipse.fx.ide.dt/1.0" buildDirectory="C:\Program Files\Java\re1.8.0_25">
-  <deploy>
-    <application name="JavaFX" mainclass="userInterface." version="3.3.0" toolkit="fx"/>
-    <info title="test.SmartTime" vendor="Robert Goldmann"/>
-  </deploy>
-  <signar/>
-</anttasks:AntTask>
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..380ed97
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,94 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>de.deadlocker8</groupId>
+  <artifactId>SmartTime</artifactId>
+  <version>5.2.0</version>
+  <build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>3.7.0</version>
+				<configuration>
+					<source>1.8</source>
+					<target>1.8</target>
+				</configuration>
+			</plugin>			
+			<plugin>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<configuration>
+					<outputDirectory>build/${project.version}</outputDirectory>
+					<finalName>SmartTime-v${project.version}</finalName>
+					<appendAssemblyId>false</appendAssemblyId>
+					<archive>
+						<manifest>
+							<mainClass>de.deadlocker8.smarttime.main.Main</mainClass>
+						</manifest>
+					</archive>
+					<descriptorRefs>
+						<descriptorRef>jar-with-dependencies</descriptorRef>
+					</descriptorRefs>
+				</configuration>
+				<executions>
+					<execution>
+						<id>make-assembly</id> <!-- this is used for inheritance merges -->
+						<phase>package</phase> <!-- bind to the packaging phase -->
+						<goals>
+							<goal>single</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<!-- LAUNCH4J -->
+			<plugin>
+				<groupId>com.akathist.maven.plugins.launch4j</groupId>
+				<artifactId>launch4j-maven-plugin</artifactId>
+				<version>1.7.21</version>
+				<executions>
+					<execution>
+						<id>l4j-clui</id>
+						<phase>package</phase>
+						<goals>
+							<goal>launch4j</goal>
+						</goals>
+						<configuration>
+							<headerType>gui</headerType>
+							<jar>build/${project.version}/SmartTime-v${project.version}.jar</jar>
+							<outfile>build/${project.version}/SmartTime-v${project.version}.exe</outfile>
+							<downloadUrl>http://java.com/download</downloadUrl>
+							<classPath>
+								<mainClass>de.deadlocker8.smarttime.main.Main</mainClass>
+							</classPath>
+							<jre>
+								<bundledJre64Bit>false</bundledJre64Bit>
+								<bundledJreAsFallback>false</bundledJreAsFallback>
+								<minVersion>1.8.0</minVersion>
+								<jdkPreference>preferJre</jdkPreference>
+								<runtimeBits>64/32</runtimeBits>
+							</jre>
+							<icon>build/Icon.ico</icon>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+
+	<dependencies>	
+		<dependency>
+			<groupId>de.deadlocker8</groupId>
+			<artifactId>tools</artifactId>
+			<version>1.0.0</version>
+		</dependency>
+		<dependency>
+			<groupId>com.google.code.gson</groupId>
+			<artifactId>gson</artifactId>
+			<version>2.8.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.xerial</groupId>
+			<artifactId>sqlite-jdbc</artifactId>
+			<version>3.21.0</version>
+		</dependency>
+	</dependencies>
+</project>
\ No newline at end of file
diff --git a/src/charts/BarChartGenerator.java b/src/main/java/de/deadlocker8/smarttime/charts/BarChartGenerator.java
similarity index 94%
rename from src/charts/BarChartGenerator.java
rename to src/main/java/de/deadlocker8/smarttime/charts/BarChartGenerator.java
index 62ba680..753d0c2 100644
--- a/src/charts/BarChartGenerator.java
+++ b/src/main/java/de/deadlocker8/smarttime/charts/BarChartGenerator.java
@@ -1,8 +1,11 @@
-package charts;
+package de.deadlocker8.smarttime.charts;
 
 import java.util.ArrayList;
 import java.util.Calendar;
 
+import de.deadlocker8.smarttime.core.LogObject;
+import de.deadlocker8.smarttime.core.SQL;
+import de.deadlocker8.smarttime.core.Utils;
 import javafx.geometry.Point2D;
 import javafx.scene.Node;
 import javafx.event.*;
@@ -14,9 +17,6 @@ import javafx.scene.chart.XYChart.Data;
 import javafx.scene.chart.XYChart.Series;
 import javafx.scene.control.Tooltip;
 import javafx.scene.input.MouseEvent;
-import core.LogObject;
-import core.SQL;
-import core.Utils;
 
 public class BarChartGenerator
 {
diff --git a/src/charts/ChartGUIController.java b/src/main/java/de/deadlocker8/smarttime/charts/ChartGUIController.java
similarity index 98%
rename from src/charts/ChartGUIController.java
rename to src/main/java/de/deadlocker8/smarttime/charts/ChartGUIController.java
index 0395293..2333e24 100644
--- a/src/charts/ChartGUIController.java
+++ b/src/main/java/de/deadlocker8/smarttime/charts/ChartGUIController.java
@@ -1,13 +1,13 @@
-package charts;
+package de.deadlocker8.smarttime.charts;
 
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
 
-import core.LogObject;
-import core.SQL;
-import core.Settings;
-import core.Utils;
+import de.deadlocker8.smarttime.core.LogObject;
+import de.deadlocker8.smarttime.core.SQL;
+import de.deadlocker8.smarttime.core.Settings;
+import de.deadlocker8.smarttime.core.Utils;
 import javafx.beans.value.ChangeListener;
 import javafx.beans.value.ObservableValue;
 import javafx.fxml.FXML;
diff --git a/src/charts/PieChartGenerator.java b/src/main/java/de/deadlocker8/smarttime/charts/PieChartGenerator.java
similarity index 97%
rename from src/charts/PieChartGenerator.java
rename to src/main/java/de/deadlocker8/smarttime/charts/PieChartGenerator.java
index ec9f4f3..fea7b62 100644
--- a/src/charts/PieChartGenerator.java
+++ b/src/main/java/de/deadlocker8/smarttime/charts/PieChartGenerator.java
@@ -1,8 +1,10 @@
-package charts;
+package de.deadlocker8.smarttime.charts;
 
 import java.util.ArrayList;
 import java.util.HashSet;
 
+import de.deadlocker8.smarttime.core.LogObject;
+import de.deadlocker8.smarttime.core.SQL;
 import javafx.collections.FXCollections;
 import javafx.collections.ObservableList;
 import javafx.event.EventHandler;
@@ -12,8 +14,6 @@ import javafx.scene.chart.PieChart;
 import javafx.scene.control.Tooltip;
 import javafx.scene.input.MouseEvent;
 import tools.ConvertTo;
-import core.LogObject;
-import core.SQL;
 
 public class PieChartGenerator
 {
diff --git a/src/charts/SummaryGenerator.java b/src/main/java/de/deadlocker8/smarttime/charts/SummaryGenerator.java
similarity index 96%
rename from src/charts/SummaryGenerator.java
rename to src/main/java/de/deadlocker8/smarttime/charts/SummaryGenerator.java
index 91af6a9..0d6ee9b 100644
--- a/src/charts/SummaryGenerator.java
+++ b/src/main/java/de/deadlocker8/smarttime/charts/SummaryGenerator.java
@@ -1,10 +1,10 @@
-package charts;
+package de.deadlocker8.smarttime.charts;
 
 import java.util.ArrayList;
 import java.util.HashSet;
 
-import core.LogObject;
-import core.SQL;
+import de.deadlocker8.smarttime.core.LogObject;
+import de.deadlocker8.smarttime.core.SQL;
 import javafx.geometry.Insets;
 import javafx.geometry.Pos;
 import javafx.scene.control.Label;
diff --git a/src/userInterface/EditController.java b/src/main/java/de/deadlocker8/smarttime/controller/EditController.java
similarity index 93%
rename from src/userInterface/EditController.java
rename to src/main/java/de/deadlocker8/smarttime/controller/EditController.java
index 27ad81b..032d0cc 100644
--- a/src/userInterface/EditController.java
+++ b/src/main/java/de/deadlocker8/smarttime/controller/EditController.java
@@ -1,13 +1,13 @@
-package userInterface;
+package de.deadlocker8.smarttime.controller;
 
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Optional;
 
-import core.LogObject;
-import core.SQL;
-import core.Settings;
-import core.Utils;
+import de.deadlocker8.smarttime.core.LogObject;
+import de.deadlocker8.smarttime.core.SQL;
+import de.deadlocker8.smarttime.core.Settings;
+import de.deadlocker8.smarttime.core.Utils;
 import javafx.beans.value.ChangeListener;
 import javafx.beans.value.ObservableValue;
 import javafx.event.ActionEvent;
diff --git a/src/userInterface/InsertTimeController.java b/src/main/java/de/deadlocker8/smarttime/controller/InsertTimeController.java
similarity index 98%
rename from src/userInterface/InsertTimeController.java
rename to src/main/java/de/deadlocker8/smarttime/controller/InsertTimeController.java
index 0142eb6..08be286 100644
--- a/src/userInterface/InsertTimeController.java
+++ b/src/main/java/de/deadlocker8/smarttime/controller/InsertTimeController.java
@@ -1,4 +1,4 @@
-package userInterface;
+package de.deadlocker8.smarttime.controller;
 
 import java.sql.Timestamp;
 import java.text.DateFormat;
@@ -12,10 +12,10 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
 
-import core.LogObject;
-import core.SQL;
-import core.Settings;
-import core.Utils;
+import de.deadlocker8.smarttime.core.LogObject;
+import de.deadlocker8.smarttime.core.SQL;
+import de.deadlocker8.smarttime.core.Settings;
+import de.deadlocker8.smarttime.core.Utils;
 import fontAwesome.FontIcon;
 import fontAwesome.FontIconType;
 import javafx.beans.value.ChangeListener;
diff --git a/src/userInterface/ProjektFensterController.java b/src/main/java/de/deadlocker8/smarttime/controller/ProjektFensterController.java
similarity index 94%
rename from src/userInterface/ProjektFensterController.java
rename to src/main/java/de/deadlocker8/smarttime/controller/ProjektFensterController.java
index ca02d1d..a38c4f6 100644
--- a/src/userInterface/ProjektFensterController.java
+++ b/src/main/java/de/deadlocker8/smarttime/controller/ProjektFensterController.java
@@ -1,11 +1,11 @@
-package userInterface;
+package de.deadlocker8.smarttime.controller;
 
 import java.util.ArrayList;
 import java.util.Collections;
 
-import core.SQL;
-import core.Settings;
-import core.Utils;
+import de.deadlocker8.smarttime.core.SQL;
+import de.deadlocker8.smarttime.core.Settings;
+import de.deadlocker8.smarttime.core.Utils;
 import javafx.beans.value.ChangeListener;
 import javafx.beans.value.ObservableValue;
 import javafx.event.ActionEvent;
diff --git a/src/userInterface/TimePickerController.java b/src/main/java/de/deadlocker8/smarttime/controller/TimePickerController.java
similarity index 99%
rename from src/userInterface/TimePickerController.java
rename to src/main/java/de/deadlocker8/smarttime/controller/TimePickerController.java
index ac46f5c..e538f74 100644
--- a/src/userInterface/TimePickerController.java
+++ b/src/main/java/de/deadlocker8/smarttime/controller/TimePickerController.java
@@ -1,4 +1,4 @@
-package userInterface;
+package de.deadlocker8.smarttime.controller;
 
 import java.net.URL;
 import java.util.ResourceBundle;
diff --git a/src/userInterface/UserInterfaceController.java b/src/main/java/de/deadlocker8/smarttime/controller/UserInterfaceController.java
similarity index 96%
rename from src/userInterface/UserInterfaceController.java
rename to src/main/java/de/deadlocker8/smarttime/controller/UserInterfaceController.java
index 00c85d8..012d4fc 100644
--- a/src/userInterface/UserInterfaceController.java
+++ b/src/main/java/de/deadlocker8/smarttime/controller/UserInterfaceController.java
@@ -1,4 +1,4 @@
-package userInterface;
+package de.deadlocker8.smarttime.controller;
 
 import java.io.File;
 import java.io.IOException;
@@ -12,14 +12,14 @@ import java.util.Optional;
 import java.util.ResourceBundle;
 import java.util.regex.Pattern;
 
-import charts.ChartGUIController;
-import core.Exporter;
-import core.Importer;
-import core.LogObject;
-import core.SQL;
-import core.Settings;
-import core.Timer;
-import core.Utils;
+import de.deadlocker8.smarttime.charts.ChartGUIController;
+import de.deadlocker8.smarttime.core.Exporter;
+import de.deadlocker8.smarttime.core.Importer;
+import de.deadlocker8.smarttime.core.LogObject;
+import de.deadlocker8.smarttime.core.SQL;
+import de.deadlocker8.smarttime.core.Settings;
+import de.deadlocker8.smarttime.core.Timer;
+import de.deadlocker8.smarttime.core.Utils;
 import javafx.application.Platform;
 import javafx.beans.property.SimpleStringProperty;
 import javafx.beans.property.StringProperty;
@@ -95,7 +95,7 @@ public class UserInterfaceController
 	private SQL sql;
 	private Stage waitingStage = new Stage();
 	private Image icon;
-	private final ResourceBundle bundle = ResourceBundle.getBundle("userInterface/", Locale.GERMANY);
+	private final ResourceBundle bundle = ResourceBundle.getBundle("de/deadlocker8/smarttime/", Locale.GERMANY);
 	private Settings settings;
 
 	public void init(Stage stage)
@@ -104,7 +104,7 @@ public class UserInterfaceController
 
 		labelSeparator.setStyle("-fx-background-color: #cdc6c6; -fx-font-size: 0.7");
 		PathUtils.checkFolder(new File(DEFAULT_SAVE_PATH));
-		icon = new Image("/userInterface/icon.png");
+		icon = new Image("/de/deadlocker8/smarttime/icon.png");
 		accordion.setExpandedPane(gesamtesLog);
 		projektExistiertFlag = false;
 		labelTime.setText("0 h  0  min  0 sek");
@@ -184,7 +184,7 @@ public class UserInterfaceController
 		{
 			try
 			{
-				FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("projektFenster.fxml"));
+				FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/smarttime/fxml/projektFenster.fxml"));
 				Parent root = (Parent)fxmlLoader.load();
 				Stage newStage = new Stage();
 				newStage.setScene(new Scene(root, 455, 300));
@@ -438,10 +438,10 @@ public class UserInterfaceController
 	{
 		try
 		{
-			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/charts/chartGUI.fxml"));
+			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/smarttime/fxml/chartGUI.fxml"));
 			Parent root = (Parent)fxmlLoader.load();
 			Scene scene = new Scene(root, 800, 600);
-			scene.getStylesheets().add("charts/Chart.css");
+			scene.getStylesheets().add("/de/deadlocker8/smarttime/css/Chart.css");
 			Stage newStage = new Stage();
 			newStage.setScene(scene);
 			newStage.setTitle("Diagramme");
@@ -520,7 +520,7 @@ public class UserInterfaceController
 	{
 		try
 		{
-			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/userInterface/InsertTimeGUI.fxml"));
+			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/smarttime/fxml/InsertTimeGUI.fxml"));
 			Parent root = (Parent)fxmlLoader.load();
 			Scene scene = new Scene(root, 540, 400);
 			Stage newStage = new Stage();
@@ -534,7 +534,7 @@ public class UserInterfaceController
 
 			newStage.setResizable(false);
 			newStage.initModality(Modality.APPLICATION_MODAL);
-			newStage.showAndWait();
+			newStage.show();
 		}
 		catch(IOException e)
 		{
@@ -718,7 +718,7 @@ public class UserInterfaceController
 	{
 		try
 		{
-			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("editGUI.fxml"));
+			FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/de/deadlocker8/smarttime/fxml/editGUI.fxml"));
 			Parent root = (Parent)fxmlLoader.load();
 			Stage newStage = new Stage();
 			newStage.setScene(new Scene(root, 455, 280));
diff --git a/src/core/Exporter.java b/src/main/java/de/deadlocker8/smarttime/core/Exporter.java
similarity index 65%
rename from src/core/Exporter.java
rename to src/main/java/de/deadlocker8/smarttime/core/Exporter.java
index 205bdf1..3fe6ff7 100644
--- a/src/core/Exporter.java
+++ b/src/main/java/de/deadlocker8/smarttime/core/Exporter.java
@@ -1,4 +1,4 @@
-package core;
+package de.deadlocker8.smarttime.core;
 
 import java.io.BufferedWriter;
 import java.io.File;
@@ -6,7 +6,8 @@ import java.io.FileWriter;
 import java.util.ArrayList;
 import java.util.Date;
 
-import org.jason.JSONObject;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
 
 import javafx.application.Platform;
 import javafx.scene.control.Alert.AlertType;
@@ -35,21 +36,24 @@ public class Exporter
 			SQL sql = new SQL(path);			
 			ArrayList<LogObject> objects = sql.getLogObjects();
 			
-			JSONObject allItems = new JSONObject();
+			JsonObject allItems = new JsonObject();			
+			allItems.addProperty("SmartTime", new Date().toString());
 			
-			allItems.put("SmartTime", new Date());		
+			JsonArray allLogObjects = new JsonArray();			
 			
 			for(LogObject current : objects)
 			{
-				JSONObject item = new JSONObject();	
-				item.put("date", current.getDate());
-				item.put("startTime", current.getStartTime());
-				item.put("endTime", current.getEndTime());
-				item.put("duration", current.getDuration());	
-				item.put("project", current.getProject());
-				item.put("task", current.getTask());
-				allItems.append("logObjects", item);
+				JsonObject item = new JsonObject();	
+				item.addProperty("date", current.getDate());
+				item.addProperty("startTime", current.getStartTime());
+				item.addProperty("endTime", current.getEndTime());
+				item.addProperty("duration", current.getDuration());	
+				item.addProperty("project", current.getProject());
+				item.addProperty("task", current.getTask());
+				allLogObjects.add(item);
 			}	
+			
+			allItems.add("logObjects", allLogObjects);
 		
 			BufferedWriter out = new BufferedWriter(new FileWriter(file));		
             out.write(allItems.toString());           
diff --git a/src/core/Importer.java b/src/main/java/de/deadlocker8/smarttime/core/Importer.java
similarity index 83%
rename from src/core/Importer.java
rename to src/main/java/de/deadlocker8/smarttime/core/Importer.java
index c6a6152..f63fad7 100644
--- a/src/core/Importer.java
+++ b/src/main/java/de/deadlocker8/smarttime/core/Importer.java
@@ -1,4 +1,4 @@
-package core;
+package de.deadlocker8.smarttime.core;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -7,8 +7,9 @@ import java.io.InputStreamReader;
 import java.util.ArrayList;
 import java.util.regex.Pattern;
 
-import org.jason.JSONArray;
-import org.jason.JSONObject;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
 
 import javafx.application.Platform;
 import javafx.scene.control.Alert.AlertType;
@@ -105,19 +106,19 @@ public class Importer
 			}			
 			reader.close();			
 			
-			JSONObject allItems = new JSONObject(text);		
+			JsonObject allItems = new JsonParser().parse(text).getAsJsonObject();
 			
 			SQL sql = new SQL(path);
-			JSONArray loadedItems = (JSONArray)allItems.get("logObjects");
-			for(int i = 0; i < loadedItems.length(); i++)
+			JsonArray loadedItems = (JsonArray)allItems.get("logObjects");
+			for(int i = 0; i < loadedItems.size(); i++)
 			{
-				JSONObject item = (JSONObject) loadedItems.get(i);
-				String date = item.getString("date");
-				String startTime = item.getString("startTime");
-				String endTime = item.getString("endTime");
-				long duration = item.getLong("duration");
-				String project = item.getString("project");
-				String task = item.getString("task");
+				JsonObject item = (JsonObject) loadedItems.get(i);
+				String date = item.get("date").getAsString();
+				String startTime = item.get("startTime").getAsString();
+				String endTime = item.get("endTime").getAsString();
+				long duration = item.get("duration").getAsLong();
+				String project = item.get("project").getAsString();
+				String task = item.get("task").getAsString();
 				
 				String[] dateParts = date.split(Pattern.quote("."));
 				
diff --git a/src/core/LogObject.java b/src/main/java/de/deadlocker8/smarttime/core/LogObject.java
similarity index 98%
rename from src/core/LogObject.java
rename to src/main/java/de/deadlocker8/smarttime/core/LogObject.java
index dfd6da4..8d27fe5 100644
--- a/src/core/LogObject.java
+++ b/src/main/java/de/deadlocker8/smarttime/core/LogObject.java
@@ -1,4 +1,4 @@
-package core;
+package de.deadlocker8.smarttime.core;
 
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
diff --git a/src/core/SQL.java b/src/main/java/de/deadlocker8/smarttime/core/SQL.java
similarity index 99%
rename from src/core/SQL.java
rename to src/main/java/de/deadlocker8/smarttime/core/SQL.java
index 9857023..9c0eec4 100644
--- a/src/core/SQL.java
+++ b/src/main/java/de/deadlocker8/smarttime/core/SQL.java
@@ -1,4 +1,4 @@
-package core;
+package de.deadlocker8.smarttime.core;
 
 import java.sql.Connection;
 import java.sql.DriverManager;
diff --git a/src/core/Settings.java b/src/main/java/de/deadlocker8/smarttime/core/Settings.java
similarity index 95%
rename from src/core/Settings.java
rename to src/main/java/de/deadlocker8/smarttime/core/Settings.java
index fd6a151..68113c6 100644
--- a/src/core/Settings.java
+++ b/src/main/java/de/deadlocker8/smarttime/core/Settings.java
@@ -1,4 +1,4 @@
-package core;
+package de.deadlocker8.smarttime.core;
 
 public class Settings
 {
diff --git a/src/core/Timer.java b/src/main/java/de/deadlocker8/smarttime/core/Timer.java
similarity index 95%
rename from src/core/Timer.java
rename to src/main/java/de/deadlocker8/smarttime/core/Timer.java
index b91cb48..4c21a5e 100644
--- a/src/core/Timer.java
+++ b/src/main/java/de/deadlocker8/smarttime/core/Timer.java
@@ -1,4 +1,4 @@
-package core;
+package de.deadlocker8.smarttime.core;
 
 import javafx.animation.KeyFrame;
 import javafx.animation.Timeline;
diff --git a/src/core/Utils.java b/src/main/java/de/deadlocker8/smarttime/core/Utils.java
similarity index 95%
rename from src/core/Utils.java
rename to src/main/java/de/deadlocker8/smarttime/core/Utils.java
index a040493..fe37253 100644
--- a/src/core/Utils.java
+++ b/src/main/java/de/deadlocker8/smarttime/core/Utils.java
@@ -1,4 +1,4 @@
-package core;
+package de.deadlocker8.smarttime.core;
 
 import java.io.File;
 import java.io.IOException;
@@ -17,7 +17,7 @@ import tools.PathUtils;
 
 public class Utils 
 {   
-	private static final ResourceBundle bundle = ResourceBundle.getBundle("userInterface/", Locale.GERMANY);
+	private static final ResourceBundle bundle = ResourceBundle.getBundle("de/deadlocker8/smarttime/", Locale.GERMANY);
 	
     private static final String[] AVAILABLE_MONTH_NAMES = {"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"};
     
diff --git a/src/userInterface/Main.java b/src/main/java/de/deadlocker8/smarttime/main/Main.java
similarity index 79%
rename from src/userInterface/Main.java
rename to src/main/java/de/deadlocker8/smarttime/main/Main.java
index 11b2eb2..d4f01ba 100644
--- a/src/userInterface/Main.java
+++ b/src/main/java/de/deadlocker8/smarttime/main/Main.java
@@ -1,9 +1,10 @@
-package userInterface;
+package de.deadlocker8.smarttime.main;
 
 import java.io.File;
 import java.util.Locale;
 import java.util.ResourceBundle;
 
+import de.deadlocker8.smarttime.controller.UserInterfaceController;
 import javafx.application.Application;
 import javafx.event.EventHandler;
 import javafx.fxml.FXMLLoader;
@@ -26,11 +27,11 @@ public class Main extends Application
 	{
 		try
 		{			
-			FXMLLoader loader = new FXMLLoader(getClass().getResource("userInterface.fxml"));
+			FXMLLoader loader = new FXMLLoader(getClass().getResource("/de/deadlocker8/smarttime/fxml/userInterface.fxml"));
 			Parent root = (Parent)loader.load();
 
 			Scene scene = new Scene(root, 800, 800);
-			scene.getStylesheets().add("/userInterface/application.css");
+			scene.getStylesheets().add("/de/deadlocker8/smarttime/css/application.css");
 			stage.setMinHeight(500);
 			stage.setMinWidth(700);
 			stage.setResizable(true);
@@ -40,7 +41,7 @@ public class Main extends Application
 			UserInterfaceController controller = (UserInterfaceController)loader.getController();			
 			controller.init(stage);
 
-			stage.getIcons().add(new Image("/userInterface/icon.png"));
+			stage.getIcons().add(new Image("/de/deadlocker8/smarttime/icon.png"));
 			stage.show();
 
 			// fängt die Aufforderung das Fenster zu schließen ab, um vorher
@@ -51,7 +52,7 @@ public class Main extends Application
 				{
 					if(controller.isTimerRunning())
 					{
-						AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Die Stoppuhr läuft noch!", new Image("/userInterface/icon.png"), stage, null, false);
+						AlertGenerator.showAlert(AlertType.WARNING, "Warnung", "", "Die Stoppuhr läuft noch!", new Image("/de/deadlocker8/smarttime/icon.png"), stage, null, false);
 						
 						// "schluckt" die Aufforderung das Fenster zu schließen
 						// (Fenster wird dadurch nicht geschlossen)
@@ -73,7 +74,7 @@ public class Main extends Application
 	@Override
 	public void init() throws Exception
 	{
-		ResourceBundle bundle = ResourceBundle.getBundle("userInterface/", Locale.GERMANY);
+		ResourceBundle bundle = ResourceBundle.getBundle("de/deadlocker8/smarttime/", Locale.GERMANY);
 		
 		Parameters params = getParameters();
 		String logLevelParam = params.getNamed().get("loglevel");		
diff --git a/src/userInterface/_de.properties b/src/main/resources/de/deadlocker8/smarttime/_de.properties
similarity index 100%
rename from src/userInterface/_de.properties
rename to src/main/resources/de/deadlocker8/smarttime/_de.properties
diff --git a/src/charts/Chart.css b/src/main/resources/de/deadlocker8/smarttime/css/Chart.css
similarity index 100%
rename from src/charts/Chart.css
rename to src/main/resources/de/deadlocker8/smarttime/css/Chart.css
diff --git a/src/userInterface/application.css b/src/main/resources/de/deadlocker8/smarttime/css/application.css
similarity index 100%
rename from src/userInterface/application.css
rename to src/main/resources/de/deadlocker8/smarttime/css/application.css
diff --git a/src/userInterface/InsertTimeGUI.fxml b/src/main/resources/de/deadlocker8/smarttime/fxml/InsertTimeGUI.fxml
similarity index 97%
rename from src/userInterface/InsertTimeGUI.fxml
rename to src/main/resources/de/deadlocker8/smarttime/fxml/InsertTimeGUI.fxml
index 5bcfeb3..b42807d 100644
--- a/src/userInterface/InsertTimeGUI.fxml
+++ b/src/main/resources/de/deadlocker8/smarttime/fxml/InsertTimeGUI.fxml
@@ -8,7 +8,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane prefHeight="400.0" prefWidth="540.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="userInterface.InsertTimeController">
+<AnchorPane prefHeight="400.0" prefWidth="540.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.smarttime.controller.InsertTimeController">
    <children>
       <Label layoutX="35.0" layoutY="128.0" text="Startdatum:">
          <font>
diff --git a/src/main/resources/de/deadlocker8/smarttime/fxml/TimePicker.fxml b/src/main/resources/de/deadlocker8/smarttime/fxml/TimePicker.fxml
new file mode 100644
index 0000000..5ca6e10
--- /dev/null
+++ b/src/main/resources/de/deadlocker8/smarttime/fxml/TimePicker.fxml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import javafx.scene.layout.AnchorPane?>
+<?import javafx.scene.layout.HBox?>
+
+<AnchorPane xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.smarttime.controller.TimePickerController">
+   <children>
+      <HBox fx:id="hbox" alignment="CENTER" />
+   </children>
+</AnchorPane>
diff --git a/src/charts/chartGUI.fxml b/src/main/resources/de/deadlocker8/smarttime/fxml/chartGUI.fxml
similarity index 96%
rename from src/charts/chartGUI.fxml
rename to src/main/resources/de/deadlocker8/smarttime/fxml/chartGUI.fxml
index 3a2dbc7..ab8d0d3 100644
--- a/src/charts/chartGUI.fxml
+++ b/src/main/resources/de/deadlocker8/smarttime/fxml/chartGUI.fxml
@@ -8,7 +8,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="charts.ChartGUIController">
+<AnchorPane prefHeight="600.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.smarttime.charts.ChartGUIController">
    <children>
       <VBox prefHeight="600.0" prefWidth="800.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
          <children>
diff --git a/src/userInterface/editGUI.fxml b/src/main/resources/de/deadlocker8/smarttime/fxml/editGUI.fxml
similarity index 91%
rename from src/userInterface/editGUI.fxml
rename to src/main/resources/de/deadlocker8/smarttime/fxml/editGUI.fxml
index ff6473b..a6b68bb 100644
--- a/src/userInterface/editGUI.fxml
+++ b/src/main/resources/de/deadlocker8/smarttime/fxml/editGUI.fxml
@@ -6,7 +6,7 @@
 <?import javafx.scene.layout.AnchorPane?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="300.0" prefWidth="455.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="userInterface.EditController">
+<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="300.0" prefWidth="455.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.smarttime.controller.EditController">
    <children>
       <Button layoutX="66.0" layoutY="221.0" mnemonicParsing="false" onAction="#okButton" prefWidth="92.0" text="OK">
          <font>
diff --git a/src/userInterface/projektFenster.fxml b/src/main/resources/de/deadlocker8/smarttime/fxml/projektFenster.fxml
similarity index 89%
rename from src/userInterface/projektFenster.fxml
rename to src/main/resources/de/deadlocker8/smarttime/fxml/projektFenster.fxml
index e81fcf4..c9c1b55 100644
--- a/src/userInterface/projektFenster.fxml
+++ b/src/main/resources/de/deadlocker8/smarttime/fxml/projektFenster.fxml
@@ -6,7 +6,7 @@
 <?import javafx.scene.layout.AnchorPane?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="300.0" prefWidth="455.0" xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="userInterface.ProjektFensterController">
+<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="300.0" prefWidth="455.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.smarttime.controller.ProjektFensterController">
    <children>
       <Button layoutX="109.0" layoutY="223.0" mnemonicParsing="false" onAction="#okButton" prefWidth="100.0" text="OK">
          <font>
diff --git a/src/userInterface/userInterface.fxml b/src/main/resources/de/deadlocker8/smarttime/fxml/userInterface.fxml
similarity index 99%
rename from src/userInterface/userInterface.fxml
rename to src/main/resources/de/deadlocker8/smarttime/fxml/userInterface.fxml
index 48dad1f..873b4d6 100644
--- a/src/userInterface/userInterface.fxml
+++ b/src/main/resources/de/deadlocker8/smarttime/fxml/userInterface.fxml
@@ -16,7 +16,7 @@
 <?import javafx.scene.layout.VBox?>
 <?import javafx.scene.text.Font?>
 
-<AnchorPane prefHeight="800.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="userInterface.UserInterfaceController">
+<AnchorPane prefHeight="800.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.deadlocker8.smarttime.controller.UserInterfaceController">
    <children>
       <VBox alignment="TOP_CENTER" layoutX="143.0" layoutY="69.0" prefHeight="800.0" prefWidth="650.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
          <children>
diff --git a/src/userInterface/icon.png b/src/main/resources/de/deadlocker8/smarttime/icon.png
similarity index 100%
rename from src/userInterface/icon.png
rename to src/main/resources/de/deadlocker8/smarttime/icon.png
diff --git a/src/userInterface/TimePicker.fxml b/src/userInterface/TimePicker.fxml
deleted file mode 100644
index 4d9f179..0000000
--- a/src/userInterface/TimePicker.fxml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<?import javafx.scene.text.*?>
-<?import javafx.scene.control.*?>
-<?import java.lang.*?>
-<?import javafx.scene.layout.*?>
-<?import javafx.scene.layout.AnchorPane?>
-
-<AnchorPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="userInterface.TimePickerController">
-   <children>
-      <HBox fx:id="hbox" alignment="CENTER" />
-   </children>
-</AnchorPane>
-- 
GitLab