diff --git a/backend/database.mv.db b/backend/database.mv.db index fdfd9ac..8abdd0d 100644 Binary files a/backend/database.mv.db and b/backend/database.mv.db differ diff --git a/backend/database.trace.db b/backend/database.trace.db index bc23311..9ea9c23 100644 --- a/backend/database.trace.db +++ b/backend/database.trace.db @@ -114,3 +114,108 @@ Column "permissions" not found [42122-214] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:1623) +2023-05-08 12:49:43 jdbc[3]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Tabelle "SEMESTERS" nicht gefunden +Table "SEMESTERS" not found; SQL statement: +select * from semesters where name = 'esfdasfasdfds' [42102-214] +2023-05-08 12:50:48 jdbc[3]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Tabelle "SEMESTERS" nicht gefunden +Table "SEMESTERS" not found; SQL statement: +select * from SEMESTERS where name = 'esfdasfasdfds' [42102-214] +2023-05-08 12:52:10 jdbc[3]: exception +org.h2.jdbc.JdbcSQLSyntaxErrorException: Tabelle "SEMESTERS" nicht gefunden +Table "SEMESTERS" not found; SQL statement: +select * from SEMESTERS where name = 'Tiff22ASem2' [42102-214] +2023-05-08 12:52:59 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.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.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) + ... 22 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) + ... 16 more +2023-05-08 12:55:34 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:29) + at com.example.backend.anwprj.DataBaseHandler.getInstance(DataBaseHandler.java:16) + at com.example.backend.anwprj.controller.SemesterController.(SemesterController.java:15) + 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 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 1222c9c..1d3cd20 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.Semesters.Semester; import com.example.backend.anwprj.Users.User; import java.sql.*; @@ -29,10 +30,47 @@ public class DataBaseHandler st = connection.createStatement(); } catch (SQLException e) { - throw new RuntimeException(e); + System.out.println("No Connection!"); } } + public Semester findSemester(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") + ); + } + } + catch(Exception e) + { + e.printStackTrace(); + } + + return null; + } + + public boolean addSemester(Semester s) + { + try + { + st.executeUpdate("insert into SEMESTER (startweeknumber, endweeknumber, name) values (" + s.getStartweeknumber() + ", " + s.getEndweeknumber() + ", '" + s.getName() + "')"); + return true; + + } catch (SQLException e) + { + return false; + } + } + + public User findUser(String mail, String password) { 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 new file mode 100644 index 0000000..91cd67f --- /dev/null +++ b/backend/src/main/java/com/example/backend/anwprj/Semesters/Semester.java @@ -0,0 +1,37 @@ +package com.example.backend.anwprj.Semesters; + +public class Semester +{ + private int id; + private int startweeknumber; + private int endweeknumber; + private String name; + + public Semester(int id, int startweeknumber, int endweeknumber, String name) + { + this.id = id; + this.startweeknumber = startweeknumber; + this.endweeknumber = endweeknumber; + this.name = name; + } + + public int getId() + { + return id; + } + + public int getStartweeknumber() + { + return startweeknumber; + } + + public int getEndweeknumber() + { + return endweeknumber; + } + + public String getName() + { + return name; + } +} 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 new file mode 100644 index 0000000..7ad218e --- /dev/null +++ b/backend/src/main/java/com/example/backend/anwprj/controller/SemesterController.java @@ -0,0 +1,43 @@ +package com.example.backend.anwprj.controller; + +import com.example.backend.anwprj.DataBaseHandler; +import com.example.backend.anwprj.Semesters.Semester; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@RestController +public class SemesterController +{ + private DataBaseHandler db; + + { + db = DataBaseHandler.getInstance(); + } + + @CrossOrigin + @PostMapping("/semester") + public ResponseEntity addSemester(@RequestBody Semester semester) + { + if(db.addSemester(semester)) + { + return new ResponseEntity<>(semester, HttpStatus.OK); + } + + + return new ResponseEntity<>(HttpStatus.BAD_REQUEST); + } + + @CrossOrigin + @GetMapping("/semester") + public ResponseEntity getSemester(@RequestParam(name="name") String name) + { + Semester s = db.findSemester(name); + if (s != null) + { + return new ResponseEntity<>(s, HttpStatus.OK); + } + + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } +}