From 304c580c346a9e2ce5f30dc6abacd3e928a4b449 Mon Sep 17 00:00:00 2001 From: SovereignX Date: Thu, 24 Sep 2026 16:28:56 +0200 Subject: [PATCH] Modification / Ajout des boutons Save et Modify --- ProjetJava/src/main/java/dao/DaoQuestion.java | 10 +- .../main/java/services/QuestionService.java | 18 +++ .../src/main/java/views/AdminPanel.java | 110 +++++++++++++++--- 3 files changed, 115 insertions(+), 23 deletions(-) diff --git a/ProjetJava/src/main/java/dao/DaoQuestion.java b/ProjetJava/src/main/java/dao/DaoQuestion.java index 7b7fffa..1dc582a 100644 --- a/ProjetJava/src/main/java/dao/DaoQuestion.java +++ b/ProjetJava/src/main/java/dao/DaoQuestion.java @@ -70,12 +70,12 @@ public class DaoQuestion extends Dao { @Override public void update(Questions question) { - String sql = "UPDATE questions SET question=?, answer=? WHERE id_questions=?"; + String sql = "UPDATE questions SET question=?, answer=?, level=? WHERE id_questions=?"; try (PreparedStatement stmt = DbConnection.getConnection().prepareStatement(sql)) { - stmt.setInt(1, question.getId()); - stmt.setString(2, question.getQuestion()); - stmt.setString(3, question.getAnswer()); - stmt.setInt(4, question.getLevel()); + stmt.setString(1, question.getQuestion()); + stmt.setString(2, question.getAnswer()); + stmt.setInt(3, question.getLevel()); + stmt.setInt(4, question.getId()); stmt.executeUpdate(); } catch (SQLException ex) { throw new DbConnectionException(ex); diff --git a/ProjetJava/src/main/java/services/QuestionService.java b/ProjetJava/src/main/java/services/QuestionService.java index 2df5d01..8bf5de4 100644 --- a/ProjetJava/src/main/java/services/QuestionService.java +++ b/ProjetJava/src/main/java/services/QuestionService.java @@ -6,6 +6,7 @@ package services; import dao.DaoQuestion; import java.text.Normalizer; +import java.util.Collection; import models.Questions; /** @@ -43,4 +44,21 @@ public class QuestionService { // Retourne la comparaison return cleanInputUser.equals(cleanAnswer); } + + // PARTIE PANEL ADMIN \\ + + // Récupère toutes les questions de la base de données + public Collection getAllQuestions() { + return daoQuestion.list(); + } + + // Créer une nouvelle question + public void addQuestion(Questions q) { + daoQuestion.create(q); + } + + // Modifier une question déjà présente + public void modifyQuestion(Questions q) { + daoQuestion.update(q); + } } diff --git a/ProjetJava/src/main/java/views/AdminPanel.java b/ProjetJava/src/main/java/views/AdminPanel.java index b20e650..cb5f0ec 100644 --- a/ProjetJava/src/main/java/views/AdminPanel.java +++ b/ProjetJava/src/main/java/views/AdminPanel.java @@ -4,13 +4,19 @@ import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.Font; import java.awt.GridLayout; +import java.util.ArrayList; +import java.util.List; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JLabel; +import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JTextField; +import models.Question; +import models.Questions; +import services.QuestionService; /** * @@ -23,14 +29,18 @@ public class AdminPanel extends JPanel { private final JRadioButton radioLvl1, radioLvl2; private final JTextField textQuestion, textAnswer; private final JButton btnSave, btnModify; - + + // Init pour gérer la liste + private final QuestionService service; + private final List listQuestions; + public AdminPanel() { // DESIGN \\ setLayout(new BorderLayout()); - + Font globalFont = new Font("Arial", Font.PLAIN, 18); - + JPanel container = new JPanel(new GridLayout(4, 1, 0, 30)); // JCombo (Liste déroulante) @@ -38,9 +48,9 @@ public class AdminPanel extends JPanel { JLabel labelCombo = new JLabel("Sélection : "); labelCombo.setFont(globalFont); comboQuestions = new JComboBox<>(); - comboQuestions.addItem("Provisoire "); +// comboQuestions.addItem("Provisoire "); comboQuestions.setFont(globalFont); - + panelCombo.add(labelCombo); panelCombo.add(comboQuestions); @@ -69,10 +79,10 @@ public class AdminPanel extends JPanel { JPanel panelQ = new JPanel(new FlowLayout(FlowLayout.CENTER)); JLabel labelQ = new JLabel("Enoncé : "); labelQ.setFont(globalFont); - + textQuestion = new JTextField(20); textQuestion.setFont(globalFont); - + panelQ.add(labelQ); panelQ.add(textQuestion); @@ -80,10 +90,10 @@ public class AdminPanel extends JPanel { JPanel panelAnswer = new JPanel(new FlowLayout(FlowLayout.CENTER)); JLabel labelAnswer = new JLabel("Réponse : "); labelAnswer.setFont(globalFont); - + textAnswer = new JTextField(20); textAnswer.setFont(globalFont); - + panelAnswer.add(labelAnswer); panelAnswer.add(textAnswer); // Ajout total @@ -91,36 +101,100 @@ public class AdminPanel extends JPanel { container.add(panelLevel); container.add(panelQ); container.add(panelAnswer); - + JPanel containerCenter = new JPanel(new FlowLayout(FlowLayout.CENTER, 0, 50)); containerCenter.add(container); - + add(containerCenter, BorderLayout.CENTER); // BOUTONS \\ JPanel panelButtons = new JPanel(new FlowLayout(FlowLayout.CENTER, 15, 20)); btnSave = new JButton("Enregistrer"); btnModify = new JButton("Modifier"); - + panelButtons.add(btnSave); panelButtons.add(btnModify); // Ajout au sud add(panelButtons, BorderLayout.SOUTH); + // Mise en place du service) + this.service = new QuestionService(); + this.listQuestions = new ArrayList<>(); + + loadQuestions(); + // EVENT \\ - comboQuestions.addActionListener(e -> { + // + comboQuestions.addActionListener(e -> { int index = comboQuestions.getSelectedIndex(); - - if (index == 0) { + + if (index <= 0) { textQuestion.setText(""); textAnswer.setText(""); radioLvl1.setSelected(true); - btnSave.setText("Enregistrer"); } else { - btnModify.setText("Modifier"); + Questions q = listQuestions.get(index - 1); + textQuestion.setText(q.getQuestion()); + textAnswer.setText(q.getAnswer()); + + if (q.getLevel() == 1) { + radioLvl1.setSelected(true); + } else { + radioLvl2.setSelected(true); + } + } + }); + // Event bouton de création - Enregistrer + btnSave.addActionListener(e -> { + Questions q = new Questions(); + q.setQuestion(textQuestion.getText()); + q.setAnswer(textAnswer.getText()); + // Ternaire pour savoir le niveau selectionné + q.setLevel(radioLvl1.isSelected() ? 1 : 2); + + service.addQuestion(q); + JOptionPane.showMessageDialog(this, "Question ajoutée !"); + // Rafraichir la liste après l'ajout + loadQuestions(); + }); + + // Event bouton de modification - Modifier + btnModify.addActionListener(e -> { + int index = comboQuestions.getSelectedIndex(); + if (index > 0) { + Questions q = listQuestions.get(index - 1); + + Questions qUpdate = new Questions(); + + qUpdate.setId(q.getId()); + + qUpdate.setQuestion(textQuestion.getText()); + qUpdate.setAnswer(textAnswer.getText()); + qUpdate.setLevel(radioLvl1.isSelected() ? 1 : 2); + + service.modifyQuestion(qUpdate); + JOptionPane.showMessageDialog(this, "Question modifiée"); + loadQuestions(); } }); - + } + + private void loadQuestions() { + + // Nettoyer la liste pour éviter les doublons (voir triplons à l'ajout de question) + comboQuestions.removeAllItems(); + listQuestions.clear(); + + // Par défaut + comboQuestions.addItem("Nouvelle question"); + + // Récupération de la liste depuis la base de données + listQuestions.addAll(service.getAllQuestions()); + + // Boucle pour remplir le menu déroulant + for (Questions q : listQuestions) { + comboQuestions.addItem(q.getId() + " - " + q.getQuestion()); + } } } -- GitLab