Repository navigation
Backend 2.7 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.
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
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 |
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.
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.
