From af87631ff1139004745282c4cc7b31773566cc92 Mon Sep 17 00:00:00 2001 From: Jonas Hinterdorfer Date: Mon, 12 May 2025 14:46:15 +0200 Subject: [PATCH] implemented the question edit --- .../controller/ViewController.java | 55 ++++++++++++++++++- .../services/QuestionService.java | 19 +++++++ 2 files changed, 71 insertions(+), 3 deletions(-) diff --git a/src/main/java/at/ionas999/questioncatalog/controller/ViewController.java b/src/main/java/at/ionas999/questioncatalog/controller/ViewController.java index 6d36f7d..c2abcea 100644 --- a/src/main/java/at/ionas999/questioncatalog/controller/ViewController.java +++ b/src/main/java/at/ionas999/questioncatalog/controller/ViewController.java @@ -14,6 +14,7 @@ import javafx.scene.control.*; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; +import java.util.Optional; public class ViewController { @FXML @@ -32,6 +33,7 @@ public class ViewController { private Question currentQuestion = null; private ObservableList catalogs; private ObservableList questions; + private boolean isInEditState = false; @FXML private void initialize() throws SQLException { @@ -43,8 +45,9 @@ public class ViewController { private void addListenerToListView() { questionListView.getSelectionModel().selectedItemProperty().addListener((observableValue, oldValue, newValue) -> { - currentQuestion = (Question) newValue; if (newValue != null) { + currentQuestion = (Question) newValue; + System.out.println("changed " + currentQuestion); Question q = (Question) newValue; questionField.setText(q.getQuestion()); answerField.setText(q.getAnswer()); @@ -74,14 +77,60 @@ public class ViewController { @FXML private void deleteQuestion(ActionEvent actionEvent) { - questions.remove(currentQuestion); + if(!showConfirmationButton("Do you want to proceed with deletion of the question: \n" + currentQuestion.getQuestion())) + { + return; + } + QuestionService.DeleteQuestion(currentQuestion.getId()); + questions.remove(currentQuestion); this.questionListView.refresh(); this.currentQuestion = null; } @FXML - private void editQuestion(ActionEvent actionEvent) { + private void editQuestion(ActionEvent actionEvent) throws SQLException { + if(this.isInEditState){ + this.currentQuestion.setQuestion(this.questionField.getText()); + this.currentQuestion.setAnswer(this.answerField.getText()); + QuestionService.UpdateQuestion(this.currentQuestion); + this.editButton.setText("Edit"); + questionListView.refresh(); + + this.isInEditState = false; + this.setEditableAndSetDisabled(false); + } + else { + this.setEditableAndSetDisabled(true); + this.editButton.setText("Save"); + this.isInEditState = true; + } + } + + private void setEditableAndSetDisabled(boolean value) + { + questionField.setEditable(value); + answerField.setEditable(value); + this.questionListView.setDisable(value); + this.deleteButton.setDisable(value); + } + + + private boolean showConfirmationButton(String content) { + + Alert alert = new Alert(Alert.AlertType.CONFIRMATION); + alert.setTitle("Confirmation Dialog"); + alert.setHeaderText("Are you sure?"); + alert.setContentText(content); + + ButtonType yesButton = new ButtonType("Yes"); + ButtonType cancelButton = new ButtonType("Cancel"); + + alert.getButtonTypes().setAll(yesButton, cancelButton); + + Optional result = alert.showAndWait(); + + return result.filter(buttonType -> buttonType == yesButton).isPresent(); } } diff --git a/src/main/java/at/ionas999/questioncatalog/services/QuestionService.java b/src/main/java/at/ionas999/questioncatalog/services/QuestionService.java index 3ae56dc..d9ccfe4 100644 --- a/src/main/java/at/ionas999/questioncatalog/services/QuestionService.java +++ b/src/main/java/at/ionas999/questioncatalog/services/QuestionService.java @@ -66,4 +66,23 @@ public class QuestionService { return true; } + public static void UpdateQuestion(Question question) throws SQLException { + try(Connection connection = ServiceBase.GetJDBCConnection()){ + String insertStmt = "update QUESTION set " + + "QUESTION = ?," + + "ANSWER=?," + + "QUESTIONCATALOGID=?" + + "where ID = ?"; + + try (PreparedStatement statement = connection.prepareStatement(insertStmt)){ + statement.setInt(3, question.getQuestionCatalogId()); + statement.setInt(4, question.getId()); + statement.setString(1, question.getQuestion()); + statement.setString(2, question.getAnswer()); + statement.execute(); + } + } + + + } }