Weitere backend kommentare

This commit is contained in:
brausjonas
2023-07-09 00:42:44 +02:00
parent 86f9e559b5
commit 68e2d553f9
15 changed files with 77 additions and 7 deletions
@@ -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 + "'");
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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),
@@ -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
@@ -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<Semester> 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<Semester[]> 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<Semester[]> getSemester(@RequestParam(name="sessionid") String sessionid)
@@ -122,6 +125,7 @@ public class SemesterController
}
//updatet ein semester
@CrossOrigin
@PutMapping("/semester")
public ResponseEntity<Semester> 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)
@@ -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<User[]> 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<Boolean> 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<User> 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<Boolean> elevateUser(
@@ -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
{
@@ -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;
@@ -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;
@@ -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
*/
@@ -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;
@@ -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
{