Multiselected For Lectures / Modules Implemented

Der Multiselect funktioniert auf seitens des Frontends und des Backends. Allerdings haben Termine noch nicht die Spalte moduleID, weswegen entries für zwei modules eines Dozenten innerhalb eines Semesters gleich angezeigt werden.
This commit is contained in:
brausjonas
2023-06-15 22:04:57 +02:00
parent cff384f5b4
commit 5eba3a6733
9 changed files with 179187 additions and 722 deletions
Binary file not shown.
File diff suppressed because it is too large Load Diff
@@ -10,15 +10,12 @@ import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class DataBaseHandler
{
public class DataBaseHandler {
//singleton instance of database handler
private static DataBaseHandler instance = null;
public static DataBaseHandler getInstance()
{
if (instance == null)
{
public static DataBaseHandler getInstance() {
if (instance == null) {
instance = new DataBaseHandler();
}
@@ -31,42 +28,33 @@ public class DataBaseHandler
private Statement st;
private boolean encrypted = false;
public DataBaseHandler()
{
try
{
public DataBaseHandler() {
try {
//connect to the local database
connection = DriverManager.getConnection("jdbc:h2:./database", "adm", "73bgjfdsfJ!934");
st = connection.createStatement();
} catch (SQLException e)
{
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
ENTRIES
* ENTRIES
*/
public void addEntry(Entry entry)
{
try
{
public void addEntry(Entry entry) {
try {
st.executeUpdate("insert into entries (daynumber, yearnumber, semesterid, usercreatedbyid, timestart, timeend, info) values (" +
entry.getDaynumber() + ", " + entry.getYearnumber() + ", " + entry.getSemesterid() + ", " +
entry.getUsercreatedbyid() + ", " + entry.getTimestart() + ", " + entry.getTimeend() + ", '" + entry.getInfo() + "')"
);
}
catch(Exception e)
{
);
} catch (Exception e) {
e.printStackTrace();
}
}
public Entry[][] getEntries(int semesterid, int daynumber, int yearnumber)
{
try
{
public Entry[][] getEntries(int semesterid, int daynumber, int yearnumber) {
try {
ResultSet rs = st.executeQuery("select * from entries where " +
"semesterid=" + semesterid +
" and yearnumber=" + yearnumber +
@@ -74,20 +62,16 @@ public class DataBaseHandler
List<Entry> entryList = new ArrayList<>();
Entry current = null;
while((current = resultSetToEntry(rs)) != null)
{
while ((current = resultSetToEntry(rs)) != null) {
entryList.add(current);
}
Entry[][] entries = new Entry[6][20];
for(int i = 0; i < 6; i++)
{
for (int i = 0; i < 6; i++) {
int f = 0;
for(int j = 0; j < entryList.size(); j++)
{
if(entryList.get(j).getDaynumber() == i + daynumber)
{
for (int j = 0; j < entryList.size(); j++) {
if (entryList.get(j).getDaynumber() == i + daynumber) {
entries[i][f] = entryList.get(j);
f++;
}
@@ -95,16 +79,13 @@ public class DataBaseHandler
}
return entries;
}
catch(Exception e)
{
} catch (Exception e) {
return null;
}
}
public Entry[][] getAllEntrys(int semesterid, int daynumber, int yearnumber, int userid)
{
public Entry[][] getAllEntrys(int semesterid, int daynumber, int yearnumber, int userid) {
try {
ResultSet rs = st.executeQuery("select * from entries where " +
"semesterid<>" + semesterid +
@@ -113,77 +94,60 @@ public class DataBaseHandler
" and daynumber between " + daynumber + " and " + daynumber + 6);
List<Entry> entryList = new ArrayList<>();
Entry current = null;
while((current = resultSetToEntry(rs)) != null)
{
while ((current = resultSetToEntry(rs)) != null) {
entryList.add(current);
}
Entry[][] entries = new Entry[6][20];
for(int i = 0; i < 6; i++)
{
for (int i = 0; i < 6; i++) {
int f = 0;
for(int j = 0; j < entryList.size(); j++)
{
if(entryList.get(j).getDaynumber() == i + daynumber)
{
for (int j = 0; j < entryList.size(); j++) {
if (entryList.get(j).getDaynumber() == i + daynumber) {
entries[i][f] = entryList.get(j);
f++;
}
}
}
return entries;
}catch(Exception e)
{
} catch (Exception e) {
return null;
}
}
public Entry[] getAllEntries(int semesterid, int userid)
{
public Entry[] getAllEntries(int semesterid, int userid) {
try {
ResultSet rs = st.executeQuery("select * from entries where " +
"semesterid=" + semesterid +
" and usercreatedbyid=" + userid);
List<Entry> entriestate = new ArrayList<>();
Entry current = null;
while((current = resultSetToEntry(rs)) != null)
{
Entry current = null;
while ((current = resultSetToEntry(rs)) != null) {
entriestate.add(current);
}
return entriestate.toArray(new Entry[0]);
}catch (Exception e){
} catch (Exception e) {
return null;
}
}
public void deleteEntry(int id)
{
try
{
public void deleteEntry(int id) {
try {
st.executeUpdate("delete from entries where id=" + id);
}
catch (Exception e)
{
} catch (Exception e) {
}
}
public void updateEntry(Entry entry)
{
try
{
public void updateEntry(Entry entry) {
try {
st.executeUpdate("update entries set timeend=" + entry.getTimeend() + ", timestart=" + entry.getTimestart() + " where id=" + entry.getId());
}
catch(Exception e)
{
} catch (Exception e) {
}
}
public Entry resultSetToEntry(ResultSet rs)
{
try
{
public Entry resultSetToEntry(ResultSet rs) {
try {
rs.next();
return new Entry(
rs.getInt("id"),
@@ -195,114 +159,88 @@ public class DataBaseHandler
rs.getInt("semesterid"),
rs.getString("info")
);
}
catch(Exception e)
{
} catch (Exception e) {
return null;
}
}
/**
SEMESTER
* SEMESTER
*/
//get a semester object by its name
public Semester getSemester(String name)
{
try
{
public Semester getSemester(String name) {
try {
ResultSet rs = st.executeQuery("select * from SEMESTER where name = '" + name + "'");
return resultSetToSemester(rs);
}
catch(Exception e)
{
} catch (Exception e) {
return null;
}
}
public Semester getSemester(int id)
{
try
{
public Semester getSemester(int id) {
try {
ResultSet rs = st.executeQuery("select * from semester where id=" + id);
return resultSetToSemester(rs);
}
catch(Exception e)
{
} catch (Exception e) {
return null;
}
}
//write a new semester to the database returns if process was successful
public Semester addSemester(Semester s)
{
try
{
st.executeUpdate("insert into SEMESTER (startday, endday, name, startyear, endyear) values (" + s.getStartday() + ", " + s.getEndday() + ", '" + s.getName() + "', " + s.getStartyear() + ", " + s.getEndyear() + ")");
public Semester addSemester(Semester s) {
try {
st.executeUpdate("insert into SEMESTER (startday, endday, name, startyear, endyear, number) values (" + s.getStartday() + ", " + s.getEndday() + ", '" + s.getName() + "', " + s.getStartyear() + ", " + s.getEndyear() + ", " + s.getNumber() + ")");
return getSemester(s.getName());
} catch (Exception e)
{
} catch (Exception e) {
return null;
}
}
public Semester[] getAllSemesters()
{
try
{
public Semester[] getAllSemesters() {
try {
ResultSet rs = st.executeQuery("select * from semester");
List<Semester> semestersList = new ArrayList<>();
Semester s = null;
while((s = resultSetToSemester(rs)) != null)
{
while ((s = resultSetToSemester(rs)) != null) {
semestersList.add(s);
}
return semestersList.toArray(new Semester[0]);
}
catch(Exception e)
{
} catch (Exception e) {
return null;
}
}
public Semester updateSemester(Semester semester)
{
try
{
public Semester updateSemester(Semester semester) {
try {
st.executeUpdate("update semester set startday=" + semester.getStartday() + ", " +
"endday=" + semester.getEndday() + ", " +
"name='" + semester.getName() + "', " +
"startyear=" + semester.getStartyear() + ", " +
"number=" + semester.getNumber() + ", " +
"endyear=" + semester.getEndyear() + " where id=" + semester.getId());
return getSemester(semester.getId());
} catch (SQLException e)
{
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
public void deleteSemester(int id)
{
try
{
public void deleteSemester(int id) {
try {
st.executeUpdate("DELETE FROM modules WHERE semesterid=" + id);
st.executeUpdate("delete from semester where id=" + id);
}
catch(Exception e)
{
} catch (Exception e) {
}
}
public Semester resultSetToSemester(ResultSet rs)
{
try
{
public Semester resultSetToSemester(ResultSet rs) {
try {
rs.next();
return new Semester(
rs.getInt("id"),
@@ -310,40 +248,34 @@ public class DataBaseHandler
rs.getInt("endday"),
rs.getString("name"),
rs.getInt("startyear"),
rs.getInt("endyear")
rs.getInt("endyear"),
rs.getInt("number")
);
}
catch(Exception e)
{
} catch (Exception e) {
return null;
}
}
/**
MODULE
* MODULE
*/
//get a module object by its id
public Module getModule(int id) {
try {
ResultSet rs = st.executeQuery("SELECT * FROM modules WHERE id=" + id);
return resultSetToModule(rs);
}
catch (Exception ex) {
return resultSetToModule(rs);
} catch (Exception ex) {
return null;
}
}
public Module getModule(int userid, int semesterid)
{
try
{
public Module getModule(int userid, int semesterid) {
try {
ResultSet rs = st.executeQuery("select * from modules where userid=" + userid + " and semesterid=" + semesterid);
return resultSetToModule(rs);
}
catch (Exception e)
{
} catch (Exception e) {
return null;
}
}
@@ -354,96 +286,64 @@ public class DataBaseHandler
ResultSet rs = st.executeQuery("SELECT * FROM modules WHERE userid = " + userid);
List<Module> moduleList = new ArrayList<>();
Module m = null;
while((m = resultSetToModule(rs)) != null)
{
while ((m = resultSetToModule(rs)) != null) {
moduleList.add(m);
}
return moduleList.toArray(new Module[0]);
}
catch (Exception ex){
} catch (Exception ex) {
return null;
}
}
public Module addModule(Module m)
{
public Module addModule(Module m) {
try {
st.executeUpdate("insert into modules (userid, semesterid, name, activated) " +
"Values (" + m.getUserid() + ", " + m.getsemesterid() + ", '" + m.getName() + "', " + m.getActivated() + ")");
return getModule(m.getUserid(), m.getsemesterid());
}
catch (Exception e) {
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public Module[] getAllModules() {
try
{
try {
ResultSet rs = st.executeQuery("SELECT * FROM modules");
List<Module> moduleList = new ArrayList<>();
Module m = null;
while((m = resultSetToModule(rs)) != null)
{
while ((m = resultSetToModule(rs)) != null) {
moduleList.add(m);
}
return moduleList.toArray(new Module[0]);
}
catch(Exception e)
{
} catch (Exception e) {
return null;
}
}
public Module getModuleBySemesterUserID(int userid, int semesterid)
{
try
{
ResultSet rs = st.executeQuery("select * from modules where userid=" + userid + " and semesterid=" + semesterid);
return resultSetToModule(rs);
}
catch(Exception e)
{
return new Module(-1, 0, 0, "", 0);
}
}
public Module updateModule(Module m)
{
public Module updateModule(Module m) {
try {
Module module = getModule(m.getUserid(), m.getsemesterid());
if(module == null)
{
addModule(m);
}
else
{
st.executeUpdate("update modules set activated=" + m.getActivated() + ", semesterid=" + m.getsemesterid() + ", name='" + m.getName() + "' where id=" + module.getid());
}
Module test = getModule(m.getUserid(), m.getsemesterid());
System.out.println(test.getActivated());
return test;
}
catch (SQLException ex) {
st.executeUpdate("update modules set activated=" + m.getActivated() + ", semesterid=" + m.getsemesterid() + ", name='" + m.getName() + "' where id=" + m.getid());
return null;
} catch (SQLException ex) {
ex.printStackTrace();
return null;
}
}
public boolean deleteModule(int semesterid, int userid)
{
public boolean deleteModule(int id) {
try {
st.executeUpdate("delete from modules where semesterid=" + semesterid + " and userid=" + userid);
st.executeUpdate("delete from modules where id=" + id);
return true;
}
catch(Exception ex) {
} catch (Exception ex) {
return false;
}
}
@@ -457,89 +357,72 @@ public class DataBaseHandler
rs.getInt("semesterid"),
rs.getString("name"),
rs.getInt("activated"));
}
catch (Exception ex) {
} catch (Exception ex) {
return null;
}
}
/**
USER
* USER
*/
//Alle User, die nicht admin sind
public User[] getAllUsers()
{
try
{
public User[] getAllUsers() {
try {
ResultSet rs = st.executeQuery("select * from users where permission=0");
User u = null;
List<User> output = new ArrayList<>();
while((u = resultSetToUser(rs)) != null)
{
while ((u = resultSetToUser(rs)) != null) {
u.clearOutPassword();
output.add(u);
}
return output.toArray(new User[0]);
}
catch(Exception e)
{
} catch (Exception e) {
return null;
}
}
//einen User
public User getUser(String mail, String password)
{
public User getUser(String mail, String password) {
try
{
try {
ResultSet rs = st.executeQuery("select * from users where mail = '" + mail + "' and password = '" + password + "'");
return resultSetToUser(rs);
} catch (Exception e)
{
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public User getUser(int id)
{
try
{
public User getUser(int id) {
try {
ResultSet rs = st.executeQuery("select * from users where id=" + id);
return resultSetToUser(rs);
} catch (Exception e)
{
} catch (Exception e) {
return null;
}
}
public User getUser(String mail)
{
try
{
public User getUser(String mail) {
try {
ResultSet rs = st.executeQuery("select * from users where mail='" + mail + "'");
User u = resultSetToUser(rs);
if(u != null) u.clearOutPassword();
if (u != null) u.clearOutPassword();
return u;
} catch (SQLException e)
{
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
public User resultSetToUser(ResultSet rs)
{
try
{
public User resultSetToUser(ResultSet rs) {
try {
rs.next();
return new User(
rs.getInt("id"),
@@ -549,27 +432,21 @@ public class DataBaseHandler
rs.getString("password"),
rs.getInt("permission")
);
}
catch(Exception e)
{
} catch (Exception e) {
return null;
}
}
//add a new user object to the database returns if process was successful
public User addUser(User user)
{
public User addUser(User user) {
//check if mail and passwort (key user information) is given
if (user.getMail() == null || user.getPassword() == null)
{
if (user.getMail() == null || user.getPassword() == null) {
return null;
}
try
{
try {
String password = user.getPassword();
if(encrypted)
{
if (encrypted) {
RSA rsa = RSA.getInstance();
byte[] psw = rsa.loadByteArray(password);
try {
@@ -580,20 +457,16 @@ public class DataBaseHandler
}
st.executeUpdate("insert into users (firstname, lastname, mail, password, permission) values (" + "'" + user.getFirstName() + "', '" + user.getLastName() + "', '" + user.getMail() + "', '" + password + "', " + 0 + ")");
return getUser(user.getMail(), user.getPassword());
} catch (Exception e)
{
} catch (Exception e) {
return null;
}
}
public User updateUser(User user, int id, boolean elevationRequestByAdmin)
{
try
{
public User updateUser(User user, int id, boolean elevationRequestByAdmin) {
try {
String password = user.getPassword();
if(encrypted)
{
if (encrypted) {
RSA rsa = RSA.getInstance();
byte[] psw = rsa.loadByteArray(password);
try {
@@ -603,17 +476,14 @@ public class DataBaseHandler
}
}
if(!elevationRequestByAdmin)
{
if (!elevationRequestByAdmin) {
st.executeUpdate("update users set " +
"firstname='" + user.getFirstName() + "', " +
"lastname='" + user.getLastName() + "', " +
"mail='" + user.getMail() + "', " +
"password='" + password + "' " +
"where id=" + id);
}
else
{
} else {
st.executeUpdate("update users set " +
"firstname='" + user.getFirstName() + "', " +
"lastname='" + user.getLastName() + "', " +
@@ -624,17 +494,14 @@ public class DataBaseHandler
}
return getUser(id);
} catch (SQLException e)
{
} catch (SQLException e) {
e.printStackTrace();
return null;
}
}
public boolean deleteUser(String mail)
{
try
{
public boolean deleteUser(String mail) {
try {
ResultSet rs = st.executeQuery("SELECT id FROM user WHERE mail='" + mail + "'");
rs.next();
int id = rs.getInt("id");
@@ -642,9 +509,7 @@ public class DataBaseHandler
st.executeUpdate("delete from users where mail='" + mail + "'");
return true;
}
catch(Exception e)
{
} catch (Exception e) {
e.printStackTrace();
return false;
}
@@ -9,14 +9,16 @@ public class Semester
private String name;
private int startyear;
private int endyear;
private int number;
public Semester(int id, int startday, int endday, String name, int startyear, int endyear) {
public Semester(int id, int startday, int endday, String name, int startyear, int endyear, int number) {
this.id = id;
this.startday = startday;
this.endday = endday;
this.name = name;
this.startyear = startyear;
this.endyear = endyear;
this.number = number;
}
public int getId() {
@@ -42,4 +44,6 @@ public class Semester
public int getEndyear() {
return endyear;
}
public int getNumber(){return number; }
}
@@ -40,11 +40,11 @@ public class EntriesController
for (int i = 0; i < 6; i++) {
var idx = 0;
for (int j = 0; j < 20; j++) {
if (lonelyEntry[i][j] != null){
if (lonelyEntry != null && lonelyEntry[i][j] != null){
combinedEntry[i][idx] = lonelyEntry[i][j];
idx++;
}
if (happyEntry[i][j] != null){
if (happyEntry != null && happyEntry[i][j] != null){
combinedEntry[i][idx] = happyEntry[i][j];
idx++;
}
@@ -53,29 +53,23 @@ public class ModuleController
return new ResponseEntity<>(HttpStatus.FORBIDDEN);
}
/**
GET
Get A Module by the matching semester and user id (important for edit function in frontend)
*/
@CrossOrigin
@GetMapping("/module/suid")
public ResponseEntity<Module[]> getModulesBySemesterUserID(@RequestParam(name = "sessionid") String sessionid, @RequestParam(name = "userid") String userid, @RequestParam(name = "semesterid") int semesterid)
@GetMapping("/module/bysemesterid")
public ResponseEntity<Module[]> getModulesBySemesterID(@RequestParam(name="sessionid") String sessionID, @RequestParam(name="semesterid") int semesterid)
{
User user = UserSessionIDHandler.getUserBySessionID(sessionid);
String[] userIDSSplit = userid.split("a");
int[] userIDS = new int[userIDSSplit.length];
for(int i = 0; i < userIDS.length; i++)
{
userIDS[i] = Integer.parseInt(userIDSSplit[i]);
}
User user = UserSessionIDHandler.getUserBySessionID(sessionID);
if(user != null && user.getPermissions() == UserPermissions.admin.getValue())
{
Module[] tempModuleArray = db.getAllModules();
List<Module> result = new ArrayList<>();
for(int i = 0; i < userIDS.length; i++)
for(int i = 0; i < tempModuleArray.length; i++)
{
result.add(db.getModuleBySemesterUserID(userIDS[i], semesterid));
if(tempModuleArray[i].getsemesterid() == semesterid)
{
result.add(tempModuleArray[i]);
}
}
return new ResponseEntity<>(result.toArray(new Module[0]), HttpStatus.OK);
@@ -114,7 +108,6 @@ public class ModuleController
public ResponseEntity<Module> addModule(@RequestBody Module module, @RequestParam(name = "sessionid") String sessionID)
{
System.out.println("test1");
User user = UserSessionIDHandler.getUserBySessionID(sessionID);
if (user.getPermissions() == UserPermissions.admin.getValue())
@@ -163,12 +156,12 @@ public class ModuleController
*/
@CrossOrigin
@DeleteMapping("/module")
public void deleteModule(@RequestParam(name = "sessionid") String sessionid, @RequestParam(name = "semesterid") int semesterid, @RequestParam(name = "userid") int userid)
public void deleteModule(@RequestParam(name = "sessionid") String sessionid, @RequestParam(name="id") int id)
{
User u = UserSessionIDHandler.getUserBySessionID(sessionid);
if (u != null && u.getPermissions() == UserPermissions.admin.getValue())
{
db.deleteModule(semesterid, userid);
db.deleteModule(id);
}
}
@@ -57,7 +57,7 @@ public class SemesterController
return new ResponseEntity<>(s, HttpStatus.OK);
}
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
return new ResponseEntity<>(null, HttpStatus.OK);
}
return new ResponseEntity<>(HttpStatus.FORBIDDEN);