From 8c50577ca17d0a338efbaa36b00359424c829bc4 Mon Sep 17 00:00:00 2001 From: brausjonas Date: Tue, 9 May 2023 18:05:27 +0200 Subject: [PATCH] Day Controller and More MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Day Controller User: - User kann jetzt seine eigenen Daten vom Server anfordern (password unsichtbar) - Ein User kann keine anderen Userdaten auslesen, außer er ist admin - Ein User kann seine eigenen daten Updaten (admin alle) - Admins Können semester updaten --- backend/database.mv.db | Bin 36864 -> 40960 bytes backend/database.trace.db | 747 ++++++++++++++++++ .../backend/anwprj/DataBaseHandler.java | 305 ++++++- .../com/example/backend/anwprj/Days/Day.java | 30 + .../backend/anwprj/Semesters/Semester.java | 4 +- .../example/backend/anwprj/Users/User.java | 5 + .../anwprj/Users/UserSessionIDHandler.java | 3 +- .../anwprj/controller/DayController.java | 60 ++ .../anwprj/controller/EntriesController.java | 7 + .../anwprj/controller/SemesterController.java | 67 +- .../anwprj/controller/UserController.java | 58 +- 11 files changed, 1231 insertions(+), 55 deletions(-) create mode 100644 backend/src/main/java/com/example/backend/anwprj/Days/Day.java create mode 100644 backend/src/main/java/com/example/backend/anwprj/controller/DayController.java diff --git a/backend/database.mv.db b/backend/database.mv.db index 5011f32cc872ae409dd6e34bd9a82c6be8aec556..64d78deb91f509350e09809aca46578d39a735bb 100644 GIT binary patch literal 40960 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 literal 36864 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.java:469) + at org.h2.mvstore.MVStore$Builder.open(MVStore.java:4082) + at org.h2.mvstore.db.Store.(Store.java:136) + at org.h2.engine.Database.(Database.java:324) + at org.h2.engine.Engine.openSession(Engine.java:92) + 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.(JdbcConnection.java:122) + at org.h2.Driver.connect(Driver.java:59) + at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:683) + at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:230) + at com.example.backend.anwprj.DataBaseHandler.(DataBaseHandler.java:39) + at com.example.backend.anwprj.DataBaseHandler.getInstance(DataBaseHandler.java:23) + at com.example.backend.anwprj.controller.DayController.(DayController.java:19) + at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67) + at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) + at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:484) + at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:198) + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1308) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1199) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:917) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:584) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:310) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1304) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1293) + at com.example.backend.BackendApplication.main(BackendApplication.java:12) +Caused by: org.h2.jdbc.JdbcSQLNonTransientException: Allgemeiner Fehler: "org.h2.mvstore.MVStoreException: The file is locked: D:/DH/TIF22A_AnwProjekt_B/backend/database.mv.db [2.1.214/7]" +General error: "org.h2.mvstore.MVStoreException: The file is locked: D:/DH/TIF22A_AnwProjekt_B/backend/database.mv.db [2.1.214/7]" [50000-214] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:554) + at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) + ... 43 more +Caused by: org.h2.mvstore.MVStoreException: The file is locked: D:/DH/TIF22A_AnwProjekt_B/backend/database.mv.db [2.1.214/7] + at org.h2.mvstore.DataUtils.newMVStoreException(DataUtils.java:1004) + at org.h2.mvstore.FileStore.open(FileStore.java:178) + at org.h2.mvstore.FileStore.open(FileStore.java:128) + at org.h2.mvstore.MVStore.(MVStore.java:452) + ... 37 more +2023-05-09 14:56:05 jdbc[3]: exception +java.sql.SQLClientInfoException: Client info name 'ApplicationName' not supported. + at org.h2.jdbc.JdbcConnection.setClientInfo(JdbcConnection.java:1573) + at com.intellij.database.remote.jdbc.impl.RemoteConnectionImpl.setClientInfo(RemoteConnectionImpl.java:469) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360) + at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200) + at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:712) + at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196) + at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587) + at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828) + at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) + at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) + at java.base/java.lang.Thread.run(Thread.java:833) +2023-05-09 17:06:45 database: flush +org.h2.message.DbException: Allgemeiner Fehler: "org.h2.mvstore.MVStoreException: The file is locked: D:/DH/TIF22A_AnwProjekt_B/backend/database.mv.db [2.1.214/7]" +General error: "org.h2.mvstore.MVStoreException: The file is locked: D:/DH/TIF22A_AnwProjekt_B/backend/database.mv.db [2.1.214/7]" [50000-214] + at org.h2.message.DbException.get(DbException.java:212) + at org.h2.message.DbException.convert(DbException.java:395) + at org.h2.mvstore.db.Store.lambda$new$0(Store.java:125) + at org.h2.mvstore.MVStore.handleException(MVStore.java:3318) + at org.h2.mvstore.MVStore.panic(MVStore.java:593) + at org.h2.mvstore.MVStore.(MVStore.java:469) + at org.h2.mvstore.MVStore$Builder.open(MVStore.java:4082) + at org.h2.mvstore.db.Store.(Store.java:136) + at org.h2.engine.Database.(Database.java:324) + at org.h2.engine.Engine.openSession(Engine.java:92) + 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.(JdbcConnection.java:122) + at org.h2.Driver.connect(Driver.java:59) + at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:683) + at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:230) + at com.example.backend.anwprj.DataBaseHandler.(DataBaseHandler.java:37) + at com.example.backend.anwprj.DataBaseHandler.getInstance(DataBaseHandler.java:21) + at com.example.backend.anwprj.controller.DayController.(DayController.java:19) + at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67) + at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) + at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:484) + at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:198) + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1308) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1199) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:917) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:584) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:310) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1304) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1293) + at com.example.backend.BackendApplication.main(BackendApplication.java:12) +Caused by: org.h2.jdbc.JdbcSQLNonTransientException: Allgemeiner Fehler: "org.h2.mvstore.MVStoreException: The file is locked: D:/DH/TIF22A_AnwProjekt_B/backend/database.mv.db [2.1.214/7]" +General error: "org.h2.mvstore.MVStoreException: The file is locked: D:/DH/TIF22A_AnwProjekt_B/backend/database.mv.db [2.1.214/7]" [50000-214] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:554) + at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) + ... 43 more +Caused by: org.h2.mvstore.MVStoreException: The file is locked: D:/DH/TIF22A_AnwProjekt_B/backend/database.mv.db [2.1.214/7] + at org.h2.mvstore.DataUtils.newMVStoreException(DataUtils.java:1004) + at org.h2.mvstore.FileStore.open(FileStore.java:178) + at org.h2.mvstore.FileStore.open(FileStore.java:128) + at org.h2.mvstore.MVStore.(MVStore.java:452) + ... 37 more +2023-05-09 15:08:24 jdbc[3]: exception +java.sql.SQLClientInfoException: Client info name 'ApplicationName' not supported. + at org.h2.jdbc.JdbcConnection.setClientInfo(JdbcConnection.java:1573) + at com.intellij.database.remote.jdbc.impl.RemoteConnectionImpl.setClientInfo(RemoteConnectionImpl.java:469) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360) + at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200) + at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:712) + at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196) + at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587) + at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828) + at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) + at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) + at java.base/java.lang.Thread.run(Thread.java:833) +2023-05-09 15:08:31 jdbc[4]: exception +java.sql.SQLClientInfoException: Client info name 'ApplicationName' not supported. + at org.h2.jdbc.JdbcConnection.setClientInfo(JdbcConnection.java:1573) + at com.intellij.database.remote.jdbc.impl.RemoteConnectionImpl.setClientInfo(RemoteConnectionImpl.java:469) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360) + at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200) + at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:712) + at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196) + at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587) + at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828) + at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) + at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) + at java.base/java.lang.Thread.run(Thread.java:833) +2023-05-09 17:25:10 jdbc[3]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax Fehler in SQL Befehl "update semester set (startweeknumber[*]=1, endweeknumber=10, name=TIF22ASem1, startyear=0, endyear=0) where id=1"; erwartet "., ,, )" +Syntax error in SQL statement "update semester set (startweeknumber[*]=1, endweeknumber=10, name=TIF22ASem1, startyear=0, endyear=0) where id=1"; expected "., ,, )"; SQL statement: +update semester set (startweeknumber=1, endweeknumber=10, name=TIF22ASem1, startyear=0, endyear=0) where id=1 [42001-214] +2023-05-09 17:25:26 jdbc[3]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax Fehler in SQL Befehl "update semester set (startweeknumber[*]=1, endweeknumber=10, name=TIF22ASem1, startyear=0, endyear=0) where id=1"; erwartet "., ,, )" +Syntax error in SQL statement "update semester set (startweeknumber[*]=1, endweeknumber=10, name=TIF22ASem1, startyear=0, endyear=0) where id=1"; expected "., ,, )"; SQL statement: +update semester set (startweeknumber=1, endweeknumber=10, name=TIF22ASem1, startyear=0, endyear=0) where id=1 [42001-214] +2023-05-09 17:26:53 jdbc[3]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax Fehler in SQL Befehl "update semester set (startweeknumber[*]=1, endweeknumber=5, name=TIF22ASem1, startyear=0, endyear=0) where id=1"; erwartet "., ,, )" +Syntax error in SQL statement "update semester set (startweeknumber[*]=1, endweeknumber=5, name=TIF22ASem1, startyear=0, endyear=0) where id=1"; expected "., ,, )"; SQL statement: +update semester set (startweeknumber=1, endweeknumber=5, name=TIF22ASem1, startyear=0, endyear=0) where id=1 [42001-214] +2023-05-09 17:27:45 jdbc[3]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax Fehler in SQL Befehl "update semester set (startweeknumber[*]=1, endweeknumber=5, name=TIF22ASem1, startyear=0, endyear=0) where id=1"; erwartet "., ,, )" +Syntax error in SQL statement "update semester set (startweeknumber[*]=1, endweeknumber=5, name=TIF22ASem1, startyear=0, endyear=0) where id=1"; expected "., ,, )"; SQL statement: +update semester set (startweeknumber=1, endweeknumber=5, name=TIF22ASem1, startyear=0, endyear=0) where id=1 [42001-214] +2023-05-09 17:28:27 jdbc[3]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax Fehler in SQL Befehl "update semester set (startweeknumber[*]=1, endweeknumber=5, name='TIF22ASem1', startyear=0, endyear=0) where id=1"; erwartet "., ,, )" +Syntax error in SQL statement "update semester set (startweeknumber[*]=1, endweeknumber=5, name='TIF22ASem1', startyear=0, endyear=0) where id=1"; expected "., ,, )"; SQL statement: +update semester set (startweeknumber=1, endweeknumber=5, name='TIF22ASem1', startyear=0, endyear=0) where id=1 [42001-214] +2023-05-09 17:44:43 jdbc[3]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax Fehler in SQL Befehl "update users set firstname='test', lastname='userJonas', mail='test@gmail.com', password='12345', [*]where id=2"; erwartet "identifier" +Syntax error in SQL statement "update users set firstname='test', lastname='userJonas', mail='test@gmail.com', password='12345', [*]where id=2"; expected "identifier"; SQL statement: +update users set firstname='test', lastname='userJonas', mail='test@gmail.com', password='12345', where id=2 [42001-214] +2023-05-09 17:45:48 jdbc[3]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax Fehler in SQL Befehl "update users set firstname='test', lastname='userJonas', mail='test@gmail.com', password='12345', [*]where id=2"; erwartet "identifier" +Syntax error in SQL statement "update users set firstname='test', lastname='userJonas', mail='test@gmail.com', password='12345', [*]where id=2"; expected "identifier"; SQL statement: +update users set firstname='test', lastname='userJonas', mail='test@gmail.com', password='12345', where id=2 [42001-214] +2023-05-09 15:46:36 jdbc[3]: exception +java.sql.SQLClientInfoException: Client info name 'ApplicationName' not supported. + at org.h2.jdbc.JdbcConnection.setClientInfo(JdbcConnection.java:1573) + at com.intellij.database.remote.jdbc.impl.RemoteConnectionImpl.setClientInfo(RemoteConnectionImpl.java:469) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:360) + at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:200) + at java.rmi/sun.rmi.transport.Transport$1.run(Transport.java:197) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:712) + at java.rmi/sun.rmi.transport.Transport.serviceCall(Transport.java:196) + at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:587) + at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828) + at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:705) + at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) + at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:704) + at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) + at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) + at java.base/java.lang.Thread.run(Thread.java:833) +2023-05-09 17:47:22 database: flush +org.h2.message.DbException: Allgemeiner Fehler: "org.h2.mvstore.MVStoreException: The file is locked: D:/DH/TIF22A_AnwProjekt_B/backend/database.mv.db [2.1.214/7]" +General error: "org.h2.mvstore.MVStoreException: The file is locked: D:/DH/TIF22A_AnwProjekt_B/backend/database.mv.db [2.1.214/7]" [50000-214] + at org.h2.message.DbException.get(DbException.java:212) + at org.h2.message.DbException.convert(DbException.java:395) + at org.h2.mvstore.db.Store.lambda$new$0(Store.java:125) + at org.h2.mvstore.MVStore.handleException(MVStore.java:3318) + at org.h2.mvstore.MVStore.panic(MVStore.java:593) + at org.h2.mvstore.MVStore.(MVStore.java:469) + at org.h2.mvstore.MVStore$Builder.open(MVStore.java:4082) + at org.h2.mvstore.db.Store.(Store.java:136) + at org.h2.engine.Database.(Database.java:324) + at org.h2.engine.Engine.openSession(Engine.java:92) + 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.(JdbcConnection.java:122) + at org.h2.Driver.connect(Driver.java:59) + at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:683) + at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:230) + at com.example.backend.anwprj.DataBaseHandler.(DataBaseHandler.java:37) + at com.example.backend.anwprj.DataBaseHandler.getInstance(DataBaseHandler.java:21) + at com.example.backend.anwprj.controller.DayController.(DayController.java:19) + at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67) + at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) + at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:484) + at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:198) + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1308) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1199) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:560) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:973) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:917) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:584) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:732) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:434) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:310) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1304) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1293) + at com.example.backend.BackendApplication.main(BackendApplication.java:12) +Caused by: org.h2.jdbc.JdbcSQLNonTransientException: Allgemeiner Fehler: "org.h2.mvstore.MVStoreException: The file is locked: D:/DH/TIF22A_AnwProjekt_B/backend/database.mv.db [2.1.214/7]" +General error: "org.h2.mvstore.MVStoreException: The file is locked: D:/DH/TIF22A_AnwProjekt_B/backend/database.mv.db [2.1.214/7]" [50000-214] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:554) + at org.h2.message.DbException.getJdbcSQLException(DbException.java:477) + ... 43 more +Caused by: org.h2.mvstore.MVStoreException: The file is locked: D:/DH/TIF22A_AnwProjekt_B/backend/database.mv.db [2.1.214/7] + at org.h2.mvstore.DataUtils.newMVStoreException(DataUtils.java:1004) + at org.h2.mvstore.FileStore.open(FileStore.java:178) + at org.h2.mvstore.FileStore.open(FileStore.java:128) + at org.h2.mvstore.MVStore.(MVStore.java:452) + ... 37 more +2023-05-09 17:47:47 jdbc[3]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax Fehler in SQL Befehl "update users set firstname='test', lastname='userJonas', mail='test@gmail.com', password='12345', [*]where id=2"; erwartet "identifier" +Syntax error in SQL statement "update users set firstname='test', lastname='userJonas', mail='test@gmail.com', password='12345', [*]where id=2"; expected "identifier"; SQL statement: +update users set firstname='test', lastname='userJonas', mail='test@gmail.com', password='12345', where id=2 [42001-214] +2023-05-09 17:49:27 jdbc[3]: exception +org.h2.jdbc.JdbcSQLNonTransientException: Keine Daten verfügbar +No data is available [2000-214] +2023-05-09 17:58:06 jdbc[3]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax Fehler in SQL Befehl "select * from [*]user where mail='test@gmail.com'"; erwartet "identifier" +Syntax error in SQL statement "select * from [*]user where mail='test@gmail.com'"; expected "identifier"; SQL statement: +select * from user where mail='test@gmail.com' [42001-214] diff --git a/backend/src/main/java/com/example/backend/anwprj/DataBaseHandler.java b/backend/src/main/java/com/example/backend/anwprj/DataBaseHandler.java index f88d40f..c4c94ad 100644 --- a/backend/src/main/java/com/example/backend/anwprj/DataBaseHandler.java +++ b/backend/src/main/java/com/example/backend/anwprj/DataBaseHandler.java @@ -1,5 +1,6 @@ package com.example.backend.anwprj; +import com.example.backend.anwprj.Days.Day; import com.example.backend.anwprj.Entries.Entry; import com.example.backend.anwprj.Semesters.Semester; import com.example.backend.anwprj.Users.User; @@ -7,7 +8,6 @@ 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 @@ -43,6 +43,131 @@ public class DataBaseHandler } } + /* + TEMPPPPPP + */ + public static class Week + { + public int semesterid, id, weeknumber; + + public Week(int id, int semesterid, int weeknumber) + { + this.semesterid = semesterid; + this.weeknumber = weeknumber; + this.id = id; + } + } + public Week addWeek(Week week) + { + try + { + st.executeUpdate("insert into weeks (semesterid, weeknumber) values (" + week.semesterid + ", " + week.weeknumber + ")"); + return getWeek(week.semesterid, week.weeknumber); + } catch (SQLException e) + { + throw new RuntimeException(e); + } + } + + public Week getWeek(int semesterid, int weeknumber) + { + try + { + ResultSet rs = st.executeQuery("select w.* from weeks w, semester s where s.id=" + semesterid + " and " + "w.weeknumber=" + weeknumber); + rs.next(); + return new Week(rs.getInt("id"), rs.getInt("semesterid"), rs.getInt("weeknumber")); + } catch (SQLException e) + { + throw new RuntimeException(e); + } + } + + public Week getWeekById(int id) + { + try + { + ResultSet rs = st.executeQuery("select * from weeks where id=" + id); + rs.next(); + return new Week(rs.getInt("id"), rs.getInt("semesterid"), rs.getInt("weeknumber")); + } + catch(Exception e) + { + return null; + } + } + + /* + TEMP END!!!!!!!!!!!! + */ + /** + DAYS + */ + public Day addDay(Day day) + { + try + { + st.executeUpdate("insert into days (dayinweek, weekid) values (" + day.getDayinweek() + ", " + day.getWeekid() + ")"); + Week w = getWeekById(day.getWeekid()); + return getDay(day.getDayinweek(), w.weeknumber, w.semesterid); + } catch (SQLException e) + { + return null; + } + } + + public Day getDay(int id) + { + try + { + ResultSet rs = st.executeQuery("select * from days where id=" + id); + + return resultSetToDay(rs); + } + catch(Exception e) + { + return null; + } + } + + public Day getDay(int dayinweek, int weeknumber, int semesterid) + { + try + { + ResultSet rs = st.executeQuery("select d.* from days d, weeks w, semester s " + + "where d.weekid = w.id and " + + "w.semesterid = s.id and " + + "d.dayinweek = " + dayinweek + " and " + + "w.weeknumber = " + weeknumber + " and " + + "s.id = " + semesterid); + + return resultSetToDay(rs); + } + catch(Exception e) + { + return null; + } + } + + private Day resultSetToDay(ResultSet rs) + { + try + { + rs.next(); + + return new Day( + rs.getInt("id"), + rs.getInt("dayinweek"), + rs.getInt("weekid") + ); + } catch (SQLException e) + { + return null; + } + } + + /** + ENTRIES + */ //method that returns all entries of a day based on the given parameters public Entry[] getEntries(int dayinweek, int weeknumber, int semesterid, User user) { @@ -95,65 +220,99 @@ public class DataBaseHandler } } + /** + SEMESTER + */ //get a semester object by its name - public Semester findSemester(String name) + public Semester getSemester(String name) { try { ResultSet rs = st.executeQuery("select * from SEMESTER where name = '" + name + "'"); - if(rs.next()) - { - return new Semester( - rs.getInt("id"), - rs.getInt("startweeknumber"), - rs.getInt("endweeknumber"), - rs.getString("name"), - rs.getInt("startyear"), - rs.getInt("endyear") - ); - } + return resultSetToSemester(rs); } catch(Exception e) { - e.printStackTrace(); + return null; } - - return null; } - //write a new semester to the database returns if process was successful - public boolean addSemester(Semester s) + public Semester getSemester(int id) { try { - st.executeUpdate("insert into SEMESTER (startweeknumber, endweeknumber, name, startyear, endyear) values (" + s.getStartweeknumber() + ", " + s.getEndweeknumber() + ", '" + s.getName() + "', " + s.getStartYear() + ", " + s.getEndYear() + ")"); - return true; - - } catch (SQLException e) + ResultSet rs = st.executeQuery("select * from semester where id=" + id); + return resultSetToSemester(rs); + } + catch(Exception e) { - return false; + 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 (startweeknumber, endweeknumber, name, startyear, endyear) values (" + s.getStartweeknumber() + ", " + s.getEndweeknumber() + ", '" + s.getName() + "', " + s.getStartyear() + ", " + s.getEndyear() + ")"); + return getSemester(s.getName()); + } catch (Exception e) + { + return null; + } + } + + public Semester updateSemester(Semester semester) + { + try + { + st.executeUpdate("update semester set startweeknumber=" + semester.getStartweeknumber() + ", " + + "endweeknumber=" + semester.getEndweeknumber() + ", " + + "name='" + semester.getName() + "', " + + "startyear=" + semester.getStartyear() + ", " + + "endyear=" + semester.getEndyear() + " where id=" + semester.getId()); + + return getSemester(semester.getId()); + } catch (SQLException e) + { + e.printStackTrace(); + return null; + } + } + + public Semester resultSetToSemester(ResultSet rs) + { + try + { + rs.next(); + return new Semester( + rs.getInt("id"), + rs.getInt("startweeknumber"), + rs.getInt("endweeknumber"), + rs.getString("name"), + rs.getInt("startyear"), + rs.getInt("endyear") + ); + } + catch(Exception e) + { + return null; + } + } + + /** + USER + */ //get a user object by mail and password from the database - public User findUser(String mail, String password) + public User getUser(String mail, String password) { try { ResultSet rs = st.executeQuery("select * from users where mail = '" + mail + "' and password = '" + password + "'"); - if (rs.next()) - { - return new User( - rs.getInt("id"), - rs.getString("firstname"), - rs.getString("lastname"), - rs.getString("mail"), - rs.getString("password"), - rs.getInt("permission") - ); - } + return resultSetToUser(rs); } catch (Exception e) { e.printStackTrace(); @@ -162,24 +321,90 @@ public class DataBaseHandler return null; } + public User getUser(int id) + { + try + { + ResultSet rs = st.executeQuery("select * from users where id=" + id); + return resultSetToUser(rs); + } catch (Exception e) + { + return null; + } + } + + public User getUser(String mail) + { + try + { + ResultSet rs = st.executeQuery("select * from users where mail='" + mail + "'"); + User u = resultSetToUser(rs); + u.clearOutPassword(); + + return u; + } catch (SQLException e) + { + e.printStackTrace(); + return null; + } + } + + public User resultSetToUser(ResultSet rs) + { + try + { + rs.next(); + return new User( + rs.getInt("id"), + rs.getString("firstname"), + rs.getString("lastname"), + rs.getString("mail"), + rs.getString("password"), + rs.getInt("permission") + ); + } + catch(Exception e) + { + return null; + } + } + //add a new user object to the database returns if process was successful - public boolean 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) { - return false; + return null; } try { st.executeUpdate("insert into users (firstname, lastname, mail, password, permission) values (" + "'" + user.getFirstName() + "', '" + user.getLastName() + "', '" + user.getMail() + "', '" + user.getPassword() + "', " + 0 + ")"); + return getUser(user.getMail(), user.getPassword()); + } catch (Exception e) + { + return null; + } + + } + + public User updateUser(User user, int id) + { + try + { + st.executeUpdate("update users set " + + "firstname='" + user.getFirstName() + "', " + + "lastname='" + user.getLastName() + "', " + + "mail='" + user.getMail() + "', " + + "password='" + user.getPassword() + "' " + + "where id=" + id); + + return getUser(id); } catch (SQLException e) { e.printStackTrace(); - return false; + return null; } - - return true; } } diff --git a/backend/src/main/java/com/example/backend/anwprj/Days/Day.java b/backend/src/main/java/com/example/backend/anwprj/Days/Day.java new file mode 100644 index 0000000..e17c635 --- /dev/null +++ b/backend/src/main/java/com/example/backend/anwprj/Days/Day.java @@ -0,0 +1,30 @@ +package com.example.backend.anwprj.Days; + +public class Day +{ + private int id; + private int dayinweek; + private int weekid; + + public Day(int id, int dayinweek, int weekid) + { + this.id = id; + this.dayinweek = dayinweek; + this.weekid = weekid; + } + + public int getId() + { + return id; + } + + public int getDayinweek() + { + return dayinweek; + } + + public int getWeekid() + { + return weekid; + } +} 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 b51c929..852a8a1 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 @@ -40,12 +40,12 @@ public class Semester return name; } - public int getStartYear() + public int getStartyear() { return startyear; } - public int getEndYear() + public int getEndyear() { return endyear; } 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 8fa9a5c..6e13123 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 @@ -49,4 +49,9 @@ public class User { return permissions; } + + public void clearOutPassword() + { + password = "****"; + } } 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 8a74748..5a8c3b9 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 @@ -4,7 +4,6 @@ import com.example.backend.anwprj.DataBaseHandler; import java.nio.charset.StandardCharsets; import java.util.HashMap; -import java.util.Random; public class UserSessionIDHandler { @@ -33,7 +32,7 @@ public class UserSessionIDHandler public static String addUser(String mail, String password) { //try to get user from database - User user = DataBaseHandler.getInstance().findUser(mail, password); + User user = DataBaseHandler.getInstance().getUser(mail, password); //if user exists if(user != null) diff --git a/backend/src/main/java/com/example/backend/anwprj/controller/DayController.java b/backend/src/main/java/com/example/backend/anwprj/controller/DayController.java new file mode 100644 index 0000000..462da91 --- /dev/null +++ b/backend/src/main/java/com/example/backend/anwprj/controller/DayController.java @@ -0,0 +1,60 @@ +package com.example.backend.anwprj.controller; + +import com.example.backend.anwprj.DataBaseHandler; +import com.example.backend.anwprj.Days.Day; +import com.example.backend.anwprj.Users.User; +import com.example.backend.anwprj.Users.UserPermissions; +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 DayController +{ + + private DataBaseHandler db; + + { + db = DataBaseHandler.getInstance(); + } + + @CrossOrigin + @GetMapping("/days") + public ResponseEntity getDay( + @RequestParam(name="sessionid") String sessionID, + @RequestParam(name="dayinweek") int dayInWeek, + @RequestParam(name="weeknumber") int weekNumber, + @RequestParam(name="semesterid") int semesterID) + { + User u = UserSessionIDHandler.getUserBySessionID(sessionID); + + if(u != null) + { + Day d = db.getDay(dayInWeek, weekNumber, semesterID); + + if (d != null) + { + return new ResponseEntity<>(d, HttpStatus.OK); + } + + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + + return new ResponseEntity<>(HttpStatus.FORBIDDEN); + } + + @CrossOrigin + @PostMapping("/days") + public ResponseEntity addDay(@RequestBody Day day, @RequestParam(name="sessionid") String sessionID) + { + User u = UserSessionIDHandler.getUserBySessionID(sessionID); + + if(u != null && u.getPermissions() == UserPermissions.admin.getValue()) + { + return new ResponseEntity<>(db.addDay(day), HttpStatus.OK); + } + + return new ResponseEntity<>(null, HttpStatus.FORBIDDEN); + } +} diff --git a/backend/src/main/java/com/example/backend/anwprj/controller/EntriesController.java b/backend/src/main/java/com/example/backend/anwprj/controller/EntriesController.java index 4a0129d..533cd76 100644 --- a/backend/src/main/java/com/example/backend/anwprj/controller/EntriesController.java +++ b/backend/src/main/java/com/example/backend/anwprj/controller/EntriesController.java @@ -35,4 +35,11 @@ public class EntriesController Entry[] entries = db.getEntries(dayinweek, weeknumber, semesterid, user); return new ResponseEntity<>(entries, HttpStatus.OK); } + + @CrossOrigin + @PostMapping("/entries") + public ResponseEntity postEntries(@RequestBody Entry[] entries, @RequestParam(name="sessionid") String sessionID) + { + return null; + } } 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 32b477c..04894c2 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 @@ -28,27 +28,78 @@ public class SemesterController if(user.getPermissions() == UserPermissions.admin.getValue()) { - if (db.addSemester(semester)) + Semester s = db.addSemester(semester); + if(s != null) { - return new ResponseEntity<>(semester, HttpStatus.OK); + return new ResponseEntity<>(s, HttpStatus.OK); } + + return new ResponseEntity<>(s, HttpStatus.NOT_FOUND); } - return new ResponseEntity<>(HttpStatus.BAD_REQUEST); + return new ResponseEntity<>(HttpStatus.FORBIDDEN); } //get a semester object by its name @CrossOrigin @GetMapping("/semester") - public ResponseEntity getSemester(@RequestParam(name="name") String name) + public ResponseEntity getSemester(@RequestParam(name="name") String name, @RequestParam(name="sessionid") String sessionID) { - Semester s = db.findSemester(name); - if (s != null) + User u = UserSessionIDHandler.getUserBySessionID(sessionID); + + if(u != null) { - return new ResponseEntity<>(s, HttpStatus.OK); + Semester s = db.getSemester(name); + if (s != null) + { + return new ResponseEntity<>(s, HttpStatus.OK); + } + + return new ResponseEntity<>(HttpStatus.NOT_FOUND); } - return new ResponseEntity<>(HttpStatus.NOT_FOUND); + return new ResponseEntity<>(HttpStatus.FORBIDDEN); + } + + @CrossOrigin + @GetMapping("/semester/id") + public ResponseEntity getSemester(@RequestParam(name="id") int id, @RequestParam(name="sessionid") String sessionID) + { + User u = UserSessionIDHandler.getUserBySessionID(sessionID); + + if(u != null) + { + Semester s = db.getSemester(id); + if(s != null) + { + return new ResponseEntity<>(s, HttpStatus.OK); + } + + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + + return new ResponseEntity<>(HttpStatus.FORBIDDEN); + } + + @CrossOrigin + @PutMapping("/semester") + public ResponseEntity updateSemester(@RequestBody Semester semester, @RequestParam(name="sessionid") String sessionID) + { + User u = UserSessionIDHandler.getUserBySessionID(sessionID); + if(u != null && u.getPermissions() == UserPermissions.admin.getValue()) + { + System.out.println(semester.getId()); + Semester s = db.updateSemester(semester); + + if(s != null) + { + return new ResponseEntity<>(s, HttpStatus.OK); + } + + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + + return new ResponseEntity<>(HttpStatus.FORBIDDEN); } } 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 becaef8..00c253b 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 @@ -2,6 +2,7 @@ package com.example.backend.anwprj.controller; import com.example.backend.anwprj.DataBaseHandler; import com.example.backend.anwprj.Users.User; +import com.example.backend.anwprj.Users.UserPermissions; import com.example.backend.anwprj.Users.UserSessionIDHandler; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -24,7 +25,9 @@ public class UserController public ResponseEntity addUser(@RequestBody User user) { //if user was successfully added to database - if(db.addUser(user)) + User u = db.addUser(user); + + if (u != null) { //generate a session id return new ResponseEntity(UserSessionIDHandler.addUser(user.getMail(), user.getPassword()), HttpStatus.OK); @@ -36,7 +39,7 @@ public class UserController //a user wants to login @CrossOrigin @GetMapping("/users") - public ResponseEntity login(@RequestParam(name="mail") String mail, @RequestParam(name="password") String password) + public ResponseEntity login(@RequestParam(name = "mail") String mail, @RequestParam(name = "password") String password) { //generate a session id for the user trying to login String sessionID = UserSessionIDHandler.addUser(mail, password); @@ -46,9 +49,58 @@ public class UserController @CrossOrigin @GetMapping("/users/logout") - public ResponseEntity logout(@RequestParam(name="sessionid") String sessionID) + public ResponseEntity logout(@RequestParam(name = "sessionid") String sessionID) { boolean success = UserSessionIDHandler.removeUser(sessionID); return new ResponseEntity<>(success, HttpStatus.OK); } + + @CrossOrigin + @PutMapping("/users") + public ResponseEntity updateUser(@RequestParam(name="sessionid") String sessionID, @RequestBody User u, @RequestParam(name="mail") String mail) + { + User sessionUser = UserSessionIDHandler.getUserBySessionID(sessionID); + + if(sessionUser != null) + { + if (sessionUser.getMail().equals(mail) || sessionUser.getPermissions() == UserPermissions.admin.getValue()) + { + System.out.println(sessionUser.getId()); + + User resultingUser = db.updateUser(u, sessionUser.getId()); + + if (resultingUser != null) + { + UserSessionIDHandler.removeUser(sessionID); + return new ResponseEntity<>(true, HttpStatus.OK); + } + + return new ResponseEntity<>(false, HttpStatus.NOT_FOUND); + } + } + + return new ResponseEntity<>(false, HttpStatus.FORBIDDEN); + } + + @CrossOrigin + @GetMapping("/users/data") + public ResponseEntity getUserData( + @RequestParam(name="sessionid") String sessionID, + @RequestParam(name="mail") String mail) + { + User sessionUser = UserSessionIDHandler.getUserBySessionID(sessionID); + + if(sessionUser != null) + { + System.out.println(sessionUser.getMail() + " " + mail); + + if (sessionUser.getMail().equals(mail) || sessionUser.getPermissions() == UserPermissions.admin.getValue()) + { + User searchedUser = db.getUser(mail); + return new ResponseEntity<>(searchedUser, HttpStatus.OK); + } + } + + return new ResponseEntity<>(HttpStatus.FORBIDDEN); + } }