diff --git a/base_evaluations_analyseCalc.xml b/base_evaluations_analyseCalc.xml new file mode 100644 index 0000000..48a5db8 --- /dev/null +++ b/base_evaluations_analyseCalc.xml @@ -0,0 +1,1688 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + + Page 1 + + + + + + + + + + Prénom Nom + 2023-04-05T17:49:12.944000000 + 2023-04-23T17:36:41.532000000 + Pablo Rodriguez + PT7H5M48S + 47 + LibreOffice/7.4.6.2$Windows_X86_64 LibreOffice_project/5b1f5509c2decdade7fda905e3e1429a67acd63d + + mon code sujet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/base_listes_etudiants.xml b/base_listes_etudiants.xml new file mode 100644 index 0000000..9aec320 --- /dev/null +++ b/base_listes_etudiants.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/bin/.gitignore b/bin/.gitignore index 46b4fa2..266d0d6 100644 --- a/bin/.gitignore +++ b/bin/.gitignore @@ -13,3 +13,4 @@ /actions/ /baseEtudiants/ /baseListesEtudiants/ +/accueillChargeEvaluation.svg diff --git a/bin/AnalyseCalc/Classeur2$feuille$graphic.class b/bin/AnalyseCalc/Classeur2$feuille$graphic.class index ae683e6..88c67dd 100644 Binary files a/bin/AnalyseCalc/Classeur2$feuille$graphic.class and b/bin/AnalyseCalc/Classeur2$feuille$graphic.class differ diff --git a/bin/fenetres/create$1.class b/bin/fenetres/create$1.class index 0f7c43f..e24586e 100644 Binary files a/bin/fenetres/create$1.class and b/bin/fenetres/create$1.class differ diff --git a/bin/fenetres/create$2.class b/bin/fenetres/create$2.class index a8679db..d0efe14 100644 Binary files a/bin/fenetres/create$2.class and b/bin/fenetres/create$2.class differ diff --git a/bin/fenetres/create.class b/bin/fenetres/create.class index 18647f4..eb8813f 100644 Binary files a/bin/fenetres/create.class and b/bin/fenetres/create.class differ diff --git a/bin/fenetres/evaluate$1.class b/bin/fenetres/evaluate$1.class index ba7b04e..59341c3 100644 Binary files a/bin/fenetres/evaluate$1.class and b/bin/fenetres/evaluate$1.class differ diff --git a/bin/fenetres/evaluate$10.class b/bin/fenetres/evaluate$10.class index ec1ed8a..d63e667 100644 Binary files a/bin/fenetres/evaluate$10.class and b/bin/fenetres/evaluate$10.class differ diff --git a/bin/fenetres/evaluate$11.class b/bin/fenetres/evaluate$11.class index 4df4a76..4af77cc 100644 Binary files a/bin/fenetres/evaluate$11.class and b/bin/fenetres/evaluate$11.class differ diff --git a/bin/fenetres/evaluate$2.class b/bin/fenetres/evaluate$2.class index 3d220dc..213916c 100644 Binary files a/bin/fenetres/evaluate$2.class and b/bin/fenetres/evaluate$2.class differ diff --git a/bin/fenetres/evaluate$3.class b/bin/fenetres/evaluate$3.class index 5970bd7..55897aa 100644 Binary files a/bin/fenetres/evaluate$3.class and b/bin/fenetres/evaluate$3.class differ diff --git a/bin/fenetres/evaluate$4.class b/bin/fenetres/evaluate$4.class index 8957f18..3850d7a 100644 Binary files a/bin/fenetres/evaluate$4.class and b/bin/fenetres/evaluate$4.class differ diff --git a/bin/fenetres/evaluate$5.class b/bin/fenetres/evaluate$5.class index 2de7cac..bf0bfc5 100644 Binary files a/bin/fenetres/evaluate$5.class and b/bin/fenetres/evaluate$5.class differ diff --git a/bin/fenetres/evaluate$6.class b/bin/fenetres/evaluate$6.class index df121fa..d154768 100644 Binary files a/bin/fenetres/evaluate$6.class and b/bin/fenetres/evaluate$6.class differ diff --git a/bin/fenetres/evaluate$7.class b/bin/fenetres/evaluate$7.class index 032f9f2..60a4f8f 100644 Binary files a/bin/fenetres/evaluate$7.class and b/bin/fenetres/evaluate$7.class differ diff --git a/bin/fenetres/evaluate$8.class b/bin/fenetres/evaluate$8.class index 324dff5..da0be5e 100644 Binary files a/bin/fenetres/evaluate$8.class and b/bin/fenetres/evaluate$8.class differ diff --git a/bin/fenetres/evaluate$9.class b/bin/fenetres/evaluate$9.class index a6613d2..d1fc52d 100644 Binary files a/bin/fenetres/evaluate$9.class and b/bin/fenetres/evaluate$9.class differ diff --git a/bin/fenetres/evaluate.class b/bin/fenetres/evaluate.class index 621ab56..5d094de 100644 Binary files a/bin/fenetres/evaluate.class and b/bin/fenetres/evaluate.class differ diff --git a/bin/fenetres/setting$3.class b/bin/fenetres/setting$3.class index ff7792a..2fe7811 100644 Binary files a/bin/fenetres/setting$3.class and b/bin/fenetres/setting$3.class differ diff --git a/bin/fenetres/setting$4.class b/bin/fenetres/setting$4.class index e8b8634..e7f2fb4 100644 Binary files a/bin/fenetres/setting$4.class and b/bin/fenetres/setting$4.class differ diff --git a/bin/fenetres/setting$5.class b/bin/fenetres/setting$5.class index 2d4ff4d..cf02ae1 100644 Binary files a/bin/fenetres/setting$5.class and b/bin/fenetres/setting$5.class differ diff --git a/bin/fenetres/setting.class b/bin/fenetres/setting.class index 594270e..29d5820 100644 Binary files a/bin/fenetres/setting.class and b/bin/fenetres/setting.class differ diff --git a/images/accueillChargeEvaluation.svg b/images/accueillChargeEvaluation.svg new file mode 100644 index 0000000..9d657f9 --- /dev/null +++ b/images/accueillChargeEvaluation.svg @@ -0,0 +1,671 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + Base de données des évaluations + + + + + + + + + + + + + + + Double cliquer sur une évaluation pour la charger en mémoire et l'utiliser. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/actions/actExit.java b/src/actions/actExit.java index 829dd52..ce00f7f 100644 --- a/src/actions/actExit.java +++ b/src/actions/actExit.java @@ -1,15 +1,26 @@ package actions; +import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ImageIcon; -import javax.swing.JOptionPane; +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JLabel; +import javax.swing.JPanel; import javax.swing.KeyStroke; +import javax.swing.SwingUtilities; +import calc.commandes; +import fenetres.baseDonneesEvaluations; import fenetres.create; +import fenetres.evaluate; +import fenetres.mainApp; + + public class actExit extends AbstractAction { @@ -21,18 +32,156 @@ public class actExit extends AbstractAction { putValue( Action.SHORT_DESCRIPTION, "Quitter (CRTL+Q)" ); putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.CTRL_DOWN_MASK ) ); } - /** - * + * Fermeture de l'application analyseWriter. */ private static final long serialVersionUID = 1L; @Override public void actionPerformed(ActionEvent e) { - if(JOptionPane.showConfirmDialog(null,"Voulez-vous quitter analyseWriter ?", "Quitter", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION) { - create.getInstance().dispose(); - } + int H = 0; + if(commandes.evaluationChargeEnMemoire!=null) H=commandes.evaluationChargeEnMemoire.hashCode(); + + if(H==commandes.hashCodeEvaluationSave){ + + // Définir les dimensions de la boîte de dialogue + int dialogWidth = 420; + int dialogHeight = 260; + + // Chargement de l'icône personnalisée + ImageIcon customIcon = new ImageIcon(create.class.getResource("/resources/bye-bye.png")); + + // Création du panneau pour contenir l'image + JPanel panel = new JPanel(new BorderLayout()); + JLabel labelImage = new JLabel(customIcon, JLabel.CENTER); + + // Ajouter l'image au panneau + panel.add(labelImage, BorderLayout.CENTER); + + // Définir les boutons personnalisés + JButton buttonYes = new JButton("Quitter"); + JButton buttonNo = new JButton("Annuler"); + + // Ajout des boutons à un panneau + JPanel buttonPanel = new JPanel(); + buttonPanel.add(buttonYes); + buttonPanel.add(buttonNo); + + // Ajouter le panneau de boutons au panneau principal + panel.add(buttonPanel, BorderLayout.SOUTH); + + // Affichage de la boîte de dialogue + JDialog dialog = new JDialog(); + dialog.setTitle("Quitter"); + dialog.setModal(true); + dialog.setContentPane(panel); + dialog.setSize(dialogWidth, dialogHeight); + dialog.setResizable(false); + dialog.setLocationRelativeTo(null); // Pour centrer la boîte de dialogue à l'écran + + // Définir le bouton par défaut + dialog.getRootPane().setDefaultButton(buttonYes); + + // Actions des boutons + buttonYes.addActionListener((ActionEvent evt) -> { + baseDonneesListesEtudiants.ferme(false); + baseDonneesEvaluations.ferme(); + create.fermeCreate(); + evaluate.ferme(); + mainApp.ferme(); + dialog.dispose(); + System.exit(0); // Fermer l'application + }); + + buttonNo.addActionListener((ActionEvent evt) -> { + System.out.println("L'utilisateur a choisi de ne pas quitter."); + dialog.dispose(); + }); + + // Afficher la boîte de dialogue + dialog.setVisible(true); + + // Placer le focus sur le bouton "Oui" + SwingUtilities.invokeLater(() -> buttonYes.requestFocusInWindow()); + + + }else{ + + // Définir les dimensions de la boîte de dialogue + int dialogWidth = 420; + int dialogHeight = 260; + + // Chargement de l'icône personnalisée + ImageIcon customIcon = new ImageIcon(create.class.getResource("/resources/enregistrer_modifications.png")); + + // Création du panneau pour contenir l'image + JPanel panel = new JPanel(new BorderLayout()); + JLabel labelImage = new JLabel(customIcon, JLabel.CENTER); + + // Ajouter l'image au panneau + panel.add(labelImage, BorderLayout.CENTER); + + // Définir les boutons personnalisés + JButton buttonYes = new JButton("Quitter"); + JButton buttonNo = new JButton("Annuler"); + JButton buttonSave = new JButton("Enregistrer puis quitter"); + + // Ajout des boutons à un panneau + JPanel buttonPanel = new JPanel(); + buttonPanel.add(buttonSave); + buttonPanel.add(buttonYes); + buttonPanel.add(buttonNo); + + + // Ajouter le panneau de boutons au panneau principal + panel.add(buttonPanel, BorderLayout.SOUTH); + + // Affichage de la boîte de dialogue + JDialog dialog = new JDialog(); + dialog.setTitle("Quitter"); + dialog.setModal(true); + dialog.setContentPane(panel); + dialog.setSize(dialogWidth, dialogHeight); + dialog.setResizable(false); + dialog.setLocationRelativeTo(null); // Pour centrer la boîte de dialogue à l'écran + + // Définir le bouton par défaut + dialog.getRootPane().setDefaultButton(buttonSave); + + // Actions des boutons + buttonYes.addActionListener((ActionEvent evt) -> { + baseDonneesListesEtudiants.ferme(false); + baseDonneesEvaluations.ferme(); + create.fermeCreate(); + evaluate.ferme(); + mainApp.ferme(); + dialog.dispose(); + System.exit(0); // Fermer l'application + }); + + buttonNo.addActionListener((ActionEvent evt) -> { + System.out.println("L'utilisateur a choisi de ne pas quitter."); + dialog.dispose(); + }); + + buttonSave.addActionListener((ActionEvent evt) -> { + System.out.println("L'utilisateur a choisi d'enregistrer."); + // Appeler l'action d'enregistrement + new actSaveEvaluation().actionPerformed(null); + baseDonneesEvaluations.ferme(); + create.fermeCreate(); + evaluate.ferme(); + dialog.dispose(); + System.exit(0); + }); + + // Afficher la boîte de dialogue + dialog.setVisible(true); + + // Placer le focus sur le bouton "Save" + SwingUtilities.invokeLater(() -> buttonSave.requestFocusInWindow()); + } } } diff --git a/src/actions/actNewFichierAnalyse.java b/src/actions/actNewFichierAnalyse.java index d2348a2..f74c76c 100644 --- a/src/actions/actNewFichierAnalyse.java +++ b/src/actions/actNewFichierAnalyse.java @@ -17,6 +17,7 @@ import javax.xml.parsers.ParserConfigurationException; import org.xml.sax.SAXException; import AnalyseCalc.Classeur2; +import calc.commandes; import fenetres.evaluate; import xml.LecturesDossiers; import xml.ecritureFileXML; @@ -42,7 +43,7 @@ public class actNewFichierAnalyse extends AbstractAction{ JFileChooser chooser = new JFileChooser(); chooser.setDialogTitle("Choisir un fichier ODF"); - chooser.setCurrentDirectory(new java.io.File(calc.commandes.path)); + chooser.setCurrentDirectory(new java.io.File(commandes.path)); chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); FileNameExtensionFilter filter = new FileNameExtensionFilter("Format ODF", "ods"); chooser.setFileFilter(filter); @@ -53,12 +54,12 @@ public class actNewFichierAnalyse extends AbstractAction{ System.out.println("getSelectedFile() : " + chooser.getSelectedFile().getAbsolutePath()); // réinitialise les commandes - calc.commandes.initialiseParametresSettingsProprietes();; - calc.commandes.fichierAnalyseValide=true; - calc.commandes.path = chooser.getCurrentDirectory().getAbsolutePath(); - calc.commandes.PathFilenameAnalysis = chooser.getCurrentDirectory().getAbsolutePath(); + commandes.initialiseParametresSettingsProprietes();; + commandes.fichierAnalyseValide=true; + commandes.path = chooser.getCurrentDirectory().getAbsolutePath(); + commandes.PathFilenameAnalysis = chooser.getCurrentDirectory().getAbsolutePath(); String cheminVersFichier = chooser.getSelectedFile().getAbsolutePath(); - calc.commandes.nameSujet = chooser.getSelectedFile().getName(); + commandes.nameSujet = chooser.getSelectedFile().getName(); try { @@ -66,44 +67,54 @@ public class actNewFichierAnalyse extends AbstractAction{ //constructionNodeAvecString A = new constructionNodeAvecString(); new transformeXLMtoNode(LecturesDossiers.getEC().getListeContentTableur().get(0), false, null); - calc.commandes.sujet = transformeXLMtoNode.getNodeRoot(); + commandes.sujet = transformeXLMtoNode.getNodeRoot(); - calc.commandes.sujet.getAttributs().put("analysis_filename","sujet.xml"); - -// Ecriture.ecritureNodeEnXML(calc.commandes.sujet, "sujet", calc.commandes.path, Ecriture.typeFichier.fichier_etudiant); + commandes.sujet.getAttributs().put("analysis_filename","sujet.xml"); + commandes.sujet.removeAllEnfantWithThisName("text:change-start"); + commandes.sujet.removeAllEnfantWithThisName("text:change-end"); + commandes.sujet.removeAllEnfantWithThisName("text:tracked-changes"); + commandes.sujet.removeAllEnfantWithThisName("text:change"); + commandes.sujet.removeAllEnfantWithThisName("office:document-content"); -// Ecriture.ecritureNodeEnXML(ClasseurAnalyse, "ClasseurAnalyse", calc.commandes.path, Ecriture.typeFichier.fichier_etudiant); - - - //calc.commandes.sujet = ecritureSujet.nodePourEcritureSujet(calc.commandes.sujet,b,0); - - calc.commandes.sujet.removeAllEnfantWithThisName("text:change-start"); - calc.commandes.sujet.removeAllEnfantWithThisName("text:change-end"); - calc.commandes.sujet.removeAllEnfantWithThisName("text:tracked-changes"); - calc.commandes.sujet.removeAllEnfantWithThisName("text:change"); - - - - ecritureFileXML.write(calc.commandes.sujet, "sujet.xml"); - Classeur2 ClasseurAnalyse = new Classeur2(calc.commandes.sujet,0,ecritureFileXML.typeFichier.fichier_analyse); + ecritureFileXML.write(commandes.sujet, "sujet.xml"); + Classeur2 ClasseurAnalyse = new Classeur2(commandes.sujet,0,ecritureFileXML.typeFichier.fichier_analyse); - calc.commandes.sujet = ClasseurAnalyse.convertClasseurToNode(ecritureFileXML.typeFichier.fichier_analyse); - ecritureFileXML.write(calc.commandes.sujet, "sujet2.xml"); + commandes.sujet = ClasseurAnalyse.convertClasseurToNode(ecritureFileXML.typeFichier.fichier_analyse); + ecritureFileXML.write(commandes.sujet, "sujet2.xml"); -// Ecriture.ecritureNodeEnXML(calc.commandes.sujet, "sujet2", calc.commandes.path, Ecriture.typeFichier.fichier_etudiant); +// Ecriture.ecritureNodeEnXML(commandes.sujet, "sujet2", commandes.path, Ecriture.typeFichier.fichier_etudiant); // new verificationFichierAnalyse(); - if(calc.commandes.fichierAnalyseValide) { - calc.commandes.sujetSauvegarde = calc.commandes.sujet.clone(); + if(commandes.fichierAnalyseValide) { +// commandes.sujetSauvegarde = commandes.sujet.clone(); +// fenetres.create.getTree().setVisible(true); +// fenetres.create.constructionTree(); +// fenetres.create.getTextNodeSelect().afficheChargementFichierAnalyse(); + + + commandes.sujetSauvegarde = commandes.sujet.clone(); + + commandes.evaluationChargeEnMemoire = null; + commandes.evaluationsBase=null; + commandes.IndexEvaluationCharger=-1; //Car ce n'est pas une évaluation + commandes.NameEvaluationCharger = ""; + commandes.analysis_filename = commandes.sujet.getAttributs().get("analysis_filename"); + + commandes.initialiseParametresEvaluation(); + commandes.initialiseParametresSettingsProprietes(); + fenetres.create.getTree().setVisible(true); fenetres.create.constructionTree(); - fenetres.create.getTextNodeSelect().afficheChargementFichierAnalyse(); + fenetres.create.getTextNodeSelect().afficheChargementFichierAnalyse(); + + + }else { fenetres.create.getTextNodeSelect().setText("

Le fichier n'est pas valide

"); - calc.commandes.sujet = new node(); + commandes.sujet = new node(); } } catch (ParserConfigurationException | SAXException | IOException | CloneNotSupportedException e1) { @@ -118,7 +129,7 @@ public class actNewFichierAnalyse extends AbstractAction{ } - calc.commandes.ecritCode = true; + commandes.ecritCode = true; } diff --git a/src/actions/actOpenBaseListesEtudiants.java b/src/actions/actOpenBaseListesEtudiants.java new file mode 100644 index 0000000..94157f3 --- /dev/null +++ b/src/actions/actOpenBaseListesEtudiants.java @@ -0,0 +1,38 @@ +package actions; + +import java.awt.event.ActionEvent; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.ImageIcon; + +import baseListesEtudiants.recupeNodeBaseListesEtudiants; +import fenetres.create; +import calc.*; + +public class actOpenBaseListesEtudiants extends AbstractAction{ + + private static final long serialVersionUID = 1L; + { + putValue( Action.NAME, "Ouvrir la base de données des listes des étudiants" ); + putValue( Action.SMALL_ICON, new ImageIcon(create.class.getResource("/resources/baselisteetudiantmini.png")) ); + putValue( Action.LARGE_ICON_KEY, new ImageIcon(create.class.getResource("/resources/baselisteetudiant.png")) ); + putValue( Action.SHORT_DESCRIPTION, "Ouvrir la base de données des listes des étudiants" ); + } + @Override + public void actionPerformed(ActionEvent e) { + new recupeNodeBaseListesEtudiants(); + if(commandes.listesEtudiants!=null) { + int index = -1; + if(commandes.nodeCSV!=null) if(!commandes.nodeCSV.isVide()) if(commandes.nodeCSV.getAttributs().get("nameListStudent")!=null) { + String nameList = commandes.nodeCSV.getAttributs().get("nameListStudent"); + for(int i = 0 ; i < commandes.listesEtudiants.getEnfants().size(); i++) { + if(commandes.listesEtudiants.getEnfants().get(i).getAttributs().get("nameListStudent").equals(nameList)) { + index = i; + } + } + } + baseDonneesListesEtudiants.getInstance(index); + } + } +} diff --git a/src/actions/actSaveEvaluation.java b/src/actions/actSaveEvaluation.java new file mode 100644 index 0000000..e976db4 --- /dev/null +++ b/src/actions/actSaveEvaluation.java @@ -0,0 +1,55 @@ +package actions; + +import java.awt.event.ActionEvent; +import java.awt.event.KeyEvent; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.ImageIcon; +import javax.swing.JOptionPane; +import javax.swing.KeyStroke; + +import baseEvaluation.creerNouvelleEvaluation; +import baseEvaluation.recupeNodeBaseEvaluations; +import calc.commandes; +import xml.node; + + + + +public class actSaveEvaluation extends AbstractAction{ + + /** + * + */ + private static final long serialVersionUID = 1L; + { + putValue( Action.NAME, "Enregister l'évaluation" ); + putValue( Action.SMALL_ICON, new ImageIcon( getClass().getResource("/resources/saveEvaluationmini.png")) ); + putValue( Action.MNEMONIC_KEY, KeyEvent.VK_S ); + putValue( Action.SHORT_DESCRIPTION, "Enregistrer l'évaluation dans la base des évaluations. (CTRL+S)" ); + putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_DOWN_MASK ) ); + } + @Override + public void actionPerformed(ActionEvent e) { + + if(!commandes.sujet.isVide()) { + if(commandes.IndexEvaluationCharger!=-1) { + new creerNouvelleEvaluation(commandes.evaluationChargeEnMemoire); + new recupeNodeBaseEvaluations(); + }else { + // n'a pas été chargé depuis la base de données. + String name = "Nouvelle évaluation"; + name = JOptionPane.showInputDialog(null,"Donner un nom à cette évaluation ?",name); + if(!name.isBlank()) { + new creerNouvelleEvaluation(new node(), name, false,false); + commandes.IndexEvaluationCharger=0; + commandes.NameEvaluationCharger=name; + new recupeNodeBaseEvaluations(); + }else { + JOptionPane.showMessageDialog(null,"L'évaluation encours n'a pas été enregistrée\ndans la base des évaluations."); + } + } + } + } +} diff --git a/src/baseEvaluation/CreerBaseParDefautEvaluation.java b/src/baseEvaluation/CreerBaseParDefautEvaluation.java index 739f200..53af91d 100644 --- a/src/baseEvaluation/CreerBaseParDefautEvaluation.java +++ b/src/baseEvaluation/CreerBaseParDefautEvaluation.java @@ -40,7 +40,7 @@ public class CreerBaseParDefautEvaluation { Path outputFilePath = file.toPath(); BufferedWriter fichier = Files.newBufferedWriter(outputFilePath, StandardCharsets.UTF_8); try { - fichier.write(""); + fichier.write(""); fichier.close(); return false; } catch (IOException e) { diff --git a/src/baseEvaluation/creerNouvelleEvaluation.java b/src/baseEvaluation/creerNouvelleEvaluation.java new file mode 100644 index 0000000..42c9c34 --- /dev/null +++ b/src/baseEvaluation/creerNouvelleEvaluation.java @@ -0,0 +1,121 @@ +package baseEvaluation; + +import java.text.ParseException; +import java.util.Date; + +import javax.swing.JOptionPane; +import calc.*; +import xml.node; + +public class creerNouvelleEvaluation { + + boolean majBase = false; + boolean importation = false; + + + /** + * Mise à jour d'une évaluation. + * @param evaluation + */ + public creerNouvelleEvaluation(node evaluation) { + this.majBase=true; + this.importation = false; + nouvelleEvaluation(evaluation, evaluation.getAttributs().get("name")); + } + + /** + * Pour réaliser une mise à jour, ou une création, ou encore une importation.
+ * majBase = true pour une mise à jour.
+ * majBase = false pour une création.
+ * importation = true = importation d'une évaluation.
+ * @param evaluation + * @param name + * @param majBase + * @param importation + */ + public creerNouvelleEvaluation(node evaluation, String nameEvaluation, boolean majBase, boolean importation) { + this.majBase = majBase; + this.importation = importation; + nouvelleEvaluation(evaluation, nameEvaluation); + } + + + private node nouvelleEvaluation(node evaluation, String nameEvaluation) { + + if(nameEvaluation==null) { + JOptionPane.showMessageDialog(null, "L'évaluation ne possède pas de nom"); + return evaluation; + } + + // création du nouveau node evaluation + evaluation.setNameNode("evaluation"); + + // La date est modifiée à la création de l'évaluation. + Date aujourdhui = new Date(); + try { + if(!majBase && !importation) { + //nouvelle évaluation + evaluation.getAttributs().put("date", calcul.formatDateWriter.DateLibreOffice(aujourdhui)); + evaluation.getAttributs().put("dateModification", calcul.formatDateWriter.DateLibreOffice(aujourdhui)); + evaluation.getEnfants().add(commandes.sujet); + commandes.evaluationChargeEnMemoire = evaluation; + }else { + //Mise à jour + if(!importation) evaluation.getAttributs().put("dateModification", calcul.formatDateWriter.DateLibreOffice(aujourdhui)); + } + } catch (ParseException e) { + e.printStackTrace(); + } + + // informations de l'évaluation en création ou MAJ + evaluation.getAttributs().put("version", commandes.version); + evaluation.getAttributs().put("name", nameEvaluation); + evaluation.getAttributs().put("PathFilenameAnalysis", commandes.PathFilenameAnalysis); + evaluation.getAttributs().put("path", commandes.path); + evaluation.getAttributs().put("fichierStudentMoodle", String.valueOf(commandes.fichierStudentMoodle)); + evaluation.getAttributs().put("sansFeeback", String.valueOf(commandes.sansFeeback) ); + evaluation.getAttributs().put("noDetail", String.valueOf(commandes.noDetail) ); + evaluation.getAttributs().put("noNote", String.valueOf(commandes.noNote) ); + evaluation.getAttributs().put("noAfficheProgression", String.valueOf(commandes.noAfficheProgression) ); + evaluation.getAttributs().put("zipfeedback", String.valueOf(commandes.zipfeedback) ); + evaluation.getAttributs().put("verifHisto2", String.valueOf(commandes.verifHisto2) ); + evaluation.getAttributs().put("ecritNoteCSV", String.valueOf(commandes.ecritNoteCSV) ); + evaluation.getAttributs().put("newLogo", String.valueOf(commandes.newLogo) ); + evaluation.getAttributs().put("noLogo", String.valueOf(commandes.noLogo) ); + evaluation.getAttributs().put("analyse_nombres_modifications_simultané_maxi", String.valueOf(commandes.analyse_nombres_modifications_simultané_maxi) ); + + evaluation.getAttributs().put("fourniCSV", String.valueOf(commandes.fourniCSV) ); + if(commandes.nameCSV!=null) { + evaluation.getAttributs().put("nameCSV", commandes.nameCSV ); + }else { + evaluation.getAttributs().put("nameCSV", ""); + } + + //Supprime le node CSV s'il existe, pour le remplacer par le node commandes.nodeCSV + node nodremove = evaluation.retourneFirstEnfant("fileCSV"); + if(nodremove!=null)if(!nodremove.isVide()) evaluation.getEnfants().remove(nodremove); + + // Ajoute les informations sur la liste d'étudiant + // Dans le nodeCSV, il y a toutes les informations sur chaque étudiants + // Mais dans le node évaluation, on ne garde que les attribut du node fileCSV. + if(commandes.nodeCSV!=null) { + evaluation.getEnfants().add(commandes.nodeCSV); + evaluation.retourneFirstEnfant("fileCSV").getEnfants().clear(); + } + + // Création d'une évaluation + // Insère au début de la liste + if(!majBase) { + if(commandes.evaluationsBase!=null) { + commandes.evaluationsBase.getEnfants().add(0, evaluation); + commandes.IndexEvaluationCharger=0; + } + } + + new ecritureBaseEvaluation(evaluation); + commandes.hashCodeEvaluationSave = evaluation.hashCode(); + + return evaluation; + } + +} diff --git a/src/baseEvaluation/ecritureBaseEvaluation.java b/src/baseEvaluation/ecritureBaseEvaluation.java new file mode 100644 index 0000000..a5686fc --- /dev/null +++ b/src/baseEvaluation/ecritureBaseEvaluation.java @@ -0,0 +1,133 @@ +package baseEvaluation; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import calc.*; +import xml.node; + + + +/** + * Ecriture d'une évaluation. + * @author pabr6 + * + */ +public class ecritureBaseEvaluation { + + /** + * Ecriture d'une évaluation + * @param evaluation + */ + public ecritureBaseEvaluation(node evaluation) { + String directoryName = ""; + + + File file = null; + if(commandes.PathBaseEvaluationDefaut) { + directoryName = Paths.get("").toAbsolutePath().toString(); + }else { + directoryName = commandes.PathBaseEvaluations; + } + + if(commandes.os.contains("Win")) { + file = new File(directoryName + "\\" + commandes.NameBaseEvaluations); + }else { + file = new File(directoryName + "/" + commandes.NameBaseEvaluations); + } + + + String debut=""; + String fin=""; + String XMLBase=""; + + if(file!=null) { + //Lecture de la base de données + BufferedReader br; + try { + br = new BufferedReader( + new InputStreamReader( + new FileInputStream(file.getAbsoluteFile()), "UTF-8")); + String line; + StringBuilder targetString = new StringBuilder(); + while ((line = br.readLine()) != null) { + targetString.append(line); + } + String baseToString = targetString.toString().replace("\t","").replace("\r", "").replace("\n", "").replaceAll(">/{1,}<","><"); + + Pattern p = Pattern.compile("<\\bevaluation\\b.{1,800}\\bdate\\b=\\\""+ evaluation.getAttributs().get("date") +"\\\".*?<\\/\\bevaluation\\b>"); + Matcher m = p.matcher(baseToString); + + if(m.find()) { + //Supprime le node évluation pour le remplacer par le nouveau. + debut = baseToString.substring(0,m.start()); + fin = baseToString.substring(m.end()); +// String codeXMLEvaluation = Run.ecritureNode(evaluation, 0).toString().replace("\t","").replace("\r", "").replace("\n", "").replaceAll(">/{1,}<","><"); + XMLBase = debut + evaluation.ecritureXML().toString() + fin; + }else { + //Ajoute une nouvelle évaluation au début de la base + p = Pattern.compile(""); + m = p.matcher(baseToString); + if(m.find()) { + debut = baseToString.substring(0,m.end()); + fin = baseToString.substring(m.end()); +// String codeXMLEvaluation = Run.ecritureNode(evaluation, 0).toString().replace("\t","").replace("\r", "").replace("\n", "").replaceAll(">/{1,}<","><"); + XMLBase = debut + evaluation.ecritureXML().toString() + fin; + }else { + JFrame frame = new JFrame(); + JLabel texte = new JLabel("

Problème avec la base de données des évaluations

Il semble que ce n'est pas la base de données des évaluations.

" + + "

"+ file.getAbsolutePath() +"

"); + JOptionPane.showMessageDialog(frame, texte); + } + } + + try { + + // écriture du node + Path outputFilePath = file.toPath(); + + if (Files.isWritable(outputFilePath)) { + BufferedWriter fichier = Files.newBufferedWriter(outputFilePath, StandardCharsets.UTF_8); + fichier.write(XMLBase); + fichier.close(); + + JFrame frame = new JFrame(); + JLabel texte = new JLabel("

Enregistrement réussi

L'évaluation "+evaluation.getAttributs().get("name")+ " a été enregistrée dans la base de données.

" + + "

"+ file.getAbsolutePath() +"

"); + JOptionPane.showMessageDialog(frame, texte); + } else { + JFrame frame = new JFrame(); + JLabel texte = new JLabel("

L'enregistrement n'a pas réussi

L'évaluation "+evaluation.getAttributs().get("name")+ " n'a pas été enregistrée dans la base de données.

" + + "

"+ file.getAbsolutePath() +"

Vous devez avoir des droits pour écrire dans ce dossier.

"); + JOptionPane.showMessageDialog(frame, texte); + } + + } catch (IOException e) { + JFrame frame = new JFrame(); + JLabel texte = new JLabel("

L'enregistrement n'a pas réussi

L'évaluation "+evaluation.getAttributs().get("name")+ " n'a pas été enregistrée dans la base de données.

" + + "

"+ file.getAbsolutePath() +"

"+e.getMessage()+"

"); + JOptionPane.showMessageDialog(frame, texte); + e.printStackTrace(); + } + + }catch (Exception e) { + + } + } + + } + +} diff --git a/src/baseEvaluation/myTableBaseEvaluation.java b/src/baseEvaluation/myTableBaseEvaluation.java index e571d8e..f1b7a30 100644 --- a/src/baseEvaluation/myTableBaseEvaluation.java +++ b/src/baseEvaluation/myTableBaseEvaluation.java @@ -65,7 +65,7 @@ public class myTableBaseEvaluation extends AbstractTableModel{ }else { evaluation[i][2] = dateCreation; } - node fichier = calc.commandes.evaluationsBase.getEnfants().get(i).retourneFirstEnfant("fichier"); + node fichier = calc.commandes.evaluationsBase.getEnfants().get(i).retourneFirstEnfant("classeur"); evaluation[i][3] = fichier.getAttributs().get("titre"); evaluation[i][4] = fichier.getAttributs().get("metaSujet"); evaluation[i][5] = fichier.getAttributs().get("analysis_filename"); diff --git a/src/baseEvaluation/recupeNodeBaseEvaluations.java b/src/baseEvaluation/recupeNodeBaseEvaluations.java index 1fd25d3..4f58136 100644 --- a/src/baseEvaluation/recupeNodeBaseEvaluations.java +++ b/src/baseEvaluation/recupeNodeBaseEvaluations.java @@ -8,7 +8,7 @@ import java.nio.file.Paths; import javax.swing.JLabel; import javax.swing.JOptionPane; - +import calc.*; import xml.node; /** * Récupère la base des évaluations qui se trouve indiqué par commandes.
@@ -25,16 +25,16 @@ public class recupeNodeBaseEvaluations { public recupeNodeBaseEvaluations() { String directoryName = ""; File file = null; - if(calc.commandes.PathBaseEvaluationDefaut) { + if(commandes.PathBaseEvaluationDefaut) { directoryName = Paths.get("").toAbsolutePath().toString(); }else { - directoryName = calc.commandes.PathBaseEvaluations; + directoryName = commandes.PathBaseEvaluations; } - if(calc.commandes.os.contains("Win")) { - file = new File(directoryName + "\\" + calc.commandes.NameBaseEvaluations); + if(commandes.os.contains("Win")) { + file = new File(directoryName + "\\" + commandes.NameBaseEvaluations); }else { - file = new File(directoryName + "/" + calc.commandes.NameBaseEvaluations); + file = new File(directoryName + "/" + commandes.NameBaseEvaluations); } System.out.println("Début de la récupération de la base."); @@ -55,7 +55,7 @@ public class recupeNodeBaseEvaluations { evaluations = evaluations.allFirstNodesEvaluationFichierOnly(targetString.toString().replace("\t","").replace("\r", "").replace("\n", "")); if(evaluations!=null) { - calc.commandes.evaluationsBase = evaluations; + commandes.evaluationsBase = evaluations; System.out.println("Fin de la récupération de la base."); } if(evaluations.getEnfants().size()>0) HasEvaluation=true; @@ -78,7 +78,7 @@ public class recupeNodeBaseEvaluations { File file = null; - if(calc.commandes.os.contains("Win")) { + if(commandes.os.contains("Win")) { file = new File(directoryName + "\\" + NameNewBase); }else { file = new File(directoryName + "/" + NameNewBase); @@ -104,10 +104,10 @@ public class recupeNodeBaseEvaluations { if(evaluations!=null) { if(evaluations.getEnfants().size()>0) { if(evaluations.getNameNode().equals("evaluations")) { - calc.commandes.evaluationsBase = evaluations; - calc.commandes.PathBaseEvaluations = (directoryName); - calc.commandes.NameBaseEvaluations = NameNewBase; - calc.commandes.PathBaseEvaluationDefaut = false; + commandes.evaluationsBase = evaluations; + commandes.PathBaseEvaluations = (directoryName); + commandes.NameBaseEvaluations = NameNewBase; + commandes.PathBaseEvaluationDefaut = false; } } } diff --git a/src/fenetres/baseDonneesEvaluations.java b/src/fenetres/baseDonneesEvaluations.java index d94cf76..1048698 100644 --- a/src/fenetres/baseDonneesEvaluations.java +++ b/src/fenetres/baseDonneesEvaluations.java @@ -10,7 +10,6 @@ import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.io.File; -import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.regex.Matcher; @@ -33,12 +32,14 @@ import javax.swing.event.ListSelectionListener; import javax.swing.table.TableColumnModel; import baseEvaluation.chargeEvaluation; +import baseEvaluation.creerNouvelleEvaluation; import baseEvaluation.myTableBaseEvaluation; import baseEvaluation.recupeNodeBaseEvaluations; import net.lingala.zip4j.exception.ZipException; import net.miginfocom.swing.MigLayout; import xml.Zip; import xml.node; +import calc.*; /** @@ -74,7 +75,7 @@ public class baseDonneesEvaluations extends JFrame { /** private final JButton btnExtraireFileAnalysis = new JButton("Extraire le fichier d'analyse
de l'évaluation sélectionnée"); private final JButton btnFusionnerBase = new JButton("Importer des évaluations
depuis une autre base"); private final JButton btnChargerFichierAnalyse = new JButton("Créer une évaluation à
partir d'un fichier d'analyse"); - private final static JLabel lblCheminVersBase = new JLabel(calc.commandes.PathBaseEvaluations); + private final static JLabel lblCheminVersBase = new JLabel(commandes.PathBaseEvaluations); private final JButton btnArchiveBase = new JButton("Copie de sauvegarde"); @@ -89,7 +90,7 @@ public baseDonneesEvaluations() { ImageIcon img = new ImageIcon(getClass().getResource("/resources/evalwriter.png") ); setIconImage(img.getImage()); - setTitle(calc.commandes.Titre + " - La base de données des évaluations"); + setTitle(commandes.Titre + " - La base de données des évaluations"); getContentPane().setLayout(new BorderLayout(2, 2)); @@ -131,8 +132,8 @@ public baseDonneesEvaluations() { lblCheminVersBase.setIcon(new ImageIcon(baseDonneesEvaluations.class.getResource("/resources/BaseEvaluationsmini.png"))); panelBas.add(lblCheminVersBase); - if(calc.commandes.evaluationChargeEnMemoire!=null) { - textPane.setText("Evaluation chargée en mémoire : " + calc.commandes.evaluationChargeEnMemoire.getAttributs().get("name")); + if(commandes.evaluationChargeEnMemoire!=null) { + textPane.setText("Evaluation chargée en mémoire : " + commandes.evaluationChargeEnMemoire.getAttributs().get("name")); } @@ -262,14 +263,14 @@ public static baseDonneesEvaluations getInstance() { } // afficheLesBoutonGestionBase(); instance.setVisible(true); - if(calc.commandes.IndexEvaluationCharger!=-1) { - selectRow(calc.commandes.IndexEvaluationCharger); + if(commandes.IndexEvaluationCharger!=-1) { + selectRow(commandes.IndexEvaluationCharger); } isDispose=false; - if(calc.commandes.PathBaseEvaluationDefaut) { - lblCheminVersBase.setText(calc.commandes.PathBaseEvaluations); + if(commandes.PathBaseEvaluationDefaut) { + lblCheminVersBase.setText(commandes.PathBaseEvaluations); }else { - lblCheminVersBase.setText(calc.commandes.PathBaseEvaluations+"/"+calc.commandes.NameBaseEvaluations); + lblCheminVersBase.setText(commandes.PathBaseEvaluations+"/"+commandes.NameBaseEvaluations); } return instance; } @@ -311,9 +312,9 @@ private void ListenerAction() { @Override public void actionPerformed(ActionEvent e) { if(Files.isReadable(Paths.get(""))) { - if(calc.commandes.evaluationsBase!=null) { + if(commandes.evaluationsBase!=null) { try { - String nameFile = Zip.AddBaseToZip(calc.commandes.evaluationsBase.ecritureXML()); + String nameFile = Zip.AddBaseToZip(commandes.evaluationsBase.ecritureXML()); JOptionPane.showMessageDialog(null, "La base des évaluations a été sauvegardée dans \"Archive des bases.zip\"\nSous le nom " + nameFile ); } catch (ZipException e1) { e1.printStackTrace(); @@ -355,11 +356,11 @@ private void ListenerAction() { String analysis_filename =""; if(evaluation.getAttributs().get("analysis_filename")!=null) { if(!evaluation.getAttributs().get("analysis_filename").isEmpty()) { - file = new File(calc.commandes.PathBaseEvaluations); + file = new File(commandes.PathBaseEvaluations); analysis_filename = evaluation.getAttributs().get("analysis_filename"); } }else { - file = new File(calc.commandes.PathBaseEvaluations); + file = new File(commandes.PathBaseEvaluations); } @@ -370,25 +371,21 @@ private void ListenerAction() { boolean notError = false; if (userSelection == JFileChooser.APPROVE_OPTION) { File fileToSave = fileChooser.getSelectedFile(); - try { - if(calc.commandes.os.contains("Win")) { - notError = Run.ecritureNodeEnXML(evaluation.retourneFirstEnfant("fichier"), fileToSave.getName(), fileToSave.getPath().substring(0,fileToSave.getPath().lastIndexOf("\\")),Run.TypeFile.Sujet ); - }else { - notError = Run.ecritureNodeEnXML(evaluation.retourneFirstEnfant("fichier"), fileToSave.getName(), fileToSave.getPath().substring(0,fileToSave.getPath().lastIndexOf("/")),Run.TypeFile.Sujet ); - } - if(notError) { - JFrame frame = new JFrame("Extration"); - JLabel texte = new JLabel("

Extration réussie

Le fichier d'analyse "+ analysis_filename +" a été extrait de la base.

" - + "

"+fileToSave.getAbsolutePath()+"

"); - JOptionPane.showMessageDialog(frame, texte); - }else { - JFrame frame = new JFrame("Erreur"); - JLabel texte = new JLabel("

Erreur

Le fichier d'analyse n'a pas été extrait de la base.

" - + "

"); - JOptionPane.showMessageDialog(frame, texte); - } - } catch (IOException e1) { - e1.printStackTrace(); + if(commandes.os.contains("Win")) { + notError = evaluation.retourneFirstEnfant("fichier").saveNodeEnXML(fileToSave.getName(), fileToSave.getPath().substring(0,fileToSave.getPath().lastIndexOf("\\"))); + }else { + notError = evaluation.retourneFirstEnfant("fichier").saveNodeEnXML(fileToSave.getName(), fileToSave.getPath().substring(0,fileToSave.getPath().lastIndexOf("/"))); + } + if(notError) { + JFrame frame = new JFrame("Extration"); + JLabel texte = new JLabel("

Extration réussie

Le fichier d'analyse "+ analysis_filename +" a été extrait de la base.

" + + "

"+fileToSave.getAbsolutePath()+"

"); + JOptionPane.showMessageDialog(frame, texte); + }else { + JFrame frame = new JFrame("Erreur"); + JLabel texte = new JLabel("

Erreur

Le fichier d'analyse n'a pas été extrait de la base.

" + + "

"); + JOptionPane.showMessageDialog(frame, texte); } System.out.println("Save as file: " + fileToSave.getAbsolutePath()); new recupeNodeBaseEvaluations(); @@ -411,13 +408,13 @@ private void ListenerAction() { node evaluation = new node(); evaluation.setNameNode("evaluation"); String name = "Nouvelle évaluation"; - evaluation.getEnfants().add(calc.commandes.sujet); + evaluation.getEnfants().add(commandes.sujet); name = JOptionPane.showInputDialog(null,"Donner un nom à cette évaluation ?",name); if(name!=null) { if(!name.isBlank()) { - evaluation.getEnfants().add(calc.commandes.sujet); + evaluation.getEnfants().add(commandes.sujet); new creerNouvelleEvaluation(evaluation,name,false,false); new recupeNodeBaseEvaluations(); model.addOrUpdate(); @@ -442,7 +439,7 @@ private void ListenerAction() { new trierParDateDecroissanteLaBase(); model.addOrUpdate(); table.setModel(model); - selectRow(calc.commandes.IndexEvaluationCharger); + selectRow(commandes.IndexEvaluationCharger); } } }); @@ -465,13 +462,13 @@ private void ListenerAction() { public void actionPerformed(ActionEvent e) { new ChargePathBaseEvaluation(false); if(!ChargePathBaseEvaluation.isErreurLecture()) { - if(calc.commandes.evaluationsBase!=null) { + if(commandes.evaluationsBase!=null) { baseDonneesEvaluations.getInstance(); } - if(calc.commandes.PathBaseEvaluationDefaut) { - lblCheminVersBase.setText(calc.commandes.PathBaseEvaluations); + if(commandes.PathBaseEvaluationDefaut) { + lblCheminVersBase.setText(commandes.PathBaseEvaluations); }else { - lblCheminVersBase.setText(calc.commandes.PathBaseEvaluations+"/"+calc.commandes.NameBaseEvaluations); + lblCheminVersBase.setText(commandes.PathBaseEvaluations+"/"+commandes.NameBaseEvaluations); } model.addOrUpdate(); table = new JTable(model); @@ -485,14 +482,14 @@ private void ListenerAction() { btndefautBaseEvaluation.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(Files.isReadable(Paths.get(""))) { - calc.commandes.PathBaseEvaluations = Paths.get("").toAbsolutePath().toString(); - calc.commandes.NameBaseEvaluations = "base_evaluations_analyseWriter.xml"; - calc.commandes.PathBaseEvaluationDefaut = true; + commandes.PathBaseEvaluations = Paths.get("").toAbsolutePath().toString(); + commandes.NameBaseEvaluations = "base_evaluations_analyseWriter.xml"; + commandes.PathBaseEvaluationDefaut = true; new recupeNodeBaseEvaluations(); - if(calc.commandes.PathBaseEvaluationDefaut) { - lblCheminVersBase.setText(calc.commandes.PathBaseEvaluations); + if(commandes.PathBaseEvaluationDefaut) { + lblCheminVersBase.setText(commandes.PathBaseEvaluations); }else { - lblCheminVersBase.setText(calc.commandes.PathBaseEvaluations+"/"+calc.commandes.NameBaseEvaluations); + lblCheminVersBase.setText(commandes.PathBaseEvaluations+"/"+commandes.NameBaseEvaluations); } model.addOrUpdate(); table = new JTable(model); @@ -519,7 +516,7 @@ private void ListenerAction() { if (!lsm.isSelectionEmpty()) { indexSelect = lsm.getMinSelectionIndex(); chargeEvaluation.chargeEnMémoireEvaluationSelected(indexSelect); - calc.commandes.IndexEvaluationCharger = indexSelect; + commandes.IndexEvaluationCharger = indexSelect; if(!create.isDispose) { create.getInstance(); }else { @@ -558,8 +555,8 @@ private void ListenerAction() { */ btnSaveEvaluation.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { - if(calc.commandes.evaluationChargeEnMemoire!=null) { - String name = calc.commandes.evaluationChargeEnMemoire.getAttributs().get("name"); + if(commandes.evaluationChargeEnMemoire!=null) { + String name = commandes.evaluationChargeEnMemoire.getAttributs().get("name"); name = JOptionPane.showInputDialog(null,"Voulez-vous renommer l'évaluation ?",name); if(name!=null) { if(!name.isBlank()) { @@ -578,7 +575,7 @@ private void ListenerAction() { new recupeNodeBaseEvaluations(); model.addOrUpdate(); table.setModel(model); - selectRow(calc.commandes.IndexEvaluationCharger); + selectRow(commandes.IndexEvaluationCharger); } }); diff --git a/src/fenetres/chargeBaseAuDemarrage.java b/src/fenetres/chargeBaseAuDemarrage.java index 8437206..d7afa35 100644 --- a/src/fenetres/chargeBaseAuDemarrage.java +++ b/src/fenetres/chargeBaseAuDemarrage.java @@ -50,7 +50,7 @@ public class chargeBaseAuDemarrage extends JFrame { int screenHeight = (int) java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getHeight(); setLocation(( (screenWidth) - getWidth()) / 2, (screenHeight - getHeight()) / 2); - ImageIcon img = new ImageIcon(getClass().getResource("/resources/evalwriter.png") ); + ImageIcon img = new ImageIcon(getClass().getResource("/resources/evalcalc.png") ); setIconImage(img.getImage()); setTitle(calc.commandes.Titre + " - La base de données des évaluations"); diff --git a/src/fenetres/create.java b/src/fenetres/create.java index 8ea51a9..f6d790a 100644 --- a/src/fenetres/create.java +++ b/src/fenetres/create.java @@ -64,8 +64,10 @@ import actions.actExpandNode; import actions.actNewFichierAnalyse; import actions.actNodeFichier; import actions.actOpen; +import actions.actOpenBaseEvaluation; import actions.actSave; import actions.actSaveAs; +import actions.actSaveEvaluation; import actions.actSetting; import actions.actSupprimeTitre; import actions.actTitre1; @@ -101,11 +103,11 @@ public final class create extends JFrame { private JMenuBar menuBar = new JMenuBar(); private static JButton buttonEvaluate; private static JToggleButton tglbtnTousLesNodes; -// private JPanel panelPrincipal; private static JScrollPane ScrollPaneTableBouton = new JScrollPane( ); private static JScrollBar verticalScrollBar = ScrollPaneTableBouton.getVerticalScrollBar(); private static JLabel lblInfo = new JLabel("Fichier d'analyse"); private JPanel panelDroiteBoutons= new JPanel(); + public static boolean isDispose = true; private static create instance; @@ -122,13 +124,24 @@ public final class create extends JFrame { } public static create getInstance() { - if (instance == null) { + if (isDispose) { instance = new create(); } instance.setVisible(true); + isDispose = false; return instance; } + /** + * Ferme la fenêtre et quitte. + */ + public static void fermeCreate() { + if(!isDispose) { + isDispose=true; + instance.dispose(); + } + } + /** * Initialize the contents of the frame. @@ -310,9 +323,7 @@ public final class create extends JFrame { addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(java.awt.event.WindowEvent windowEvent) { - if(JOptionPane.showConfirmDialog(null,"Voulez-vous quitter analyseWriter?", "Quitter", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION) { - dispose(); - }; + new actExit().actionPerformed(null); } }); @@ -569,6 +580,18 @@ public final class create extends JFrame { toolBarPrincipal.setName("outils principaux"); + JButton btnChargeEvaluation = toolBarPrincipal.add( new actOpenBaseEvaluation() ); + btnChargeEvaluation.setIcon(new ImageIcon(create.class.getResource("/resources/BaseEvaluations.png"))); + btnChargeEvaluation.setHideActionText(true); + toolBarPrincipal.add(btnChargeEvaluation); + + JButton btnSaveEvaluation = toolBarPrincipal.add( new actSaveEvaluation() ); + btnSaveEvaluation.setIcon(new ImageIcon(create.class.getResource("/resources/saveEvaluation.png"))); + btnSaveEvaluation.setHideActionText(true); + toolBarPrincipal.add(btnSaveEvaluation); + + toolBarPrincipal.addSeparator(); + JButton buttonLoadFile = toolBarPrincipal.add( new actOpen() ); buttonLoadFile.setIcon(new ImageIcon(create.class.getResource("/resources/fichierAnalyse.png"))); buttonLoadFile.setHideActionText(true); @@ -679,11 +702,13 @@ public final class create extends JFrame { public void closeWindows() { if(JOptionPane.showConfirmDialog(null,"Voulez-vous quitter analyseWriter?", "Quitter", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION) { - dispose(); + isDispose=true; + dispose(); } } public void closeDirectlyWindows() { + isDispose=true; this.dispose(); } diff --git a/src/fenetres/evaluate.java b/src/fenetres/evaluate.java index 8ba6902..3a35354 100644 --- a/src/fenetres/evaluate.java +++ b/src/fenetres/evaluate.java @@ -472,6 +472,15 @@ public class evaluate extends JFrame { + + public static void ferme() { + if(!isDispose) { + isDispose=true; + instance.dispose(); + } + } + + /** * * evaluer l'ensemble des fichiers des étudiants diff --git a/src/fenetres/setting.java b/src/fenetres/setting.java index 445dccd..d56f0eb 100644 --- a/src/fenetres/setting.java +++ b/src/fenetres/setting.java @@ -679,17 +679,11 @@ public final class setting extends JFrame { if (userSelection == JFileChooser.APPROVE_OPTION) { File fileToSave = fileChooser.getSelectedFile(); - try { - -// - nodeTransalte.saveNodeEnXML(fileToSave.getName(), fileToSave.getPath().substring(0,fileToSave.getPath().lastIndexOf("\\"))); - - - JOptionPane.showMessageDialog(null, "Le fichier \"" + fileToSave.getName() + ".xml\" a été renregistré.\n\nIl se trouve dans le dossier " + fileToSave.getPath()); - - } catch (IOException e1) { - e1.printStackTrace(); - } + // + nodeTransalte.saveNodeEnXML(fileToSave.getName(), fileToSave.getPath().substring(0,fileToSave.getPath().lastIndexOf("\\"))); + + + JOptionPane.showMessageDialog(null, "Le fichier \"" + fileToSave.getName() + ".xml\" a été renregistré.\n\nIl se trouve dans le dossier " + fileToSave.getPath()); } } diff --git a/src/resources/BaseEvaluations.png b/src/resources/BaseEvaluations.png new file mode 100644 index 0000000..175f74b Binary files /dev/null and b/src/resources/BaseEvaluations.png differ diff --git a/src/resources/BaseEvaluationsmini.png b/src/resources/BaseEvaluationsmini.png new file mode 100644 index 0000000..2f3372c Binary files /dev/null and b/src/resources/BaseEvaluationsmini.png differ diff --git a/src/resources/accueilChargeEvaluation.png b/src/resources/accueilChargeEvaluation.png new file mode 100644 index 0000000..c27e585 Binary files /dev/null and b/src/resources/accueilChargeEvaluation.png differ diff --git a/src/resources/bye-bye.png b/src/resources/bye-bye.png new file mode 100644 index 0000000..dd168e6 Binary files /dev/null and b/src/resources/bye-bye.png differ diff --git a/src/resources/sauvegardehistoriqueevaluation.png b/src/resources/sauvegardehistoriqueevaluation.png new file mode 100644 index 0000000..3d0b953 Binary files /dev/null and b/src/resources/sauvegardehistoriqueevaluation.png differ diff --git a/src/resources/sauvegardehistoriqueevaluationmini.png b/src/resources/sauvegardehistoriqueevaluationmini.png new file mode 100644 index 0000000..6eb5318 Binary files /dev/null and b/src/resources/sauvegardehistoriqueevaluationmini.png differ diff --git a/src/resources/saveEvaluation.png b/src/resources/saveEvaluation.png new file mode 100644 index 0000000..844f49a Binary files /dev/null and b/src/resources/saveEvaluation.png differ diff --git a/src/resources/saveEvaluationmini.png b/src/resources/saveEvaluationmini.png new file mode 100644 index 0000000..3d0a8d1 Binary files /dev/null and b/src/resources/saveEvaluationmini.png differ diff --git a/src/xml/node.java b/src/xml/node.java index 88d069f..b9afd91 100644 --- a/src/xml/node.java +++ b/src/xml/node.java @@ -166,6 +166,12 @@ private boolean nodeClose = false; return null; } + /** + * Retourne le premier enfant ayant le nom nameNode.
+ * Sinon retourne un null. + * @param nameNode : le nom de l'enfant. + * @return + */ public node retourneFirstEnfant(String nameNode) { if(this.nameNode.equals(nameNode)) return this; for (node nod : enfants) { @@ -753,19 +759,28 @@ private boolean nodeClose = false; * @param pathDestination Le répertoire de destination qui sera inclus dans le répertoire courant de l'application. * @param fourniDestination Le répertoire courant de l'application. * @throws IOException Exception Input Output + * @return Erreur True ou False */ - public void saveNodeEnXML(String filename, String pathDestination) throws IOException { - - - if(filename.contains(".xml")) filename = filename.substring(0,filename.lastIndexOf(".xml")); + public boolean saveNodeEnXML(String filenameWithExtension, String pathDestination) { + if(!filenameWithExtension.contains(".xml")) { + filenameWithExtension = filenameWithExtension.substring(0,filenameWithExtension.lastIndexOf(".xml")); + } - Path outputFilePath = Paths.get(pathDestination +"/"+ filename + ".xml"); + Path outputFilePath = Paths.get(pathDestination +"/"+ filenameWithExtension + ".xml"); - BufferedWriter fichier = Files.newBufferedWriter(outputFilePath, StandardCharsets.UTF_8); - - fichier.write(this.ecritureXML().toString()); - fichier.close(); - + if(Files.isWritable(outputFilePath)){ + try { + BufferedWriter fichier = Files.newBufferedWriter(outputFilePath, StandardCharsets.UTF_8); + fichier.write(this.ecritureXML().toString()); + fichier.close(); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + }else { + return false; + } + return true; } /**