Skip to content
Snippets Groups Projects
Commit 75cae095 authored by Kevin Thaller's avatar Kevin Thaller
Browse files

big update:

-add toString() for Course, Student and CoursesOfStudy
-fix null-pointer-exception in detailControllers + SwitchWindowHelper
-add CoursesOfStudy Column in Student
-add find-Methods to JpaService
-connect Gui to DB
parent a30f9fb0
No related branches found
No related tags found
No related merge requests found
Showing
with 158 additions and 59 deletions
......@@ -4,19 +4,22 @@
<option name="autoReloadType" value="SELECTIVE" />
</component>
<component name="ChangeListManager">
<list default="true" id="ce56effb-683b-43e9-9335-7e3aa5d26c29" name="Changes" comment="fixed db-table-names + fix module error">
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/vcs.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
<list default="true" id="ce56effb-683b-43e9-9335-7e3aa5d26c29" name="Changes" comment="big update:&#10;-add toString() for Course, Student and CoursesOfStudy&#10;-fix null-pointer-exception in detailControllers + SwitchWindowHelper&#10;-add CoursesOfStudy Column in Student&#10;-add find-Methods to JpaService&#10;-connect Gui to DB">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/notenmanager.iml" beforeDir="false" afterPath="$PROJECT_DIR$/notenmanager.iml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/JpaService.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/JpaService.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/CourseModificationController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/CourseModificationController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/CoursesOfStudyDetailsController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/CoursesOfStudyDetailsController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/CoursesOfStudyModificationController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/CoursesOfStudyModificationController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/Main.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/Main.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/MainController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/MainController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/StudentDetailsController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/StudentDetailsController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/StudentModificationController.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/StudentModificationController.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/SwitchWindowHelper.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/gui/SwitchWindowHelper.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/model/Course.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/model/Course.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/model/CoursesOfStudy.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/model/CoursesOfStudy.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/model/Enrollment.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/model/Enrollment.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/model/Lecturer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/model/Lecturer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/model/Student.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/model/Student.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/model/UniversityMember.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/de/thdeg/grademanager/model/UniversityMember.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/module-info.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/module-info.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/META-INF/persistence.xml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/META-INF/persistence.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/de/thdeg/grademanager/gui/student-details.fxml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/de/thdeg/grademanager/gui/student-details.fxml" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
......@@ -47,17 +50,17 @@
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent"><![CDATA[{
"keyToString": {
"Git.Branch.Popup.ShowAllRemotes": "true",
"RunOnceActivity.OpenProjectViewOnStart": "true",
"RunOnceActivity.ShowReadmeOnStart": "true",
"last_opened_file_path": "C:/Users/kevin/Documents/8. Semester/Java FWP/PStA/notenmanager/lib/charm-glisten-6.0.2.jar",
"project.structure.last.edited": "Libraries",
"project.structure.proportion": "0.0",
"project.structure.side.proportion": "0.5280589"
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;Git.Branch.Popup.ShowAllRemotes&quot;: &quot;true&quot;,
&quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;last_opened_file_path&quot;: &quot;C:/Users/kevin/Documents/8. Semester/Java FWP/PStA/notenmanager/lib/charm-glisten-6.0.2.jar&quot;,
&quot;project.structure.last.edited&quot;: &quot;Libraries&quot;,
&quot;project.structure.proportion&quot;: &quot;0.0&quot;,
&quot;project.structure.side.proportion&quot;: &quot;0.5280589&quot;
}
}]]></component>
}</component>
<component name="RunManager">
<configuration name="Main" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="de.thdeg.grademanager.gui.Main" />
......@@ -87,6 +90,14 @@
<option name="presentableId" value="Default" />
<updated>1655395252138</updated>
</task>
<task id="LOCAL-00001" summary="fix db-table-names + fix db-column-names + fix module error">
<created>1655399588913</created>
<option name="number" value="00001" />
<option name="presentableId" value="LOCAL-00001" />
<option name="project" value="LOCAL" />
<updated>1655399588913</updated>
</task>
<option name="localTasksCounter" value="2" />
<servers />
</component>
<component name="Vcs.Log.Tabs.Properties">
......@@ -100,4 +111,9 @@
</map>
</option>
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="fix db-table-names + fix db-column-names + fix module error" />
<MESSAGE value="big update:&#10;-add toString() for Course, Student and CoursesOfStudy&#10;-fix null-pointer-exception in detailControllers + SwitchWindowHelper&#10;-add CoursesOfStudy Column in Student&#10;-add find-Methods to JpaService&#10;-connect Gui to DB" />
<option name="LAST_COMMIT_MESSAGE" value="big update:&#10;-add toString() for Course, Student and CoursesOfStudy&#10;-fix null-pointer-exception in detailControllers + SwitchWindowHelper&#10;-add CoursesOfStudy Column in Student&#10;-add find-Methods to JpaService&#10;-connect Gui to DB" />
</component>
</project>
\ No newline at end of file
package de.thdeg.grademanager;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.EntityTransaction;
import jakarta.persistence.Persistence;
import de.thdeg.grademanager.model.CoursesOfStudy;
import de.thdeg.grademanager.model.Student;
import jakarta.persistence.*;
import java.util.List;
import java.util.function.Function;
/**
......@@ -75,4 +76,16 @@ public class JpaService
}
}
}
public List<Student> getStudentsFromDb(){
EntityManager entityManager = entityManagerFactory.createEntityManager();
Query query = entityManager.createQuery("SELECT q FROM Student q", Student.class);
return query.getResultList();
}
public List<CoursesOfStudy> getCoursesOfStudyFromDb(){
EntityManager entityManager = entityManagerFactory.createEntityManager();
Query query = entityManager.createQuery("SELECT q FROM CoursesOfStudy q", CoursesOfStudy.class);
return query.getResultList();
}
}
package de.thdeg.grademanager.gui;
import de.thdeg.grademanager.JpaService;
import de.thdeg.grademanager.model.Course;
import de.thdeg.grademanager.model.CoursesOfStudy;
import de.thdeg.grademanager.model.enumeration.*;
......@@ -65,6 +66,7 @@ public class CourseModificationController {
courseType = courseTypeComboBox.getValue();
examType = examTypeComboBox.getValue();
try {
CourseModificationController.coursesOfStudy.addCourse(new Course(
name.getText(),
semester.getSemester(),
......@@ -73,6 +75,15 @@ public class CourseModificationController {
Double.parseDouble(ects.getText()),
examType.getExamType(),
false)); //TODO: Add UI-Element for isCredited
JpaService jpaService = JpaService.getInstance();
jpaService.runInTransaction(entityManager -> {
entityManager.merge(CourseModificationController.coursesOfStudy);
entityManager.flush();
return null;
});
SwitchWindowHelper.switchTo("CoursesOfStudy Details", event);
} catch (NumberFormatException e) {
warning.setText("Bitte ganze Zahlen eingeben für SWS und ECTS.");
......
......@@ -38,16 +38,17 @@ public class CoursesOfStudyDetailsController {
@FXML
protected void initialize() {
if (coursesOfStudy != null){
name.setText(coursesOfStudy.getName());
duration.setText(Integer.toString(coursesOfStudy.getDuration()));
fieldOfStudy.setText(coursesOfStudy.getFieldOfStudy());
fees.setText(Integer.toString(coursesOfStudy.getFees()));
name.setText(coursesOfStudy.getName());
duration.setText(Integer.toString(coursesOfStudy.getDuration()));
fieldOfStudy.setText(coursesOfStudy.getFieldOfStudy());
fees.setText(Integer.toString(coursesOfStudy.getFees()));
courseList.setAll(coursesOfStudy.getCourses());
if (!courseList.isEmpty()) {
courseListView.setItems(courseList);
courseList.setAll(coursesOfStudy.getCourses());
if (!courseList.isEmpty()) {
courseListView.setItems(courseList);
}
}
}
......
package de.thdeg.grademanager.gui;
import de.thdeg.grademanager.JpaService;
import de.thdeg.grademanager.model.CoursesOfStudy;
import de.thdeg.grademanager.model.enumeration.Degree;
import de.thdeg.grademanager.model.enumeration.Semester;
......@@ -49,12 +50,17 @@ public class CoursesOfStudyModificationController {
duration = durationComboBox.getValue();
fees = 62;
MainController.coursesOfStudyList.add(new CoursesOfStudy(
CoursesOfStudy coursesOfStudy =new CoursesOfStudy(
name.getText(),
degree.getDegree(),
durationComboBox.getValue().getSemester(),
fees,
fieldOfStudy.getText()));
fieldOfStudy.getText());
JpaService jpaService = JpaService.getInstance();
jpaService.runInTransaction(entityManager -> {entityManager.persist(coursesOfStudy); return null;});
SwitchWindowHelper.switchTo("Main", event);
} else {
warning.setText("Bitte alle Felder ausfüllen.");
......
package de.thdeg.grademanager.gui;
import de.thdeg.grademanager.JpaService;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
......@@ -19,7 +18,6 @@ public class Main extends Application {
}
public static void main(String[] args) {
JpaService jpaService = JpaService.getInstance();
launch();
}
}
\ No newline at end of file
package de.thdeg.grademanager.gui;
import de.thdeg.grademanager.JpaService;
import de.thdeg.grademanager.model.CoursesOfStudy;
import de.thdeg.grademanager.model.Student;
import javafx.collections.FXCollections;
......@@ -20,6 +21,11 @@ public class MainController {
@FXML
protected void initialize() {
JpaService jpaService = JpaService.getInstance();
coursesOfStudyList.setAll(jpaService.getCoursesOfStudyFromDb());
studentList.setAll(jpaService.getStudentsFromDb());
if (!coursesOfStudyList.isEmpty()) {
coursesOfStudyComboBox.setItems(coursesOfStudyList);
}
......
package de.thdeg.grademanager.gui;
import de.thdeg.grademanager.JpaService;
import de.thdeg.grademanager.model.CoursesOfStudy;
import de.thdeg.grademanager.model.Student;
import javafx.event.ActionEvent;
......@@ -34,26 +35,41 @@ public class StudentDetailsController {
@FXML
protected TextField birthPlace;
@FXML
protected TextField coursesOfStudy;
@FXML
protected TextField semester;
@FXML
protected TextField studentID;
@FXML
protected TextField officialEmail;
@FXML
protected void initialize() {
gender.setText(student.getGender().toString());
firstName.setText(student.getFirstName());
lastName.setText(student.getLastName());
placeOfResidence.setText(student.getPlaceOfResidence());
birthPlace.setText(student.getBirthPlace());
semester.setText(Integer.toString(student.getSemester()));
officialEmail.setText(student.getOfficialEmail());
coursesOfStudyComboBox.setItems(coursesOfStudyList);
if (student != null) {
gender.setText(student.getGender().toString());
firstName.setText(student.getFirstName());
lastName.setText(student.getLastName());
placeOfResidence.setText(student.getPlaceOfResidence());
birthPlace.setText(student.getBirthPlace());
if (student.getCoursesOfStudy() != null){
coursesOfStudy.setText(student.getCoursesOfStudy().getName());
}
semester.setText(Integer.toString(student.getSemester()));
officialEmail.setText(student.getOfficialEmail());
studentID.setText(Integer.toString(student.getId()));
coursesOfStudyComboBox.setItems(coursesOfStudyList);
}
}
@FXML
protected void assignCoursesOfStudy(ActionEvent event) throws IOException {
protected void assignCoursesOfStudy(ActionEvent event) {
student.setCoursesOfStudy(coursesOfStudyComboBox.getValue());
JpaService jpaService = JpaService.getInstance();
jpaService.runInTransaction(entityManager -> {entityManager.merge(student); return null;});
initialize();
}
@FXML
......
package de.thdeg.grademanager.gui;
import de.thdeg.grademanager.JpaService;
import de.thdeg.grademanager.model.Student;
import de.thdeg.grademanager.model.enumeration.Gender;
import de.thdeg.grademanager.model.enumeration.Semester;
......@@ -66,18 +67,17 @@ public class StudentModificationController {
@FXML
protected void onSaveButtonClick(ActionEvent event) throws IOException {
if(genderComboBox.getValue() != null && !firstName.getText().isBlank() && !lastName.getText().isBlank() &&
if (genderComboBox.getValue() != null && !firstName.getText().isBlank() && !lastName.getText().isBlank() &&
!placeOfResidence.getText().isBlank() && !birthPlace.getText().isBlank() &&
!officialEmail.getText().isBlank() && !privateEmail.getText().isBlank() &&
statusComboBox.getValue() != null && (yes.isSelected() || no.isSelected()) &&
semesterComboBox.getValue() != null)
{
semesterComboBox.getValue() != null) {
gender = genderComboBox.getValue();
paidFees = yes.isSelected();
status = statusComboBox.getValue();
semester = semesterComboBox.getValue();
studentList.add(new Student(
Student student = new Student(
gender.getGender(),
firstName.getText(),
lastName.getText(),
......@@ -88,11 +88,15 @@ public class StudentModificationController {
status.getStatus(),
paidFees,
semester.getSemester()
));
);
JpaService jpaService = JpaService.getInstance();
jpaService.runInTransaction(entityManager -> {
entityManager.persist(student);
return null;
});
SwitchWindowHelper.switchTo("Main", event);
}
else
{
} else {
warning.setText("Bitte alle Felder ausfüllen.");
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("Fehler");
......@@ -113,7 +117,7 @@ public class StudentModificationController {
alert.getButtonTypes().setAll(buttonTypeOne, buttonTypeCancel);
Optional<ButtonType> result = alert.showAndWait();
if (result.get() == buttonTypeOne){
if (result.get() == buttonTypeOne) {
SwitchWindowHelper.switchTo("Main", event);
}
}
......
......@@ -15,9 +15,11 @@ public class SwitchWindowHelper {
FXMLLoader root = new FXMLLoader(Main.class.getResource(getResourceName(windowTitle)));
Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow();
Scene scene = new Scene(root.load(), 960, 540);
stage.setTitle(windowTitle);
stage.setScene(scene);
stage.show();
if (stage != null){
stage.setTitle(windowTitle);
stage.setScene(scene);
stage.show();
}
}
......
......@@ -67,6 +67,11 @@ public class Course
return Objects.hash(id);
}
@Override
public String toString() {
return name;
}
public int getId()
{
return id;
......
......@@ -79,6 +79,11 @@ public class CoursesOfStudy
return Objects.hash(id);
}
@Override
public String toString() {
return name;
}
public int getId()
{
return id;
......
......@@ -21,6 +21,9 @@ public class Student extends UniversityMember implements Calculable
@OneToMany(mappedBy = "student")
Set<Enrollment> enrollments;
@OneToOne(fetch = FetchType.LAZY)
private CoursesOfStudy coursesOfStudy;
public Student()
{
......@@ -49,6 +52,11 @@ public class Student extends UniversityMember implements Calculable
return 0;
}
@Override
public String toString() {
return getId() + " " + getFirstName() + " "+ getLastName();
}
public String getStatus()
{
return status;
......@@ -78,4 +86,12 @@ public class Student extends UniversityMember implements Calculable
{
this.semester = semester;
}
public void setCoursesOfStudy(CoursesOfStudy coursesOfStudy){
this.coursesOfStudy = coursesOfStudy;
}
public CoursesOfStudy getCoursesOfStudy(){
return coursesOfStudy;
}
}
\ No newline at end of file
......@@ -7,7 +7,7 @@
<property name="jakarta.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/notenmanager"/>
<property name="jakarta.persistence.jdbc.user" value="root"/>
<property name="jakarta.persistence.jdbc.password" value=""/>
<property name="jakarta.persistence.schema-generation.database.action" value="drop-and-create"/>
<property name="jakarta.persistence.schema-generation.database.action" value="none"/>
</properties>
</persistence-unit>
</persistence>
......
......@@ -118,7 +118,7 @@
</font>
</Label>
<Region prefHeight="26.0" prefWidth="118.0" />
<TextField disable="true" prefHeight="26.0" prefWidth="280.0" />
<TextField fx:id="coursesOfStudy" disable="true" prefHeight="26.0" prefWidth="280.0" />
</children>
</HBox>
<HBox alignment="CENTER" prefHeight="38.0" prefWidth="600.0">
......@@ -146,7 +146,7 @@
</font>
</Label>
<Region prefHeight="26.0" prefWidth="126.0" />
<TextField disable="true" prefHeight="26.0" prefWidth="280.0" />
<TextField fx:id="studentID" disable="true" prefHeight="26.0" prefWidth="280.0" />
</children>
<opaqueInsets>
<Insets />
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment