From f603246879bf276dc27f48abe5a849f6e7be5476 Mon Sep 17 00:00:00 2001
From: TayBone2305 <tayfun.alexander@gmx.de>
Date: Tue, 14 Jun 2022 15:27:51 +0200
Subject: [PATCH] Hibernate ORM for DB 2.0

---
 .idea/dbnavigator.xml                |  6 +++-
 .idea/workspace.xml                  | 44 +++++++++++-----------------
 src/main/Application.java            | 14 +++++++--
 src/main/classes/Course.java         |  6 +++-
 src/main/classes/CoursesOfStudy.java | 34 ++++++++++-----------
 src/main/classes/Enrollment.java     |  1 +
 src/main/classes/Lecturer.java       |  2 +-
 7 files changed, 56 insertions(+), 51 deletions(-)

diff --git a/.idea/dbnavigator.xml b/.idea/dbnavigator.xml
index 0651cff..0168272 100644
--- a/.idea/dbnavigator.xml
+++ b/.idea/dbnavigator.xml
@@ -34,7 +34,10 @@
     </connection>
   </component>
   <component name="DBNavigator.Project.DatabaseFileManager">
-    <open-files />
+    <open-files>
+      <object connection-id="1c72da42-0bf8-4e1f-be16-76f69d3e0611" object-ref="schemas/notenmanager/tables/kurs" />
+      <object connection-id="1c72da42-0bf8-4e1f-be16-76f69d3e0611" object-ref="schemas/notenmanager/tables/studiengang" />
+    </open-files>
   </component>
   <component name="DBNavigator.Project.DatabaseSessionManager">
     <connection id="1c72da42-0bf8-4e1f-be16-76f69d3e0611" />
@@ -43,6 +46,7 @@
     <filter-actions connection-id="1c72da42-0bf8-4e1f-be16-76f69d3e0611" dataset="notenmanager.course" active-filter-id="EMPTY_FILTER" />
     <filter-actions connection-id="1c72da42-0bf8-4e1f-be16-76f69d3e0611" dataset="notenmanager.coursesofstudy" active-filter-id="EMPTY_FILTER" />
     <filter-actions connection-id="1c72da42-0bf8-4e1f-be16-76f69d3e0611" dataset="notenmanager.kurs" active-filter-id="EMPTY_FILTER" />
+    <filter-actions connection-id="1c72da42-0bf8-4e1f-be16-76f69d3e0611" dataset="notenmanager.studiengang" active-filter-id="EMPTY_FILTER" />
   </component>
   <component name="DBNavigator.Project.EditorStateManager">
     <last-used-providers />
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 6690a74..280ac52 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,33 +4,13 @@
     <option name="autoReloadType" value="SELECTIVE" />
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="0d616560-06e0-45af-8dd9-ccab83963a0f" name="Changes" comment="">
-      <change afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/.idea/dbnavigator.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/.idea/jpa-buddy.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/.idea/uiDesigner.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/Application.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/JpaService.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/abstractClasses/UniversityMember.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/classes/Course.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/classes/CoursesOfStudy.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/classes/Enrollment.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/classes/Lecturer.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/classes/Student.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/enumeration/CourseType.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/enumeration/Degree.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/enumeration/ExamType.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/enumeration/FieldOfStudy.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/enumeration/Gender.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/enumeration/Mark.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/enumeration/Semester.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/enumeration/Status.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/interfaces/Calculable.java" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/src/main/resources/META-INF/persistence.xml" afterDir="false" />
+    <list default="true" id="0d616560-06e0-45af-8dd9-ccab83963a0f" name="Changes" comment="Hibernate ORM for DB">
+      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/Application.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/Application.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/classes/Course.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/classes/Course.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/classes/CoursesOfStudy.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/classes/CoursesOfStudy.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/classes/Enrollment.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/classes/Enrollment.java" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/src/main/classes/Lecturer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/classes/Lecturer.java" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -117,6 +97,14 @@
       <option name="presentableId" value="Default" />
       <updated>1654440427551</updated>
     </task>
+    <task id="LOCAL-00001" summary="Hibernate ORM for DB">
+      <created>1655210036433</created>
+      <option name="number" value="00001" />
+      <option name="presentableId" value="LOCAL-00001" />
+      <option name="project" value="LOCAL" />
+      <updated>1655210036433</updated>
+    </task>
+    <option name="localTasksCounter" value="2" />
     <servers />
   </component>
   <component name="Vcs.Log.Tabs.Properties">
@@ -132,5 +120,7 @@
   </component>
   <component name="VcsManagerConfiguration">
     <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
+    <MESSAGE value="Hibernate ORM for DB" />
+    <option name="LAST_COMMIT_MESSAGE" value="Hibernate ORM for DB" />
   </component>
 </project>
\ No newline at end of file
diff --git a/src/main/Application.java b/src/main/Application.java
index 884813c..9241b49 100644
--- a/src/main/Application.java
+++ b/src/main/Application.java
@@ -1,6 +1,8 @@
 import classes.*;
 import enumeration.*;
 
+import java.time.Duration;
+
 /**
  * Defines the entry point of the Java application.
  */
