From a424c04937a93a77a3276411a415c275b890a90d Mon Sep 17 00:00:00 2001 From: Jonas Hinterdorfer Date: Mon, 12 May 2025 12:56:29 +0200 Subject: [PATCH] implemented deleteion without validataion --- .../controller/ViewController.java | 84 ++++++++++++++++--- .../questioncatalog/model/Question.java | 9 ++ .../model/QuestionCatalog.java | 4 + .../services/QuestionCatalogService.java | 5 +- .../services/QuestionService.java | 16 ++++ .../at/ionas999/questioncatalog/view.fxml | 4 +- 6 files changed, 105 insertions(+), 17 deletions(-) diff --git a/src/main/java/at/ionas999/questioncatalog/controller/ViewController.java b/src/main/java/at/ionas999/questioncatalog/controller/ViewController.java index 4068771..6d36f7d 100644 --- a/src/main/java/at/ionas999/questioncatalog/controller/ViewController.java +++ b/src/main/java/at/ionas999/questioncatalog/controller/ViewController.java @@ -1,27 +1,87 @@ package at.ionas999.questioncatalog.controller; import at.ionas999.questioncatalog.model.Question; +import at.ionas999.questioncatalog.model.QuestionCatalog; +import at.ionas999.questioncatalog.services.QuestionCatalogService; import at.ionas999.questioncatalog.services.QuestionService; +import at.ionas999.questioncatalog.services.ServiceBase; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.event.ActionEvent; import javafx.fxml.FXML; -import javafx.scene.control.Button; -import javafx.scene.control.ListView; -import javafx.scene.control.TextArea; -import javafx.scene.control.TextField; +import javafx.scene.control.*; import java.sql.SQLException; +import java.util.ArrayList; import java.util.List; -public class ViewController{ - public Button editButton; - public Button deleteButton; - public TextField answerField; - public ListView questionListView; - public TextField questionField; +public class ViewController { + @FXML + private ComboBox selectBox; + @FXML + private Button editButton; + @FXML + private Button deleteButton; + @FXML + private TextField answerField; + @FXML + private ListView questionListView; + @FXML + private TextField questionField; + private Question currentQuestion = null; + private ObservableList catalogs; + private ObservableList questions; @FXML private void initialize() throws SQLException { - List questions = QuestionService.GetQuestionsFromCatalog(1); - System.out.println(questions); + this.catalogs = FXCollections.observableList(QuestionCatalogService.GetCatalogsWithoutQuestions()); + selectBox.setItems(catalogs); + addObserverToSelectBox(); + addListenerToListView(); + } + + private void addListenerToListView() { + questionListView.getSelectionModel().selectedItemProperty().addListener((observableValue, oldValue, newValue) -> { + currentQuestion = (Question) newValue; + if (newValue != null) { + Question q = (Question) newValue; + questionField.setText(q.getQuestion()); + answerField.setText(q.getAnswer()); + } + }); + } + + private void addObserverToSelectBox() { + selectBox.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> { + if (newValue == null) { + return; + } + + try { + setQuestionListView(((QuestionCatalog) newValue).getId()); + } catch (SQLException e) { + throw new RuntimeException(e); + } + }); + } + + private void setQuestionListView(int catalogId) throws SQLException { + this.questions = FXCollections.observableList(QuestionService.GetQuestionsFromCatalog(catalogId)); + questionListView.setItems(questions); + } + + + @FXML + private void deleteQuestion(ActionEvent actionEvent) { + questions.remove(currentQuestion); + QuestionService.DeleteQuestion(currentQuestion.getId()); + this.questionListView.refresh(); + this.currentQuestion = null; + } + + @FXML + private void editQuestion(ActionEvent actionEvent) { + } } diff --git a/src/main/java/at/ionas999/questioncatalog/model/Question.java b/src/main/java/at/ionas999/questioncatalog/model/Question.java index 6631cfb..7a40bba 100644 --- a/src/main/java/at/ionas999/questioncatalog/model/Question.java +++ b/src/main/java/at/ionas999/questioncatalog/model/Question.java @@ -36,4 +36,13 @@ public class Question { public void setQuestionCatalogId(int questionCatalogId) { this.questionCatalogId = questionCatalogId; } + + public int getId() + { + return id; + } + @Override + public String toString() { + return question; + } } diff --git a/src/main/java/at/ionas999/questioncatalog/model/QuestionCatalog.java b/src/main/java/at/ionas999/questioncatalog/model/QuestionCatalog.java index 3386bb3..d470aac 100644 --- a/src/main/java/at/ionas999/questioncatalog/model/QuestionCatalog.java +++ b/src/main/java/at/ionas999/questioncatalog/model/QuestionCatalog.java @@ -33,4 +33,8 @@ public class QuestionCatalog { return name; } + @Override + public String toString() { + return this.getName(); + } } \ No newline at end of file diff --git a/src/main/java/at/ionas999/questioncatalog/services/QuestionCatalogService.java b/src/main/java/at/ionas999/questioncatalog/services/QuestionCatalogService.java index 30c1b35..efdb553 100644 --- a/src/main/java/at/ionas999/questioncatalog/services/QuestionCatalogService.java +++ b/src/main/java/at/ionas999/questioncatalog/services/QuestionCatalogService.java @@ -50,13 +50,12 @@ public class QuestionCatalogService { return catalog; } - public static ArrayList GetCatalogsWithoutQuestions(int catalogId) throws SQLException { - String stmtString = "select id, name from QUESTIONCATALOG where ID = ?"; + public static ArrayList GetCatalogsWithoutQuestions() throws SQLException { + String stmtString = "select id, name from QUESTIONCATALOG"; try (Connection connection = ServiceBase.GetJDBCConnection()) { try (PreparedStatement statement = connection.prepareStatement(stmtString)) { - statement.setInt(1, catalogId); ResultSet rs = statement.executeQuery(); ArrayList catalogs = new ArrayList<>(); diff --git a/src/main/java/at/ionas999/questioncatalog/services/QuestionService.java b/src/main/java/at/ionas999/questioncatalog/services/QuestionService.java index 533ea98..3ae56dc 100644 --- a/src/main/java/at/ionas999/questioncatalog/services/QuestionService.java +++ b/src/main/java/at/ionas999/questioncatalog/services/QuestionService.java @@ -50,4 +50,20 @@ public class QuestionService { } } } + + public static boolean DeleteQuestion(int id){ + try(Connection connection = ServiceBase.GetJDBCConnection()){ + String insertStmt = "delete from QUESTION where ID = ?"; + + try (PreparedStatement statement = connection.prepareStatement(insertStmt)){ + statement.setInt(1, id); + statement.execute(); + } + } + catch (SQLException _){ + return false; + } + + return true; + } } diff --git a/src/main/resources/at/ionas999/questioncatalog/view.fxml b/src/main/resources/at/ionas999/questioncatalog/view.fxml index fcbf9d2..4951a3c 100644 --- a/src/main/resources/at/ionas999/questioncatalog/view.fxml +++ b/src/main/resources/at/ionas999/questioncatalog/view.fxml @@ -28,8 +28,8 @@ -