Request Entries from Rest API

Required for Request: SessionID (Login),
tag in der woche (montag: 0)
kalenderwoche
semesterid (evtl.später semestername)
This commit is contained in:
brausjonas
2023-05-09 00:27:48 +02:00
parent bff6196f77
commit a928397ebe
6 changed files with 217 additions and 6 deletions
Binary file not shown.
+40
View File
@@ -247,3 +247,43 @@ Wrong user name or password [28000-214]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:510)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:477)
... 16 more
2023-05-08 14:01:35 database: wrong user or password; user: "ADM"
org.h2.message.DbException: Falscher Benutzername oder Passwort
Wrong user name or password [28000-214]
at org.h2.message.DbException.get(DbException.java:223)
at org.h2.message.DbException.get(DbException.java:199)
at org.h2.message.DbException.get(DbException.java:188)
at org.h2.engine.Engine.openSession(Engine.java:154)
at org.h2.engine.Engine.openSession(Engine.java:222)
at org.h2.engine.Engine.createSession(Engine.java:201)
at org.h2.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:338)
at org.h2.jdbc.JdbcConnection.<init>(JdbcConnection.java:122)
at org.h2.util.JdbcUtils.getConnection(JdbcUtils.java:288)
at org.h2.server.web.WebServer.getConnection(WebServer.java:808)
at org.h2.server.web.WebApp.login(WebApp.java:1033)
at org.h2.server.web.WebApp.process(WebApp.java:226)
at org.h2.server.web.WebApp.processRequest(WebApp.java:176)
at org.h2.server.web.WebThread.process(WebThread.java:152)
at org.h2.server.web.WebThread.run(WebThread.java:101)
at java.base/java.lang.Thread.run(Thread.java:1623)
Caused by: org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Falscher Benutzername oder Passwort
Wrong user name or password [28000-214]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:510)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:477)
... 16 more
2023-05-08 23:46:11 jdbc[3]: exception
org.h2.jdbc.JdbcSQLSyntaxErrorException: Tabelle "WEEK" nicht gefunden
Table "WEEK" not found; SQL statement:
select * from week [42102-214]
2023-05-08 23:46:25 jdbc[3]: exception
org.h2.jdbc.JdbcSQLSyntaxErrorException: Tabelle "SEMESTR" nicht gefunden
Table "SEMESTR" not found; SQL statement:
select * from semestr [42102-214]
2023-05-08 23:46:46 jdbc[3]: exception
org.h2.jdbc.JdbcSQLSyntaxErrorException: Tabelle "WEEK" nicht gefunden
Table "WEEK" not found; SQL statement:
select * from week [42102-214]
2023-05-08 23:54:05 jdbc[3]: exception
org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax Fehler in SQL Befehl "select * [*]froms days"
Syntax error in SQL statement "select * [*]froms days"; SQL statement:
select * froms days [42000-214]
@@ -1,9 +1,14 @@
package com.example.backend.anwprj;
import com.example.backend.anwprj.Entries.Entry;
import com.example.backend.anwprj.Semesters.Semester;
import com.example.backend.anwprj.Users.User;
import com.example.backend.anwprj.Users.UserSessionIDHandler;
import java.sql.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class DataBaseHandler
{
@@ -34,6 +39,52 @@ public class DataBaseHandler
}
}
public Entry[] getEntries(int dayinweek, int weeknumber, int semesterid, User user)
{
try
{
ResultSet rs = st.executeQuery("select distinct e.id, e.dayid, e.usercreatedbyid, e.timestart, e.timeend, e.info " +
"from entries e, days d, weeks w, semester s " +
"where e.dayid = d.id and " +
"d.weekid = w.id and " +
"w.semesterid = s.id and " +
"d.dayinweek = " + dayinweek + " and " +
"w.weeknumber = " + weeknumber + " and " +
"s.id = " + semesterid);
boolean editable = false;
List<Entry> temp = new ArrayList<>();
while(rs.next())
{
editable = false;
if(rs.getInt("usercreatedbyid") == user.getId())
{
editable = true;
}
temp.add(
new Entry(
rs.getInt("id"),
rs.getInt("dayid"),
rs.getInt("usercreatedbyid"),
rs.getInt("timestart"),
rs.getInt("timeend"),
rs.getString("info"),
editable
)
);
}
return temp.toArray(new Entry[0]);
} catch (SQLException e)
{
throw new RuntimeException(e);
}
}
public Semester findSemester(String name)
{
try
@@ -0,0 +1,73 @@
package com.example.backend.anwprj.Entries;
public class Entry
{
private int id;
private int dayid;
private int usercreatedbyid;
private int timestart;
private int timeend;
private String info;
private boolean editable;
public Entry(int id, int dayid, int usercreatedbyid, int timestart, int timeend, String info, boolean editable)
{
this.id = id;
this.dayid = dayid;
this.usercreatedbyid = usercreatedbyid;
this.timestart = timestart;
this.timeend = timeend;
this.info = info;
this.editable = editable;
}
public int getId()
{
return id;
}
public int getDayid()
{
return dayid;
}
public int getUsercreatedbyid()
{
return usercreatedbyid;
}
public int getTimestart()
{
return timestart;
}
public int getTimeend()
{
return timeend;
}
public String getInfo()
{
return info;
}
public void setDayid(int dayid)
{
this.dayid = dayid;
}
public void setTimestart(int timestart)
{
this.timestart = timestart;
}
public void setTimeend(int timeend)
{
this.timeend = timeend;
}
public void setInfo(String info)
{
this.info = info;
}
}
@@ -10,28 +10,37 @@ public class UserSessionIDHandler
{
public static HashMap<String, User> mapping = new HashMap<>();
public static User getUserBySessionID(String sessionID)
{
return mapping.get(sessionID);
}
public static String addUser(String mail, String password)
{
User user = DataBaseHandler.getInstance().findUser(mail, password);
if(user != null)
{
byte[] array = new byte[30]; // length is bounded by 7
new Random().nextBytes(array);
String generatedString = new String(array, StandardCharsets.UTF_8);
mapping.put(generatedString, user);
byte[] id = new byte[100];
for(int i = 0; i < id.length; i++)
{
id[i] = (byte) (Math.random() * 26 + 64);
}
String generatedString = new String(id, StandardCharsets.US_ASCII);
mapping.put(generatedString, user);
new java.util.Timer().schedule(new java.util.TimerTask(){
@Override
public void run()
{
mapping.remove(generatedString);
System.out.println("test");
return;
}
//value to be higher
}, 5000);
}, 5000000);
return generatedString;
}
@@ -0,0 +1,38 @@
package com.example.backend.anwprj.controller;
import com.example.backend.anwprj.DataBaseHandler;
import com.example.backend.anwprj.Entries.Entry;
import com.example.backend.anwprj.Users.User;
import com.example.backend.anwprj.Users.UserSessionIDHandler;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
public class EntriesController
{
private DataBaseHandler db;
{
db = DataBaseHandler.getInstance();
}
@CrossOrigin
@GetMapping("/entries")
public ResponseEntity<Entry[]> getEntries(
@RequestParam(name = "sessionid") String sessionID,
@RequestParam(name = "dayinweek") int dayinweek,
@RequestParam(name = "weeknumber") int weeknumber,
@RequestParam(name = "semesterid") int semesterid)
{
User user = UserSessionIDHandler.getUserBySessionID(sessionID);
if(user == null)
{
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
Entry[] entries = db.getEntries(dayinweek, weeknumber, semesterid, user);
return new ResponseEntity<>(entries, HttpStatus.OK);
}
}