@@ -14,9 +16,15 @@ public class Application
         {
             jpaService.runInTransaction(entityManager -> {
                 // name, semester, courseType, sws, ects, examType, isCredited
-                entityManager.persist(new Course("Numerische Methoden", Semester.SIXTH.getSemester(), CourseType.REQUIRED.getCourseType(), 4, 5, ExamType.WRITTEN.getExamType(), null));
-                entityManager.persist(new Course("Echtzeitsysteme", Semester.SIXTH.getSemester(), CourseType.REQUIRED.getCourseType(), 4, 5, ExamType.WRITTEN.getExamType(), null));
-                entityManager.persist(new Course("Digitale Signalverarbeitung", Semester.SIXTH.getSemester(), CourseType.REQUIRED.getCourseType(), 4, 5, ExamType.WRITTEN.getExamType(), null));
+                //entityManager.persist(new Course("Numerische Methoden", Semester.SIXTH.getSemester(), CourseType.REQUIRED.getCourseType(), 4, 5, ExamType.WRITTEN.getExamType(), null));
+                //entityManager.persist(new Course("Echtzeitsysteme", Semester.SIXTH.getSemester(), CourseType.REQUIRED.getCourseType(), 4, 5, ExamType.WRITTEN.getExamType(), null));
+                //entityManager.persist(new Course("Digitale Signalverarbeitung", Semester.SIXTH.getSemester(), CourseType.REQUIRED.getCourseType(), 4, 5, ExamType.WRITTEN.getExamType(), null));
+                //int id, String name, String degree, int duration, int fees, String fieldOfStudy
+                CoursesOfStudy coursesOfStudy = new CoursesOfStudy("Angewandte Informatik", Degree.BACHELOR_OF_SCIENCE.getDegree(), 7, 62, FieldOfStudy.B_ACS_EMBEDDED_SYSTEMS.getFieldOfStudy());
+
+                coursesOfStudy.addCourse(new Course("Systemprogrammierung", Semester.SIXTH.getSemester(), CourseType.REQUIRED.getCourseType(), 4, 5, ExamType.WRITTEN.getExamType(), null));
+
+                entityManager.persist(coursesOfStudy);
 
                 return null;
             });
diff --git a/src/main/classes/Course.java b/src/main/classes/Course.java
index d15ffe6..d44236f 100644
--- a/src/main/classes/Course.java
+++ b/src/main/classes/Course.java
@@ -2,7 +2,6 @@ package classes;
 
 import jakarta.persistence.*;
 import java.util.Objects;
-import java.util.Set;
 
 @Entity
 @Table(name = "Kurs")
@@ -147,4 +146,9 @@ public class Course
     {
         isCredited = credited;
     }
+
+    public void setCoursesOfStudy(CoursesOfStudy coursesOfStudy)
+    {
+        this.coursesOfStudy = coursesOfStudy;
+    }
 }
diff --git a/src/main/classes/CoursesOfStudy.java b/src/main/classes/CoursesOfStudy.java
index b1a2269..5d16076 100644
--- a/src/main/classes/CoursesOfStudy.java
+++ b/src/main/classes/CoursesOfStudy.java
@@ -35,20 +35,28 @@ public class CoursesOfStudy
             cascade = CascadeType.ALL,
             orphanRemoval = true
     )
-    private List<CoursesOfStudy> courses = new ArrayList<>();
+    private List<Course> courses = new ArrayList<>();
+    @ManyToOne
+    @JoinColumn(name = "courses_of_study_id")
+    private CoursesOfStudy coursesOfStudy;
 
+    public CoursesOfStudy getCoursesOfStudy() {
+        return coursesOfStudy;
+    }
+
+    /*
     @ManyToOne(cascade = CascadeType.ALL)
     @JoinColumn(name = "courses_of_study_id")
     private CoursesOfStudy coursesOfStudy;
+    */
 
     public CoursesOfStudy()
     {
 
     }
 
-    public CoursesOfStudy(int id, String name, String degree, int duration, int fees, String fieldOfStudy)
+    public CoursesOfStudy(String name, String degree, int duration, int fees, String fieldOfStudy)
     {
-        this.id = id;
         this.name = name;
         this.degree = degree;
         this.duration = duration;
@@ -71,16 +79,6 @@ public class CoursesOfStudy
         return Objects.hash(id);
     }
 
-    public CoursesOfStudy getCoursesOfStudy()
-    {
-        return coursesOfStudy;
-    }
-
-    public void setCoursesOfStudy(CoursesOfStudy coursesOfStudy)
-    {
-        this.coursesOfStudy = coursesOfStudy;
-    }
-
     public int getId()
     {
         return id;
@@ -141,15 +139,15 @@ public class CoursesOfStudy
         this.fieldOfStudy = fieldOfStudy;
     }
 
-    /*public void addComment(Course course)
+    public void addCourse(Course course)
     {
         courses.add(course);
-        course.setCourse(this);
+        course.setCoursesOfStudy(this);
     }
 
-    public void removeComment(Course course)
+    public void removeCourse(Course course)
     {
         courses.remove(course);
-        course.setCourse(this);
-    }*/
+        course.setCoursesOfStudy(null);
+    }
 }
diff --git a/src/main/classes/Enrollment.java b/src/main/classes/Enrollment.java
index 8569fba..64f7c89 100644
--- a/src/main/classes/Enrollment.java
+++ b/src/main/classes/Enrollment.java
@@ -24,6 +24,7 @@ public class Enrollment
     @Column(name = "Datum der Anmeldung")
     private LocalDateTime enrollmentDate;
 
+    @Column(name = "Note")
     private double grade;
 
     public Enrollment()
diff --git a/src/main/classes/Lecturer.java b/src/main/classes/Lecturer.java
index f6a8ae4..f067a1f 100644
--- a/src/main/classes/Lecturer.java
+++ b/src/main/classes/Lecturer.java
@@ -9,7 +9,7 @@ import jakarta.persistence.Table;
 @Table(name = "Dozent")
 public class Lecturer extends UniversityMember
 {
-    @Column(name = "Fakultät")
+    @Column(name = "Fakultaet")
     String faculty;
 
     public Lecturer()
-- 
GitLab