Skip to content

Installation & Projektaufbau

JohnBryanSpieker edited this page Jun 19, 2020 · 12 revisions

In diesem Abschnitt wird erläutert, wie Sie das Pojekt lokal installieren können und wo Sie welche Komponenten finden.

Installation

Als Vorraussetzung benötigen Sie ein installiertes Node.js und Maven.

Als IDEA empfehle Ich persönlich die Verwendung von Intellij, da diese auch genutzt wurde, um den kompletten Code zu erstellen(06/2020).

Sobald Sie das Projekt geclont habe, kann dieses als Maven-Projekt in der gewünschten IDEA geöffnet werden. Zunächst sollte ein Clean&Install durchgeführt werden, damit alle nötigen Abhängigkeiten geladen werden können. Im Projekt befindet sich die Klasse "ApllicationStart", welche SpringBoot startet und die Datenbank inital mit zwei Usern (test und admin) erstellt. Der erste Start kann etwas länger dauern, da zunächst die Node.js-Module geladen werden müssen.

Sobald die Meldung "Gestartet" im Log zu finden ist, kann die Application über die Browser-URL "http://localhost:8080/Termin" erreicht werden. Man wird jedoch erst umgeleitet auf die Login-Seite. Was in den einzelnen Masken getan werden kann, finden Sie im Abschnitt Umsetzung.

Projektaufbau

Das Projekt wird in drei Packages aufgeteilt. Zum einen wäre dort das "xmlexport"-Package. Dieses beinhaltet 3 Simple Klassen. Der LocalDateAdapter wird benötigt, damit das Datum sowohl in den export als auch beim import korrekt verarbeitet werden kann. Tasklist ist die Klasse, welche eine Liste von Task und eine Liste von Categorys beinhaltet. der JaxbConverter ist dafür zuständig, das Exportfile bereit zu stellen und ein Importfile korrekt einzulesen.

Als zweites Package gibt es "authentication". Hier befindet sich alles zum Login-Prozess und die Klasse, welche den User der Session bereitstellt. Als einzige Außnahme ist der "LoginScreen". Dieser befindet sich im dritten und letzten Package. Dem "canban"-Package.

Das "canban"-Package ist das Herzstück des ganzen Projektes. Hier befindet sich auch die "ApplicationStart"-Klasse. Die Klassen "KanbanCalendarInitListener" ist dafür zustänig, zu prüfen ob der User bereits angemeldet ist. Woher das Programm weiß, das diese Klasse aufgerufen werden muss, ist die "com.vaadin.flow.server.VaadinServiceInitListener"-Datei im META-INF/services zuständig. Vaadin übeprüft ob es diese Datei gibt und handelt dem entsprechend.
Der Rest des Package besteht aus weiteren Packages. Nachstehend eine Auflistung dieser und was dort zu finden ist.

component : Hier befinden sich GUI-Komponenten, welche Vaadin selber nicht anbietet.

controller : In diesem Bereich sind die Controller zu den Hauptviews zu finden. Zum leichteren Zuordnen ist die Bennenung eines Controllers wie folgt viewnameController.

entity : Enitäten die das Projekt nutzt, befinden sich im diesem Package.

form : In "Form" sind alle Formulare zu finden, welche der User nutzt, um die Daten einzutragen. Als Bennenung gilt hier enitätForm

google : Alle Klassen, die zur Verbindung mit dem GoogleCalender benötigt werden, befinden sich hier.

reposiotry : Zur verwaltung der Entitäten werden Repositorys benötigt. Diese befindne sich in diesem Package. Die Bennenung hierbei lautet entitätRepository.

view : Hier befinden sich alle Views die der Nutzer besuchen kann. Ebenfalls enthalten sind View-Interfaces. Die Interfaces enden auf "View" und die dazu gehörigen Implementierungen enden auf "Impl". Außnahme hierbei ist die Klasse "LoginScreen". Die Views selber können auf die zugewiesenen Controller direkt zugreifen. Umgekehrt greifen die Controller nur auf die Interfaces zu.

CSS-Sytle welcher nicht über Java direkt gesetzt wird, wird mit hilfe des style.css im "frontend"-Ordner eingefügt. Sobald das System das erste mal gestartet wurde, wird ein "db"-Ordner erstellt, in welchem die File-Datenbank abgelegt wird. Ähnliches gilt für den Ordern "Tokens", sobald der erste Nutzer sich mit seinem GoogleCalendar verknüpft.
Im resource-ordner befinden sich noch zwei wichtige Dateien. Zum einen die application.properties, in der alle Einstellungen zur File-Datenbank hinterlegt sind und die "credentials.json". Diese ist die Zulassung zum GoogleCalendar.

Clone this wiki locally