Skip to content
This repository was archived by the owner on Sep 18, 2020. It is now read-only.

Backend 2.7 Logik

Jonas Stegmaier edited this page Jan 26, 2015 · 58 revisions

← zurück zum Backend Wiki

Logik

Autor: Maren

Das unten dargestellen Ablaufschemas ist das Grundschema, nach dem die Daten für die Happy Hour App zur Verfügung gestellt werden sollen. Daran wird sich im Folgenden bei der Erstellung der Logik, die hinter der Bereitstellung der Daten für die Happy Hour App steht, orientiert. Des Weiteren wird eine Ordner- und Dateistruktur festgelegt. Der Standardablauf der Datenabfrage und die verwendeten Frameworks sind auf einer seperaten Seite erläutert.
Die einzelnen Szenarien, nach denen die Daten abgefragt werden können, werden von den einzelnen Team Mitgliedern implementiert und auf seperaten unten verlinkten Seiten dokumentiert.

Ablaufschema

Auf Basis der definierten Use cases wird hier für die Logik des Backends ein Ablaufschema erstellt. Dies dient als Plan, was in der Buildphase umgesetzt werden soll.

Schaubild erstellt von: Michael

ablaufschema

Data Access Object: Über das Data Access Object wird mittels DAOFactory auf die Daten in der H2 Datenbank zugegriffen und die Daten aus Foursquare gezogen.

Settings: In der Settings Klasse werden die log-reports geschrieben.

main: Die main-Klasse ist die Hauptklasse, die bei einer Anfrage des Frontend Teams die entsprechenden Funktionen aufruft.

Spark: Die mit der Spark-Klasse verbundenen Klassen, sind die einzelnen Anwendunsfälle, die durchlaufen werden je nach Anfrage des Frontends. Neben den einzelnen Klassen ist eine Kurzbeschreibung des Anwendungsfalls beschrieben. Zu Beginn des Projekts haben wir uns auf die Technologie Spark geeinigt, da diese in der Allgemeinheit als sehr einfach umgänglich empfunden wurde.

Zuordnung der Anwendungsfälle zu den einzelnen Teammitgliedern

In der folgenden Tabelle werden die einzelnen Anwendungsfälle, die über die Spark-Klasse aufgerufen werden den Team-Mitgliedern zugeordnet. Jeder ist frei dafür verantwortlich den Anwendungsfall umzusetzen, zu implementieren und zu testen bis zum Abschluss der Buildphase. Dokumentiert wird jeder einzelne Anwendungsfall für sich von dem dafür Verantwortlichen.

Szenario der Datenabfrage HTTP Funktion Verantwortlicher
Alle Informationen zu den Bars in einem definierten Umkreis eines Standorts auslesen GET /bars Tobias
Route eines bestimmten Hashwerts auslesen GET /routes/{hash} Tabea
Alle Top Routen auslesen GET /toproutes Maren
Gemeldete Bars anzeigen GET /bars/reports Jonas
Route speichern POST /routes Michael
Fehler einer Bar melden POST /bars/{barID}/reports Jonas
Bestimmte Fehlermeldung löschen DELETE /report/{reportID} Tabea
Alle Fehlermeldungen einer Bar löschen DELETE /bars/{barID}/report Jonas
Neue HappyHour speichern POST /bars/{barID}/hour Marcus
Happy Hour löschen DELETE /delHour/{hourID} Jonas

Ordner- und Dateistruktur

Die Struktur der Backend Dateien teilt sich in einen main-Ordner und in einen test-Ordner. Der Vorgang zur Durchführung des Test wird weiter unten beschreiben. Im main-Ordner befindet sich der Source-Code der Logik. Er ist in verschiedenen Ordnern aufgeteilt. Die Bedeutung der einzelnen Ordner wird im Folgenden beschrieben:

Im ersten Unterordner ist die Java-Hauptklasse enthalten, mit der der Einstiegspunkt in die Backend-Programmierung beginnt.

Der zweite Unterordner ist der dao Ordner. In ihm befindet sich die DAOFactory-Klasse, mit der die Datenbank-Factory erstellt wird. Des Weiteren sind dort auch die Interfaces gespeichert, die definieren, welche jeweiligen Funktionen implementiert werden.

Ein weiterer dao.h2 Ordner enthält eine Klasse, die über einen Connectionpool eine Verbindung zur H2 Datenbank herstellt, in der die Happy Hour Daten gespeichert werden. Hinzu kommen die Klassen, die direkt mit der Datenbank kommunizieren, um die Daten für die jeweiligen Anwendungsfälle abzufragen.

Unter dem model-Ordner sind die einzelnen Datenklassen für die Anwendungsfälle vorhanden.

Als weiteres gibt es einen REST-Ordner. Die Klassen die sich hier drin befinden, stellen die Methoden für die REST-Schnittstelle zum Frontend über die jeweiligen Pfade bereit. Jeder Pfad erhält eine Klasse.

Als letzter Ordner, speichert der utils-Ordner die Klassen Hash Converter, Settings, Logging Configuration und Spark . Die Spark Klasse enthält die Funktionen zum Starten, Initialisieren und Stoppen des Spark REST Servers.

Modulstruktur

Das Benennungssystem der Module ist an das aus Java bekannte Paketsystem angelehnt. Das Elternmodul heisst de.dhbw.hh. Darauf folgt die aus dem Ordner des Moduls bekannte Oberbezeichnung des Moduls, beispielsweise models. Folglich ist die volle Bezeichnung des beispielhaften Ordners des Moduls: de.dhbw.hh.models.

Test

Für die Durchführung von Tests vor dem Pushen von neuen Funktionen, gibt es ein extra Package, in dem Kopien des main-Ordners und des dao-, daoh2- und models-Ordner vorhanden sind. Wird für ein Anwendungsfall Klassen und Funktionen erstellt, mit denen die Daten in der Datenbank abgefragt, eingefügt oder gelöscht werden, müssen diese anschließend mit Maven getestet werden. Es werden so genannte Java Unit Tests verwendet, dadurch können bestimmte Einheiten eines Codes getestet werden.
Der Ablauf des Tests wird neben den Standardablauf der Datenbankabfrage auf einer seperaten Seite beschrieben.

Verlinkungen zu den Dokumentationen der einzelnen Funktionen

Clone this wiki locally