From 68e2d553f9dff63df2f583e89c20fe6f032cd4c9 Mon Sep 17 00:00:00 2001 From: brausjonas Date: Sun, 9 Jul 2023 00:42:44 +0200 Subject: [PATCH] Weitere backend kommentare --- .../anwprj/Database/DataBaseHandler.java | 35 +++++++++++++++++-- .../example/backend/anwprj/Entries/Entry.java | 2 +- .../example/backend/anwprj/Module/Module.java | 2 +- .../backend/anwprj/Semesters/Semester.java | 2 +- .../example/backend/anwprj/Users/User.java | 2 +- .../backend/anwprj/Users/UserPermissions.java | 2 +- .../anwprj/Users/UserSessionIDHandler.java | 3 ++ .../anwprj/controller/SemesterController.java | 5 +++ .../anwprj/controller/UserController.java | 9 +++++ .../backend/discard/DayController.java | 1 + .../com/example/backend/discard/Days/Day.java | 1 + .../backend/discard/Encryption/RSA.java | 2 ++ .../backend/discard/OldDataBaseFunctions.txt | 16 +++++++++ .../example/backend/discard/Week/Week.java | 1 + .../backend/discard/WeekController.java | 1 + 15 files changed, 77 insertions(+), 7 deletions(-) diff --git a/backend/src/main/java/com/example/backend/anwprj/Database/DataBaseHandler.java b/backend/src/main/java/com/example/backend/anwprj/Database/DataBaseHandler.java index 4f780a2..b81ed10 100644 --- a/backend/src/main/java/com/example/backend/anwprj/Database/DataBaseHandler.java +++ b/backend/src/main/java/com/example/backend/anwprj/Database/DataBaseHandler.java @@ -10,6 +10,16 @@ import java.sql.*; import java.util.ArrayList; import java.util.List; +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +//kleiner hinweis zur Datenbank: +//die datenkbank H2 benötigt die beiden dateien database.mv.db und database.trace.db +//um die datenbank verwenden zu können muss der jdbc driver in das projekt eingebunden sein. +//dieser driver liegt im ordner als h2jdbcdriver als .jar datei +//der nutzername für die datenbank ist: adm +//das passwort für die datenbank ist: 73bgjfdsfJ!934 +//die datenbank als einzelnes kann entweder über die h2console (windows) oder jetbrains datagrip (alle systeme) editiert werden. +//oder über jedes weitere tool welches h2 datenbanken unterstützt. +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! public class DataBaseHandler { //singleton instance of database handler private static DataBaseHandler instance = null; @@ -267,6 +277,7 @@ public class DataBaseHandler { } } + //ist dafür da, um ein semester anhand seiner id aus der datenbank zu löschen public void deleteSemester(int id) { try { st.executeUpdate("DELETE FROM modules WHERE semesterid=" + id); @@ -277,6 +288,7 @@ public class DataBaseHandler { } } + //kann ein resultset der datenbank in ein internes semester objekt umwandeln. public Semester resultSetToSemester(ResultSet rs) { try { rs.next(); @@ -308,6 +320,7 @@ public class DataBaseHandler { } } + //ein modul anhand der zuweisung von dozent und semester bekommen. public Module getModule(int userid, int semesterid) { try { ResultSet rs = st.executeQuery("select * from modules where userid=" + userid + " and semesterid=" + semesterid); @@ -318,7 +331,7 @@ public class DataBaseHandler { } } - //get module objects by its semester and its lecturer + //bekomme alle modulzuweisungen, die zu einem dozenten gehören. public Module[] getModules(int userid) { try { ResultSet rs = st.executeQuery("SELECT * FROM modules WHERE userid = " + userid); @@ -335,6 +348,7 @@ public class DataBaseHandler { } } + //füge eine neue modulzuweisung zwischen dozenten und fächern hinzu public Module addModule(Module m) { try { st.executeUpdate("insert into modules (userid, semesterid, name, activated) " + @@ -347,6 +361,7 @@ public class DataBaseHandler { } } + //gibt alle zuweisungen zurück. public Module[] getAllModules() { try { ResultSet rs = st.executeQuery("SELECT * FROM modules"); @@ -362,6 +377,7 @@ public class DataBaseHandler { } } + //updatet eine zuweisung anhand ihrer id public Module updateModule(Module m) { try { @@ -377,6 +393,7 @@ public class DataBaseHandler { } } + //setzt die aktivierung einer modulzuweisung zurück. public void submitModule(int id) { try @@ -389,6 +406,8 @@ public class DataBaseHandler { } } + //kann alle modulzuweisungen innerhalb eines semesters löschen. + //hierbei werden auch alle termine mit gelöscht. public boolean deleteModuleBySemesterID(int id) { try { st.executeUpdate("delete from modules where semesterid=" + id); @@ -399,6 +418,8 @@ public class DataBaseHandler { } } + //kann eine einzelne modulzuweisung anhand ihrer id löschen. + //hierbei werden auch alle zu dieser zuweisung gehörigen termine gelöscht public boolean deleteModule(int id) { try { st.executeUpdate("delete from modules where id=" + id); @@ -409,6 +430,7 @@ public class DataBaseHandler { } } + //kann ein result set der datenbank in ein internes modul objekt umwandeln. public Module resultSetToModule(ResultSet rs) { try { rs.next(); @@ -447,7 +469,7 @@ public class DataBaseHandler { } } - //einen User + //einen User anhand seiner email und passwort zurückgeben. public User getUser(String mail, String password) { try { @@ -460,6 +482,8 @@ public class DataBaseHandler { return null; } + //einen nutzer andhand seiner id zurückgeben. + //diese funktion sollte nur für admins verfügbar sein. public User getUser(int id) { try { ResultSet rs = st.executeQuery("select * from users where id=" + id); @@ -469,6 +493,7 @@ public class DataBaseHandler { } } + //ein nutzer anhand seiner mail zurückgeben. diese funktion sollte nur für admins erreichbar sein. public User getUser(String mail) { try { ResultSet rs = st.executeQuery("select * from users where mail='" + mail + "'"); @@ -482,6 +507,8 @@ public class DataBaseHandler { } } + //kann ein result set der datenbank in ein internes nutzer objekt umwandeln. + public User resultSetToUser(ResultSet rs) { try { rs.next(); @@ -524,6 +551,8 @@ public class DataBaseHandler { } + //kann einen nutzer updaten, aber auch dessen rechte verändern, hierbei werden die rechte nur angepasst, + //wenn der boolean elevationRequestByAdmin true ist public User updateUser(User user, int id, boolean elevationRequestByAdmin) { try { String password = user.getPassword(); @@ -561,6 +590,8 @@ public class DataBaseHandler { } } + //hier kann ein nutzer anhand seiner email addresse gelöscht werden. + //diese funktion sollte nur für den eigenen nutzer oder für admins verfügbar sein. public boolean deleteUser(String mail) { try { ResultSet rs = st.executeQuery("SELECT id FROM user WHERE mail='" + mail + "'"); diff --git a/backend/src/main/java/com/example/backend/anwprj/Entries/Entry.java b/backend/src/main/java/com/example/backend/anwprj/Entries/Entry.java index 6e90954..c326393 100644 --- a/backend/src/main/java/com/example/backend/anwprj/Entries/Entry.java +++ b/backend/src/main/java/com/example/backend/anwprj/Entries/Entry.java @@ -1,6 +1,6 @@ package com.example.backend.anwprj.Entries; -//entry data class +//interne klasse für die darstellung von terminen public class Entry { private int id; diff --git a/backend/src/main/java/com/example/backend/anwprj/Module/Module.java b/backend/src/main/java/com/example/backend/anwprj/Module/Module.java index 22c4ad2..d9a5a0b 100644 --- a/backend/src/main/java/com/example/backend/anwprj/Module/Module.java +++ b/backend/src/main/java/com/example/backend/anwprj/Module/Module.java @@ -1,6 +1,6 @@ package com.example.backend.anwprj.Module; -//module data class +//klasse für die interne darstellungen für die zuweisungen zwischen dozenten und fächern. public class Module { private int id; private int userid; diff --git a/backend/src/main/java/com/example/backend/anwprj/Semesters/Semester.java b/backend/src/main/java/com/example/backend/anwprj/Semesters/Semester.java index 8480321..fc94efd 100644 --- a/backend/src/main/java/com/example/backend/anwprj/Semesters/Semester.java +++ b/backend/src/main/java/com/example/backend/anwprj/Semesters/Semester.java @@ -1,6 +1,6 @@ package com.example.backend.anwprj.Semesters; -//semester data class +//klasse für die interne darstellung von semestern. public class Semester { private int id; diff --git a/backend/src/main/java/com/example/backend/anwprj/Users/User.java b/backend/src/main/java/com/example/backend/anwprj/Users/User.java index 6e13123..ba1a329 100644 --- a/backend/src/main/java/com/example/backend/anwprj/Users/User.java +++ b/backend/src/main/java/com/example/backend/anwprj/Users/User.java @@ -1,6 +1,6 @@ package com.example.backend.anwprj.Users; -//user data class +//klasse für die darstellung von benutzerobjekten. public class User { private int id; diff --git a/backend/src/main/java/com/example/backend/anwprj/Users/UserPermissions.java b/backend/src/main/java/com/example/backend/anwprj/Users/UserPermissions.java index bb97360..789a25c 100644 --- a/backend/src/main/java/com/example/backend/anwprj/Users/UserPermissions.java +++ b/backend/src/main/java/com/example/backend/anwprj/Users/UserPermissions.java @@ -1,6 +1,6 @@ package com.example.backend.anwprj.Users; -//mapping of the integer rights to enum +// zuweisung der zahlen 0 für normaler user / dozenten und 1 für admin. public enum UserPermissions { self(0), diff --git a/backend/src/main/java/com/example/backend/anwprj/Users/UserSessionIDHandler.java b/backend/src/main/java/com/example/backend/anwprj/Users/UserSessionIDHandler.java index 97ecb63..f8f240c 100644 --- a/backend/src/main/java/com/example/backend/anwprj/Users/UserSessionIDHandler.java +++ b/backend/src/main/java/com/example/backend/anwprj/Users/UserSessionIDHandler.java @@ -5,6 +5,9 @@ import com.example.backend.anwprj.Database.DataBaseHandler; import java.nio.charset.StandardCharsets; import java.util.HashMap; +//diese klasse kümmert sich um die zuweisungen von nutzern und deren sessionids. +//wird für alle möglichen anfragen der nutzer an das backend verwendet um eine sessionid +//in ein benutzerobjekt aufzulösen. public class UserSessionIDHandler { //stores mapping of session ids to users diff --git a/backend/src/main/java/com/example/backend/anwprj/controller/SemesterController.java b/backend/src/main/java/com/example/backend/anwprj/controller/SemesterController.java index 7de5662..69e679c 100644 --- a/backend/src/main/java/com/example/backend/anwprj/controller/SemesterController.java +++ b/backend/src/main/java/com/example/backend/anwprj/controller/SemesterController.java @@ -43,6 +43,7 @@ public class SemesterController return new ResponseEntity<>(HttpStatus.FORBIDDEN); } + //get a semester object by its id @CrossOrigin @GetMapping("/semester/id") public ResponseEntity getSemester(@RequestParam(name="id") int id, @RequestParam(name="sessionid") String sessionID) @@ -63,6 +64,7 @@ public class SemesterController return new ResponseEntity<>(HttpStatus.FORBIDDEN); } + //takes in a list of semester ids seperatet by an a as list seperator @CrossOrigin @GetMapping("/semester/id/all") public ResponseEntity getSemestersAll(@RequestParam(name="ids") String ids, @RequestParam(name="sessionid") String sessionid) @@ -80,6 +82,7 @@ public class SemesterController return new ResponseEntity<>(resultList.toArray(new Semester[0]), HttpStatus.OK); } + //gibt alle semester zurück @CrossOrigin @GetMapping("/semester/all") public ResponseEntity getSemester(@RequestParam(name="sessionid") String sessionid) @@ -122,6 +125,7 @@ public class SemesterController } + //updatet ein semester @CrossOrigin @PutMapping("/semester") public ResponseEntity updateSemester(@RequestBody Semester semester, @RequestParam(name="sessionid") String sessionID) @@ -142,6 +146,7 @@ public class SemesterController return new ResponseEntity<>(HttpStatus.FORBIDDEN); } + //löscht ein semester anhand seiner id @CrossOrigin @DeleteMapping("/semester") public void deleteSemester(@RequestParam(name="sessionid") String sessionid, @RequestParam(name="id") int id) diff --git a/backend/src/main/java/com/example/backend/anwprj/controller/UserController.java b/backend/src/main/java/com/example/backend/anwprj/controller/UserController.java index 1647821..e670248 100644 --- a/backend/src/main/java/com/example/backend/anwprj/controller/UserController.java +++ b/backend/src/main/java/com/example/backend/anwprj/controller/UserController.java @@ -9,6 +9,11 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; + +/* +Hier sind einige nutzer funktionen mehr, als für das tool benötigt werden. Diese dienen nur testzwecken +zum verwalten von nutzer z.b. über postman. + */ @RestController public class UserController { //reference to the database handler @@ -18,6 +23,7 @@ public class UserController { db = DataBaseHandler.getInstance(); } + //hole alle user, nur erlaubt für admins @CrossOrigin @GetMapping("/users/all") public ResponseEntity getAllUsers(@RequestParam(name = "sessionid") String sessionid) @@ -57,6 +63,7 @@ public class UserController { return new ResponseEntity<>(sessionID, HttpStatus.OK); } + //ein nutzer möchte sich ausloggen, damit sollte seinen sessionid entfernt werden. @CrossOrigin @GetMapping("/users/logout") public ResponseEntity logout(@RequestParam(name = "sessionid") String sessionID) { @@ -64,6 +71,7 @@ public class UserController { return new ResponseEntity<>(success, HttpStatus.OK); } + //admins können hier die daten eiens nutzer anfordern. @CrossOrigin @GetMapping("/users/data") public ResponseEntity getUserData( @@ -141,6 +149,7 @@ public class UserController { return new ResponseEntity<>(false, HttpStatus.FORBIDDEN); } + //rechte eines nutzers erhöhen, kann nur von admins ausgeführt werden. @CrossOrigin @PutMapping("/users/elevate") public ResponseEntity elevateUser( diff --git a/backend/src/main/java/com/example/backend/discard/DayController.java b/backend/src/main/java/com/example/backend/discard/DayController.java index 6089eca..65709c5 100644 --- a/backend/src/main/java/com/example/backend/discard/DayController.java +++ b/backend/src/main/java/com/example/backend/discard/DayController.java @@ -9,6 +9,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +//alte verworfenen klasse für die funktionalität nicht wichtig @RestController public class DayController { diff --git a/backend/src/main/java/com/example/backend/discard/Days/Day.java b/backend/src/main/java/com/example/backend/discard/Days/Day.java index 6d3b362..b05d4a5 100644 --- a/backend/src/main/java/com/example/backend/discard/Days/Day.java +++ b/backend/src/main/java/com/example/backend/discard/Days/Day.java @@ -1,5 +1,6 @@ package com.example.backend.discard.Days; +//alte verworfene klasse nicht wichtig für die funktionalität public class Day { private int id; diff --git a/backend/src/main/java/com/example/backend/discard/Encryption/RSA.java b/backend/src/main/java/com/example/backend/discard/Encryption/RSA.java index e7c9761..5e57868 100644 --- a/backend/src/main/java/com/example/backend/discard/Encryption/RSA.java +++ b/backend/src/main/java/com/example/backend/discard/Encryption/RSA.java @@ -5,6 +5,8 @@ import java.io.*; import java.nio.charset.StandardCharsets; import java.security.*; +//hier ein versuch für die übertragung von vertraulichen daten wie nutzername und passwörtern RSA verschlüsselung anzuwenden. +//finde aktuell keine anwendung im projekt. public class RSA { private PublicKey publicKey; diff --git a/backend/src/main/java/com/example/backend/discard/OldDataBaseFunctions.txt b/backend/src/main/java/com/example/backend/discard/OldDataBaseFunctions.txt index 4022292..c84360e 100644 --- a/backend/src/main/java/com/example/backend/discard/OldDataBaseFunctions.txt +++ b/backend/src/main/java/com/example/backend/discard/OldDataBaseFunctions.txt @@ -1,3 +1,19 @@ + + + !!!!!!!!! + !!!!!!!!! + hier sieht man eine sammlung alter databasehandler funktionen, + welche nicht benötigt wurden. Von deren Verwendung ist abzuraten, + die Funkionalität dieser bei erneutem einfügen in den Databasehandler + kann nicht gewährleistet werden + !!!!!!!! + !!!!!!!! + !!!!!!!! + + + + + /** * WEEKS */ diff --git a/backend/src/main/java/com/example/backend/discard/Week/Week.java b/backend/src/main/java/com/example/backend/discard/Week/Week.java index 9ae9546..2d61d6d 100644 --- a/backend/src/main/java/com/example/backend/discard/Week/Week.java +++ b/backend/src/main/java/com/example/backend/discard/Week/Week.java @@ -1,5 +1,6 @@ package com.example.backend.discard.Week; +//alte verworfene klasse, nicht wichtig für die funktionalität public class Week { private int id; diff --git a/backend/src/main/java/com/example/backend/discard/WeekController.java b/backend/src/main/java/com/example/backend/discard/WeekController.java index 859feee..4d95739 100644 --- a/backend/src/main/java/com/example/backend/discard/WeekController.java +++ b/backend/src/main/java/com/example/backend/discard/WeekController.java @@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.*; import java.sql.SQLException; +//alte verworfene klassen, für die funktionalität des tools nicht wichtig @RestController public class WeekController {