Home - IU-Internationale-Hochschule-Augsburg/fallstudie-thema-2-online-umfragesystem GitHub Wiki

Welcome to...

grafik

Bisher belegte URLs mit unseren Screens:

URL Beschreibung des Screens
http://localhost:8080/participant-view Dies ist die dynamische Fragebogen-Seite für die Umfrageteilnehmer. Über diese können sie sich durch den ganzen Umfragebogen klicken.
http://localhost:8080/login Dies ist die Login-Page. Die aktuelle Startseite des MVPs. Über diesen Screen loggt sich ein bestehender Nutzer ein
http://localhost:8080/register Dies ist die Registrieren-Page. Dort legt ein Nutzer einen neuen User an
http://localhost:8080/logout Dies ist die URL für das Ausloggen des Users. Diese wird aufgerufen, wenn der User auf den Logout-Button in der Umfrage-Ansicht klickt
http://localhost:8080/survey-admin Dies ist die Umfrage-Ansicht eines eingeloggten Users
http://localhost:8080/questions-view Dies ist die Fragen-Ansicht
http://localhost:8080/add-survey Dies ist die Umfrage-hinzufügen-Ansicht
http://localhost:8080/add-question Dies ist die Frage-hinzufügen-Ansicht
http://localhost:8080/h2-console VORSICHT, das ist eine alte URL: Dies ist die grafische Oberfläche für die H2-Datenbank
http://localhost:8080/question-save Über diese URL speichern wir die Daten einer bestehenden Frage oder erzeugen eine neue Frage
http://localhost:8080/survey-save Über diese URL speichern wir die Daten einer bestehenden Umfrage oder erzeugen eine neue Umfrage
http://localhost:8080/save-registration Über diese URL werden die Daten aus dem RegisterForm in die Datenbank geschrieben. Darüber hinaus passiert hier Error Handling
http://localhost:8080/save-user-settings Über diese URL können User ihre Konto-Einstellungen bearbeiten. Die Daten werden in der Datenbank aktualisiert. Darüber hinaus wird hier auch für Error Handling gesorgt, wenn eine neu eingetippte E-Mail bereits registriert ist, wenn das alte Passwort nicht mit dem in der Datenbank übereinstimmt und wenn die beiden neu eingetippten Passwörter nicht übereinstimmen.
http://localhost:8080/button-question-handler Über diese URL behandeln wir das Klicken verschiedener Buttons in der Fragen-Ansicht
http://localhost:8080/button-survey-handler Über diese URL behandeln wir das Klicken verschiedener Buttons in der Umfrage-Ansicht
http://localhost:8080/user-actions Über diese URL behandeln wir das Klicken verschiedener Buttons im Header der Umfrage-Ansicht (Logout oder Konto-Einstellungen)
http://localhost:8080/error Dies ist die individualisierte Error-Page

Hinweis: Einige URLs erzeugen eine sichtbare Ansicht, die Handler-URLs sowie auch /user-actions und /survey-save sowie /question-save und weitere sind nur zum Ausführen verschiedener Aktionen wie das Speichern oder Aktualisieren von Daten in der Datenbank. /error ist die URL der Error-Page.

Anmeldedaten für die H2-Datenbank:

  • Das als URL angeben: jdbc:h2:mem:testdb
  • Username: sa
  • Passwort: 1234

grafik

Anmeldedaten für die PostgreSQL-Datenbank:

Benutzername und Passwort haben alle Teammitglieder aus Team 1 und 2 per Mail erhalten. (Stand: 08. Juni 2024)

Driver-Class und JDBC URL sind in folgendem Screenshot zu finden:

  • datasource url (.yaml-Datei): jdbc:postgresql://survey-master-pg-survey-master.e.aivencloud.com:25901/defaultdb?currentSchema=public
  • url: jdbc:postgresql://survey-master-pg-survey-master.e.aivencloud.com:25901/defaultdb
  • Driver-Class-Name: org.postgresql.Driver
  • Host: survey-master-pg-survey-master.e.aivencloud.com
  • Port: 25901
  • Database-Name: defaultdb
  • Schema-Name: public

grafik

Übersicht über die Java-Klassen (Backend)

Die Klassen im entity-Ordner repräsentieren die Tabellen unserer Datenbank:

Java-Klasse Beschreibung
Answer Datenbank-Tabelle zum Speichern der Antworten der Umfrage-Teilnehmer. Daher wird auch die User-Id in der Tabelle gespeichert.
Question Datenbank-Tabelle zum Speichern der Fragen und Antwortoptionen. Diese Tabelle benötigen wir zum Erzeugen des Fragebogens.
Survey Datenbank-Tabelle zum Speichern der Umfragen.
User Datenbank-Tabelle zum Verwalten der User. Über eine Rollenvergabe lassen sich Teilnehmer und Umfrage-Ersteller in Zukunft voneinander trennen.

Interfaces im Repository-Ordner

Die Interfaces im repository-Ordner definieren Operationen zum Abrufen, Speichern, Löschen und Aktualisieren von Daten. Diese Interfaces erben von CrudRepository. Crud steht für Create-Read-Update-Delete Operationen. Für jede Entity gibt es ein solches Interface/Repository.

Restliche Java-Klassen:

Java-Klassen Beschreibung
SurveyApplication Die Application dient als zentrale Einstiegsklasse für eine Spring Boot-Anwendung. Dabei ist die main-Methode die auszuführende Hauptmethode.
LoginController Ist eine Klasse, die login-spezifische HTTP-Anfragen entgegennimmt, sie verarbeitet und eine entsprechende HTTP-Antwort zurückgibt. Über Annotationen wie @GetMapping und @PostMapping findet das Routing von HTTP-Requests statt.
SurveyController Ist eine Klasse, die umfragen-spezifische HTTP-Anfragen entgegennimmt, sie verarbeitet und eine entsprechende HTTP-Antwort zurückgibt. Über Annotationen wie @GetMapping und @PostMapping findet das Routing von HTTP-Requests statt.
QuestionController Ist eine Klasse, die fragen-spezifische HTTP-Anfragen entgegennimmt, sie verarbeitet und eine entsprechende HTTP-Antwort zurückgibt. Über Annotationen wie @GetMapping und @PostMapping findet das Routing von HTTP-Requests statt.
ParticipantSurveyController Ist eine Klasse, die HTTP-Anfragen über den Probanden/Teilnehmer-Screen entgegennimmt, sie verarbeitet und eine entsprechende HTTP-Antwort zurückgibt. Über Annotationen wie @GetMapping und @PostMapping findet das Routing von HTTP-Requests statt.
AnswerMapper Answer-Mapper ist eine Mapper-Klasse, welche die Eingaben aus der Benutzeroberfläche auf die Datenbank-Entität "Answer" mappt. Der Grund für das Erstellen der Mapper-Klasse war, dass die Antwortoptionen von den questionTypes "Radiobutton" und "Checkbox" in den gleichen Datenbankfeldern gespeichert werden. Aus technischen Gründen können diese nicht in denselben UI-Feldern erfasst werden. Daher ist kein 1-zu-1-Mapping möglich.
SurveyErrorController Über die Klasse wird bei einem auftretenden Fehler eine individualisierte Error-Page geladen.
QuestionService Dies ist eine Service-Klasse, die das Löschen von Fragen und das Laden der aktuellen Fragen in der Fragen-Ansicht übernimmt.
SurveyService Dies ist eine Service-Klasse, die das Löschen von Umfragen übernimmt.
UserService Diese Klasse implementiert das Interface UserDetailsService. Die Funktion loadUserByUsername(String username) wird verwendet, um Benutzerinfos basierenf auf dem Benutzernamen abzurufen.
JasyptConfig Dies ist eine Konfigurationsklasse für die Encryption mit Jasypt.
WebSecurityConfig Diese Klasse definiert die Sicherheitskonfiguration der Anwendung. Die Methode securityFilterChain() konfiguriert dabei Sicherheitsregeln und Filterketten. Es wird festgelegt, welche URLs öffentlich zugänglich sind, welche eine Authentification erfordern und wie Login- und Logout-Prozess aussehen

SurveyView, QuestionView, SingleQuestionView, QuestionForm, ParticipantSurveyView, LoginForm, RegisterForm, UserSettingsForm und SurveyForm sind selbsterklärend. Die @Data-Annotation generiert automatisch Getter, Setter, hashCode, equals und toString-Methoden.