diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2ae923f --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/images/ diff --git a/analyseCalc.jar b/analyseCalc.jar index 709ada2..095f134 100644 Binary files a/analyseCalc.jar and b/analyseCalc.jar differ diff --git a/base_evaluations_analyseCalc.xml b/base_evaluations_analyseCalc.xml index 48a5db8..065eabe 100644 --- a/base_evaluations_analyseCalc.xml +++ b/base_evaluations_analyseCalc.xml @@ -1,122 +1,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ??? - - - - - - 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 - - - + + + + @@ -1682,6 +1567,1781 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + + Page 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + + Page 1 + + + + + + + diff --git a/bin/.gitignore b/bin/.gitignore index 266d0d6..ffba1ea 100644 --- a/bin/.gitignore +++ b/bin/.gitignore @@ -1,16 +1,8 @@ /outils/ /xml/ -/fenetres/ -/calc/ -/calcul/ -/AnalyseCalc/ -/nodeAC/ -/resources/ -/onLine/ -/accueil_new_version.png -/accueill new version.svg /baseEvaluation/ +/calc/ /actions/ -/baseEtudiants/ -/baseListesEtudiants/ -/accueillChargeEvaluation.svg +/fenetres/ +/resources/ +/analyseWriter/ diff --git a/bin/AnalyseCalc/Classeur2.class b/bin/AnalyseCalc/Classeur2.class index 07bc62c..0018428 100644 Binary files a/bin/AnalyseCalc/Classeur2.class and b/bin/AnalyseCalc/Classeur2.class differ diff --git a/bin/acceuil td format 2.jpg b/bin/acceuil td format 2.jpg new file mode 100644 index 0000000..c9115fa Binary files /dev/null and b/bin/acceuil td format 2.jpg differ diff --git a/bin/acceuil td format 2.svg b/bin/acceuil td format 2.svg new file mode 100644 index 0000000..bbc487d --- /dev/null +++ b/bin/acceuil td format 2.svg @@ -0,0 +1,113 @@ + + + +Les formats sont des informations associés à la cellule et qui permettent la représentation visuelle de la donnée dans la cellule.https://www.deviantart.com/stellaai/art/Leopard-Bomb-1083202042 diff --git a/bin/acceuil td format.svg b/bin/acceuil td format.svg new file mode 100644 index 0000000..7d6f6eb --- /dev/null +++ b/bin/acceuil td format.svg @@ -0,0 +1,143 @@ + + + +https://www.pixiv.net/en/artworks/81412786Les dates ne sont pas simplement des dates ! Les pourcentages ne sont pas des pourcentages ! Les formules peuvent afficher des textes, ou des dates, ou bien encore des quotients ! Qu'est-ce que cela signifie ? diff --git a/bin/accueilChargeEvaluation.png b/bin/accueilChargeEvaluation.png new file mode 100644 index 0000000..c27e585 Binary files /dev/null and b/bin/accueilChargeEvaluation.png differ diff --git a/bin/accueil_new_version.png b/bin/accueil_new_version.png new file mode 100644 index 0000000..ce4d93f Binary files /dev/null and b/bin/accueil_new_version.png differ diff --git a/bin/accueill new version.svg b/bin/accueill new version.svg new file mode 100644 index 0000000..ee72ef3 --- /dev/null +++ b/bin/accueill new version.svg @@ -0,0 +1,1699 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + analyseWriter + analyseWriter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Nouvelle version disponible sur la forge + Nouvelle version disponible sur la forge + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + analyseCalc + analyseCalc + + + diff --git a/bin/accueillChargeEvaluation.svg b/bin/accueillChargeEvaluation.svg new file mode 100644 index 0000000..9d657f9 --- /dev/null +++ b/bin/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/bin/baseListesEtudiants/CreerBaseParDefautListesEtudiants.class b/bin/baseListesEtudiants/CreerBaseParDefautListesEtudiants.class new file mode 100644 index 0000000..9ec3bf2 Binary files /dev/null and b/bin/baseListesEtudiants/CreerBaseParDefautListesEtudiants.class differ diff --git a/bin/baseListesEtudiants/chargeListeEtudiants.class b/bin/baseListesEtudiants/chargeListeEtudiants.class new file mode 100644 index 0000000..40871eb Binary files /dev/null and b/bin/baseListesEtudiants/chargeListeEtudiants.class differ diff --git a/bin/baseListesEtudiants/ecritureBaseListesEtudiants.class b/bin/baseListesEtudiants/ecritureBaseListesEtudiants.class new file mode 100644 index 0000000..b028e38 Binary files /dev/null and b/bin/baseListesEtudiants/ecritureBaseListesEtudiants.class differ diff --git a/bin/baseListesEtudiants/recupeNodeBaseListesEtudiants.class b/bin/baseListesEtudiants/recupeNodeBaseListesEtudiants.class new file mode 100644 index 0000000..85f26da Binary files /dev/null and b/bin/baseListesEtudiants/recupeNodeBaseListesEtudiants.class differ diff --git a/bin/bye-bye.png b/bin/bye-bye.png new file mode 100644 index 0000000..dd168e6 Binary files /dev/null and b/bin/bye-bye.png differ diff --git a/bin/bye-bye.svg b/bin/bye-bye.svg new file mode 100644 index 0000000..f53e6f9 --- /dev/null +++ b/bin/bye-bye.svg @@ -0,0 +1,7710 @@ + + + +Voulez vous quitter analyseWriter ?Voulez vous quitter analyseWriter ?Voulez vous enregistrer vos modifications avant de quitter ?Voulez vous enregistrer vos modifications avant de quitter ? diff --git a/bin/fenetres/evaluate$1.class b/bin/fenetres/evaluate$1.class index 59341c3..cb84968 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 d63e667..137904a 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 4af77cc..ed94748 100644 Binary files a/bin/fenetres/evaluate$11.class and b/bin/fenetres/evaluate$11.class differ diff --git a/bin/fenetres/evaluate$12.class b/bin/fenetres/evaluate$12.class index c80b0d4..2c4517a 100644 Binary files a/bin/fenetres/evaluate$12.class and b/bin/fenetres/evaluate$12.class differ diff --git a/bin/fenetres/evaluate$13.class b/bin/fenetres/evaluate$13.class index 7d57c45..1d21692 100644 Binary files a/bin/fenetres/evaluate$13.class and b/bin/fenetres/evaluate$13.class differ diff --git a/bin/fenetres/evaluate$14.class b/bin/fenetres/evaluate$14.class index 2044c93..9d7004e 100644 Binary files a/bin/fenetres/evaluate$14.class and b/bin/fenetres/evaluate$14.class differ diff --git a/bin/fenetres/evaluate$15.class b/bin/fenetres/evaluate$15.class index 926af18..e030ac3 100644 Binary files a/bin/fenetres/evaluate$15.class and b/bin/fenetres/evaluate$15.class differ diff --git a/bin/fenetres/evaluate$16.class b/bin/fenetres/evaluate$16.class index 05d1ad8..f61087f 100644 Binary files a/bin/fenetres/evaluate$16.class and b/bin/fenetres/evaluate$16.class differ diff --git a/bin/fenetres/evaluate$17.class b/bin/fenetres/evaluate$17.class index 8cc3e6d..015e267 100644 Binary files a/bin/fenetres/evaluate$17.class and b/bin/fenetres/evaluate$17.class differ diff --git a/bin/fenetres/evaluate$18.class b/bin/fenetres/evaluate$18.class index 6e1611a..1ed7ac0 100644 Binary files a/bin/fenetres/evaluate$18.class and b/bin/fenetres/evaluate$18.class differ diff --git a/bin/fenetres/evaluate$2.class b/bin/fenetres/evaluate$2.class index 213916c..d507651 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 55897aa..e11d151 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 3850d7a..e55b797 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 bf0bfc5..8b0483f 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 d154768..30e6bb2 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 60a4f8f..9a9377a 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 da0be5e..b27acba 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 d1fc52d..a1075b9 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 5d094de..d8d15ff 100644 Binary files a/bin/fenetres/evaluate.class and b/bin/fenetres/evaluate.class differ diff --git a/bin/onLine/verificationNewVersion.class b/bin/onLine/verificationNewVersion.class new file mode 100644 index 0000000..522fb96 Binary files /dev/null and b/bin/onLine/verificationNewVersion.class differ diff --git a/bin/resources/documentation.png b/bin/resources/documentation.png index 9b7ccd1..26bccaa 100644 Binary files a/bin/resources/documentation.png and b/bin/resources/documentation.png differ diff --git a/bin/resources/documentationmini.png b/bin/resources/documentationmini.png index 234b511..00c240a 100644 Binary files a/bin/resources/documentationmini.png and b/bin/resources/documentationmini.png differ diff --git a/saveExport.xml b/saveExport.xml index d8207eb..a9bfe3a 100644 --- a/saveExport.xml +++ b/saveExport.xml @@ -1,20 +1,21 @@ - + - + - + - - + + + diff --git a/src/AnalyseCalc/Classeur2.java b/src/AnalyseCalc/Classeur2.java index 5696c82..790d895 100644 --- a/src/AnalyseCalc/Classeur2.java +++ b/src/AnalyseCalc/Classeur2.java @@ -2619,124 +2619,6 @@ public class Classeur2 { } // ligne } // feuille -// /** -// * Ecriture des objets dans un fichier sans utiliser le JSON -// * @param patch -// * @throws IOException -// */ -// public void ecritureClasseur(String patch) throws IOException { -// System.getProperty("file.encoding","UTF-8"); -// -// Path outputFilePath = Paths.get(patch + "/codeFichier.xml"); -// BufferedWriter fichier = Files.newBufferedWriter(outputFilePath, StandardCharsets.UTF_8); -// -// fichier.write("\r\r"); -// fichier.write("\r\r"); -// fichier.write("\r\r"); -// fichier.write("\r\r"); -// fichier.write("\r\r"); -// fichier.write("\r\r"); -// fichier.write("\r\r"); -// fichier.write("\r\r"); -// fichier.write("\r\r"); -// -// fichier.newLine(); -// -// fichier.write("\r"); -// fichier.newLine(); -// fichier.write(""); -// fichier.newLine(); -// -// // nommage des cellules -// for (Entry j : nommageCellules.entrySet()) { -// fichier.write(""); -// fichier.newLine(); -// } -// -// -// //feuille -// for (Entry k : Feuilles.entrySet()) { -// fichier.newLine(); -// fichier.write("\r"); -// fichier.newLine(); -// fichier.write("\t\r"); -// fichier.newLine(); -// -// for (Entry j : k.getValue().getNommageCellulesFeuille().entrySet()) { -// fichier.write("\t"); -// fichier.newLine(); -// } -// -// //colonne -// for (Entry k1 : k.getValue().getColonnes().entrySet()) { -// fichier.newLine(); -// fichier.write("\t k2 : k1.getValue().getPropertiesColumn().entrySet()) { -// fichier.write(" " + k2.getKey() + "=\"" + k2.getValue() + "\"" ) ; -// } -// fichier.write(">\r"); -// } -// -// //ligne -// for (Entry k1 : k.getValue().getLignes().entrySet()) { -// fichier.newLine(); -// fichier.write("\t\r"); -// fichier.newLine(); -// fichier.write("\t\t" + k1.getValue().getCommunication() +"\r"); -// fichier.newLine(); -// fichier.write("\t\t k2 : k1.getValue().getPropertiesRow().entrySet()) { -// fichier.write(" " + k2.getKey() + "=\"" + k2.getValue() + "\"") ; -// } -// fichier.write(">\r"); -// -// for (Entry k2 : k1.getValue().getCellules().entrySet()) { -// fichier.newLine(); -// fichier.write("\t\t\r" ); -// -// fichier.write("\t\t\t k3 : k2.getValue().getPropertiesCell().entrySet()) { -// fichier.write(" " + k3.getKey() + "=\"" + k3.getValue() + "\"" ) ; -// } -// fichier.write(">\r"); -// -// fichier.newLine(); -// fichier.write("\t\t\t k3 : k2.getValue().getVal().getPropertiesValidation().entrySet()) { -// fichier.write(" " + k3.getKey() + "=\"" + k3.getValue() + "\"" ) ; -// } -// fichier.write(">\r"); -// -// fichier.newLine(); -// if(k2.getValue().getGraph()!=null) { -// ecritureGraphique(fichier,k2.getValue().getGraph(),"\t\t"); -// } -// -// fichier.write("\t\t\r"); -// -// } -// -// fichier.write("\t\r"); -// } -// -// //graphic -// -// for (Entry k1 : k.getValue().getGraphics().entrySet()) { -// fichier.newLine(); -// ecritureGraphique(fichier,k1.getValue(),""); -// } -// -// -// fichier.write("\r"); -// } -// -// fichier.write("\r"); -// fichier.close(); -// } public node convertClasseurToNode(ecritureFileXML.typeFichier type) throws IOException { diff --git a/src/actions/actDocumentation.java b/src/actions/actDocumentation.java index 7217fe8..ee9609c 100644 --- a/src/actions/actDocumentation.java +++ b/src/actions/actDocumentation.java @@ -1,11 +1,8 @@ package actions; -import java.awt.Desktop; import java.awt.event.ActionEvent; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; -import java.io.File; -import java.io.IOException; import javax.swing.AbstractAction; import javax.swing.Action; @@ -29,12 +26,8 @@ public class actDocumentation extends AbstractAction{ } @Override public void actionPerformed(ActionEvent e) { - Desktop d = Desktop.getDesktop(); - try { - d.open(new File(create.class.getResource("/resources/documentation.pdf").getPath())); - } catch (IOException e1) { - e1.printStackTrace(); - } + + } } diff --git a/src/actions/actExit.java b/src/actions/actExit.java index ce00f7f..8958570 100644 --- a/src/actions/actExit.java +++ b/src/actions/actExit.java @@ -85,7 +85,7 @@ public class actExit extends AbstractAction { // Actions des boutons buttonYes.addActionListener((ActionEvent evt) -> { - baseDonneesListesEtudiants.ferme(false); +// baseDonneesListesEtudiants.ferme(false); baseDonneesEvaluations.ferme(); create.fermeCreate(); evaluate.ferme(); @@ -151,7 +151,7 @@ public class actExit extends AbstractAction { // Actions des boutons buttonYes.addActionListener((ActionEvent evt) -> { - baseDonneesListesEtudiants.ferme(false); +// baseDonneesListesEtudiants.ferme(false); baseDonneesEvaluations.ferme(); create.fermeCreate(); evaluate.ferme(); diff --git a/src/actions/actLicence.java b/src/actions/actLicence.java new file mode 100644 index 0000000..459fdfe --- /dev/null +++ b/src/actions/actLicence.java @@ -0,0 +1,33 @@ +package actions; + + +import java.awt.event.ActionEvent; +import java.io.IOException; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.ImageIcon; + + +public class actLicence extends AbstractAction{ + + /** + * + */ + private static final long serialVersionUID = 1L; + { + putValue( Action.NAME, "Licence" ); + putValue( Action.SMALL_ICON, new ImageIcon( getClass().getResource("/resources/GPLv3mini.png") ) ); + putValue( Action.SHORT_DESCRIPTION, "Affiche la page de la licence" ); + } + @Override + public void actionPerformed(ActionEvent e) { + try { + String url = "https://www.gnu.org/licenses/gpl-3.0.html"; + java.awt.Desktop.getDesktop().browse(java.net.URI.create(url)); + } catch (IOException e1) { + e1.printStackTrace(); + } + } + +} diff --git a/src/actions/actNewFichierAnalyse.java b/src/actions/actNewFichierAnalyse.java index f74c76c..cb6ca77 100644 --- a/src/actions/actNewFichierAnalyse.java +++ b/src/actions/actNewFichierAnalyse.java @@ -59,7 +59,8 @@ public class actNewFichierAnalyse extends AbstractAction{ commandes.path = chooser.getCurrentDirectory().getAbsolutePath(); commandes.PathFilenameAnalysis = chooser.getCurrentDirectory().getAbsolutePath(); String cheminVersFichier = chooser.getSelectedFile().getAbsolutePath(); - commandes.nameSujet = chooser.getSelectedFile().getName(); + String nameFile = chooser.getSelectedFile().getName(); + commandes.nameSujet = nameFile.substring(0,nameFile.lastIndexOf(".")) + ".xml"; try { @@ -68,31 +69,30 @@ public class actNewFichierAnalyse extends AbstractAction{ new transformeXLMtoNode(LecturesDossiers.getEC().getListeContentTableur().get(0), false, null); commandes.sujet = transformeXLMtoNode.getNodeRoot(); - - - commandes.sujet.getAttributs().put("analysis_filename","sujet.xml"); + + commandes.sujet.getAttributs().put("analysis_filename",commandes.nameSujet); 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"); - ecritureFileXML.write(commandes.sujet, "sujet.xml"); + + node LesStyles = commandes.sujet.retourneFirstEnfant("office:document-styles"); + Classeur2 ClasseurAnalyse = new Classeur2(commandes.sujet,0,ecritureFileXML.typeFichier.fichier_analyse); - commandes.sujet = ClasseurAnalyse.convertClasseurToNode(ecritureFileXML.typeFichier.fichier_analyse); + + ecritureFileXML.write(commandes.sujet, "sujet1.xml"); + + commandes.sujet.removeAllEnfantWithThisName("office:document-content"); + commandes.sujet.removeAllEnfantWithThisName("office:document-meta"); + commandes.sujet.retourneFirstEnfant("classeur").getEnfants().add(LesStyles); + ecritureFileXML.write(commandes.sujet, "sujet2.xml"); - -// Ecriture.ecritureNodeEnXML(commandes.sujet, "sujet2", commandes.path, Ecriture.typeFichier.fichier_etudiant); - // new verificationFichierAnalyse(); 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(); diff --git a/src/actions/actOpenBaseListesEtudiants.java b/src/actions/actOpenBaseListesEtudiants.java index 94157f3..aa82446 100644 --- a/src/actions/actOpenBaseListesEtudiants.java +++ b/src/actions/actOpenBaseListesEtudiants.java @@ -7,8 +7,9 @@ import javax.swing.Action; import javax.swing.ImageIcon; import baseListesEtudiants.recupeNodeBaseListesEtudiants; +import calc.commandes; +import fenetres.baseDonneesListesEtudiants; import fenetres.create; -import calc.*; public class actOpenBaseListesEtudiants extends AbstractAction{ diff --git a/src/analyseWriter/baseListesEtudiants/CreerBaseParDefautListesEtudiants.java b/src/analyseWriter/baseListesEtudiants/CreerBaseParDefautListesEtudiants.java new file mode 100644 index 0000000..e5dd8de --- /dev/null +++ b/src/analyseWriter/baseListesEtudiants/CreerBaseParDefautListesEtudiants.java @@ -0,0 +1,52 @@ +package analyseWriter.baseListesEtudiants; + + + +import java.io.BufferedWriter; +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.text.ParseException; +import java.util.Date; + +import calc.commandes; + + + +/** + * Création de la base de données des listes des étudiants.
+ * Et/Ou vérification de la présence de de la base de données. + * @author pabr6 + * + */ +public class CreerBaseParDefautListesEtudiants { + public Boolean isExist() throws IOException { + File file = null; + String directoryName = Paths.get("").toAbsolutePath().toString(); + + if(commandes.os.contains("Win")) { + file = new File(directoryName + "\\" + "base_listes_etudiants.xml"); + }else { + file = new File(directoryName + "/" + "base_listes_etudiants.xml"); + } + + if(!file.exists()) { + Date aujourdhui = new Date(); + Path outputFilePath = file.toPath(); + BufferedWriter fichier = Files.newBufferedWriter(outputFilePath, StandardCharsets.UTF_8); + try { + fichier.write(""); + } catch (IOException e) { + e.printStackTrace(); + } catch (ParseException e) { + e.printStackTrace(); + } + fichier.close(); + return false; + } + return new recupeNodeBaseListesEtudiants().isHasliste(); + } +} diff --git a/src/analyseWriter/baseListesEtudiants/EmailValidator.java b/src/analyseWriter/baseListesEtudiants/EmailValidator.java new file mode 100644 index 0000000..70cd6d3 --- /dev/null +++ b/src/analyseWriter/baseListesEtudiants/EmailValidator.java @@ -0,0 +1,13 @@ +package analyseWriter.baseListesEtudiants; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class EmailValidator { + public static boolean isValidEmail(String email) { + String emailPattern = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$"; + Pattern pattern = Pattern.compile(emailPattern); + Matcher matcher = pattern.matcher(email); + return matcher.matches(); + } +} diff --git a/src/analyseWriter/baseListesEtudiants/chargeListeEtudiants.java b/src/analyseWriter/baseListesEtudiants/chargeListeEtudiants.java new file mode 100644 index 0000000..ec14fd0 --- /dev/null +++ b/src/analyseWriter/baseListesEtudiants/chargeListeEtudiants.java @@ -0,0 +1,32 @@ +package analyseWriter.baseListesEtudiants; + +import calc.commandes; + +public class chargeListeEtudiants { + + public static void chargeDansleNodeCSVListeEtudiants(Integer index) { + if(commandes.listesEtudiants!=null) { + if(commandes.listesEtudiants.getEnfants().size()>index && index >= 0 ) { + commandes.nodeCSV = commandes.listesEtudiants.getEnfants().get(index); + commandes.fourniCSV=true; + }else { + commandes.nodeCSV = null; + commandes.fourniCSV=false; + } + } + } + + public static void chargeDansLeNodeCSVListeEtudiants(String nameListe) { + if(commandes.listesEtudiants!=null) { + if(commandes.listesEtudiants.getEnfants().size()>0) { + commandes.nodeCSV = commandes.listesEtudiants.retourneFirstEnfant("fileCSV", "nameListStudent", nameListe); + if(commandes.nodeCSV!=null) { + commandes.fourniCSV=true; + }else { + commandes.fourniCSV=true; + } + } + } + } + +} diff --git a/src/analyseWriter/baseListesEtudiants/ecritureBaseListesEtudiants.java b/src/analyseWriter/baseListesEtudiants/ecritureBaseListesEtudiants.java new file mode 100644 index 0000000..3634ab1 --- /dev/null +++ b/src/analyseWriter/baseListesEtudiants/ecritureBaseListesEtudiants.java @@ -0,0 +1,204 @@ +package analyseWriter.baseListesEtudiants; + + + +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.text.ParseException; +import java.util.Date; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; + +import calc.commandes; +import xml.node; + + + +public class ecritureBaseListesEtudiants { + + + private static boolean erreur = false; + + public ecritureBaseListesEtudiants(node csv) { + erreur = false; + + if(csv==null) { + JFrame frame = new JFrame(); + JLabel texte = new JLabel("

L'écriture n'a pas réussi

" + + "

Le fichier CSV est null.

"); + JOptionPane.showMessageDialog(frame, texte); + erreur=true; + return; + } + + if(csv.isVide()) { + JFrame frame = new JFrame(); + JLabel texte = new JLabel("

L'écriture n'a pas réussi

" + + "

Le fichier CSV est vide.

"); + JOptionPane.showMessageDialog(frame, texte); + erreur=true; + return ; + } + + File file = null; + String directoryName = Paths.get("").toAbsolutePath().toString(); + + if(commandes.os.contains("Win")) { + file = new File(directoryName + "\\" + "base_listes_etudiants.xml"); + }else { + file = new File(directoryName + "/" + "base_listes_etudiants.xml"); + } + + if(!Files.isWritable(file.toPath())) { + JFrame frame = new JFrame(); + JLabel texte = new JLabel("

L'écriture n'a pas réussi

" + + "

"+ file.getAbsolutePath() +"

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

"); + JOptionPane.showMessageDialog(frame, texte); + erreur=true; + return; + } + + 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("<\\bfileCSV\\b.{1,100}\\bnameListStudent\\b=\\\""+ csv.getAttributs().get("nameListStudent") +"\\\".*?<\\/\\bfileCSV\\b>"); + Matcher m = p.matcher(baseToString); + + if(m.find()) { + //Supprime le node fileCSV pour le remplacer par le nouveau. + debut = baseToString.substring(0,m.start()); + fin = baseToString.substring(m.end()); + String codeXMLEvaluation = csv.ecritureXML().toString(); //Run.ecritureNode(csv, 0).toString().replace("\t","").replace("\r", "").replace("\n", "").replaceAll(">/{1,}<","><"); + XMLBase = debut + codeXMLEvaluation + fin; + }else { + //Ajoute une nouvelle liste (fileCSV) 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 = csv.ecritureXML().toString();//Run.ecritureNode(csv, 0).toString().replace("\t","").replace("\r", "").replace("\n", "").replaceAll(">/{1,}<","><"); + XMLBase = debut + codeXMLEvaluation + fin; + } + + } + + try { + + // écriture du node + Path outputFilePath = file.toPath(); + BufferedWriter fichier = Files.newBufferedWriter(outputFilePath, StandardCharsets.UTF_8); + fichier.write(XMLBase); + fichier.close(); + + JFrame frame = new JFrame(); + JLabel texte = new JLabel("

Enregistrement réussi

La liste "+csv.getAttributs().get("nameListStudent")+ " a été enregistrée dans la base de données.

" + + "

"+ file.getAbsolutePath() +"

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

L'écriture n'a pas réussi

" + + "

"+e.getMessage()+"

"); + JOptionPane.showMessageDialog(frame, texte); + erreur=true; + e.printStackTrace(); + } + + }catch (Exception e) { + + } + } + } + + /** + * Mise à jour de la base liste des étudiants. + */ + public static void majBaseListesEtudiant() { + erreur=false; + + if(commandes.listesEtudiants==null) { + JFrame frame = new JFrame(); + JLabel texte = new JLabel("

La liste des étudiant est nulle.

" + + ""); + JOptionPane.showMessageDialog(frame, texte); + erreur=true; + return; + } + + + File file = null; + String directoryName = Paths.get("").toAbsolutePath().toString(); + + if(commandes.os.contains("Win")) { + file = new File(directoryName + "\\" + "base_listes_etudiants.xml"); + }else { + file = new File(directoryName + "/" + "base_listes_etudiants.xml"); + } + + if(!Files.isWritable(file.toPath())) { + JFrame frame = new JFrame(); + JLabel texte = new JLabel("

L'écriture n'a pas réussi

" + + "

"+ file.getAbsolutePath() +"

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

"); + JOptionPane.showMessageDialog(frame, texte); + erreur=true; + return; + } + + + // écriture du node + + try { + Path outputFilePath = file.toPath(); + BufferedWriter fichier = Files.newBufferedWriter(outputFilePath, StandardCharsets.UTF_8); + Date aujourdhui = new Date(); + commandes.listesEtudiants.getAttributs().put("date", calcul.formatDateWriter.DateLibreOffice(aujourdhui)); + commandes.listesEtudiants.getAttributs().put("version",commandes.version); + fichier.write(commandes.listesEtudiants.ecritureXML().toString()); + fichier.close(); + } catch (IOException | ParseException e) { + // TODO Auto-generated catch block + JFrame frame = new JFrame(); + JLabel texte = new JLabel("

L'écriture n'a pas réussi

" + + "

"+e.getMessage()+"

"); + JOptionPane.showMessageDialog(frame, texte); + erreur=true; + e.printStackTrace(); + } + + } + + public static boolean isErreur() { + return erreur; + } + + +} + diff --git a/src/analyseWriter/baseListesEtudiants/idValidator.java b/src/analyseWriter/baseListesEtudiants/idValidator.java new file mode 100644 index 0000000..ed39511 --- /dev/null +++ b/src/analyseWriter/baseListesEtudiants/idValidator.java @@ -0,0 +1,13 @@ +package analyseWriter.baseListesEtudiants; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class idValidator { + public static boolean isValidId(String id) { + String idPattern = "^[0-9]{8}$"; + Pattern pattern = Pattern.compile(idPattern); + Matcher matcher = pattern.matcher(id); + return matcher.matches(); + } +} diff --git a/src/analyseWriter/baseListesEtudiants/myTableBaseListesEtudiants.java b/src/analyseWriter/baseListesEtudiants/myTableBaseListesEtudiants.java new file mode 100644 index 0000000..a208eae --- /dev/null +++ b/src/analyseWriter/baseListesEtudiants/myTableBaseListesEtudiants.java @@ -0,0 +1,67 @@ +package analyseWriter.baseListesEtudiants; + + + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import javax.swing.table.AbstractTableModel; + +import calc.commandes; + + +/** + * + * @author pabr6 + * + */ +public class myTableBaseListesEtudiants extends AbstractTableModel{ + /** + * + */ + private static final long serialVersionUID = 1L; + private String[][] listes = new String[0][2]; + private List columNames = new ArrayList<>(Arrays.asList(new String[] {"Nom de la liste","Année", "Nombre d'étudiant"})); + @Override + public int getRowCount() { + return listes.length; + } + + @Override + public int getColumnCount() { + return columNames.size(); + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + return listes[rowIndex][columnIndex]; + } + + @Override + public void setValueAt(Object aValue, int rowIndex, int columnIndex) { + listes[rowIndex][columnIndex] = (String) aValue; + fireTableCellUpdated(rowIndex, columnIndex); + } + + public String getColumnName(int column) { + return columNames.get(column); + } + + public String getNameListe(int rowIndex){ + return listes[rowIndex][0]; + } + + public void addOrUpdate() { + new recupeNodeBaseListesEtudiants(); + listes = new String[commandes.listesEtudiants.getEnfants().size()][columNames.size()]; + for(int i = 0 ; i columNames = new ArrayList<>(Arrays.asList(new String[] {"Nom","prénom", "identifiant","email"})); + @Override + public int getRowCount() { + return listes.length; + } + + @Override + public int getColumnCount() { + return columNames.size(); + } + + @Override + public Object getValueAt(int rowIndex, int columnIndex) { + return listes[rowIndex][columnIndex]; + } + + @Override + public void setValueAt(Object aValue, int rowIndex, int columnIndex) { + listes[rowIndex][columnIndex] = (String) aValue; + fireTableCellUpdated(rowIndex, columnIndex); + } + + public String getColumnName(int column) { + return columNames.get(column); + } + + public String getNameListe(int rowIndex){ + return listes[rowIndex][0]; + } + + public void addOrUpdate() { + if(commandes.nodeCSV==null) { + listes = new String[0][columNames.size()]; + fireTableRowsInserted(0, 0); + return; + } + if(!commandes.nodeCSV.isVide()) { + String name = commandes.nodeCSV.getAttributs().get("name"); + String firstname = commandes.nodeCSV.getAttributs().get("firstname"); + String id = commandes.nodeCSV.getAttributs().get("id"); + String email = commandes.nodeCSV.getAttributs().get("email"); + + node nodeImport = commandes.sujet.retourneFirstEnfant("import_moodle"); + + if(name==null) name = nodeImport.getAttributs().get("name"); + if(firstname==null) firstname = nodeImport.getAttributs().get("firstname"); + if(id==null) id = nodeImport.getAttributs().get("id"); + if(email==null) email = nodeImport.getAttributs().get("email"); + + listes = new String[commandes.nodeCSV.getEnfants().size()][columNames.size()]; + for(int i = 0 ; i= 0 && row < commandes.nodeCSV.getEnfants().size()) { + commandes.nodeCSV.getEnfants().remove(row); + fireTableRowsDeleted(row, row); + } + } + + public void addStudent(node newStudent) { + if(commandes.nodeCSV!=null) { + commandes.nodeCSV.getEnfants().add(newStudent); + } + } + + +} diff --git a/src/analyseWriter/baseListesEtudiants/nameStudentValidator.java b/src/analyseWriter/baseListesEtudiants/nameStudentValidator.java new file mode 100644 index 0000000..7b0275c --- /dev/null +++ b/src/analyseWriter/baseListesEtudiants/nameStudentValidator.java @@ -0,0 +1,13 @@ +package analyseWriter.baseListesEtudiants; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class nameStudentValidator { + public static boolean isValidName(String name) { + String namePattern = "^[a-zA-Z -]+?$"; + Pattern pattern = Pattern.compile(namePattern); + Matcher matcher = pattern.matcher(name); + return matcher.matches(); + } +} diff --git a/src/analyseWriter/baseListesEtudiants/recupeNodeBaseListesEtudiants.java b/src/analyseWriter/baseListesEtudiants/recupeNodeBaseListesEtudiants.java new file mode 100644 index 0000000..ddc2cd4 --- /dev/null +++ b/src/analyseWriter/baseListesEtudiants/recupeNodeBaseListesEtudiants.java @@ -0,0 +1,73 @@ +package analyseWriter.baseListesEtudiants; + + + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStreamReader; +import java.nio.file.Paths; + +import javax.swing.JLabel; +import javax.swing.JOptionPane; + +import calc.commandes; +import xml.node; + +/** + * + * @author pabr6 + * + */ +public class recupeNodeBaseListesEtudiants { + private boolean Hasliste = false; + + public recupeNodeBaseListesEtudiants() { + File file = null; + String directoryName = Paths.get("").toAbsolutePath().toString(); + + if(commandes.os.contains("Win")) { + file = new File(directoryName + "\\" + "base_listes_etudiants.xml"); + }else { + file = new File(directoryName + "/" + "base_listes_etudiants.xml"); + } + + if(file!=null) { + 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 codeTexte = "" + targetString.toString().replace("\t","").replace("\r", "").replace("\n", ""); + codeTexte = codeTexte.replaceAll(">/{1,}<", "><"); + node nodRetourne = new node(codeTexte); + + if(nodRetourne.getNameNode().equals("fichier")) { + nodRetourne.setNameNode("ListesEtudiants"); + } + + commandes.listesEtudiants = nodRetourne; + if(nodRetourne.getEnfants().size()>0) Hasliste=true; + + }catch (Exception e) { + JLabel texte = new JLabel("

La base de données des listes des étudiants
n'est pas située dans le même répertoire que celui de l'application.

"); + JOptionPane.showMessageDialog(null, texte); + } + } + + } + + public boolean isHasliste() { + return Hasliste; + } + + public void setHasliste(boolean hasliste) { + Hasliste = hasliste; + } + +} diff --git a/src/baseEvaluation/chargeEvaluation.java b/src/baseEvaluation/chargeEvaluation.java index 3e22ab3..565f35c 100644 --- a/src/baseEvaluation/chargeEvaluation.java +++ b/src/baseEvaluation/chargeEvaluation.java @@ -75,8 +75,8 @@ public class chargeEvaluation { calc.commandes.path = evaluation.getAttributs().get("path"); //Dossier des fichiers des étudiants // Chargement du node sujet depuis la base - calc.commandes.nameSujet = evaluation.getAttributs().get("analysis_filename"); - calc.commandes.sujet = evaluation.retourneFirstEnfant("fichier"); + calc.commandes.nameSujet = evaluation.retourneFirstEnfant("root").getAttributs().get("analysis_filename"); + calc.commandes.sujet = evaluation.retourneFirstEnfant("classeur"); calc.commandes.PathFilenameAnalysis = evaluation.getAttributs().get("PathFilenameAnalysis"); //** Les paramètres de l'évaluation @@ -104,23 +104,24 @@ public class chargeEvaluation { calc.commandes.nodeCSV = evaluation.retourneFirstEnfant("fileCSV"); - if(!calc.commandes.nodeCSV.isVide()) { + if(calc.commandes.nodeCSV!=null)if(!calc.commandes.nodeCSV.isVide()) { if(calc.commandes.nodeCSV.getAttributs().get("nameListStudent")!=null) { String nameListeStudent = calc.commandes.nodeCSV.getAttributs().get("nameListStudent"); chargeListeEtudiants.chargeDansLeNodeCSVListeEtudiants(nameListeStudent); } } -// commandes.contenuFichierSVG = evaluation.retourneFirstEnfantsByName("nodSVG").retourneLesContenusEnfants(""); calc.commandes.fichierAnalyseValide = true; - - try { - calc.commandes.sujetSauvegarde = calc.commandes.sujet.clone(); - } catch (CloneNotSupportedException e) { - e.printStackTrace(); + if(calc.commandes.sujet!=null) { + try { + calc.commandes.sujetSauvegarde = calc.commandes.sujet.clone(); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } } + //Chargement des paramètres du fichier d'analyse new chargementParametresFichierAnalyse(); diff --git a/src/baseEvaluation/creerNouvelleEvaluation.java b/src/baseEvaluation/creerNouvelleEvaluation.java index 42c9c34..db9163d 100644 --- a/src/baseEvaluation/creerNouvelleEvaluation.java +++ b/src/baseEvaluation/creerNouvelleEvaluation.java @@ -45,6 +45,9 @@ public class creerNouvelleEvaluation { if(nameEvaluation==null) { JOptionPane.showMessageDialog(null, "L'évaluation ne possède pas de nom"); return evaluation; + } else if (nameEvaluation.isBlank()) { + JOptionPane.showMessageDialog(null, "L'évaluation ne possède pas de nom"); + return evaluation; } // création du nouveau node evaluation diff --git a/src/baseEvaluation/ecritureBaseEvaluation.java b/src/baseEvaluation/ecritureBaseEvaluation.java index a5686fc..611fc06 100644 --- a/src/baseEvaluation/ecritureBaseEvaluation.java +++ b/src/baseEvaluation/ecritureBaseEvaluation.java @@ -79,7 +79,7 @@ public class ecritureBaseEvaluation { XMLBase = debut + evaluation.ecritureXML().toString() + fin; }else { //Ajoute une nouvelle évaluation au début de la base - p = Pattern.compile(""); + p = Pattern.compile(""); m = p.matcher(baseToString); if(m.find()) { debut = baseToString.substring(0,m.end()); diff --git a/src/baseEvaluation/myTableBaseEvaluation.java b/src/baseEvaluation/myTableBaseEvaluation.java index f1b7a30..06b42ed 100644 --- a/src/baseEvaluation/myTableBaseEvaluation.java +++ b/src/baseEvaluation/myTableBaseEvaluation.java @@ -66,9 +66,11 @@ public class myTableBaseEvaluation extends AbstractTableModel{ evaluation[i][2] = dateCreation; } 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"); + if(fichier!=null) { + evaluation[i][3] = fichier.getAttributs().get("titre"); + evaluation[i][4] = fichier.getAttributs().get("metaSujet"); + evaluation[i][5] = fichier.getAttributs().get("analysis_filename"); + } } fireTableRowsInserted(0, calc.commandes.evaluationsBase.getEnfants().size()-1); } diff --git a/src/baseEvaluation/removeEvaluation.java b/src/baseEvaluation/removeEvaluation.java new file mode 100644 index 0000000..845c7ed --- /dev/null +++ b/src/baseEvaluation/removeEvaluation.java @@ -0,0 +1,111 @@ +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 xml.node; +import calc.*; + +public class removeEvaluation { + + public removeEvaluation(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()); + XMLBase = debut + fin; + } + + + 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("

Suppression réussi

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

" + + "

"+ file.getAbsolutePath() +"

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

La suppression n'a pas réussi

L'évaluation "+evaluation.getAttributs().get("name")+ " n'a pas été supprimé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("

La suppression n'a pas réussi

L'évaluation "+evaluation.getAttributs().get("name")+ " n'a pas été supprimé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/trierParDateDecroissanteLaBase.java b/src/baseEvaluation/trierParDateDecroissanteLaBase.java new file mode 100644 index 0000000..d6d3ded --- /dev/null +++ b/src/baseEvaluation/trierParDateDecroissanteLaBase.java @@ -0,0 +1,71 @@ +package baseEvaluation; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import xml.node; +import calc.*; + +public class trierParDateDecroissanteLaBase { + + /** + * Tri la base des évaluation par date décroisante + */ + public trierParDateDecroissanteLaBase(){ + ArrayList evaluations = commandes.evaluationsBase.retourneAllEnfants("evaluation"); + HashMap dateDictionary = new HashMap(); + + Date dateEvaluationCharger = new Date(); + if(commandes.evaluationChargeEnMemoire!=null) { + dateEvaluationCharger = calcul.formatDateWriter.DateLibreOffice(commandes.evaluationChargeEnMemoire.getAttributs().get("date")); + System.out.println("dateEvaluationCharger="+dateEvaluationCharger); + } + + for(int i = 0 ; i < evaluations.size();i++) { + dateDictionary.put(calcul.formatDateWriter.DateLibreOffice(evaluations.get(i).getAttributs().get("date")),i); + } + + // Convertir le HashMap en liste pour pouvoir trier les éléments + List> list = new ArrayList>(dateDictionary.entrySet()); + + // Trier la liste par ordre décroissant des dates + Collections.sort(list, Collections.reverseOrder(Map.Entry.comparingByKey())); + + // Créer un nouveau LinkedHashMap pour stocker les éléments triés + LinkedHashMap sortedDateDictionary = new LinkedHashMap(); + for (Map.Entry entry : list) { + sortedDateDictionary.put(entry.getKey(), entry.getValue()); + } + + //Parcourir + node nodeTemporaire = new node(); + nodeTemporaire.setNameNode("temporaire"); + int j=0; + for (Map.Entry entry : sortedDateDictionary.entrySet()) { + System.out.println("Key : " + entry.getKey() + " | Value : " + entry.getValue()); + nodeTemporaire.getEnfants().add(j,commandes.evaluationsBase.getEnfants().get(entry.getValue())); + if(commandes.evaluationChargeEnMemoire!=null) { + if( (entry.getKey().equals(dateEvaluationCharger)) ) { + if(commandes.evaluationsBase.getEnfants().get(entry.getValue()).getAttributs().get("name").equals(commandes.NameEvaluationCharger)) { + commandes.IndexEvaluationCharger = j; + } + } + } + j++; + } + + // ajoute à la base + commandes.evaluationsBase.getEnfants().clear(); + for(int i = 0 ; i < nodeTemporaire.getEnfants().size();i++) { + commandes.evaluationsBase.getEnfants().add(nodeTemporaire.getEnfants().get(i)); + } + + } +} + + diff --git a/src/calc/chargementParametresFichierAnalyse.java b/src/calc/chargementParametresFichierAnalyse.java index 1d87cd5..2243629 100644 --- a/src/calc/chargementParametresFichierAnalyse.java +++ b/src/calc/chargementParametresFichierAnalyse.java @@ -157,11 +157,14 @@ public class chargementParametresFichierAnalyse { //***************************************************************** //** chargement de la culture qui se trouve dans le node setting ** //***************************************************************** - if(commandes.sujet.retourneFirstEnfant("setting").isHasAttributs()) { - if(commandes.sujet.retourneFirstEnfant("setting").getAttributs().get("culture")!=null) { - commandes.culture = commandes.sujet.retourneFirstEnfant("setting").getAttributs().get("culture"); //récupère la culture de l'utilisateur + if(commandes.sujet.containChildByName("setting")) { + if(commandes.sujet.retourneFirstEnfant("setting").isHasAttributs()) { + if(commandes.sujet.retourneFirstEnfant("setting").getAttributs().get("culture")!=null) { + commandes.culture = commandes.sujet.retourneFirstEnfant("setting").getAttributs().get("culture"); //récupère la culture de l'utilisateur + } } } + //******************************************************************* //** Charge pour la taille et le nom de l'archive de l'archive ZIP ** diff --git a/src/fenetres/ChargePathBaseEvaluation.java b/src/fenetres/ChargePathBaseEvaluation.java index 3cb516f..6293d31 100644 --- a/src/fenetres/ChargePathBaseEvaluation.java +++ b/src/fenetres/ChargePathBaseEvaluation.java @@ -1,4 +1,6 @@ -package analyseWriter.fenetres; +package fenetres; + + import java.awt.Component; import java.awt.Dimension; @@ -21,10 +23,12 @@ import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.filechooser.FileNameExtensionFilter; -import analyseWriter.MEPTL.commandes; -import analyseWriter.baseEvaluations.creerNouvelleEvaluation; -import analyseWriter.baseEvaluations.recupeNodeBaseEvaluations; -import cXML.node; +import baseEvaluation.creerNouvelleEvaluation; +import baseEvaluation.recupeNodeBaseEvaluations; +import calc.commandes; +import xml.node; + + /** * @@ -161,15 +165,15 @@ public class ChargePathBaseEvaluation extends JFileChooser { } - for(int i = 0 ; i < evaluations.getNodes().size();i++) { - String date = evaluations.getNodes().get(i).getAttributs().get("date"); + for(int i = 0 ; i < evaluations.getEnfants().size();i++) { + String date = evaluations.getEnfants().get(i).getAttributs().get("date"); if(date==null) continue; - ArrayList A = copieDefault.retourneEnfantsByNameAndValueAttribut("evaluation", "date", date, new ArrayList()); + ArrayList A = copieDefault.retourneAllEnfants("evaluation", "date", date); // l'évaluation n'existe pas dans la base par défaut et ce n'est pas une importation if(A.size()==0) { - String name = evaluations.getNodes().get(i).getAttributs().get("name"); - new creerNouvelleEvaluation(evaluations.getNodes().get(i), name, false,true); + String name = evaluations.getEnfants().get(i).getAttributs().get("name"); + new creerNouvelleEvaluation(evaluations.getEnfants().get(i), name, false,true); }else { // L'évaluation existe dans la base par défaut // for(int j = 0; j < A.size();j++) { diff --git a/src/fenetres/CustomInputDialogListeEtudiant.java b/src/fenetres/CustomInputDialogListeEtudiant.java new file mode 100644 index 0000000..1c2073e --- /dev/null +++ b/src/fenetres/CustomInputDialogListeEtudiant.java @@ -0,0 +1,493 @@ +package fenetres; + + + +import java.awt.Color; +import java.awt.Font; +import java.io.BufferedReader; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.file.Files; + +import javax.swing.ImageIcon; +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JTextField; +import javax.swing.SwingConstants; +import javax.swing.filechooser.FileNameExtensionFilter; + +import analyseWriter.baseListesEtudiants.ecritureBaseListesEtudiants; +import calc.commandes; +import xml.node; + +/** + * Class permettant de générer une
+ * boite de dialogue pour charger une liste d'étudiants
+ * dans le node commandes.NodeCSV.

+ * Cette méthode fait appel à la méthode,
+ * meptl.chargementFichierCSV(nameListStudent, textFieldYear.getText())
+ *
+ * @author pabr6 + * + */ +public class CustomInputDialogListeEtudiant { + /** + * Class permettant de générer une
+ * boite de dialogue pour charger une liste d'étudiants
+ * dans le node commandes.NodeCSV.

+ * Cette méthode fait appel à la méthode,
+ * meptl.chargementFichierCSV(nameListStudent, textFieldYear.getText())
+ *
+ * @return + * 1- Le nom de la liste des étudiants (la liste est chargé).
+ * 2- Code_Annule (ce qui signifie que la liste n'a pas été chargé).
+ */ + public static String showCustominputDialog() { + String separateur =""; + String encodage =""; + String email ="inconnu"; + String name = "inconnu"; + String firstname = "inconnu"; + String id = "inconnu"; + String nameListStudent = ""; + if(commandes.fichierAnalyseValide) { + if(commandes.fourniCSV) { + node CSV = commandes.sujet.retourneFirstEnfant("csv"); + separateur = CSV.getAttributs().get("separator"); + encodage = CSV.getAttributs().get("encoding"); + node importCSV = CSV.retourneFirstEnfant("import_moodle"); + if(CSV.isHasAttributs()) { + if(importCSV.getAttributs().get("email")!=null) { + email = importCSV.getAttributs().get("email"); + } + if(importCSV.getAttributs().get("name")!=null) { + name = importCSV.getAttributs().get("name"); + } + if(importCSV.getAttributs().get("firstname")!=null) { + firstname = importCSV.getAttributs().get("firstname"); + } + if(importCSV.getAttributs().get("id")!=null) { + id = importCSV.getAttributs().get("id"); + } + } + } + if(commandes.evaluationChargeEnMemoire.retourneFirstEnfant("fileCSV")!=null) { + if(commandes.evaluationChargeEnMemoire.retourneFirstEnfant("fileCSV").getAttributs().get("nameListStudent")!=null) { + nameListStudent = commandes.evaluationChargeEnMemoire.retourneFirstEnfant("fileCSV").getAttributs().get("nameListStudent"); + } + } + } + + JLabel lblTitre = new JLabel("

Ajouter une liste d'étudiant à l'évaluation

"); + lblTitre.setForeground(new Color(50,50,200)); + + JLabel lblExpliaction = new JLabel("

Le fichier au format CSV pour importer une liste d'étudiant doit avoir
" + + "les caractéristiques suivantes :


" + + "

Séparateur : " + separateur +"
" + + "Encodage : " + encodage + "
" + + "Nom des étudiants, la colonne : " + name + "
" + + "Prénom des étudiants, la colonne : " + firstname + "
" + + "Numéro des étudiants, la colonne : " + id +"
" + + "Courriel des étudiants, la colonne : " + email + "


" + + ""); + lblExpliaction.setFont(new Font("Tahoma", Font.BOLD, 12)); + lblExpliaction.setForeground(Color.blue); + + JTextField textField = new JTextField(String.valueOf(nameListStudent)); + textField.setFont(new Font("Tahoma", Font.BOLD, 14)); + textField.setHorizontalAlignment(SwingConstants.LEFT); + ImageIcon icon = new ImageIcon(create.class.getResource("/resources/fichierCSV.png")); + JTextField textFieldYear = new JTextField("2024"); + + Object[] message = { + lblTitre, + lblExpliaction, + "

Le nom d'une liste d'étudiant doit être unique.
" + + "Sinon, les étudiants seront ajoutés à la liste existante.


" + + "

Quel doit être le nom de cette liste ?

", + textField, + "

Quel est l'année ?

", + textFieldYear + }; + + String[] options = {"Importer la liste", "Annuler"}; + + int optionSelected = JOptionPane.showOptionDialog( + null, + message, + "Importer une liste d'étudiant.", + JOptionPane.DEFAULT_OPTION, + JOptionPane.INFORMATION_MESSAGE, + icon, + options, + options[0]); + + if (optionSelected == 0) { // Bouton "Importer la liste" sélectionné + JFileChooser chooser = new JFileChooser(); + chooser.setDialogTitle("Choisir un fichier CSV"); + + chooser.setCurrentDirectory(new java.io.File(commandes.path)); + chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); + FileNameExtensionFilter filter = new FileNameExtensionFilter("Format CSV", "csv"); + chooser.setFileFilter(filter); + chooser.setAcceptAllFileFilterUsed(true); + + if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { + System.out.println("getCurrentDirectory(): " + chooser.getCurrentDirectory()); + System.out.println("getSelectedFile() : " + chooser.getSelectedFile().getAbsolutePath()); + commandes.nameCSV = chooser.getSelectedFile().getAbsolutePath(); + + chargementFichierCSV(nameListStudent, textFieldYear.getText()); + + if(commandes.nodeCSV.getNbrEnfants()>=1) commandes.fourniCSV=true; + + return nameListStudent; + } + + return "Code_Annule"; + } else if (optionSelected == 1) { // Bouton "Désactivé" sélectionné + return "Code_Annule"; + } else { // Si la boîte de dialogue est annulée ou fermée + return "Code_Annule"; + } + } + + + /** + * Charge et ajoute dans le node commandes.nodeCSV la liste des étudiants.
+ * Par défaut : + * La liste des étudiants doit contenir les champs prenom, nom, identification, adresse
+ * Le séparateur doit être le point-virgule et l'encodage UTF-8.
+ * @param nameListStudent : le nom de la liste des étudiants.
+ * @param Year : Année sous la forme d'une chaine de caractère.
+ */ + public static void chargementFichierCSV(String nameListStudent, String Year) { + + String targetString = ""; + String cheminVersLeFichierCSV = ""; + commandes.nameCSV = commandes.nameCSV.replace("\\", "/"); + cheminVersLeFichierCSV = commandes.nameCSV; + + try { + BufferedReader br = new BufferedReader( + new InputStreamReader( + new FileInputStream(cheminVersLeFichierCSV), "UTF-8")); + + String line; + while ((line = br.readLine()) != null) { + targetString = targetString + line + "\n"; + } + + br.close(); + } catch (IOException e) { + e.printStackTrace(); + } + + String[] target = targetString.split("\\n"); + node csv = commandes.sujet.retourneFirstEnfant("csv"); + String separator = csv.getAttributs().get("separator"); + String encoding = csv.getAttributs().get("encoding"); + node import_csv = csv.retourneFirstEnfant("import_moodle"); + String nameid = import_csv.getAttributs().get("id"); + String nameemail = import_csv.getAttributs().get("email"); + String nameStudent = import_csv.getAttributs().get("name"); + String firstnameStudent = import_csv.getAttributs().get("firstname"); + + if(nameListStudent.isBlank()) nameListStudent=commandes.nameCSV; + if(Year.isBlank()) Year="2024"; + + commandes.nodeCSV.getAttributs().put("nameListStudent", nameListStudent); + commandes.nodeCSV.getAttributs().put("name", nameStudent); + commandes.nodeCSV.getAttributs().put("firstname", firstnameStudent); + commandes.nodeCSV.getAttributs().put("email", nameemail); + commandes.nodeCSV.getAttributs().put("id", nameid); + commandes.nodeCSV.getAttributs().put("separator", separator); + commandes.nodeCSV.getAttributs().put("encoding", encoding); + commandes.nodeCSV.getAttributs().put("year", Year); + + + + if(!target[0].contains(separator)||!target[0].contains(nameid) + ||!target[0].contains(nameemail)||!target[0].contains(nameStudent) + ||!target[0].contains(firstnameStudent)) { + JOptionPane.showMessageDialog(null, "Le fichier CSV ne correspond pas\nà la définition des paramètres d'importation", "Erreur CSV", JOptionPane.INFORMATION_MESSAGE); + return ; + } + + + String[] line1 = target[0].split(separator); + + + for(int i = 1 ; i < target.length ; i++) { + node nodeEtudiant = new node(); + nodeEtudiant.setNameNode("student"); + for(int j = 0 ; j < line1.length; j++) { + nodeEtudiant.getAttributs().put(line1[j], target[i].split(separator)[j]); + } + + if(nodeEtudiant.getAttributs().get(nameemail)!=null + && nodeEtudiant.getAttributs().get(nameid)!=null + && nodeEtudiant.getNbrAttributs()==4) { + + node n1 = commandes.nodeCSV.retourneFirstEnfant("student", nameid, nodeEtudiant.getAttributs().get(nameid)); + node n2 = commandes.nodeCSV.retourneFirstEnfant("student", nameemail, nodeEtudiant.getAttributs().get(nameemail)); + + if(n1==null && n2==null) commandes.nodeCSV.getEnfants().add(nodeEtudiant); + } + + } + + } + + + + + /** + * Class permettant de générer une
+ * boite de dialogue pour écrire ou ajouter une liste d'étudiants
+ * dans le node csv pour l'écriture.

+ * Cette méthode fait appel à la méthode,
+ * meptl.ecritureListeEtudiantsBaseFichierCSV(chemin vers fichier CSV, nameListStudent , year)
+ *
+ * @return + * 1- true lorsque le fichier est écrit.
+ * 2- false lorsque le fichier n'a pas été écrit.
+ */ + public static boolean showCustomDialogInputStudentBase() { + String separateur =""; + String encodage =""; + String email ="inconnu"; + String name = "inconnu"; + String firstname = "inconnu"; + String id = "inconnu"; + String nameListStudent = ""; + if(commandes.fichierAnalyseValide) { + if(commandes.fourniCSV) { + node CSV = commandes.sujet.retourneFirstEnfant("csv"); + separateur = CSV.getAttributs().get("separator"); + encodage = CSV.getAttributs().get("encoding"); + node importCSV = CSV.retourneFirstEnfant("import_moodle"); + if(CSV.isHasAttributs()) { + if(importCSV.getAttributs().get("email")!=null) { + email = importCSV.getAttributs().get("email"); + } + if(importCSV.getAttributs().get("name")!=null) { + name = importCSV.getAttributs().get("name"); + } + if(importCSV.getAttributs().get("firstname")!=null) { + firstname = importCSV.getAttributs().get("firstname"); + } + if(importCSV.getAttributs().get("id")!=null) { + id = importCSV.getAttributs().get("id"); + } + } + } + if(commandes.evaluationChargeEnMemoire.retourneFirstEnfant("fileCSV")!=null) { + if(commandes.evaluationChargeEnMemoire.retourneFirstEnfant("fileCSV").getAttributs().get("nameListStudent")!=null) { + nameListStudent = commandes.evaluationChargeEnMemoire.retourneFirstEnfant("fileCSV").getAttributs().get("nameListStudent"); + } + } + } + + JLabel lblTitre = new JLabel("

Ajouter une liste d'étudiant à l'évaluation

"); + lblTitre.setForeground(new Color(50,50,200)); + + JLabel lblExpliaction = new JLabel("

Le fichier au format CSV pour importer une liste d'étudiant doit avoir
" + + "les caractéristiques suivantes :


" + + "

Séparateur : " + separateur +"
" + + "Encodage : " + encodage + "
" + + "Nom des étudiants, la colonne : " + name + "
" + + "Prénom des étudiants, la colonne : " + firstname + "
" + + "Numéro des étudiants, la colonne : " + id +"
" + + "Courriel des étudiants, la colonne : " + email + "


" + + ""); + lblExpliaction.setFont(new Font("Tahoma", Font.BOLD, 12)); + lblExpliaction.setForeground(Color.blue); + + JTextField textField = new JTextField(String.valueOf(nameListStudent)); + textField.setFont(new Font("Tahoma", Font.BOLD, 14)); + textField.setHorizontalAlignment(SwingConstants.LEFT); + ImageIcon icon = new ImageIcon(create.class.getResource("/resources/fichierCSV.png")); + JTextField textFieldYear = new JTextField("2024"); + + Object[] message = { + lblTitre, + lblExpliaction, + "

Le nom d'une liste d'étudiant doit être unique.
" + + "Sinon, les étudiants seront ajoutés à la liste existante du même nom.


" + + "

Quel doit être le nom de cette liste ?

", + textField, + "

Quel est l'année ?

", + textFieldYear + }; + + String[] options = {"Importer la liste", "Annuler"}; + + int optionSelected = JOptionPane.showOptionDialog( + null, + message, + "Importer une liste d'étudiant.", + JOptionPane.DEFAULT_OPTION, + JOptionPane.INFORMATION_MESSAGE, + icon, + options, + options[0]); + + if (optionSelected == 0) { // Bouton "Importer la liste" sélectionné + JFileChooser chooser = new JFileChooser(); + chooser.setDialogTitle("Choisir un fichier CSV"); + + chooser.setCurrentDirectory(new java.io.File(commandes.path)); + chooser.setFileSelectionMode(JFileChooser.FILES_ONLY); + FileNameExtensionFilter filter = new FileNameExtensionFilter("Format CSV", "csv"); + chooser.setFileFilter(filter); + chooser.setAcceptAllFileFilterUsed(true); + + if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { + + if(Files.isReadable(chooser.getSelectedFile().toPath())) { + commandes.nameCSV = chooser.getSelectedFile().getAbsolutePath(); + nameListStudent = textField.getText().toLowerCase().trim(); + String year = textFieldYear.getText().toLowerCase().trim(); + return ecritureListeEtudiantsBaseFichierCSV(chooser.getSelectedFile().getAbsolutePath(), nameListStudent , year); + }else { + JFrame frame = new JFrame(); + JLabel texte = new JLabel("

La lecture de la liste n'a pas réussi

" + + "

"+ chooser.getSelectedFile().getAbsolutePath() +"

Vous devez avoir des droits pour lire dans ce dossier.

"); + JOptionPane.showMessageDialog(frame, texte); + } + + + } + + return false; + } else if (optionSelected == 1) { // Bouton "Désactivé" sélectionné + return false; + } else { // Si la boîte de dialogue est annulée ou fermée + return false; + } + + } + + /** + * Ajoute ou cré dans la base, la liste des étudiants.
+ * L'ajout se fait depuis un fichier au format CSV.
+ * Par défaut : + * La liste des étudiants doit contenir les champs prenom, nom, identification, adresse
+ * Le séparateur doit être le point-virgule et l'encodage UTF-8.
+ * @param cheminVersLeFichierCSV : le chemin vers le fichier CSV.
+ * @param nameListStudent : le nom de la liste des étudiants.
+ * @param Year : Année sous la forme d'une chaine de caractère.
+ * @return + * 1- True lorsque les étudiants ont été ajouté.
+ * 2 - False lorsque les étudiants n'ont pas été ajouté.
+ */ + public static Boolean ecritureListeEtudiantsBaseFichierCSV(String cheminVersLeFichierCSV, String nameListStudent, String Year) { + + //Recupère la liste des étudiants nommée : nameListStudent + //Si la liste existe alors place les étudiants dans le node commandes.nodeCSV ou bien null + commandes.nodeCSV = null; + if(commandes.listesEtudiants!=null) { + commandes.nodeCSV = commandes.listesEtudiants.retourneFirstEnfant("fileCSV", "nameListStudent", nameListStudent); + commandes.nameCSV = cheminVersLeFichierCSV; + } + + // Le node csv contient les paramètres importations et la liste des étudiants. + node csv = null; + String separator = ";"; + String encoding = "UTF-8"; + String nameid = "id"; + String nameemail = "email"; + String nameStudent = "name"; + String firstnameStudent = "firstname"; + + if(commandes.nodeCSV!=null) { + csv = commandes.nodeCSV; + separator = commandes.nodeCSV.getAttributs().get("separator"); + encoding = commandes.nodeCSV.getAttributs().get("encoding"); + nameid = commandes.nodeCSV.getAttributs().get("id"); + nameemail = commandes.nodeCSV.getAttributs().get("email"); + nameStudent = commandes.nodeCSV.getAttributs().get("name"); + firstnameStudent = commandes.nodeCSV.getAttributs().get("firstname"); + }else { + csv = commandes.sujet.retourneFirstEnfant("csv"); + csv.getAttributs().put("nameListStudent", nameListStudent); + csv.getAttributs().put("year", Year); + + separator = csv.getAttributs().get("separator"); + encoding = csv.getAttributs().get("encoding"); + node import_csv = csv.retourneFirstEnfant("import_moodle"); + nameid = import_csv.getAttributs().get("id"); + nameemail = import_csv.getAttributs().get("email"); + nameStudent = import_csv.getAttributs().get("name"); + firstnameStudent = import_csv.getAttributs().get("firstname"); + csv.getEnfants().remove(import_csv); + csv.getAttributs().put("name", nameStudent); + csv.getAttributs().put("firstname", firstnameStudent); + csv.getAttributs().put("email", nameemail); + csv.getAttributs().put("id", nameid); + csv.setNameNode("fileCSV"); + csv.getContenu().clear(); + } + + // Lecture du fichier CSV + String targetString = ""; + try { + BufferedReader br = new BufferedReader( + new InputStreamReader( + new FileInputStream(cheminVersLeFichierCSV), encoding)); + + String line; + while ((line = br.readLine()) != null) { + targetString = targetString + line + "\n"; + } + br.close(); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + + String[] target = targetString.split("\\n"); + + if(!target[0].contains(separator)||!target[0].contains(nameid) + ||!target[0].contains(nameemail)||!target[0].contains(nameStudent) + ||!target[0].contains(firstnameStudent)) { + JOptionPane.showMessageDialog(null, "

Le fichier CSV ne correspond pas à la définition des paramètres d'importation.

" + + "

Les paramètres d'importation sont :

" + + "
  1. Séparateur : "+separator +"
  2. " + + "
  3. Champ nom de l'étudiant : "+nameStudent+"
  4. " + + "
  5. Champ prénom de l'étudiant : "+firstnameStudent+"
  6. " + + "
  7. Champ identifiant de l'étudiant : " +nameid +"
  8. " + + "
  9. Champ email de l'étudiant : "+nameemail +"
", "Erreur CSV", JOptionPane.INFORMATION_MESSAGE); + return false; + } + + String[] line1 = target[0].split(separator); + + for(int i = 1 ; i < target.length ; i++) { + node nodeEtudiant = new node(); + nodeEtudiant.setNameNode("student"); + for(int j = 0 ; j < line1.length; j++) { + nodeEtudiant.getAttributs().put(line1[j], target[i].split(separator)[j]); + } + + if(nodeEtudiant.getAttributs().get(nameemail)!=null + && nodeEtudiant.getAttributs().get(nameid)!=null + && nodeEtudiant.getNbrAttributs()==4) { + + node n1 = csv.retourneFirstEnfant("student", nameid, nodeEtudiant.getAttributs().get(nameid)); + node n2 = csv.retourneFirstEnfant("student", nameemail, nodeEtudiant.getAttributs().get(nameemail)); + + if(n1==null && n2==null) csv.getEnfants().add(nodeEtudiant); + } + } + + new ecritureBaseListesEtudiants(csv); + return true; + + } +} + diff --git a/src/fenetres/baseDonneesEvaluations.java b/src/fenetres/baseDonneesEvaluations.java index 1048698..53265b3 100644 --- a/src/fenetres/baseDonneesEvaluations.java +++ b/src/fenetres/baseDonneesEvaluations.java @@ -35,11 +35,13 @@ import baseEvaluation.chargeEvaluation; import baseEvaluation.creerNouvelleEvaluation; import baseEvaluation.myTableBaseEvaluation; import baseEvaluation.recupeNodeBaseEvaluations; +import baseEvaluation.removeEvaluation; +import baseEvaluation.trierParDateDecroissanteLaBase; +import calc.commandes; import net.lingala.zip4j.exception.ZipException; import net.miginfocom.swing.MigLayout; import xml.Zip; import xml.node; -import calc.*; /** diff --git a/src/fenetres/baseDonneesListesEtudiants.java b/src/fenetres/baseDonneesListesEtudiants.java new file mode 100644 index 0000000..68134ba --- /dev/null +++ b/src/fenetres/baseDonneesListesEtudiants.java @@ -0,0 +1,500 @@ +package fenetres; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Font; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; + +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.JTextField; +import javax.swing.ListSelectionModel; +import javax.swing.SwingConstants; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import javax.swing.table.TableColumnModel; + +import analyseWriter.baseListesEtudiants.EmailValidator; +import analyseWriter.baseListesEtudiants.chargeListeEtudiants; +import analyseWriter.baseListesEtudiants.ecritureBaseListesEtudiants; +import analyseWriter.baseListesEtudiants.idValidator; +import analyseWriter.baseListesEtudiants.myTableBaseListesEtudiants; +import analyseWriter.baseListesEtudiants.myTableStudent; +import analyseWriter.baseListesEtudiants.nameStudentValidator; +import calc.commandes; +import net.miginfocom.swing.MigLayout; +import xml.node; + + +public class baseDonneesListesEtudiants extends JFrame{ + + private static final long serialVersionUID = 1L; + private static baseDonneesListesEtudiants instance; + public static boolean isDispose = true; + private static JTable table; + private static JTable tableStudent; + private static myTableBaseListesEtudiants model = new myTableBaseListesEtudiants(); + private static myTableStudent modelStudent = new myTableStudent(); + private final JButton btnFermer = new JButton("

Femer

"); + private JButton btnAddListeEtudiants = new JButton(); + private JButton btnRemoveListe = new JButton("

Supprimer une liste

"); + private JButton btnPasDeListe = new JButton(); + private JButton btnAddNewStudent = new JButton("

Ajouter un nouvel étudiant

"); + static JLabel lblNomListe = new JLabel("Pas de liste sélectionnée."); + JScrollPane scrollPaneTable = new JScrollPane(); + JScrollPane scrollPaneBoutons = new JScrollPane(); + private static int indexSelect=-1; + static ListSelectionModel lsm = null; + static ListSelectionModel rowSMTable = null; + + public baseDonneesListesEtudiants() { + super(); + setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + setLocationRelativeTo( null ); + setSize(1600,900); + int screenWidth = (int) java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getWidth(); + 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") ); + setIconImage(img.getImage()); + setTitle(commandes.Titre + " - La base de données des listes des étudiants"); + + JPanel panelHaut = new JPanel(); + getContentPane().add(panelHaut, BorderLayout.NORTH); + + JLabel lblNewLabel = new JLabel(""); + lblNewLabel.setIcon(new ImageIcon(baseDonneesListesEtudiants.class.getResource("/resources/accueilBaseListesEtudiants.png"))); + panelHaut.add(lblNewLabel); + + JPanel panelBas = new JPanel(); + getContentPane().add(panelBas, BorderLayout.SOUTH); + + JPanel panelGauche = new JPanel(); + panelGauche.setLayout(new MigLayout("", "[:300px:400px,fill]", "[53px][][][][39.00][][][][][30.00][20px:n][][][]")); + scrollPaneBoutons = new JScrollPane(panelGauche); + getContentPane().add(scrollPaneBoutons, BorderLayout.WEST); + + + model.addOrUpdate(); + table = new JTable(model); + table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + TableColumnModel columnModel = table.getColumnModel(); + int minWidthColumn01 = 150; + int maxWidthColumn02 = 180; + columnModel.getColumn(0).setPreferredWidth(minWidthColumn01); + columnModel.getColumn(0).setMaxWidth(maxWidthColumn02); + columnModel.getColumn(1).setPreferredWidth(minWidthColumn01); + columnModel.getColumn(1).setMaxWidth(maxWidthColumn02); + columnModel.getColumn(2).setPreferredWidth(minWidthColumn01); + columnModel.getColumn(2).setMaxWidth(maxWidthColumn02); + + table.setFont(new Font("Tahoma", Font.BOLD, 16)); + + + + //*Détection de la ligne sélectionnée + table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + rowSMTable = table.getSelectionModel(); + + // Ajout du label d'instruction + JPanel panelCentre = new JPanel(); + panelCentre.setLayout(new BorderLayout()); + + JLabel lblInstruction = new JLabel("Cliquez sur une ligne de la table ci-dessous
pour sélectionner une liste d'étudiants."); + lblInstruction.setHorizontalAlignment(SwingConstants.CENTER); + lblInstruction.setFont(new Font("Tahoma", Font.BOLD, 14)); + panelCentre.add(lblInstruction, BorderLayout.NORTH); + JScrollPane scrollPaneDroite = new JScrollPane(table); + panelCentre.add(scrollPaneDroite, BorderLayout.CENTER); + + getContentPane().add(panelCentre, BorderLayout.EAST); + + lblNomListe = new JLabel("Pas de liste sélectionnée."); + lblNomListe.setBackground(Color.GREEN); + lblNomListe.setHorizontalAlignment(SwingConstants.CENTER); + lblNomListe.setForeground(Color.RED); + lblNomListe.setFont(new Font("Tahoma", Font.BOLD, 16)); + panelGauche.add(lblNomListe, "cell 0 0"); + if(commandes.nodeCSV!=null) if(!commandes.nodeCSV.isVide()) { + if(commandes.nodeCSV.getAttributs().get("nameListStudent")!=null) { + lblNomListe.setText("Liste : " + commandes.nodeCSV.getAttributs().get("nameListStudent")); + } + } + + btnAddListeEtudiants.setFont(new Font("Tahoma", Font.BOLD, 13)); + btnAddListeEtudiants.setHorizontalAlignment(SwingConstants.LEFT); + btnAddListeEtudiants.setText("

Ajouter une liste ou des étudiants
à une liste depuis un fichier CSV

"); + btnAddListeEtudiants.setIcon(new ImageIcon(baseDonneesEvaluations.class.getResource("/resources/addStudentbaselisteetudiant.png"))); + panelGauche.add(btnAddListeEtudiants, "cell 0 1"); + + + btnPasDeListe.setFont(new Font("Tahoma", Font.BOLD, 13)); + btnPasDeListe.setHorizontalAlignment(SwingConstants.LEFT); + btnPasDeListe = new JButton("Ne pas sélectionner de liste"); + btnPasDeListe.setFont(new Font("Tahoma", Font.BOLD, 13)); + btnPasDeListe.setHorizontalAlignment(SwingConstants.LEFT); + btnPasDeListe.setIcon(new ImageIcon(baseDonneesEvaluations.class.getResource("/resources/nolistestudent.png"))); + panelGauche.add(btnPasDeListe, "cell 0 2"); + + btnAddNewStudent.setFont(new Font("Tahoma", Font.BOLD, 13)); + btnAddNewStudent.setHorizontalAlignment(SwingConstants.LEFT); + btnAddNewStudent.setIcon(new ImageIcon(baseDonneesEvaluations.class.getResource("/resources/addnewstudent.png"))); + panelGauche.add(btnAddNewStudent, "cell 0 3"); + + btnRemoveListe.setHorizontalAlignment(SwingConstants.LEFT); + btnRemoveListe.setFont(new Font("Tahoma", Font.BOLD, 13)); + btnRemoveListe.setHorizontalAlignment(SwingConstants.LEFT); + btnRemoveListe.setIcon(new ImageIcon(baseDonneesEvaluations.class.getResource("/resources/removeListe.png"))); + btnRemoveListe.setText("Supprime une liste"); + panelGauche.add(btnRemoveListe, "cell 0 5"); + + btnFermer.setIcon(new ImageIcon(baseDonneesEvaluations.class.getResource("/resources/quitteliste.png"))); + btnFermer.setHorizontalAlignment(SwingConstants.LEFT); + btnFermer.setFont(new Font("Tahoma", Font.BOLD, 15)); + panelGauche.add(btnFermer, "cell 0 6,growx,aligny top"); + + + modelStudent.addOrUpdate(); + tableStudent = new JTable(modelStudent); + tableStudent.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + TableColumnModel columnModelStudent = tableStudent.getColumnModel(); + int minWidthColumn1 = 180; + int maxWidthColumn2 = 250; + columnModelStudent.getColumn(0).setPreferredWidth(minWidthColumn1); + columnModelStudent.getColumn(0).setMaxWidth(maxWidthColumn2); + columnModelStudent.getColumn(1).setPreferredWidth(minWidthColumn1); + columnModelStudent.getColumn(1).setMaxWidth(maxWidthColumn2); + columnModelStudent.getColumn(2).setPreferredWidth(minWidthColumn1-60); + columnModelStudent.getColumn(2).setMaxWidth(maxWidthColumn2); + columnModelStudent.getColumn(3).setPreferredWidth(minWidthColumn1+100); + columnModelStudent.getColumn(3).setMaxWidth(maxWidthColumn2); + + tableStudent.setFont(new Font("Tahoma", Font.PLAIN, 14)); + + + scrollPaneTable = new JScrollPane(tableStudent); + getContentPane().add(scrollPaneTable, BorderLayout.CENTER); + + + ListenerAction(); + ListenerTables(); + + } + + + public static void selectRow() { + if(indexSelect>=0 && indexSelect<=table.getRowCount()-1) { + table.setRowSelectionAllowed(true); + table.setRowSelectionInterval(indexSelect, indexSelect); + } + } + + + public static baseDonneesListesEtudiants getInstance(int indexRow) { + if (isDispose) { + instance = new baseDonneesListesEtudiants(); + }else { + model.addOrUpdate(); + table.setModel(model); + rowSMTable = table.getSelectionModel(); + modelStudent.addOrUpdate(); + tableStudent.setModel(modelStudent); + + if(commandes.nodeCSV!=null) { + if(!commandes.nodeCSV.isVide()) { + if(commandes.nodeCSV.getAttributs().get("nameListStudent")!=null) { + lblNomListe.setText("Liste : " +commandes.nodeCSV.getAttributs().get("nameListStudent")); + } + } + }else { + lblNomListe.setText("Pas de liste sélectionnée."); + } + } + indexSelect = indexRow; + if(indexSelect>=0) { + selectRow(); + }else { + table.setRowSelectionAllowed(false); + } + instance.setVisible(true); + isDispose=false; + return instance; + } + + + /** + * Si ReturnEvaluate alors recharge une nouvelle fois la fenêtre evaluate. + * @param returnEvaluate + */ + public static void ferme(boolean returnEvaluate) { + if(!isDispose) { + isDispose=true; + instance.dispose(); + if(returnEvaluate) evaluate.getInstance(); + } + } + + + private void ListenerAction() { + + /** + * Ferme la fenêtre. + */ + addWindowListener(new java.awt.event.WindowAdapter() { + @Override + public void windowClosing(java.awt.event.WindowEvent windowEvent) { + evaluate.getInstance(); + isDispose=true; + dispose(); + } + }); + + /** + * Femer la fenêtre. + */ + btnFermer.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + ferme(true); + } + }); + + /** + * Ajoute une liste ou des étudiants à une liste. + */ + btnAddListeEtudiants.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + CustomInputDialogListeEtudiant.showCustomDialogInputStudentBase(); + model.addOrUpdate(); + table.setModel(model); + } + }); + + btnPasDeListe.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + commandes.nodeCSV = null; + baseDonneesListesEtudiants.getInstance(-1); + lblNomListe.setText("Pas de liste sélectionnée."); + } + }); + + btnAddNewStudent.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + + if(commandes.nodeCSV == null) { + JOptionPane.showMessageDialog(null, "Veuillez sélectionner une liste d'étudiant.", "Erreur", JOptionPane.ERROR_MESSAGE); + return; + } + + + // Créer des champs pour entrer les informations de l'étudiant + JTextField idField = new JTextField(); + JTextField nameField = new JTextField(); + JTextField prenomField = new JTextField(); + JTextField courrielField = new JTextField(); + + // Créer un panneau pour les champs + JPanel panel = new JPanel(new GridLayout(0, 1)); + panel.add(new JLabel("Nom :")); + panel.add(nameField); + panel.add(new JLabel("Prenom :")); + panel.add(prenomField); + panel.add(new JLabel("ID :")); + panel.add(idField); + panel.add(new JLabel("Courriel :")); + panel.add(courrielField); + + // Afficher la boîte de dialogue + int result = JOptionPane.showConfirmDialog(null, panel, "Ajouter un étudiant", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); + + if (result == JOptionPane.OK_OPTION) { + try { + String name = nameField.getText(); + String prenom = prenomField.getText(); + String id = idField.getText(); + String courriel = courrielField.getText(); + + if(!EmailValidator.isValidEmail(courriel)) { + JOptionPane.showMessageDialog(null, "Le courriel n'est pas correct.", "Erreur", JOptionPane.ERROR_MESSAGE); + return; + } + if(!idValidator.isValidId(id)) { + JOptionPane.showMessageDialog(null, "L'ID n'est pas correct.", "Erreur", JOptionPane.ERROR_MESSAGE); + return; + } + if(!nameStudentValidator.isValidName(name)) { + JOptionPane.showMessageDialog(null, "Le nom n'est pas correct.", "Erreur", JOptionPane.ERROR_MESSAGE); + return; + } + if(!nameStudentValidator.isValidName(prenom)) { + JOptionPane.showMessageDialog(null, "Le prenom n'est pas correct.", "Erreur", JOptionPane.ERROR_MESSAGE); + return; + } + + String champNom = "name"; + String champPrenom = "firstname"; + String champId = "identification"; + String champEmail = "adresse"; + + boolean erreur = false; + + if(commandes.nodeCSV!=null) { + if(commandes.nodeCSV.getAttributs().get("id")!=null) champId = commandes.nodeCSV.getAttributs().get("id"); + if(commandes.nodeCSV.getAttributs().get("email")!=null) champEmail = commandes.nodeCSV.getAttributs().get("email"); + if(commandes.nodeCSV.getAttributs().get("name")!=null) champNom = commandes.nodeCSV.getAttributs().get("name"); + if(commandes.nodeCSV.getAttributs().get("firstname")!=null) champPrenom = commandes.nodeCSV.getAttributs().get("firstname"); + if(commandes.nodeCSV.retourneFirstEnfant("student", champId, id)!=null) erreur=true; + if(commandes.nodeCSV.retourneFirstEnfant("student", champEmail, courriel)!=null) erreur=true; + } + + // Ajouter l'étudiant au modèle de la table + if(!erreur) { + node nouvelEtudiant = new node(); + nouvelEtudiant.setNameNode("student"); + nouvelEtudiant.getAttributs().put(champNom,name); + nouvelEtudiant.getAttributs().put(champPrenom,prenom); + nouvelEtudiant.getAttributs().put(champId,id); + nouvelEtudiant.getAttributs().put(champEmail,courriel); + ((myTableStudent) tableStudent.getModel()).addStudent(nouvelEtudiant); + new ecritureBaseListesEtudiants(commandes.nodeCSV); + if(!ecritureBaseListesEtudiants.isErreur()) baseDonneesListesEtudiants.getInstance(indexSelect); + }else { + JOptionPane.showMessageDialog(null, "Impossible d'ajouter cet étudiant car l'ID et/ou le courriel" + + "
sont déjà présents.", "Erreur", JOptionPane.ERROR_MESSAGE); + } + + + } catch (NumberFormatException ex) { + JOptionPane.showMessageDialog(null, "Veuillez entrer des informations valides", "Erreur", JOptionPane.ERROR_MESSAGE); + } + } + } + }); + + + btnRemoveListe.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + + if(commandes.listesEtudiants == null) { + JOptionPane.showMessageDialog(null, "Il n'y a aucune liste d'étudiants chargée en mémoire.", "Erreur", JOptionPane.ERROR_MESSAGE); + return; + } + // Créer un champ + JTextField nameListeField = new JTextField(); + + // Créer un panneau pour les champs + JPanel panel = new JPanel(new GridLayout(0, 1)); + panel.add(new JLabel("Nom de la liste à supprimé :")); + panel.add(nameListeField); + + // Afficher la boîte de dialogue + int result = JOptionPane.showConfirmDialog(null, panel, "Supprime une liste d'étudiants", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); + + if (result == JOptionPane.OK_OPTION) { + node nodeRemove = commandes.listesEtudiants.retourneFirstEnfant("fileCSV", "nameListStudent", nameListeField.getText()); + if(nodeRemove!=null) { + commandes.listesEtudiants.getEnfants().remove(nodeRemove); + if(commandes.nodeCSV!=null)if(commandes.nodeCSV.getAttributs().get("nameListStudent").equals(nameListeField.getText())) { + commandes.nodeCSV=null; + } + ecritureBaseListesEtudiants.majBaseListesEtudiant(); + if(!ecritureBaseListesEtudiants.isErreur()) baseDonneesListesEtudiants.getInstance(-1); + }else { + JOptionPane.showMessageDialog(null, "La liste n'a pas été trouvée dans la base de données.", "Erreur", JOptionPane.ERROR_MESSAGE); + } + } + } + }); + + + + + } + + + private void ListenerTables() { + + rowSMTable.addListSelectionListener(new ListSelectionListener() { + @Override + public void valueChanged(ListSelectionEvent e) { + //Ignore extra messages. + if (e.getValueIsAdjusting()) return; + lsm = (ListSelectionModel)e.getSource(); + if (lsm.isSelectionEmpty()) { + System.out.println("Aucune ligne sélectionnée."); + } else { + indexSelect = lsm.getMinSelectionIndex(); + System.out.println("La ligne " + indexSelect + " est sélectionnée."); + } + } + }); + + + + tableStudent.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + if (e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1) { + int row = tableStudent.getSelectedRow(); + if (row != -1) { + // Récupérer les données de la ligne sélectionnée + int columnCount = tableStudent.getColumnCount(); + StringBuilder rowData = new StringBuilder(); + for (int column = 0; column < columnCount; column++) { + rowData.append(tableStudent.getColumnName(column)).append(": ") + .append(tableStudent.getValueAt(row, column)).append("\n"); + } + + // Afficher les données dans une boîte de dialogue et demander la confirmation pour suppression + int response = JOptionPane.showConfirmDialog( + null, + rowData.toString() + "\nVoulez-vous supprimer cet étudiant?", + "Détails de l'étudiant", + JOptionPane.YES_NO_OPTION, + JOptionPane.INFORMATION_MESSAGE + ); + + // Supprimer l'étudiant si l'utilisateur a confirmé + if (response == JOptionPane.YES_OPTION) { + ((myTableStudent) tableStudent.getModel()).removeRow(row); + baseDonneesListesEtudiants.getInstance(indexSelect); + } + } + } + } + }); + + + + table.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + if (e.getClickCount() >0) { + if (e.getClickCount() > 0 && e.getButton() == MouseEvent.BUTTON1) { + System.out.println("un click ou plus"); + if(lsm!=null)if (!lsm.isSelectionEmpty()) { + indexSelect = lsm.getMinSelectionIndex(); + chargeListeEtudiants.chargeDansleNodeCSVListeEtudiants(indexSelect); + baseDonneesListesEtudiants.getInstance(indexSelect); + } + } + } + } + }); + } +} diff --git a/src/fenetres/evaluate.java b/src/fenetres/evaluate.java index 3a35354..3140d56 100644 --- a/src/fenetres/evaluate.java +++ b/src/fenetres/evaluate.java @@ -3,7 +3,9 @@ package fenetres; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; +import java.awt.GridLayout; import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; @@ -17,6 +19,7 @@ import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; +import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollBar; @@ -25,15 +28,27 @@ import javax.swing.JToolBar; import javax.swing.KeyStroke; import javax.swing.SwingConstants; import javax.swing.SwingUtilities; +import javax.swing.UnsupportedLookAndFeelException; import javax.swing.border.EmptyBorder; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import actions.actAbout; +import actions.actDocumentation; +import actions.actExit; +import actions.actLicence; +import actions.actOpenBaseEvaluation; +import actions.actOpenBaseListesEtudiants; +import actions.actSaveEvaluation; +import actions.actTutoriels; +import calc.commandes; import net.miginfocom.swing.MigLayout; -import calc.*; - +/** + * + * @author pablo rodriguez + * + */ public class evaluate extends JFrame { /** @@ -46,12 +61,10 @@ public class evaluate extends JFrame { * */ private JToolBar toolBar; - private JPanel contentPane; + private JPanel contentPane; private static JLabel lblPath; private static JLabel lblFileAnalyse; private static JLabel lblListe; - private static JLabel lblFichierCSV; - private static JLabel lblFichierSVG; private static JLabel lblImageDossierEtudiant; private static JLabel lblNoFeedBack; private static JLabel lblNoDeatail; @@ -68,23 +81,29 @@ public class evaluate extends JFrame { private static JCheckBox chckbxVerif; private static JCheckBox chckbxNoDetail; private static JCheckBox chckPasDeProgression ; - private static afficheText txtpnmessages; - private static evaluate instance; private static JScrollPane scrollPane = new JScrollPane(); private static JScrollBar verticalScrollBar = scrollPane.getVerticalScrollBar(); + private static afficheText txtpnmessages; + private JButton btnChargeEvaluation = new JButton(); + private JButton btnSaveEvaluation = new JButton(); + + private static evaluate instance; public static boolean isDispose = true; /** * Create the frame. */ - public evaluate() { + public void initialize() throws UnsupportedLookAndFeelException{ + + setSize(1600,900); - ImageIcon img = new ImageIcon(mainApp.class.getResource("/resources/evalcalc.png")); + ImageIcon img = new ImageIcon(getClass().getResource("/resources/evalwriter.png") ); this.setIconImage(img.getImage()); - setTitle(calc.commandes.Titre + " - " + calc.commandes.version + " " + calc.commandes.branch); - + setTitle(commandes.Titre + " " + commandes.version + " " + commandes.branch); + + setLocationRelativeTo( null ); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); - setBounds(100, 100, 980, 700); + int screenWidth = (int) java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getWidth(); int screenHeight = (int) java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getHeight(); setLocation(( (screenWidth) - getWidth()) / 2, (screenHeight - getHeight()) / 2); @@ -97,149 +116,405 @@ public class evaluate extends JFrame { setContentPane(contentPane); contentPane.setLayout(new BorderLayout(0, 0)); + JPanel panelNord = new JPanel(); + contentPane.add(panelNord, BorderLayout.NORTH); + panelNord.setLayout(new GridLayout(1, 1, 0, 0)); - contentPane.add(toolBar, BorderLayout.NORTH); + panelNord.add(toolBar); - JPanel panelWest = new JPanel(); - contentPane.add(panelWest, BorderLayout.WEST); - panelWest.setLayout(new MigLayout("", "[309px][]", "[38.00][71px][71px][][71px][][74.00][][]")); - JLabel lblTITRE = new JLabel("PARAMETRES"); - lblTITRE.setForeground(Color.RED); - lblTITRE.setFont(new Font("Tahoma", Font.BOLD, 16)); - lblTITRE.setHorizontalAlignment(SwingConstants.CENTER); - panelWest.add(lblTITRE, "cell 0 0,alignx left,aligny center"); + JPanel panelWestBase = new JPanel(); + panelWestBase.setLayout(new BorderLayout(0, 0)); + contentPane.add(panelWestBase, BorderLayout.WEST); + + JPanel panelWestBaseNord = new JPanel(); + + GridLayout gl_panelWestBaseNord = new GridLayout(); + gl_panelWestBaseNord.setRows(4); + panelWestBaseNord.setLayout(gl_panelWestBaseNord ); + panelWestBase.add(panelWestBaseNord, BorderLayout.NORTH); + + JPanel panelBoutons = new JPanel(); + panelWestBase.add(panelBoutons, BorderLayout.WEST); + panelBoutons.setLayout(new MigLayout("", "[24px][260px]", "[][][][][][][][][][][][][][][][]")); + + + JLabel lblIconAccueilEvaluation = new JLabel(""); + lblIconAccueilEvaluation.setVerticalAlignment(SwingConstants.TOP); + lblIconAccueilEvaluation.setIcon(new ImageIcon(evaluate.class.getResource("/resources/accueil evaluation.png"))); + lblIconAccueilEvaluation.setHorizontalAlignment(SwingConstants.LEFT); + panelWestBaseNord.add(lblIconAccueilEvaluation, BorderLayout.NORTH); + + lblNameEvaluation = new JLabel("Evalution :"); + panelWestBaseNord.add(lblNameEvaluation); + lblNameEvaluation.setFont(new Font("Tahoma", Font.PLAIN, 14)); lblFileAnalyse = new JLabel("Fichier de l'analyse : "); + panelWestBaseNord.add(lblFileAnalyse); lblFileAnalyse.setHorizontalAlignment(SwingConstants.LEFT); - lblFileAnalyse.setFont(new Font("Tahoma", Font.BOLD, 14)); - panelWest.add(lblFileAnalyse, "flowy,cell 0 1,alignx left,growy"); + lblFileAnalyse.setFont(new Font("Tahoma", Font.PLAIN, 14)); - chckbxfichiersEtudiants = new JCheckBox("Les fichiers ne sont pas dans des dossiers nominatifs"); + + lblPath = new JLabel(); + panelWestBaseNord.add(lblPath); + lblPath.setHorizontalAlignment(SwingConstants.LEFT); + lblPath.setFont(new Font("Tahoma", Font.PLAIN, 14)); + lblPath.setText("Dossier de l'évaluation : "); + + + chckbxfichiersEtudiants = new JCheckBox("Les fichiers des étudiants
ne sont pas
dans des dossiers nominatifs"); + chckbxfichiersEtudiants.setToolTipText("Cochez si les fichiers ne sont pas dans des dossiers nominatifs."); + + JLabel lblListeStudent = new JLabel(new ImageIcon(getClass().getResource("/resources/listestudent.png"))); + panelBoutons.add(lblListeStudent, "cell 0 0"); + + + lblListe = new JLabel("Liste ???"); + lblListe.setToolTipText("Le nom de la liste d'étudiant chargé en memoire."); + lblListe.setForeground(Color.BLUE); + lblListe.setHorizontalAlignment(SwingConstants.CENTER); + lblListe.setFont(new Font("Tahoma", Font.PLAIN, 16)); + lblListe.setOpaque(true); + panelBoutons.add(lblListe, "cell 1 0,alignx left,aligny center"); + + + lblImageDossierEtudiant = new JLabel(new ImageIcon(getClass().getResource("/resources/dossieretudiant.png"))); + panelBoutons.add(lblImageDossierEtudiant, "flowx,cell 0 2,alignx left,aligny center"); + chckbxfichiersEtudiants.setFont(new Font("Tahoma", Font.PLAIN, 12)); + chckbxfichiersEtudiants.setToolTipText("Cochez si les fichiers des étudiants ne sont pas dans des dossier nominatifs"); + panelBoutons.add(chckbxfichiersEtudiants, "cell 1 2,growx,aligny center"); + chckbxfichiersEtudiants.setSelected(commandes.fichierStudentMoodle); + if(commandes.fichierStudentMoodle) { + chckbxfichiersEtudiants.setToolTipText("Décochez si les fichiers sont dans des dossiers nominatifs."); + lblImageDossierEtudiant.setIcon(new ImageIcon(getClass().getResource("/resources/fichieretudiant.png"))); + chckbxfichiersEtudiants.setText("Les fichiers des étudiants
ne sont pas
dans des dossiers nominatifs"); + }else { + chckbxfichiersEtudiants.setToolTipText("Cochez si les fichiers ne sont pas dans des dossiers nominatifs."); + lblImageDossierEtudiant.setIcon(new ImageIcon(getClass().getResource("/resources/dossieretudiant.png"))); + chckbxfichiersEtudiants.setText("Les fichiers des étudiants
sont
dans des dossiers nominatifs"); + } chckbxfichiersEtudiants.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { if(chckbxfichiersEtudiants.isSelected()) { - calc.commandes.fichierStudentMoodle=true; + commandes.fichierStudentMoodle=true; + chckbxfichiersEtudiants.setToolTipText("Décochez si les fichiers sont dans des dossiers nominatifs."); + chckbxfichiersEtudiants.setText("Les fichiers des étudiants
ne sont pas
dans des dossiers nominatifs"); + lblImageDossierEtudiant.setIcon(new ImageIcon(getClass().getResource("/resources/fichieretudiant.png"))); + commandes.evaluationChargeEnMemoire.getAttributs().put("fichierStudentMoodle", "true" ); }else { - calc.commandes.fichierStudentMoodle=false; + commandes.fichierStudentMoodle=false; + chckbxfichiersEtudiants.setToolTipText("Cochez si les fichiers ne sont pas dans des dossiers nominatifs."); + chckbxfichiersEtudiants.setText("Les fichiers des étudiants
sont
dans des dossiers nominatifs"); + lblImageDossierEtudiant.setIcon(new ImageIcon(getClass().getResource("/resources/dossieretudiant.png"))); + commandes.evaluationChargeEnMemoire.getAttributs().put("fichierStudentMoodle", "false" ); } } }); - chckbxfichiersEtudiants.setFont(new Font("Tahoma", Font.PLAIN, 12)); - chckbxfichiersEtudiants.setToolTipText("Cochez si les fichiers des étudiants ne sont pas dans des dossier nominatifs"); - panelWest.add(chckbxfichiersEtudiants, "flowy,cell 0 2,grow"); - lblFichierCSV = new JLabel("Fichier CSV liste des étudiants :"); - lblFichierCSV.setFont(new Font("Tahoma", Font.BOLD, 14)); - panelWest.add(lblFichierCSV, "flowy,cell 0 4,grow"); - - lblFichierSVG = new JLabel("Fichier SVG :"); - lblFichierSVG.setFont(new Font("Tahoma", Font.BOLD, 14)); - panelWest.add(lblFichierSVG, "flowy,cell 0 6,growx"); - - chckCSVNotes = new JCheckBox("Créer un fichier CSV des notes"); - chckCSVNotes.addChangeListener(new ChangeListener() { + chckPasDeProgression = new JCheckBox("

Afficher le coefficient de
progression dans les feedbacks.

"); + chckPasDeProgression.setToolTipText("Cochez si vous ne voulez pas afficher le coef. de profression dans les feeedbacks."); + JLabel lblafficheprogression = new JLabel((new ImageIcon(create.class.getResource("/resources/afficheprogression.png")))); + panelBoutons.add(lblafficheprogression, "cell 0 1"); + if(commandes.noAfficheProgression) { + chckPasDeProgression.setToolTipText("Décochez si vous voulez afficher le coef. de profression dans les feeedbacks."); + chckPasDeProgression.setText("

Ne pas afficher le coefficient de
progression dans les feedbacks.

"); + lblafficheprogression.setIcon(new ImageIcon(create.class.getResource("/resources/noafficheprogression.png"))); + }else { + chckPasDeProgression.setToolTipText("Cochez si vous ne voulez pas afficher le coef. de profression dans les feeedbacks."); + chckPasDeProgression.setText("

Afficher le coefficient de
progression dans les feedbacks.

"); + lblafficheprogression.setIcon(new ImageIcon(create.class.getResource("/resources/afficheprogression.png"))); + } + chckPasDeProgression.setFont(new Font("Tahoma", Font.PLAIN, 12)); + panelBoutons.add(chckPasDeProgression, "cell 1 1,alignx left,aligny center"); + chckPasDeProgression.setSelected(commandes.noAfficheProgression); + chckPasDeProgression.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { - if(chckCSVNotes.isSelected()) { - calc.commandes.ecritNoteCSV=true; + if(chckPasDeProgression.isSelected()) { + chckPasDeProgression.setToolTipText("Décochez si vous voulez afficher le coef. de profression dans les feeedbacks."); + commandes.noAfficheProgression=true; + chckPasDeProgression.setText("

Ne pas afficher le coefficient de
progression dans les feedbacks.

"); + commandes.evaluationChargeEnMemoire.getAttributs().put("noAfficheProgression", "true" ); + lblafficheprogression.setIcon(new ImageIcon(create.class.getResource("/resources/noafficheprogression.png"))); }else { - calc.commandes.ecritNoteCSV=false; + chckPasDeProgression.setToolTipText("Cochez si vous ne voulez pas afficher le coef. de profression dans les feeedbacks."); + chckPasDeProgression.setText("

Afficher le coefficient de
progression dans les feedbacks.

"); + commandes.noAfficheProgression=false; + commandes.evaluationChargeEnMemoire.getAttributs().put("noAfficheProgression", "false" ); + lblafficheprogression.setIcon(new ImageIcon(create.class.getResource("/resources/afficheprogression.png"))); } } }); - chckCSVNotes.setToolTipText("Cochez si vous voulez importer les notes dans un fichier CSV."); - panelWest.add(chckCSVNotes, "cell 0 4,grow"); - lblPath = new JLabel(); - lblPath.setHorizontalAlignment(SwingConstants.LEFT); - lblPath.setFont(new Font("Tahoma", Font.BOLD, 14)); - lblPath.setText("Dossier de l'analyse : " + calc.commandes.path.substring(calc.commandes.path.lastIndexOf("\\")+1,calc.commandes.path.length()) + ""); - panelWest.add(lblPath, "cell 0 1,grow"); - - chckbxnoFeedback = new JCheckBox("Pas de feedback"); + chckbxnoFeedback = new JCheckBox("Générer des feedbacks
pour chaque étudiant."); + chckbxnoFeedback.setToolTipText("Cochez si vous ne voulez pas générer des feedbacks."); + chckbxnoFeedback.setFont(new Font("Tahoma", Font.PLAIN, 12)); + panelBoutons.add(chckbxnoFeedback, "cell 1 3,growx,aligny top"); + chckbxnoFeedback.setSelected(commandes.sansFeeback); + lblNoFeedBack = new JLabel(new ImageIcon(getClass().getResource("/resources/feedbackstudent.png"))); + panelBoutons.add(lblNoFeedBack, "cell 0 3"); + if(commandes.sansFeeback) { + chckbxnoFeedback.setToolTipText("Décochez si vous voulez générer des feedbacks."); + chckbxnoFeedback.setText("Ne pas générer des feedbacks
pour chaque étudiant."); + lblNoFeedBack.setIcon(new ImageIcon(getClass().getResource("/resources/nofeedbackstudent.png"))); + }else { + chckbxnoFeedback.setToolTipText("Cochez si vous ne voulez pas générer des feedbacks."); + chckbxnoFeedback.setText("Générer des feedbacks
pour chaque étudiant."); + lblNoFeedBack.setIcon(new ImageIcon(getClass().getResource("/resources/feedbackstudent.png"))); + } chckbxnoFeedback.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { if(chckbxnoFeedback.isSelected()) { - calc.commandes.sansFeeback=true; + chckbxnoFeedback.setToolTipText("Décochez si vous voulez générer des feedbacks."); + lblNoFeedBack.setIcon(new ImageIcon(getClass().getResource("/resources/nofeedbackstudent.png"))); + commandes.sansFeeback=true; + chckbxnoFeedback.setText("Ne pas générer des feedbacks
pour chaque étudiant."); + commandes.evaluationChargeEnMemoire.getAttributs().put("sansFeeback", "true" ); }else { - calc.commandes.sansFeeback=false; + chckbxnoFeedback.setToolTipText("Cochez si vous ne voulez pas générer des feedbacks."); + lblNoFeedBack.setIcon(new ImageIcon(getClass().getResource("/resources/feedbackstudent.png"))); + commandes.sansFeeback=false; + chckbxnoFeedback.setText("Générer des feedbacks
pour chaque étudiant."); + commandes.evaluationChargeEnMemoire.getAttributs().put("sansFeeback", "false" ); } } }); - chckbxnoFeedback.setToolTipText("Cochez si vous ne voulez pas générer des feedbacks"); - chckbxnoFeedback.setFont(new Font("Tahoma", Font.PLAIN, 12)); - panelWest.add(chckbxnoFeedback, "cell 0 2,grow"); - chckbxZipfeedback = new JCheckBox("Zip les feedbacks"); - chckbxZipfeedback.addChangeListener(new ChangeListener() { + + lblNoDeatail = new JLabel(new ImageIcon(getClass().getResource("/resources/detailfeedback.png"))); + chckbxNoDetail = new JCheckBox("Afficher les détails des erreurs
dans les feedbacks."); + chckbxNoDetail.setFont(new Font("Tahoma", Font.PLAIN, 12)); + panelBoutons.add(chckbxNoDetail, "cell 1 4,growx,aligny top"); + chckbxNoDetail.setSelected(commandes.noDetail); + chckbxNoDetail.setToolTipText("Cochez si vous ne voulez pas afficher les détails de l'évaluation dans les feedbacks."); + panelBoutons.add(lblNoDeatail, "cell 0 4"); + if(commandes.noDetail) { + chckbxNoDetail.setToolTipText("Décochez si vous voulez afficher les détails de l'évaluation dans les feedbacks."); + chckbxNoDetail.setText("Ne pas afficher les détails des erreurs
dans les feedbacks."); + lblNoDeatail.setIcon(new ImageIcon(getClass().getResource("/resources/nodetailfeedback.png"))); + }else { + chckbxNoDetail.setToolTipText("Cochez si vous ne voulez pas afficher les détails de l'évaluation dans les feedbacks."); + chckbxNoDetail.setText("Afficher les détails des erreurs
dans les feedbacks."); + lblNoDeatail.setIcon(new ImageIcon(getClass().getResource("/resources/detailfeedback.png"))); + } + chckbxNoDetail.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { - if(chckbxZipfeedback.isSelected()) { - calc.commandes.zipfeedback=true; + if(chckbxNoDetail.isSelected()) { + chckbxNoDetail.setToolTipText("Décochez si vous voulez afficher les détails de l'évaluation dans les feedbacks."); + lblNoDeatail.setIcon(new ImageIcon(getClass().getResource("/resources/nodetailfeedback.png"))); + commandes.noDetail=true; + chckbxNoDetail.setText("Ne pas afficher les détails des erreurs
dans les feedbacks."); + commandes.evaluationChargeEnMemoire.getAttributs().put("noDetail", "true" ); }else { - calc.commandes.zipfeedback=false; + lblNoDeatail.setIcon(new ImageIcon(getClass().getResource("/resources/detailfeedback.png"))); + commandes.noDetail=false; + chckbxNoDetail.setToolTipText("Cochez si vous ne voulez pas afficher les détails de l'évaluation dans les feedbacks."); + chckbxNoDetail.setText("Afficher les détails des erreurs
dans les feedbacks."); + commandes.evaluationChargeEnMemoire.getAttributs().put("noDetail", "false" ); } } }); - chckbxZipfeedback.setToolTipText("Cochez si vous voulez placer tous les feedbacks dans une archive ZIP"); - chckbxZipfeedback.setFont(new Font("Tahoma", Font.PLAIN, 12)); - panelWest.add(chckbxZipfeedback, "cell 0 2,grow"); + + - chckbxNoNote = new JCheckBox("Pas de note dans les feedbacks"); + chckbxNoNote = new JCheckBox("Afficher les notes dans les feedbacks."); + chckbxNoNote.setToolTipText("Cochez si vous ne voulez pas faire apparaître les notes dans les feedbacks."); + chckbxNoNote.setFont(new Font("Tahoma", Font.PLAIN, 12)); + chckbxNoNote.setSelected(commandes.noNote); + lblnonote = new JLabel(new ImageIcon(evaluate.class.getResource("/resources/notestudent.png"))); + panelBoutons.add(lblnonote, "cell 0 5"); + panelBoutons.add(chckbxNoNote, "cell 1 5,grow"); + if(commandes.noNote) { + chckbxNoNote.setToolTipText("Décochez si vous voulez faire apparaître les notes dans les feedbacks."); + chckbxNoNote.setText("\"Ne pas Afficher les notes dans les feedbacks.\""); + lblnonote.setIcon(new ImageIcon(evaluate.class.getResource("/resources/nonotestudent.png"))); + }else { + chckbxNoNote.setToolTipText("Cochez si vous ne voulez pas faire apparaître les notes dans les feedbacks."); + chckbxNoNote.setText("Afficher les notes dans les feedbacks."); + lblnonote.setIcon(new ImageIcon(evaluate.class.getResource("/resources/notestudent.png"))); + } chckbxNoNote.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { if(chckbxNoNote.isSelected()) { - calc.commandes.noNote=true; + chckbxNoNote.setToolTipText("Décochez si vous voulez faire apparaître les notes dans les feedbacks."); + lblnonote.setIcon(new ImageIcon(evaluate.class.getResource("/resources/nonotestudent.png"))); + commandes.noNote=true; + chckbxNoNote.setText("Ne pas afficher les notes dans les feedbacks."); + commandes.evaluationChargeEnMemoire.getAttributs().put("noNote", "true" ); }else { - calc.commandes.noNote=false; + chckbxNoNote.setToolTipText("Cochez si vous ne voulez pas faire apparaître les notes dans les feedbacks."); + lblnonote.setIcon(new ImageIcon(evaluate.class.getResource("/resources/notestudent.png"))); + commandes.noNote=false; + chckbxNoNote.setText("Afficher les notes dans les feedbacks."); + commandes.evaluationChargeEnMemoire.getAttributs().put("noNote", "false" ); } } }); - chckbxNoNote.setToolTipText("Cochez si vous voulez pas faire apparaître les notes dans les feedbacks"); - chckbxNoNote.setFont(new Font("Tahoma", Font.PLAIN, 12)); - panelWest.add(chckbxNoNote, "cell 0 2,grow"); - chckbxVerif = new JCheckBox("Vérification des historiques avant analyse"); + + + chckbxZipfeedback = new JCheckBox("Zipper les feedbacks
pour les importer dans Moodle."); + chckbxZipfeedback.setToolTipText("Cochez si vous voulez placer les feedbacks dans une archive ZIP"); + chckbxZipfeedback.setFont(new Font("Tahoma", Font.PLAIN, 12)); + lblnozip = new JLabel(new ImageIcon(evaluate.class.getResource("/resources/zipstudent.png"))); + panelBoutons.add(lblnozip, "cell 0 6"); + panelBoutons.add(chckbxZipfeedback, "cell 1 6,grow"); + chckbxZipfeedback.setSelected(commandes.zipfeedback); + if(commandes.zipfeedback) { + chckbxZipfeedback.setToolTipText("Décochez si vous ne voulez pas placer les feedbacks dans une archive ZIP"); + chckbxZipfeedback.setText("Ne pas zipper les feedbacks
pour les importer dans Moodle."); + lblnozip.setIcon(new ImageIcon(evaluate.class.getResource("/resources/zipstudent.png"))); + }else { + chckbxZipfeedback.setToolTipText("Cochez si vous voulez placer les feedbacks dans une archive ZIP"); + chckbxZipfeedback.setText("Zipper les feedbacks
pour les importer dans Moodle."); + lblnozip.setIcon(new ImageIcon(evaluate.class.getResource("/resources/nozipstudent.png"))); + } + chckbxZipfeedback.addChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + if(chckbxZipfeedback.isSelected()) { + chckbxZipfeedback.setToolTipText("Décochez si vous ne voulez pas placer les feedbacks dans une archive ZIP"); + lblnozip.setIcon(new ImageIcon(evaluate.class.getResource("/resources/zipstudent.png"))); + commandes.zipfeedback=true; + chckbxZipfeedback.setText("Ne pas zipper les feedbacks
pour les importer dans Moodle."); + commandes.evaluationChargeEnMemoire.getAttributs().put("zipfeedback", "true" ); + }else { + chckbxZipfeedback.setToolTipText("Cochez si vous voulez placer les feedbacks dans une archive ZIP"); + lblnozip.setIcon(new ImageIcon(evaluate.class.getResource("/resources/nozipstudent.png"))); + commandes.zipfeedback=false; + chckbxZipfeedback.setText("Zipper les feedbacks
pour les importer dans Moodle."); + commandes.evaluationChargeEnMemoire.getAttributs().put("zipfeedback", "false" ); + } + } + }); + + chckbxVerif = new JCheckBox("Ne pas vérifier les historiques avant
l'évaluation des fichiers."); + lblVerifHistorique = new JLabel(new ImageIcon(evaluate.class.getResource("/resources/noverifhistoriquestudent.png"))); + panelBoutons.add(lblVerifHistorique, "cell 0 7"); + chckbxVerif.setFont(new Font("Tahoma", Font.PLAIN, 12)); + panelBoutons.add(chckbxVerif, "flowy,cell 1 7,growx,aligny top"); + chckbxVerif.setSelected(commandes.verifHisto2); + if(commandes.verifHisto2) { + chckbxVerif.setToolTipText("Décochez si vous voulez ne pas vérifier l'historique des modifications."); + chckbxVerif.setText("Vérifier les historiques avant
l'évaluation des fichiers."); + lblVerifHistorique.setIcon(new ImageIcon(evaluate.class.getResource("/resources/verifhistoriquestudent.png"))); + }else { + chckbxVerif.setToolTipText("Cochez si vous voulez vérifier l'historique des modifications."); + chckbxVerif.setText("Ne pas vérifier les historiques avant
l'évaluation des fichiers."); + lblVerifHistorique.setIcon(new ImageIcon(evaluate.class.getResource("/resources/noverifhistoriquestudent.png"))); + } chckbxVerif.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { if(chckbxVerif.isSelected()) { - calc.commandes.verifHisto2=true; + lblVerifHistorique.setIcon(new ImageIcon(evaluate.class.getResource("/resources/verifhistoriquestudent.png"))); + commandes.verifHisto2=true; + chckbxVerif.setToolTipText("Décochez si vous voulez ne pas vérifier l'historique des modifications."); + chckbxVerif.setText("Vérifier les historiques avant
l'évaluation des fichiers."); + commandes.evaluationChargeEnMemoire.getAttributs().put("verifHisto2", "true" ); }else { - calc.commandes.verifHisto2=false; + chckbxVerif.setToolTipText("Cochez si vous voulez vérifier l'historique des modifications."); + lblVerifHistorique.setIcon(new ImageIcon(evaluate.class.getResource("/resources/noverifhistoriquestudent.png"))); + commandes.verifHisto2=false; + chckbxVerif.setText("Ne pas vérifier les historiques avant
l'évaluation des fichiers."); + commandes.evaluationChargeEnMemoire.getAttributs().put("verifHisto2", "false" ); } } }); - chckbxVerif.setToolTipText("Cochez si vous voulez vérifier les échanges de fichiers entre les étudiants."); - chckbxVerif.setFont(new Font("Tahoma", Font.PLAIN, 12)); - panelWest.add(chckbxVerif, "cell 0 2,grow"); + lblCsvNote = new JLabel(new ImageIcon(evaluate.class.getResource("/resources/nocsvstudent.png"))); + panelBoutons.add(lblCsvNote, "cell 0 8"); + chckCSVNotes = new JCheckBox("Ne pas créer un fichier CSV
des notes."); + chckCSVNotes.setToolTipText("Cochez si vous voulez importer les notes dans un fichier CSV."); + panelBoutons.add(chckCSVNotes, "flowx,cell 1 8,grow"); + chckCSVNotes.setSelected(commandes.ecritNoteCSV); + chckCSVNotes.addChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + if(chckCSVNotes.isSelected()) { + chckCSVNotes.setToolTipText("Décochez si vous voulez ne pas importer les notes dans un fichier CSV."); + lblCsvNote.setIcon(new ImageIcon(evaluate.class.getResource("/resources/csvstudent.png"))); + commandes.ecritNoteCSV=true; + chckCSVNotes.setText("Ne pas créer un fichier CSV
des notes."); + commandes.evaluationChargeEnMemoire.getAttributs().put("ecritNoteCSV", "true" ); + }else { + chckCSVNotes.setToolTipText("Cochez si vous voulez importer les notes dans un fichier CSV."); + lblCsvNote.setIcon(new ImageIcon(evaluate.class.getResource("/resources/nocsvstudent.png"))); + commandes.ecritNoteCSV=false; + chckCSVNotes.setText("Créer un fichier CSV
des notes."); + commandes.evaluationChargeEnMemoire.getAttributs().put("ecritNoteCSV", "false" ); + } + } + }); + if(commandes.ecritNoteCSV) { + chckCSVNotes.setToolTipText("Décochez si vous voulez ne pas importer les notes dans un fichier CSV."); + lblCsvNote.setIcon(new ImageIcon(evaluate.class.getResource("/resources/csvstudent.png"))); + chckCSVNotes.setText("Ne pas créer un fichier CSV
des notes."); + }else { + lblCsvNote.setIcon(new ImageIcon(evaluate.class.getResource("/resources/nocsvstudent.png"))); + chckCSVNotes.setToolTipText("Cochez si vous voulez importer les notes dans un fichier CSV."); + chckCSVNotes.setText("Créer un fichier CSV
des notes."); + } + JPanel panelCentre = new JPanel(); contentPane.add(panelCentre, BorderLayout.CENTER); panelCentre.setLayout(new BorderLayout(0, 0)); - JScrollPane scrollPane = new JScrollPane(); panelCentre.add(scrollPane); txtpnmessages = new afficheText(); + txtpnmessages.setForeground(Color.BLACK); txtpnmessages.setFont(new Font("Tahoma", Font.PLAIN, 16)); + txtpnmessages.setBackground(Color.LIGHT_GRAY); txtpnmessages.setContentType("text/html"); txtpnmessages.setText(baliseStyle.balise() + "

*** Charger un fichier d'analyse. ***


"); scrollPane.setViewportView(txtpnmessages); + + if(commandes.nodeCSV!=null) { + if(commandes.nodeCSV.getAttributs().get("nameListStudent")==null) { + commandes.nodeCSV.getAttributs().put("nameListStudent","?"); + commandes.nodeCSV.getAttributs().put("year", "?"); + lblListe.setText("Liste ???"); + }else { + lblListe.setText(""+commandes.nodeCSV.getAttributs().get("nameListStudent")+""); + } + }else { + lblListe.setText("Liste ???"); + } + + // Positionne le curseur au début du texte pour que le JScrollPane affiche le haut + positionScrollDebut(); + this.setExtendedState(MAXIMIZED_BOTH); - - - ListenerAction(); - refreshLabel(); setVisible(true); -// Pro(); - } + + public static void positionScrollDebut() { + // Positionne le curseur au début du texte pour que le JScrollPane affiche le haut + SwingUtilities.invokeLater(() -> { + txtpnmessages.setCaretPosition(0); + verticalScrollBar.setValue(verticalScrollBar.getMinimum()); + }); + } + + + private void ListenerAction() { + + /** + * Ferme la fenêtre et quitte l'application. + */ + addWindowListener(new java.awt.event.WindowAdapter() { + @Override + public void windowClosing(java.awt.event.WindowEvent windowEvent) { + new actExit().actionPerformed(null); + } + }); + + + } /** * Affichage de la fenêtre. @@ -261,110 +536,148 @@ public class evaluate extends JFrame { isDispose=false; return instance; } - - public static void positionScrollDebut() { - // Positionne le curseur au début du texte pour que le JScrollPane affiche le haut - SwingUtilities.invokeLater(() -> { - txtpnmessages.setCaretPosition(0); - verticalScrollBar.setValue(verticalScrollBar.getMinimum()); - }); + public static void ferme() { + if(!isDispose) { + isDispose=true; + instance.dispose(); + } + } + + /** + * Create the application. + */ + public evaluate() { + try { + initialize(); + } catch (UnsupportedLookAndFeelException e) { + e.printStackTrace(); + } + setVisible(true); } - private void ListenerAction() { - - /*Some piece of code*/ - 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(); - } - } - }); - } - - - - + /** + * Création du menu principal de la fenêtre.
+ */ private void createMenu() { JMenuBar menuBar = new JMenuBar(); menuBar.setFont(new Font("Segoe UI", Font.BOLD, 14)); setJMenuBar(menuBar); - JMenu mnNewMenu = new JMenu("Fichier"); + JMenu mnNewMenu = new JMenu("Base des évaluations"); mnNewMenu.setMnemonic( 'F' ); menuBar.add(mnNewMenu); - mnNewMenu.add( actSave ); - mnNewMenu.add( actSaveas ); + JMenuItem menuItem = mnNewMenu.add( new actOpenBaseEvaluation() ); + menuItem.setText("Base des évaluations"); mnNewMenu.addSeparator(); - mnNewMenu.add( actExit ); + mnNewMenu.add( new actSaveEvaluation() ); + mnNewMenu.addSeparator(); + mnNewMenu.add( new actExit() ); - JMenu mnMenu_Fichier = new JMenu("Fichier d'analyse"); - menuBar.add(mnMenu_Fichier); - mnMenu_Fichier.add( actOpen ); - mnMenu_Fichier.addSeparator(); - mnMenu_Fichier.add( actAboutFichierAnalyse ); - - mnMenu_Fichier.add( actModifierFichierAnalyse ); JMenu mnMenu_Liste_Etudiant = new JMenu("Liste des étudiants"); menuBar.add(mnMenu_Liste_Etudiant); - + mnMenu_Liste_Etudiant.add(new actOpenBaseListesEtudiants()); mnMenu_Liste_Etudiant.addSeparator(); + mnMenu_Liste_Etudiant.add(actAfficheListeEtudiant); - - JMenu mnMenu_Logo = new JMenu("Logo"); - menuBar.add(mnMenu_Logo); - - - JMenu mnMenu_Evaluation = new JMenu("Evaluation des étudiants"); + JMenu mnMenu_Evaluation = new JMenu("Evaluer des étudiants"); menuBar.add(mnMenu_Evaluation); - mnMenu_Evaluation.add(actSelectFolder); + JMenuItem menuItem_1 = mnMenu_Evaluation.add(actSelectFolder); + menuItem_1.setText("Dossier des étudiants"); mnMenu_Evaluation.addSeparator(); - mnMenu_Evaluation.add(actEvaluate); + JMenuItem menuItem_2 = mnMenu_Evaluation.add(actEvaluate); + menuItem_2.setText("Evaluer les fichiers des étudiants"); mnMenu_Evaluation.addSeparator(); mnMenu_Evaluation.add(actVerifHistorique); - JMenu mnMenu_Informations = new JMenu("Informations"); + JMenu mnMenu_Informations = new JMenu("Aides"); menuBar.add(mnMenu_Informations); - mnMenu_Informations.add(actTutoriels); - mnMenu_Informations.addSeparator(); mnMenu_Informations.add( new actAbout() ); + mnMenu_Informations.addSeparator(); + mnMenu_Informations.add(new actDocumentation()); + mnMenu_Informations.addSeparator(); + mnMenu_Informations.add(new actTutoriels()); + mnMenu_Informations.addSeparator(); + mnMenu_Informations.add( new actLicence()); } - + /** + * Création de la barre d'outil de la fenêtre.
+ */ private void createToolBar() { toolBar = new JToolBar(); - JButton btnSelectFileAnalyse = toolBar.add( actOpen ); - btnSelectFileAnalyse.setHideActionText( true ); - btnSelectFileAnalyse.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyse.png"))); + btnChargeEvaluation = toolBar.add(new actOpenBaseEvaluation()); + btnChargeEvaluation.setIcon(new ImageIcon(create.class.getResource("/resources/BaseEvaluations.png"))); + btnChargeEvaluation.setHideActionText(true); + toolBar.add(btnChargeEvaluation); + + btnSaveEvaluation = toolBar.add( new actSaveEvaluation()); + btnSaveEvaluation.setHideActionText( true ); + btnSaveEvaluation.setIcon(new ImageIcon(evaluate.class.getResource("/resources/saveEvaluation.png"))); + btnSaveEvaluation.setVisible(true); + toolBar.add(btnSaveEvaluation); + + toolBar.addSeparator(); + + JButton btnInformationAnalyse = toolBar.add( actCodeFichierAnalyse ); + btnInformationAnalyse.setVisible(false); + btnInformationAnalyse.setHideActionText(true); + btnInformationAnalyse.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyseInfo2.png"))); JButton btnAfficheCodeFichierAnalyse = toolBar.add( actAboutFichierAnalyse ); + btnAfficheCodeFichierAnalyse.setToolTipText("Informations sur l'évaluation chargée en mémoire (Ctrl+K)"); btnAfficheCodeFichierAnalyse.setHideActionText(true); btnAfficheCodeFichierAnalyse.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyseInfo.png"))); toolBar.add(btnAfficheCodeFichierAnalyse); JButton btnModifierFichierAnalyse = toolBar.add(actModifierFichierAnalyse); - btnModifierFichierAnalyse.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyseModif.png"))); + + btnModifierFichierAnalyse.setIcon(new ImageIcon(evaluate.class.getResource("/resources/versfichierAnalyse.png"))); btnModifierFichierAnalyse.setHideActionText(true); toolBar.add(btnModifierFichierAnalyse); - toolBar.addSeparator(); - JButton btnEvaluerLesFichiers = toolBar.add(actEvaluate); btnEvaluerLesFichiers.setHideActionText(true); - - toolBar.addSeparator(); + JButton btnBaseListeEtudiant = new JButton(new actOpenBaseListesEtudiants()); + btnBaseListeEtudiant.setText(""); + toolBar.add(btnBaseListeEtudiant); +// JButton btnFichierCSV = toolBar.add(actChargeListeEtudiantCSV ); +// btnFichierCSV.setHideActionText(true); +// btnFichierCSV.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichierCSV.png"))); +// toolBar.add(btnFichierCSV); + +// // Pour l'instant je cache ce bouton car il n'est pas utile. +// JButton btnVerificationCSVavecFichierAnalyse = toolBar.add( actVerifCSV ); +// btnVerificationCSVavecFichierAnalyse.setVisible(false); +// btnVerificationCSVavecFichierAnalyse.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichierCSVInfoXML.png"))); +// btnVerificationCSVavecFichierAnalyse.setHideActionText(true); +// toolBar.add(btnVerificationCSVavecFichierAnalyse); + + +// JButton btnFichierCSV_delete = toolBar.add(actDeleteListeEtudiantCSV); +// btnFichierCSV_delete.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichierCSV_delete.png"))); +// btnFichierCSV_delete.setHideActionText(true); + + + JButton btnInfoListeEtudiant = toolBar.add(actAfficheListeEtudiant); + btnInfoListeEtudiant.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichierCSVInfo.png"))); + btnInfoListeEtudiant.setHideActionText(true); + toolBar.add(btnInfoListeEtudiant); + + +// JButton btnFichierCSV_modifier = toolBar.add(actModificationListeEtudiantCSV); +// btnFichierCSV_modifier.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichier_csv_studen_modif.png"))); +// btnFichierCSV_modifier.setHideActionText(true); toolBar.addSeparator(); @@ -376,35 +689,34 @@ public class evaluate extends JFrame { btnEvaluerLesFichiers.setIcon(new ImageIcon(evaluate.class.getResource("/resources/evaluate.png"))); toolBar.add(btnEvaluerLesFichiers); - JButton btnVerifHistorique = toolBar.add(actVerifHistorique); - btnVerifHistorique.setIcon(new ImageIcon(evaluate.class.getResource("/resources/verifhistorique.png"))); - btnVerifHistorique.setHideActionText(true); - toolBar.add(btnVerifHistorique); - toolBar.addSeparator(); JButton btnAbout = toolBar.add(new actAbout()); btnAbout.setIcon(new ImageIcon(evaluate.class.getResource("/resources/apropos.png"))); + if(commandes.newVersion) btnAbout.setIcon(new ImageIcon(evaluate.class.getResource("/resources/apropos_new.png"))); btnAbout.setHideActionText(true); toolBar.add(btnAbout); - JButton btnTutoriels = toolBar.add(actTutoriels); - btnTutoriels.setIcon(new ImageIcon(evaluate.class.getResource("/resources/tutoriel.png"))); + JButton btnTutoriels = toolBar.add(new actDocumentation()); + btnTutoriels.setIcon(new ImageIcon(evaluate.class.getResource("/resources/documentation.png"))); toolBar.add(btnTutoriels); toolBar.addSeparator(); - JButton btnExit = toolBar.add(actExit); + JButton btnExit = toolBar.add(new actExit()); + btnExit.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + } + }); btnExit.setIcon(new ImageIcon(evaluate.class.getResource("/resources/exit.png"))); btnExit.setHideActionText(true); toolBar.add(btnExit); + + } - - - - /** + /** * Raffraichissement des informationss.
* Activation des chckBoxs.
*/ @@ -470,20 +782,26 @@ public class evaluate extends JFrame { } - - - - public static void ferme() { - if(!isDispose) { - isDispose=true; - instance.dispose(); - } + /** + * Getter du texteField txtmessages.
+ * @return + */ + public static afficheText getTxtpnmessages() { + return txtpnmessages; } - - + + /** + * Setter du texteField txtmessages.
+ * @param txtpnmessages + */ + public static void setTxtpnmessages(afficheText txtpnmessages) { + evaluate.txtpnmessages = txtpnmessages; + } + + /** * - * evaluer l'ensemble des fichiers des étudiants + * Evaluer l'ensemble des fichiers des étudiants.
*/ private AbstractAction actEvaluate = new AbstractAction() { @@ -497,22 +815,25 @@ public class evaluate extends JFrame { putValue( Action.SHORT_DESCRIPTION, "Evaluer les fichiers (CTRL+E)" ); putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_DOWN_MASK) ); } - + @Override public void actionPerformed(ActionEvent e) { -// Thread t2 = new Thread(new evaluerLesFichiersEtudiants(txtpnmessages)); -// t2.start(); + if(commandes.fichierAnalyseValide) { +// Thread t2 = new Thread(new evaluerLesFichiersEtudiants(txtpnmessages)); +// t2.start(); + } } }; - /** - * Ouvre et affiche un fichier XML + /** + * Ouvre et affiche un fichier d'analyse au format XML.
*/ + @SuppressWarnings("unused") private AbstractAction actOpen = new AbstractAction() { - + private static final long serialVersionUID = 1L; - + { putValue(LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyse.png"))); putValue( Action.NAME, "Ouvrir un nouveau fichier d'analyse" ); @@ -524,15 +845,12 @@ public class evaluate extends JFrame { @Override public void actionPerformed( ActionEvent e ) { - new filechooserXML(); + new ChargeFichierXML(); refreshLabel(); - System.out.println( "Open" ); } }; - - /** * Sélectionne le dossier courant contenant les fichiers des étudiants */ @@ -553,15 +871,13 @@ public class evaluate extends JFrame { public void actionPerformed( ActionEvent e ) { JFileChooser chooser = new JFileChooser(); - chooser.setCurrentDirectory(new java.io.File(calc.commandes.path)); + chooser.setCurrentDirectory(new java.io.File(commandes.path)); chooser.setDialogTitle("Sélectionner le dossier contenant les fichiers des étudiants."); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); chooser.setAcceptAllFileFilterUsed(false); if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { - System.out.println("getCurrentDirectory(): " + chooser.getCurrentDirectory()); - System.out.println("getSelectedFile() : " + chooser.getSelectedFile().getAbsolutePath()); - calc.commandes.path = chooser.getSelectedFile().getAbsolutePath(); + commandes.path = chooser.getSelectedFile().getAbsolutePath(); } else { System.out.println("No Selection "); } @@ -570,10 +886,9 @@ public class evaluate extends JFrame { } }; - /** /** - * Verification + * Verification de l'historique.
*/ private AbstractAction actVerifHistorique = new AbstractAction() { @@ -588,19 +903,100 @@ public class evaluate extends JFrame { } @Override public void actionPerformed( ActionEvent e ) { - calc.commandes.verifHisto = true; - calc.commandes.analyse = false; - if(!calc.commandes.path.isEmpty()) { + commandes.verifHisto = true; + commandes.analyse = false; + if(!commandes.path.isEmpty()) { +// Thread t2 = new Thread(new evaluerLesFichiersEtudiants(txtpnmessages)); +// t2.start(); + +// meptl.analyseVerifieHistoriqueLesFichiersEtudiantsEtExportNoteCSV(fenetres.evaluate.getTxtpnmessages()); + txtpnmessages.setContentType("text/plain"); + txtpnmessages.setText(commandes.message.toString()); }else { - txtpnmessages.setText("*** Veuillez sélectionner un dossier d'analyse. ***"); + txtpnmessages.setContentType("text/html"); + txtpnmessages.setText("

*** Veuillez sélectionner un dossier d'analyse. ***

"); } - calc.commandes.verifHisto = false; + commandes.verifHisto = false; } }; - + + +// /** +// * +// */ +// private AbstractAction actVerifCSV = new AbstractAction() { +// +// private static final long serialVersionUID = 1L; +// { +// putValue(Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichierCSVInfoXML.png"))); +// putValue( Action.NAME, "Vérification des champs du CSV" ); +// putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/fichierCSVInfoXMLmini.png")) ); +// putValue( Action.MNEMONIC_KEY, KeyEvent.VK_U ); +// putValue( Action.SHORT_DESCRIPTION, "Vérification des champs du CSV (CTRL+B)" ); +// putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_DOWN_MASK) ); +// } +// @Override +// public void actionPerformed( ActionEvent e ) { +// +// if(commandes.fichierAnalyseValide) { +// if(commandes.fourniCSV) { +// node settingCSV = commandes.sujet.retourneFirstEnfantsByName("import_moodle"); +// if(settingCSV.isHasAttributs()) { +// String email ="inconnu"; +// String name = "inconnu"; +// String firstname = "inconnu"; +// String id = "inconnu"; +// txtpnmessages.setContentType("text/html"); +// boolean avertissement = false; +// if(settingCSV.getAttributs().get("email")!=null) { +// email = settingCSV.getAttributs().get("email"); +// } +// if(settingCSV.getAttributs().get("name")!=null) { +// name = settingCSV.getAttributs().get("name"); +// } +// if(settingCSV.getAttributs().get("firstname")!=null) { +// firstname = settingCSV.getAttributs().get("firstname"); +// } +// if(settingCSV.getAttributs().get("id")!=null) { +// id = settingCSV.getAttributs().get("id"); +// } +// if(commandes.nodeCSV.getNodes().get(0).getAttributs().get(firstname)==null) { +// txtpnmessages.setText("

*** AVERTISSEMENT - Il n'y a pas le champ " + firstname + " dans le fichier CSV. ***

"); +// avertissement=true; +// } +// if(commandes.nodeCSV.getNodes().get(0).getAttributs().get(name)==null) { +// txtpnmessages.setText("

*** AVERTISSEMENT - Il n'y a pas le champ " + name + " dans le fichier CSV. ***

"); +// avertissement=true; +// } +// if(commandes.nodeCSV.getNodes().get(0).getAttributs().get(id)==null) { +// txtpnmessages.setText("

*** AVERTISSEMENT - Il n'y a pas le champ " + id + " dans le fichier CSV. ***

"); +// avertissement=true; +// } +// if(commandes.nodeCSV.getNodes().get(0).getAttributs().get(email)==null) { +// txtpnmessages.setText("

*** AVERTISSEMENT - Il n'y a pas le champ " + email + " dans le fichier CSV. ***

"); +// avertissement=true; +// } +// if(!avertissement) { +// txtpnmessages.setText("

*** Le fichier CSV contenant la liste des étudiants peut être utilisé avec les paramètres du fichier d'analyse ***

"); +// } +// }else { +// txtpnmessages.setText("

*** Le fichier CSV contenant la liste des étudiants est vide ***

"); +// } +// }else { +// txtpnmessages.setText("

*** Veuillez charger un fichier CSV contenant la liste des étudiants ***

"); +// new msgBox("Le fichier CSV contenant la liste des étudiants n'est pas chargé.",true,false,"Avertissement"); +// } +// }else { +// txtpnmessages.setText("

*** Veuillez charger une évaluation ***

"); +// new msgBox("Le fichier d'analyse n'est pas valide.",true,false,"Avertissement"); +// } +// } +// }; + + /** - * Information sur le fichier d'analyse + * Information sur le fichier d'analyse.
*/ private AbstractAction actAboutFichierAnalyse = new AbstractAction() { @@ -615,138 +1011,72 @@ public class evaluate extends JFrame { } @Override public void actionPerformed( ActionEvent e ) { - if(calc.commandes.fichierAnalyseValide) { + if(commandes.fichierAnalyseValide) { txtpnmessages.afficheChargementFichierAnalyse(); }else { txtpnmessages.setText(baliseStyle.balise() + "

*** Veuillez charger une évaluation ***


"); } - - - System.out.println( "Refresh Labels and texts" ); + } }; - /** - * Quitter l'application - */ - private AbstractAction actExit = new AbstractAction() { - - private static final long serialVersionUID = 1L; - - { - putValue( Action.NAME, "Quitter" ); - putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/exitmini.png"))); - putValue( Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/exit.png")) ); - putValue( Action.MNEMONIC_KEY, KeyEvent.VK_Q ); - putValue( Action.SHORT_DESCRIPTION, "Quitter (CRTL+Q)" ); - putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.CTRL_DOWN_MASK ) ); - } - - @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) { - dispose(); - } - } - }; - /** - * Enregistre L'évaluation - */ - private AbstractAction actSave = new AbstractAction() { - - private static final long serialVersionUID = 1L; - - { - putValue( Action.NAME, "Enregistrer la zone de texte" ); - putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/savemini.png"))); - putValue( Action.MNEMONIC_KEY, KeyEvent.VK_S ); - putValue( Action.SHORT_DESCRIPTION, "Enregistrer la zone de texte (CRTL+S)" ); - putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_DOWN_MASK ) ); - } - - @Override public void actionPerformed( ActionEvent e ) { - - - - } - }; + + /** + * + */ - /** - * Enregistre sous l'évaluation - */ - private AbstractAction actSaveas = new AbstractAction() { + @SuppressWarnings("unused") + private AbstractAction actSavePreference = new AbstractAction() { private static final long serialVersionUID = 1L; { - putValue( Action.NAME, "Enregistrer la zone de texte sous ..." ); - putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/saveasmini.png"))); - putValue( Action.SHORT_DESCRIPTION, "Enregistrer la zone de texte sous ..." ); + putValue( Action.NAME, "Enregistrer prefrences" ); + putValue( Action.SMALL_ICON, new ImageIcon(create.class.getResource("/resources/savepreferencemini.png")) ); + putValue( Action.LARGE_ICON_KEY, new ImageIcon(create.class.getResource("/resources/savepreference.png")) ); + putValue( Action.MNEMONIC_KEY, KeyEvent.VK_W ); + putValue( Action.SHORT_DESCRIPTION, "Enregistrer prefrences" ); + putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_W, KeyEvent.ALT_DOWN_MASK) ); } @Override public void actionPerformed( ActionEvent e ) { - - - + if(commandes.fichierAnalyseValide) { + + }else { + JOptionPane.showMessageDialog(null, "Charger un fichier Writer (.odt) ou un fichier d'évaluaton (.xml)."); + } + System.out.println( "Configuration" ); } }; /** - * + + * Affiche le code XMl du fichier d'analyse */ - @SuppressWarnings("unused") - private AbstractAction actSavePreference = new AbstractAction() { + private AbstractAction actCodeFichierAnalyse = new AbstractAction() { private static final long serialVersionUID = 1L; { - putValue( Action.NAME, "Enregistrer prefrences" ); - putValue( Action.SMALL_ICON, new ImageIcon(create.class.getResource("/resources/savepreferencemini.png")) ); - putValue( Action.LARGE_ICON_KEY, new ImageIcon(create.class.getResource("/resources/savepreference.png")) ); - putValue( Action.MNEMONIC_KEY, KeyEvent.VK_W ); - putValue( Action.SHORT_DESCRIPTION, "Enregistrer prefrences" ); - putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_W, KeyEvent.ALT_DOWN_MASK) ); + putValue( Action.NAME, "Affiche le code XML" ); + putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyseInfomini.png")) ); + putValue( Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyseInfo.png")) ); + putValue( Action.MNEMONIC_KEY, KeyEvent.VK_J ); + putValue( Action.SHORT_DESCRIPTION, "Affiche le code XML (CTRL+J)" ); + putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_J, InputEvent.CTRL_DOWN_MASK) ); } @Override public void actionPerformed( ActionEvent e ) { - if(calc.commandes.fichierAnalyseValide) { - - }else { - JOptionPane.showMessageDialog(null, "Charger un fichier Writer (.odt) ou un fichier d'évaluaton (.xml)."); - } - System.out.println( "Configuration" ); + txtpnmessages.setContentType("text/plain"); + if(commandes.fichierAnalyseValide) { + txtpnmessages.setText(commandes.sujet.ecritureXML().toString()); + }else { + txtpnmessages.setText("*** Veuillez charger une évaluation ***"); + } + System.out.println( "Affiche le code XML du fichier d'analyse." ); } }; - - - - /** - * Affiche les tutoriels sur Youtube - */ - private AbstractAction actTutoriels = new AbstractAction() { - - private static final long serialVersionUID = 1L; - - { - putValue( Action.NAME, "Tutoriels" ); - putValue( Action.SMALL_ICON, new ImageIcon(create.class.getResource("/resources/tutorielmini.png"))); - putValue(Action.LARGE_ICON_KEY, new ImageIcon(create.class.getResource("/resources/tutoriel.png"))); - putValue( Action.SHORT_DESCRIPTION, "Tutoriels" ); - } - - @Override public void actionPerformed( ActionEvent e ) { - try { - String url = "https://www.youtube.com/channel/UCG3tJWp_oZvOumH5kWUJ55g"; - java.awt.Desktop.getDesktop().browse(java.net.URI.create(url)); - } - catch (java.io.IOException e1) { - System.out.println(e1.getMessage()); - } - } - }; - - - /** @@ -767,45 +1097,193 @@ public class evaluate extends JFrame { @Override public void actionPerformed( ActionEvent e ) { create.getInstance(); - dispose(); + evaluate.getInstance().dispose(); + evaluate.isDispose=true; } }; - + +// /** +// * Charge la liste des étudiants à partir d'un fichier CSV
+// * Et le converti sous la forme d'un node (pour fichier XML). +// */ +// private AbstractAction actChargeListeEtudiantCSV = new AbstractAction() { +// +// private static final long serialVersionUID = 1L; +// +// { +// putValue( Action.NAME, "Ajoute une liste ou des étudiants à une liste" ); +// putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/fichierCSVmini.png")) ); +// putValue( Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichierCSV.png")) ); +// putValue( Action.MNEMONIC_KEY, KeyEvent.VK_L ); +// putValue( Action.SHORT_DESCRIPTION, "Ajoute une liste ou des étudiants à une liste (CTRL+L)" ); +// putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_L, InputEvent.CTRL_DOWN_MASK) ); +// } +// +// @Override public void actionPerformed( ActionEvent e ) { +// +// int nbrStudent = 0; +// if(commandes.nodeCSV==null) { +// commandes.nodeCSV = new node("fileCSV"); +// nbrStudent=0; +// }else { +// if(commandes.nodeCSV.getNomElt()==null) commandes.nodeCSV.setNomElt("fileCSV"); +// if(commandes.nodeCSV.getNomElt().isBlank()) commandes.nodeCSV.setNomElt("fileCSV"); +// nbrStudent = commandes.nodeCSV.getNbrEnfants(); +// } +// +// // Chargement du fichier CSV +// String nameListStudent = CustomInputDialogListeEtudiant.showCustominputDialog(); +// +// if(nameListStudent.equals("Code_Annule")) return; +// +// if(commandes.nodeCSV.getNbrEnfants()==nbrStudent) { +// txtpnmessages.setContentType("text/html"); +// txtpnmessages.setText("

*** Aucun nouveau étudiant a été ajouté à la liste "+ nameListStudent +"***

" +// + "

Le nombre d'étudiant dans la liste est de "+ String.valueOf(nbrStudent) +"

"); +// }else { +// if(commandes.fourniCSV) { +// txtpnmessages.setContentType("text/html"); +// txtpnmessages.setText(baliseStyle.balise() + meptl.afficheNodeCSV().toString()); +// System.out.println( "Affiche la liste des étudiants déjà en mémoire." ); +// }else { +// txtpnmessages.setContentType("text/html"); +// txtpnmessages.setText("

*** Veuillez sélectionner un fichier CSV contenant la liste des étudiants. ***

"); +// } +// } +// System.out.println( "Charge la liste des étudiants." ); +// +// +// if(commandes.fourniCSV) { +// if(commandes.nodeCSV.getAttributs().get("nameListStudent")==null) { +// commandes.nodeCSV.getAttributs().put("nameListStudent","?"); +// commandes.nodeCSV.getAttributs().put("year", "?"); +// } +// lblListe.setBackground(new Color(40,180,40)); +// lblListe.setText("Liste des étudiants : " + commandes.nodeCSV.getAttributs().get("nameListStudent")); +// lblListe.setOpaque(true); +// }else { +// lblListe.setOpaque(false); +// lblListe.setText("Pas de liste des étudiants"); +// } +// } +// }; -// /** -// * Permet l'évaluation des fichiers des étudaints. -// * @throws ParserConfigurationException -// * @throws SAXException -// * @throws IOException -// * @throws CloneNotSupportedException -// */ -// private void evaluerLesFichiersEtudiants() throws ParserConfigurationException, SAXException, IOException, CloneNotSupportedException { -// -// calc.commandes.analyse=true; -// progressBarre.setVisible(true); -// -// if(chckbxfichiersEtudaints.isSelected()) calc.commandes.fichierStudentMoodle=true; -// if(chckbxZipfeedback.isSelected()) calc.commandes.zipfeedback=true; -// if(chckbxnoFeedback.isSelected()) calc.commandes.sansFeeback=true; -// if(chckbxNoNote.isSelected()) calc.commandes.noNote=true; -// if(chckCSVNotes.isSelected()) calc.commandes.ecritNoteCSV=true; -// if(chckbxNewLogo.isSelected()) calc.commandes.newLogo=true; -// if(chckbxNoLogo.isSelected()) calc.commandes.noLogo = true; -// if(chckbxVerif.isSelected()) calc.commandes.verifHisto2 = true; -// -// meptl.analyseVerifieHistoriqueLesFichiersEtudiantsEtExportNoteCSV(); -// -// txtpnmessages.setText(calc.commandes.message.toString()); -// -// -// } - - - +// /** +// * Supprime la liste des étudiants sous la forme d'un fichier XML. +// */ +// private AbstractAction actDeleteListeEtudiantCSV = new AbstractAction() { +// +// private static final long serialVersionUID = 1L; +// +// { +// putValue( Action.NAME, "Supprime la liste des étudiants" ); +// putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/fichierCSV_deletemini.png")) ); +// putValue( Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichierCSV_delete.png")) ); +// putValue( Action.MNEMONIC_KEY, KeyEvent.VK_L ); +// putValue( Action.SHORT_DESCRIPTION, "Supprime la liste des étudiants" ); +// } +// +// @Override public void actionPerformed( ActionEvent e ) { +// +// if(JOptionPane.showConfirmDialog(null,"Voulez-vous supprimer la liste des étudiant ?", "Supprimer", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION) { +// commandes.nodeCSV = meptl.supprimeFichierCSV(); +// commandes.fourniCSV=false; +// txtpnmessages.setContentType("text/html"); +// txtpnmessages.setText("

***Suppression de la liste des étudiants ***

"); +// System.out.println( "Suppression de la liste des étudiants." ); +// lblListe.setOpaque(false); +// lblListe.setText("Pas de liste des étudiants"); +// } +// +// } +// }; + + +// /** +// * Supprime la liste des étudiants sous la forme d'un fichier XML. +// */ +// private AbstractAction actModificationListeEtudiantCSV = new AbstractAction() { +// +// private static final long serialVersionUID = 1L; +// +// { +// putValue( Action.NAME, "Modification de la liste des étudiants" ); +// putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/fichier_csv_studen_modifmini.png")) ); +// putValue( Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichier_csv_studen_modif.png")) ); +// putValue( Action.MNEMONIC_KEY, KeyEvent.VK_L ); +// putValue( Action.SHORT_DESCRIPTION, "Modification de la liste des étudiants" ); +// } +// +// @Override public void actionPerformed( ActionEvent e ) { +// +// txtpnmessages.setContentType("text/html"); +// if(commandes.fourniCSV) { +// node nodImportCSV = commandes.sujet.retourneFirstEnfantsByName("import_moodle"); +// String name = nodImportCSV.getAttributs().get("name"); +// String email = nodImportCSV.getAttributs().get("email"); +// String firstname = nodImportCSV.getAttributs().get("firstname"); +// String id = nodImportCSV.getAttributs().get("id"); +// +// String numStudent = JOptionPane.showInputDialog("

Quel est le numéro de l'étudiant ?

"); +// node nodeStudent = commandes.nodeCSV.retourneFirstNodeByNameAndAttributValueExactStrict("student", id, numStudent); +// +// if(nodeStudent!=null) { +// txtpnmessages.setText("

Etudiant trouvé


Nom : "+ nodeStudent.getAttributs().get(name) +"

" +// + "

Prenom : "+nodeStudent.getAttributs().get(firstname)+"

" +// + "

Email : " + nodeStudent.getAttributs().get(email) +"

" +// + "

Numéro étudiant : "+ nodeStudent.getAttributs().get(id) +"

"); +// +// new modifStudent(nodeStudent, nodImportCSV).setVisible(true); +// +// System.out.println( "etudiant trouvé." ); +// }else { +// txtpnmessages.setText("

*** L'étudiant n'a pas été trouvé. ***"); +// } +// }else { +// txtpnmessages.setText("

*** Veuillez charger une liste d'étudiant à partir d'un fichier au format CSV. ***"); +// } +// } +// +// }; + + + + /** + * Affiche le code XMl du fichier d'analyse + */ + private AbstractAction actAfficheListeEtudiant = new AbstractAction() { + private static final long serialVersionUID = 1L; + + { + putValue( Action.NAME, "Affiche la liste des étudiants" ); + putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/fichierCSVInfomini.png")) ); + putValue( Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichierCSVInfo.png")) ); + putValue( Action.MNEMONIC_KEY, KeyEvent.VK_L ); + putValue( Action.SHORT_DESCRIPTION, "Affiche la liste des étudiants (ALT+L)" ); + putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_L, InputEvent.ALT_DOWN_MASK) ); + } + + @Override public void actionPerformed( ActionEvent e ) { + if(commandes.nodeCSV!=null) { + if(commandes.nodeCSV.getAttributs().get("nameListStudent")!=null) { + txtpnmessages.setContentType("text/html"); +// txtpnmessages.setText(baliseStyle.balise() + meptl.afficheNodeCSV().toString()); + }else { + txtpnmessages.setContentType("text/html"); + txtpnmessages.setText("

*** Veuillez sélectionner une liste d'étudiants dans la base. ***

"); + } + }else { + txtpnmessages.setContentType("text/html"); + txtpnmessages.setText("

*** Veuillez sélectionner une liste d'étudiants dans la base. ***

"); + } + } + }; + + } diff --git a/src/fenetres/evaluate2.java b/src/fenetres/evaluate2.java new file mode 100644 index 0000000..1109d21 --- /dev/null +++ b/src/fenetres/evaluate2.java @@ -0,0 +1,815 @@ +package fenetres; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.InputEvent; +import java.awt.event.KeyEvent; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JFileChooser; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollBar; +import javax.swing.JScrollPane; +import javax.swing.JToolBar; +import javax.swing.KeyStroke; +import javax.swing.SwingConstants; +import javax.swing.SwingUtilities; +import javax.swing.border.EmptyBorder; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + +import actions.actAbout; +import net.miginfocom.swing.MigLayout; +import calc.*; + + +public class evaluate2 extends JFrame { + + /** + * + */ + private static final long serialVersionUID = 1L; + + + /** + * + */ + private JToolBar toolBar; + private JPanel contentPane; + private static JLabel lblPath; + private static JLabel lblFileAnalyse; + private static JLabel lblListe; + private static JLabel lblFichierCSV; + private static JLabel lblFichierSVG; + private static JLabel lblImageDossierEtudiant; + private static JLabel lblNoFeedBack; + private static JLabel lblNoDeatail; + private static JLabel lblnonote; + private static JLabel lblnozip; + private static JLabel lblVerifHistorique; + private static JLabel lblCsvNote; + private static JLabel lblNameEvaluation; + private static JCheckBox chckbxfichiersEtudiants; + private static JCheckBox chckbxZipfeedback; + private static JCheckBox chckbxnoFeedback; + private static JCheckBox chckbxNoNote; + private static JCheckBox chckCSVNotes; + private static JCheckBox chckbxVerif; +// private static JCheckBox chckbxNoDetail; + private static JCheckBox chckPasDeProgression ; + private static afficheText txtpnmessages; + private static evaluate instance; + private static JScrollPane scrollPane = new JScrollPane(); + private static JScrollBar verticalScrollBar = scrollPane.getVerticalScrollBar(); + public static boolean isDispose = true; + + /** + * Create the frame. + */ + public evaluate2() { + + ImageIcon img = new ImageIcon(mainApp.class.getResource("/resources/evalcalc.png")); + this.setIconImage(img.getImage()); + setTitle(calc.commandes.Titre + " - " + calc.commandes.version + " " + calc.commandes.branch); + + setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); + setBounds(100, 100, 980, 700); + int screenWidth = (int) java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getWidth(); + int screenHeight = (int) java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getHeight(); + setLocation(( (screenWidth) - getWidth()) / 2, (screenHeight - getHeight()) / 2); + + createMenu(); + createToolBar(); + + contentPane = new JPanel(); + contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); + setContentPane(contentPane); + contentPane.setLayout(new BorderLayout(0, 0)); + + + contentPane.add(toolBar, BorderLayout.NORTH); + + JPanel panelWest = new JPanel(); + contentPane.add(panelWest, BorderLayout.WEST); + panelWest.setLayout(new MigLayout("", "[309px][]", "[38.00][71px][71px][][71px][][74.00][][]")); + + JLabel lblTITRE = new JLabel("PARAMETRES"); + lblTITRE.setForeground(Color.RED); + lblTITRE.setFont(new Font("Tahoma", Font.BOLD, 16)); + lblTITRE.setHorizontalAlignment(SwingConstants.CENTER); + panelWest.add(lblTITRE, "cell 0 0,alignx left,aligny center"); + + lblFileAnalyse = new JLabel("Fichier de l'analyse : "); + lblFileAnalyse.setHorizontalAlignment(SwingConstants.LEFT); + lblFileAnalyse.setFont(new Font("Tahoma", Font.BOLD, 14)); + panelWest.add(lblFileAnalyse, "flowy,cell 0 1,alignx left,growy"); + + chckbxfichiersEtudiants = new JCheckBox("Les fichiers ne sont pas dans des dossiers nominatifs"); + chckbxfichiersEtudiants.addChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + if(chckbxfichiersEtudiants.isSelected()) { + calc.commandes.fichierStudentMoodle=true; + }else { + calc.commandes.fichierStudentMoodle=false; + } + } + }); + chckbxfichiersEtudiants.setFont(new Font("Tahoma", Font.PLAIN, 12)); + chckbxfichiersEtudiants.setToolTipText("Cochez si les fichiers des étudiants ne sont pas dans des dossier nominatifs"); + panelWest.add(chckbxfichiersEtudiants, "flowy,cell 0 2,grow"); + + lblFichierCSV = new JLabel("Fichier CSV liste des étudiants :"); + lblFichierCSV.setFont(new Font("Tahoma", Font.BOLD, 14)); + panelWest.add(lblFichierCSV, "flowy,cell 0 4,grow"); + + lblFichierSVG = new JLabel("Fichier SVG :"); + lblFichierSVG.setFont(new Font("Tahoma", Font.BOLD, 14)); + panelWest.add(lblFichierSVG, "flowy,cell 0 6,growx"); + + chckCSVNotes = new JCheckBox("Créer un fichier CSV des notes"); + chckCSVNotes.addChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + if(chckCSVNotes.isSelected()) { + calc.commandes.ecritNoteCSV=true; + }else { + calc.commandes.ecritNoteCSV=false; + } + } + }); + chckCSVNotes.setToolTipText("Cochez si vous voulez importer les notes dans un fichier CSV."); + panelWest.add(chckCSVNotes, "cell 0 4,grow"); + + lblPath = new JLabel(); + lblPath.setHorizontalAlignment(SwingConstants.LEFT); + lblPath.setFont(new Font("Tahoma", Font.BOLD, 14)); + lblPath.setText("Dossier de l'analyse : " + calc.commandes.path.substring(calc.commandes.path.lastIndexOf("\\")+1,calc.commandes.path.length()) + ""); + panelWest.add(lblPath, "cell 0 1,grow"); + + chckbxnoFeedback = new JCheckBox("Pas de feedback"); + chckbxnoFeedback.addChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + if(chckbxnoFeedback.isSelected()) { + calc.commandes.sansFeeback=true; + }else { + calc.commandes.sansFeeback=false; + } + } + }); + chckbxnoFeedback.setToolTipText("Cochez si vous ne voulez pas générer des feedbacks"); + chckbxnoFeedback.setFont(new Font("Tahoma", Font.PLAIN, 12)); + panelWest.add(chckbxnoFeedback, "cell 0 2,grow"); + + chckbxZipfeedback = new JCheckBox("Zip les feedbacks"); + chckbxZipfeedback.addChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + if(chckbxZipfeedback.isSelected()) { + calc.commandes.zipfeedback=true; + }else { + calc.commandes.zipfeedback=false; + } + } + }); + chckbxZipfeedback.setToolTipText("Cochez si vous voulez placer tous les feedbacks dans une archive ZIP"); + chckbxZipfeedback.setFont(new Font("Tahoma", Font.PLAIN, 12)); + panelWest.add(chckbxZipfeedback, "cell 0 2,grow"); + + chckbxNoNote = new JCheckBox("Pas de note dans les feedbacks"); + chckbxNoNote.addChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + if(chckbxNoNote.isSelected()) { + calc.commandes.noNote=true; + }else { + calc.commandes.noNote=false; + } + } + }); + chckbxNoNote.setToolTipText("Cochez si vous voulez pas faire apparaître les notes dans les feedbacks"); + chckbxNoNote.setFont(new Font("Tahoma", Font.PLAIN, 12)); + panelWest.add(chckbxNoNote, "cell 0 2,grow"); + + chckbxVerif = new JCheckBox("Vérification des historiques avant analyse"); + chckbxVerif.addChangeListener(new ChangeListener() { + public void stateChanged(ChangeEvent e) { + if(chckbxVerif.isSelected()) { + calc.commandes.verifHisto2=true; + }else { + calc.commandes.verifHisto2=false; + } + } + }); + chckbxVerif.setToolTipText("Cochez si vous voulez vérifier les échanges de fichiers entre les étudiants."); + chckbxVerif.setFont(new Font("Tahoma", Font.PLAIN, 12)); + panelWest.add(chckbxVerif, "cell 0 2,grow"); + + + + JPanel panelCentre = new JPanel(); + contentPane.add(panelCentre, BorderLayout.CENTER); + panelCentre.setLayout(new BorderLayout(0, 0)); + + JScrollPane scrollPane = new JScrollPane(); + panelCentre.add(scrollPane); + + + txtpnmessages = new afficheText(); + txtpnmessages.setFont(new Font("Tahoma", Font.PLAIN, 16)); + txtpnmessages.setContentType("text/html"); + txtpnmessages.setText(baliseStyle.balise() + "

*** Charger un fichier d'analyse. ***


"); + scrollPane.setViewportView(txtpnmessages); + + this.setExtendedState(MAXIMIZED_BOTH); + + + + ListenerAction(); + + refreshLabel(); + setVisible(true); +// Pro(); + + } + + + /** + * Affichage de la fenêtre. + * @return + */ + public static evaluate getInstance() { + if (instance == null) { + instance = new evaluate(); + }else { + instance.setVisible(true); + } + + if(commandes.fichierAnalyseValide) { + refreshLabel(); + }else { + txtpnmessages.setText(baliseStyle.balise() + "

*** Veuillez charger une évaluation ***


"); + } + positionScrollDebut(); + isDispose=false; + return instance; + } + + + public static void positionScrollDebut() { + // Positionne le curseur au début du texte pour que le JScrollPane affiche le haut + SwingUtilities.invokeLater(() -> { + txtpnmessages.setCaretPosition(0); + verticalScrollBar.setValue(verticalScrollBar.getMinimum()); + }); + } + + + private void ListenerAction() { + + /*Some piece of code*/ + 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(); + } + } + }); + } + + + + + private void createMenu() { + JMenuBar menuBar = new JMenuBar(); + menuBar.setFont(new Font("Segoe UI", Font.BOLD, 14)); + setJMenuBar(menuBar); + + JMenu mnNewMenu = new JMenu("Fichier"); + mnNewMenu.setMnemonic( 'F' ); + menuBar.add(mnNewMenu); + mnNewMenu.add( actSave ); + mnNewMenu.add( actSaveas ); + mnNewMenu.addSeparator(); + mnNewMenu.add( actExit ); + + + JMenu mnMenu_Fichier = new JMenu("Fichier d'analyse"); + menuBar.add(mnMenu_Fichier); + mnMenu_Fichier.add( actOpen ); + mnMenu_Fichier.addSeparator(); + mnMenu_Fichier.add( actAboutFichierAnalyse ); + + mnMenu_Fichier.add( actModifierFichierAnalyse ); + + JMenu mnMenu_Liste_Etudiant = new JMenu("Liste des étudiants"); + menuBar.add(mnMenu_Liste_Etudiant); + + mnMenu_Liste_Etudiant.addSeparator(); + + + + JMenu mnMenu_Logo = new JMenu("Logo"); + menuBar.add(mnMenu_Logo); + + + JMenu mnMenu_Evaluation = new JMenu("Evaluation des étudiants"); + menuBar.add(mnMenu_Evaluation); + mnMenu_Evaluation.add(actSelectFolder); + mnMenu_Evaluation.addSeparator(); + mnMenu_Evaluation.add(actEvaluate); + mnMenu_Evaluation.addSeparator(); + mnMenu_Evaluation.add(actVerifHistorique); + + JMenu mnMenu_Informations = new JMenu("Informations"); + menuBar.add(mnMenu_Informations); + mnMenu_Informations.add(actTutoriels); + mnMenu_Informations.addSeparator(); + mnMenu_Informations.add( new actAbout() ); + } + + + + private void createToolBar() { + toolBar = new JToolBar(); + JButton btnSelectFileAnalyse = toolBar.add( actOpen ); + btnSelectFileAnalyse.setHideActionText( true ); + btnSelectFileAnalyse.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyse.png"))); + + + JButton btnAfficheCodeFichierAnalyse = toolBar.add( actAboutFichierAnalyse ); + btnAfficheCodeFichierAnalyse.setHideActionText(true); + btnAfficheCodeFichierAnalyse.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyseInfo.png"))); + toolBar.add(btnAfficheCodeFichierAnalyse); + + JButton btnModifierFichierAnalyse = toolBar.add(actModifierFichierAnalyse); + btnModifierFichierAnalyse.setIcon(new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyseModif.png"))); + btnModifierFichierAnalyse.setHideActionText(true); + toolBar.add(btnModifierFichierAnalyse); + + toolBar.addSeparator(); + + JButton btnEvaluerLesFichiers = toolBar.add(actEvaluate); + btnEvaluerLesFichiers.setHideActionText(true); + + + + toolBar.addSeparator(); + + + + toolBar.addSeparator(); + + JButton btnSelectFolder = toolBar.add(actSelectFolder); + btnSelectFolder.setIcon(new ImageIcon(evaluate.class.getResource("/resources/open.png"))); + btnSelectFolder.setHideActionText(true); + toolBar.add(btnSelectFolder); + + btnEvaluerLesFichiers.setIcon(new ImageIcon(evaluate.class.getResource("/resources/evaluate.png"))); + toolBar.add(btnEvaluerLesFichiers); + + JButton btnVerifHistorique = toolBar.add(actVerifHistorique); + btnVerifHistorique.setIcon(new ImageIcon(evaluate.class.getResource("/resources/verifhistorique.png"))); + btnVerifHistorique.setHideActionText(true); + toolBar.add(btnVerifHistorique); + + toolBar.addSeparator(); + + JButton btnAbout = toolBar.add(new actAbout()); + btnAbout.setIcon(new ImageIcon(evaluate.class.getResource("/resources/apropos.png"))); + btnAbout.setHideActionText(true); + toolBar.add(btnAbout); + + JButton btnTutoriels = toolBar.add(actTutoriels); + btnTutoriels.setIcon(new ImageIcon(evaluate.class.getResource("/resources/tutoriel.png"))); + toolBar.add(btnTutoriels); + + toolBar.addSeparator(); + + JButton btnExit = toolBar.add(actExit); + btnExit.setIcon(new ImageIcon(evaluate.class.getResource("/resources/exit.png"))); + btnExit.setHideActionText(true); + toolBar.add(btnExit); + } + + + + + + /** + * Raffraichissement des informationss.
+ * Activation des chckBoxs.
+ */ + private static void refreshLabel() { + if(!commandes.fichierAnalyseValide) { + System.out.println( "Erreur du fichier d'analyse" ); +// if(!verificationFichierAnalyse_node_commandesSujet.messageErreur.toString().isEmpty()) { +// txtpnmessages.setText(verificationFichierAnalyse_node_commandesSujet.messageErreur.toString()); +// } + chckbxfichiersEtudiants.setEnabled(false); + chckbxZipfeedback.setEnabled(false); + chckbxnoFeedback.setEnabled(false); + chckbxNoNote.setEnabled(false); + chckCSVNotes.setEnabled(false); + chckbxVerif.setEnabled(false); +// chckbxNoDetail.setEnabled(false); + chckPasDeProgression.setEnabled(false); + }else { + chckbxfichiersEtudiants.setSelected(commandes.fichierStudentMoodle); + chckbxZipfeedback.setSelected(commandes.zipfeedback); + chckbxnoFeedback.setSelected(commandes.sansFeeback); + chckCSVNotes.setSelected(commandes.ecritNoteCSV); + chckbxNoNote.setSelected(commandes.noNote); + chckbxVerif.setSelected(commandes.verifHisto2); +// chckbxNoDetail.setSelected(commandes.noDetail); + chckPasDeProgression.setSelected(commandes.noAfficheProgression); + chckbxfichiersEtudiants.setEnabled(true); + chckbxZipfeedback.setEnabled(true); + chckbxnoFeedback.setEnabled(true); + chckbxNoNote.setEnabled(true); + chckCSVNotes.setEnabled(true); + chckbxVerif.setEnabled(true); +// chckbxNoDetail.setEnabled(true); + chckPasDeProgression.setEnabled(true); + + if(commandes.nodeCSV!=null) { + if(commandes.nodeCSV.getAttributs().get("nameListStudent")==null) { + commandes.nodeCSV.getAttributs().put("nameListStudent","?"); + commandes.nodeCSV.getAttributs().put("year", "?"); + lblListe.setText("Liste ???"); + }else { + lblListe.setText(""+commandes.nodeCSV.getAttributs().get("nameListStudent")+""); + } + }else { + lblListe.setText("Liste ???"); + } + + txtpnmessages.afficheChargementFichierAnalyse(); + } + + String nameEvaluation = commandes.NameEvaluationCharger; + if(nameEvaluation.length()>44) nameEvaluation = nameEvaluation.substring(0, 44) + "
" + nameEvaluation.substring(44, nameEvaluation.length()); + + String nameDossierAnalyse = commandes.path.substring(commandes.path.lastIndexOf("\\")+1,commandes.path.length()); + if(nameDossierAnalyse.length()>44) nameDossierAnalyse = nameDossierAnalyse.substring(0, 44) + "
" + nameDossierAnalyse.substring(44, nameDossierAnalyse.length()); + + String nameFichierAnalyse = commandes.analysis_filename; + if(nameFichierAnalyse.length()>44) nameFichierAnalyse = nameFichierAnalyse.substring(0, 44) + "
" + nameFichierAnalyse.substring(44, nameFichierAnalyse.length()); + + if(commandes.NameEvaluationCharger!=null) lblNameEvaluation.setText("Évalution :
"+ nameEvaluation +""); + if(commandes.path!=null) lblPath.setText("

Dossier de l'analyse :
" + nameDossierAnalyse + "


"); + if(commandes.analysis_filename!=null) lblFileAnalyse.setText("Fichier de l'analyse :
" + nameFichierAnalyse + ""); + + } + + + + + public static void ferme() { + if(!isDispose) { + isDispose=true; + instance.dispose(); + } + } + + + /** + * + * evaluer l'ensemble des fichiers des étudiants + */ + private AbstractAction actEvaluate = new AbstractAction() { + + private static final long serialVersionUID = 1L; + + { + putValue(Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/evaluate.png"))); + putValue( Action.NAME, "Evaluer les fichiers" ); + putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/evaluatemini.png")) ); + putValue( Action.MNEMONIC_KEY, KeyEvent.VK_E ); + putValue( Action.SHORT_DESCRIPTION, "Evaluer les fichiers (CTRL+E)" ); + putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_DOWN_MASK) ); + } + + @Override + public void actionPerformed(ActionEvent e) { +// Thread t2 = new Thread(new evaluerLesFichiersEtudiants(txtpnmessages)); +// t2.start(); + } + }; + + + /** + * Ouvre et affiche un fichier XML + */ + private AbstractAction actOpen = new AbstractAction() { + + private static final long serialVersionUID = 1L; + + { + putValue(LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyse.png"))); + putValue( Action.NAME, "Ouvrir un nouveau fichier d'analyse" ); + putValue( Action.SMALL_ICON, new ImageIcon(create.class.getResource("/resources/fichierAnalysemini.png")) ); + putValue( Action.MNEMONIC_KEY, KeyEvent.VK_O ); + putValue( Action.SHORT_DESCRIPTION, "Ouvrir un nouveau fichier d'analyse (CTRL+O)" ); + putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_DOWN_MASK) ); + } + + @Override + public void actionPerformed( ActionEvent e ) { + new filechooserXML(); + refreshLabel(); + System.out.println( "Open" ); + } + }; + + + + + /** + * Sélectionne le dossier courant contenant les fichiers des étudiants + */ + private AbstractAction actSelectFolder = new AbstractAction() { + + private static final long serialVersionUID = 1L; + + { + putValue(LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/open.png"))); + putValue( Action.NAME, "Dossier d'analyse" ); + putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/openmini.png")) ); + putValue( Action.MNEMONIC_KEY, KeyEvent.VK_U ); + putValue( Action.SHORT_DESCRIPTION, "Dossier d'analyse (CTRL+U)" ); + putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_DOWN_MASK) ); + } + + @Override + public void actionPerformed( ActionEvent e ) { + JFileChooser chooser = new JFileChooser(); + + chooser.setCurrentDirectory(new java.io.File(calc.commandes.path)); + chooser.setDialogTitle("Sélectionner le dossier contenant les fichiers des étudiants."); + chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + chooser.setAcceptAllFileFilterUsed(false); + + if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { + System.out.println("getCurrentDirectory(): " + chooser.getCurrentDirectory()); + System.out.println("getSelectedFile() : " + chooser.getSelectedFile().getAbsolutePath()); + calc.commandes.path = chooser.getSelectedFile().getAbsolutePath(); + } else { + System.out.println("No Selection "); + } + + refreshLabel(); + } + }; + + /** + + /** + * Verification + */ + private AbstractAction actVerifHistorique = new AbstractAction() { + + private static final long serialVersionUID = 1L; + { + putValue(Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/verifhistorique.png"))); + putValue( Action.NAME, "Evaluer l'historique des modification" ); + putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/verifhistoriquemini.png"))); + putValue( Action.MNEMONIC_KEY, KeyEvent.VK_H ); + putValue( Action.SHORT_DESCRIPTION, "Evaluer l'historique des modification (CTRL+H)" ); + putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_H, InputEvent.CTRL_DOWN_MASK) ); + } + @Override + public void actionPerformed( ActionEvent e ) { + calc.commandes.verifHisto = true; + calc.commandes.analyse = false; + if(!calc.commandes.path.isEmpty()) { + }else { + txtpnmessages.setText("*** Veuillez sélectionner un dossier d'analyse. ***"); + } + calc.commandes.verifHisto = false; + } + }; + + + /** + * Information sur le fichier d'analyse + */ + private AbstractAction actAboutFichierAnalyse = new AbstractAction() { + + private static final long serialVersionUID = 1L; + + { + putValue( Action.NAME, "Informations du fichier d'analyse" ); + putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyseInfo2mini.png"))); + putValue( Action.MNEMONIC_KEY, KeyEvent.VK_K ); + putValue( Action.SHORT_DESCRIPTION, "Informations du fichier d'analyse (CTRL+K)" ); + putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_K, InputEvent.CTRL_DOWN_MASK) ); + } + + @Override public void actionPerformed( ActionEvent e ) { + if(calc.commandes.fichierAnalyseValide) { + txtpnmessages.afficheChargementFichierAnalyse(); + }else { + txtpnmessages.setText(baliseStyle.balise() + "

*** Veuillez charger une évaluation ***


"); + } + + + System.out.println( "Refresh Labels and texts" ); + } + }; + + /** + * Quitter l'application + */ + private AbstractAction actExit = new AbstractAction() { + + private static final long serialVersionUID = 1L; + + { + putValue( Action.NAME, "Quitter" ); + putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/exitmini.png"))); + putValue( Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/exit.png")) ); + putValue( Action.MNEMONIC_KEY, KeyEvent.VK_Q ); + putValue( Action.SHORT_DESCRIPTION, "Quitter (CRTL+Q)" ); + putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.CTRL_DOWN_MASK ) ); + } + + @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) { + dispose(); + } + } + }; + + /** + * Enregistre L'évaluation + */ + private AbstractAction actSave = new AbstractAction() { + + private static final long serialVersionUID = 1L; + + { + putValue( Action.NAME, "Enregistrer la zone de texte" ); + putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/savemini.png"))); + putValue( Action.MNEMONIC_KEY, KeyEvent.VK_S ); + putValue( Action.SHORT_DESCRIPTION, "Enregistrer la zone de texte (CRTL+S)" ); + putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_DOWN_MASK ) ); + } + + @Override public void actionPerformed( ActionEvent e ) { + + + + } + }; + + /** + * Enregistre sous l'évaluation + */ + private AbstractAction actSaveas = new AbstractAction() { + + private static final long serialVersionUID = 1L; + + { + putValue( Action.NAME, "Enregistrer la zone de texte sous ..." ); + putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/saveasmini.png"))); + putValue( Action.SHORT_DESCRIPTION, "Enregistrer la zone de texte sous ..." ); + } + + @Override public void actionPerformed( ActionEvent e ) { + + + + } + }; + + /** + * + */ + @SuppressWarnings("unused") + private AbstractAction actSavePreference = new AbstractAction() { + + private static final long serialVersionUID = 1L; + + { + putValue( Action.NAME, "Enregistrer prefrences" ); + putValue( Action.SMALL_ICON, new ImageIcon(create.class.getResource("/resources/savepreferencemini.png")) ); + putValue( Action.LARGE_ICON_KEY, new ImageIcon(create.class.getResource("/resources/savepreference.png")) ); + putValue( Action.MNEMONIC_KEY, KeyEvent.VK_W ); + putValue( Action.SHORT_DESCRIPTION, "Enregistrer prefrences" ); + putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_W, KeyEvent.ALT_DOWN_MASK) ); + } + + @Override public void actionPerformed( ActionEvent e ) { + if(calc.commandes.fichierAnalyseValide) { + + }else { + JOptionPane.showMessageDialog(null, "Charger un fichier Writer (.odt) ou un fichier d'évaluaton (.xml)."); + } + System.out.println( "Configuration" ); + } + }; + + + + /** + * Affiche les tutoriels sur Youtube + */ + private AbstractAction actTutoriels = new AbstractAction() { + + private static final long serialVersionUID = 1L; + + { + putValue( Action.NAME, "Tutoriels" ); + putValue( Action.SMALL_ICON, new ImageIcon(create.class.getResource("/resources/tutorielmini.png"))); + putValue(Action.LARGE_ICON_KEY, new ImageIcon(create.class.getResource("/resources/tutoriel.png"))); + putValue( Action.SHORT_DESCRIPTION, "Tutoriels" ); + } + + @Override public void actionPerformed( ActionEvent e ) { + try { + String url = "https://www.youtube.com/channel/UCG3tJWp_oZvOumH5kWUJ55g"; + java.awt.Desktop.getDesktop().browse(java.net.URI.create(url)); + } + catch (java.io.IOException e1) { + System.out.println(e1.getMessage()); + } + } + }; + + + + + + /** + * Affiche le code XMl du fichier d'analyse + */ + private AbstractAction actModifierFichierAnalyse = new AbstractAction() { + + private static final long serialVersionUID = 1L; + + { + putValue( Action.NAME, "Modifier le fichier d'analyse" ); + putValue( Action.SMALL_ICON, new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyseModifmini.png")) ); + putValue(Action.LARGE_ICON_KEY, new ImageIcon(evaluate.class.getResource("/resources/fichierAnalyseModif.png"))); + putValue( Action.MNEMONIC_KEY, KeyEvent.VK_M ); + putValue( Action.SHORT_DESCRIPTION, "Modifier le fichier d'analyse (CTRL+M)" ); + putValue( Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_M, InputEvent.CTRL_DOWN_MASK) ); + } + + @Override public void actionPerformed( ActionEvent e ) { + create.getInstance(); + dispose(); + } + }; + + + + +// /** +// * Permet l'évaluation des fichiers des étudaints. +// * @throws ParserConfigurationException +// * @throws SAXException +// * @throws IOException +// * @throws CloneNotSupportedException +// */ +// private void evaluerLesFichiersEtudiants() throws ParserConfigurationException, SAXException, IOException, CloneNotSupportedException { +// +// calc.commandes.analyse=true; +// progressBarre.setVisible(true); +// +// if(chckbxfichiersEtudaints.isSelected()) calc.commandes.fichierStudentMoodle=true; +// if(chckbxZipfeedback.isSelected()) calc.commandes.zipfeedback=true; +// if(chckbxnoFeedback.isSelected()) calc.commandes.sansFeeback=true; +// if(chckbxNoNote.isSelected()) calc.commandes.noNote=true; +// if(chckCSVNotes.isSelected()) calc.commandes.ecritNoteCSV=true; +// if(chckbxNewLogo.isSelected()) calc.commandes.newLogo=true; +// if(chckbxNoLogo.isSelected()) calc.commandes.noLogo = true; +// if(chckbxVerif.isSelected()) calc.commandes.verifHisto2 = true; +// +// meptl.analyseVerifieHistoriqueLesFichiersEtudiantsEtExportNoteCSV(); +// +// txtpnmessages.setText(calc.commandes.message.toString()); +// +// +// } + + + + + +} + + + + + + diff --git a/src/resources/GPLv3.png b/src/resources/GPLv3.png new file mode 100644 index 0000000..55287db Binary files /dev/null and b/src/resources/GPLv3.png differ diff --git a/src/resources/GPLv3mini.png b/src/resources/GPLv3mini.png new file mode 100644 index 0000000..bd974ed Binary files /dev/null and b/src/resources/GPLv3mini.png differ diff --git a/src/resources/accueil evaluation.png b/src/resources/accueil evaluation.png new file mode 100644 index 0000000..bf4af2d Binary files /dev/null and b/src/resources/accueil evaluation.png differ diff --git a/src/resources/afficheprogression.png b/src/resources/afficheprogression.png new file mode 100644 index 0000000..9bead26 Binary files /dev/null and b/src/resources/afficheprogression.png differ diff --git a/src/resources/afficheprogressionmini.png b/src/resources/afficheprogressionmini.png new file mode 100644 index 0000000..5af460f Binary files /dev/null and b/src/resources/afficheprogressionmini.png differ diff --git a/src/resources/baselisteetudiant.png b/src/resources/baselisteetudiant.png new file mode 100644 index 0000000..0d28ef8 Binary files /dev/null and b/src/resources/baselisteetudiant.png differ diff --git a/src/resources/baselisteetudiantmini.png b/src/resources/baselisteetudiantmini.png new file mode 100644 index 0000000..e3f849e Binary files /dev/null and b/src/resources/baselisteetudiantmini.png differ diff --git a/src/resources/defautBaseEvaluation.png b/src/resources/defautBaseEvaluation.png new file mode 100644 index 0000000..3275d1c Binary files /dev/null and b/src/resources/defautBaseEvaluation.png differ diff --git a/src/resources/detailfeedback.png b/src/resources/detailfeedback.png new file mode 100644 index 0000000..d3a1108 Binary files /dev/null and b/src/resources/detailfeedback.png differ diff --git a/src/resources/detailfeedbackmini.png b/src/resources/detailfeedbackmini.png new file mode 100644 index 0000000..bc66935 Binary files /dev/null and b/src/resources/detailfeedbackmini.png differ diff --git a/src/resources/documentation.png b/src/resources/documentation.png index 9b7ccd1..26bccaa 100644 Binary files a/src/resources/documentation.png and b/src/resources/documentation.png differ diff --git a/src/resources/documentationmax.png b/src/resources/documentationmax.png new file mode 100644 index 0000000..cf0dae9 Binary files /dev/null and b/src/resources/documentationmax.png differ diff --git a/src/resources/documentationmini.png b/src/resources/documentationmini.png index 234b511..00c240a 100644 Binary files a/src/resources/documentationmini.png and b/src/resources/documentationmini.png differ diff --git a/src/resources/dossieretudiant.png b/src/resources/dossieretudiant.png new file mode 100644 index 0000000..efdc477 Binary files /dev/null and b/src/resources/dossieretudiant.png differ diff --git a/src/resources/dossieretudiantmin.png b/src/resources/dossieretudiantmin.png new file mode 100644 index 0000000..1016ed1 Binary files /dev/null and b/src/resources/dossieretudiantmin.png differ diff --git a/src/resources/dossieretudiantmini.png b/src/resources/dossieretudiantmini.png new file mode 100644 index 0000000..47aab2e Binary files /dev/null and b/src/resources/dossieretudiantmini.png differ diff --git a/src/resources/extraireFichierAnalyse.png b/src/resources/extraireFichierAnalyse.png new file mode 100644 index 0000000..44f69d4 Binary files /dev/null and b/src/resources/extraireFichierAnalyse.png differ diff --git a/src/resources/extraireFichierAnalysemini.png b/src/resources/extraireFichierAnalysemini.png new file mode 100644 index 0000000..79fcfd6 Binary files /dev/null and b/src/resources/extraireFichierAnalysemini.png differ diff --git a/src/resources/feedback.png b/src/resources/feedback.png new file mode 100644 index 0000000..bcd32ac Binary files /dev/null and b/src/resources/feedback.png differ diff --git a/src/resources/feedbackmini.png b/src/resources/feedbackmini.png new file mode 100644 index 0000000..9c56f06 Binary files /dev/null and b/src/resources/feedbackmini.png differ diff --git a/src/resources/feedbackstudent.png b/src/resources/feedbackstudent.png new file mode 100644 index 0000000..5a9fbc7 Binary files /dev/null and b/src/resources/feedbackstudent.png differ diff --git a/src/resources/feedbackstudentmini.png b/src/resources/feedbackstudentmini.png new file mode 100644 index 0000000..d9c46c2 Binary files /dev/null and b/src/resources/feedbackstudentmini.png differ diff --git a/src/resources/fichierAnalyseRenomme.png b/src/resources/fichierAnalyseRenomme.png new file mode 100644 index 0000000..957fe54 Binary files /dev/null and b/src/resources/fichierAnalyseRenomme.png differ diff --git a/src/resources/fichierAnalyseRenommemini.png b/src/resources/fichierAnalyseRenommemini.png new file mode 100644 index 0000000..b747ab4 Binary files /dev/null and b/src/resources/fichierAnalyseRenommemini.png differ diff --git a/src/resources/fusionneBaseEvaluation.png b/src/resources/fusionneBaseEvaluation.png new file mode 100644 index 0000000..6d651c1 Binary files /dev/null and b/src/resources/fusionneBaseEvaluation.png differ diff --git a/src/resources/fusionneBaseEvaluationmini.png b/src/resources/fusionneBaseEvaluationmini.png new file mode 100644 index 0000000..e493e7a Binary files /dev/null and b/src/resources/fusionneBaseEvaluationmini.png differ diff --git a/src/resources/listestudent.png b/src/resources/listestudent.png new file mode 100644 index 0000000..cbfecc6 Binary files /dev/null and b/src/resources/listestudent.png differ diff --git a/src/resources/listestudentmini.png b/src/resources/listestudentmini.png new file mode 100644 index 0000000..d140268 Binary files /dev/null and b/src/resources/listestudentmini.png differ diff --git a/src/resources/newlogo.png b/src/resources/newlogo.png new file mode 100644 index 0000000..1ef0a3a Binary files /dev/null and b/src/resources/newlogo.png differ diff --git a/src/resources/newlogomini.png b/src/resources/newlogomini.png new file mode 100644 index 0000000..d447ab3 Binary files /dev/null and b/src/resources/newlogomini.png differ diff --git a/src/resources/noafficheprogression.png b/src/resources/noafficheprogression.png new file mode 100644 index 0000000..acd41a7 Binary files /dev/null and b/src/resources/noafficheprogression.png differ diff --git a/src/resources/noafficheprogressionmini.png b/src/resources/noafficheprogressionmini.png new file mode 100644 index 0000000..67c53d5 Binary files /dev/null and b/src/resources/noafficheprogressionmini.png differ diff --git a/src/resources/nocsvstudent.png b/src/resources/nocsvstudent.png new file mode 100644 index 0000000..d5c0c73 Binary files /dev/null and b/src/resources/nocsvstudent.png differ diff --git a/src/resources/nocsvstudentmini.png b/src/resources/nocsvstudentmini.png new file mode 100644 index 0000000..d5c0c73 Binary files /dev/null and b/src/resources/nocsvstudentmini.png differ diff --git a/src/resources/nodetailfeedback.png b/src/resources/nodetailfeedback.png new file mode 100644 index 0000000..d2d4e52 Binary files /dev/null and b/src/resources/nodetailfeedback.png differ diff --git a/src/resources/nodetailfeedbackmini.png b/src/resources/nodetailfeedbackmini.png new file mode 100644 index 0000000..6e6ba33 Binary files /dev/null and b/src/resources/nodetailfeedbackmini.png differ diff --git a/src/resources/nofeedbackstudent.png b/src/resources/nofeedbackstudent.png new file mode 100644 index 0000000..1897966 Binary files /dev/null and b/src/resources/nofeedbackstudent.png differ diff --git a/src/resources/nofeedbackstudentmini.png b/src/resources/nofeedbackstudentmini.png new file mode 100644 index 0000000..763d946 Binary files /dev/null and b/src/resources/nofeedbackstudentmini.png differ diff --git a/src/resources/nolistestudent.png b/src/resources/nolistestudent.png new file mode 100644 index 0000000..7e8a823 Binary files /dev/null and b/src/resources/nolistestudent.png differ diff --git a/src/resources/nolistestudentmini.png b/src/resources/nolistestudentmini.png new file mode 100644 index 0000000..c5f4ca6 Binary files /dev/null and b/src/resources/nolistestudentmini.png differ diff --git a/src/resources/nologo.png b/src/resources/nologo.png new file mode 100644 index 0000000..185eb7f Binary files /dev/null and b/src/resources/nologo.png differ diff --git a/src/resources/nonewlogo.png b/src/resources/nonewlogo.png new file mode 100644 index 0000000..3b28faf Binary files /dev/null and b/src/resources/nonewlogo.png differ diff --git a/src/resources/nonewlogomini.png b/src/resources/nonewlogomini.png new file mode 100644 index 0000000..e6599b4 Binary files /dev/null and b/src/resources/nonewlogomini.png differ diff --git a/src/resources/nonotestudent.png b/src/resources/nonotestudent.png new file mode 100644 index 0000000..407507a Binary files /dev/null and b/src/resources/nonotestudent.png differ diff --git a/src/resources/nonotestudentmini.png b/src/resources/nonotestudentmini.png new file mode 100644 index 0000000..33008a6 Binary files /dev/null and b/src/resources/nonotestudentmini.png differ diff --git a/src/resources/notestudent.png b/src/resources/notestudent.png new file mode 100644 index 0000000..bb222da Binary files /dev/null and b/src/resources/notestudent.png differ diff --git a/src/resources/notestudentmini.png b/src/resources/notestudentmini.png new file mode 100644 index 0000000..fee0827 Binary files /dev/null and b/src/resources/notestudentmini.png differ diff --git a/src/resources/noverifhistoriquestudent.png b/src/resources/noverifhistoriquestudent.png new file mode 100644 index 0000000..27a6528 Binary files /dev/null and b/src/resources/noverifhistoriquestudent.png differ diff --git a/src/resources/noverifhistoriquestudentmini.png b/src/resources/noverifhistoriquestudentmini.png new file mode 100644 index 0000000..501739c Binary files /dev/null and b/src/resources/noverifhistoriquestudentmini.png differ diff --git a/src/resources/nozipstudent.png b/src/resources/nozipstudent.png new file mode 100644 index 0000000..a3e3a98 Binary files /dev/null and b/src/resources/nozipstudent.png differ diff --git a/src/resources/nozipstudentmini.png b/src/resources/nozipstudentmini.png new file mode 100644 index 0000000..b9f9f3c Binary files /dev/null and b/src/resources/nozipstudentmini.png differ diff --git a/src/resources/quitteEvaluation.png b/src/resources/quitteEvaluation.png new file mode 100644 index 0000000..4a9b116 Binary files /dev/null and b/src/resources/quitteEvaluation.png differ diff --git a/src/resources/quitteEvaluationmini.png b/src/resources/quitteEvaluationmini.png new file mode 100644 index 0000000..72e14f6 Binary files /dev/null and b/src/resources/quitteEvaluationmini.png differ diff --git a/src/resources/removeEvaluaton.png b/src/resources/removeEvaluaton.png new file mode 100644 index 0000000..0c9098b Binary files /dev/null and b/src/resources/removeEvaluaton.png differ diff --git a/src/resources/removeEvaluatonmini.png b/src/resources/removeEvaluatonmini.png new file mode 100644 index 0000000..1c0356d Binary files /dev/null and b/src/resources/removeEvaluatonmini.png differ diff --git a/src/resources/renommeEvaluaton.png b/src/resources/renommeEvaluaton.png new file mode 100644 index 0000000..87893b9 Binary files /dev/null and b/src/resources/renommeEvaluaton.png differ diff --git a/src/resources/renommeEvaluatonmini.png b/src/resources/renommeEvaluatonmini.png new file mode 100644 index 0000000..2ae0adb Binary files /dev/null and b/src/resources/renommeEvaluatonmini.png differ diff --git a/src/resources/saveZipEvaluation.png b/src/resources/saveZipEvaluation.png new file mode 100644 index 0000000..b17c9a9 Binary files /dev/null and b/src/resources/saveZipEvaluation.png differ diff --git a/src/resources/saveZipEvaluationmini.png b/src/resources/saveZipEvaluationmini.png new file mode 100644 index 0000000..2872497 Binary files /dev/null and b/src/resources/saveZipEvaluationmini.png differ diff --git a/src/resources/versfichierAnalyse.png b/src/resources/versfichierAnalyse.png new file mode 100644 index 0000000..d18c146 Binary files /dev/null and b/src/resources/versfichierAnalyse.png differ diff --git a/src/resources/zipstudent.png b/src/resources/zipstudent.png new file mode 100644 index 0000000..7c4bb39 Binary files /dev/null and b/src/resources/zipstudent.png differ diff --git a/src/resources/zipstudentmini.png b/src/resources/zipstudentmini.png new file mode 100644 index 0000000..bb4bf33 Binary files /dev/null and b/src/resources/zipstudentmini.png differ diff --git a/src/xml/node.java b/src/xml/node.java index b9afd91..4849230 100644 --- a/src/xml/node.java +++ b/src/xml/node.java @@ -461,7 +461,45 @@ private boolean nodeClose = false; && this.enfants.size()==0 && this.nameNode.isBlank(); } + + + public boolean moveTo(node nodeParent) { + if(nodeParent!=null) { + this.parent.getEnfants().remove(this); + this.parent = nodeParent; + this.level = nodeParent.getLevel()+1; + nodeParent.getEnfants().add(this); + return true; + } + return false; + } + + public boolean moveToFirstChild() { + if(this.parent!=null) { + int index = this.parent.enfants.indexOf(this); + if(index > 0 && index < this.parent.enfants.size()) { + this.parent.enfants.add(0, this); + this.parent.enfants.remove(index+1); + return true; + } + } + return false; + } + + public boolean moveToLastChild() { + if(this.parent!=null) { + int index = this.parent.enfants.indexOf(this); + if(index >= 0 && index < this.parent.enfants.size()-1) { + this.parent.enfants.remove(index); + this.parent.enfants.add(this.parent.enfants.size()-1, this); + return true; + } + } + return false; + } + + public boolean moveUp() { if(this.parent!=null) { int index = this.parent.enfants.indexOf(this); @@ -499,6 +537,24 @@ private boolean nodeClose = false; } return false; } + + public boolean moveRight() { + if(this.parent!=null) { + if(this.parent!=null) { + int index = this.parent.enfants.indexOf(this); + if(index-1>0) { + this.parent.enfants.remove(index); + this.parent.getEnfant(index-1).getEnfants().add(this); + this.setParent(this.parent.getEnfant(index-1)); + this.level++; + return true; + } + } + } + return false; + } + + @Override public int hashCode() { @@ -903,14 +959,15 @@ private boolean nodeClose = false; public node allFirstNodesEvaluationFichierOnly(String code) { node evaluations = new node(); evaluations.setNameNode("evaluationsCalc"); - Pattern p = Pattern.compile("<\\bevaluation\\b.*?<\\bfichier\\b.*?>"); + Pattern p = Pattern.compile("<\\bevaluation\\b.*?<\\broot\\b.*?
"); Matcher m = p.matcher(code.trim()); StringBuilder LesEvals = new StringBuilder(); while(m.find()) { - LesEvals.append(code.substring(m.start(), m.end())+""); + LesEvals.append(code.substring(m.start(), m.end())); } - node nodRetourne = new node(""+LesEvals.toString().replaceAll(">/{1,}<", "><")); //Le node A est nécessaire. - if(nodRetourne.getNameNode().equals("fichier")) { + new transformeXLMtoNode(LesEvals.toString(), false, null); //.replaceAll(">/{1,}<", "><") + node nodRetourne = transformeXLMtoNode.getNodeRoot(); //new node(LesEvals.toString().replaceAll(">/{1,}<", "><")); //Le node A est nécessaire. + if(nodRetourne.getNameNode().equals("root")) { evaluations.getEnfants().addAll(nodRetourne.getEnfants()); }else { evaluations.getEnfants().add(nodRetourne); @@ -939,7 +996,8 @@ private boolean nodeClose = false; } i++; } - nodRetourne = new node(""+LesEvals.toString().replaceAll(">/{1,}<", "><")); //Le node A est nécessaire. + new transformeXLMtoNode(LesEvals.toString(), false, null); + nodRetourne = transformeXLMtoNode.getNodeRoot().getEnfant(0); return nodRetourne; } diff --git a/src/xml/transformeXLMtoNode.java b/src/xml/transformeXLMtoNode.java index 8a41f30..1d70cd4 100644 --- a/src/xml/transformeXLMtoNode.java +++ b/src/xml/transformeXLMtoNode.java @@ -19,6 +19,7 @@ public class transformeXLMtoNode { codeXML = nettoyagePreliminaire(codeXML); + nodeRoot = new node("root"); Pattern p = Pattern.compile("(<[.[^ /<]]{1,}>{1}|<[.[^ /<]]{1,}/>|<[.[^ /<]]{1,}\\p{Space}[.[^<]]{1,}(>|/>){1}|{1}|[.[^>\"<]]{1,})"); diff --git a/sujet.xml b/sujet.xml index 3bdf144..469d82f 100644 --- a/sujet.xml +++ b/sujet.xml @@ -1 +1 @@ -A1A5B5C5D5A6B6cel D6A7B7C7cel D7A8cel D8A9C9cel D9J9A10cel D10A11B11C11D11A15B15F15F16B19F19B20C20F20Z20C21F21D22E22F22F23D24F24E25F25C28D28E28F28A31B31E31F31E32J1048576test Z1048576CE texet est dans une cellule fusionnée A2:H2Moi – cellule I201je tape un texte cellule C5234Le ori – cellule B85Le ori – cellule B9678Cellule F11Je tape ce texte dans une cellule fisionnée de B12:D219 + cellule E12cellule F1210cellule F13111213141516 – cellule E19cellule F19111Je tape dans cellule C25:C40cellile D39lui AM96Bonjour cellule AT97Le sernier XFD1048576???Page 1Prénom Nom2023-04-05T17:49:12.9440000002023-04-23T17:36:41.532000000Pablo RodriguezPT7H5M48S47LibreOffice/7.4.6.2$Windows_X86_64 LibreOffice_project/5b1f5509c2decdade7fda905e3e1429a67acd63dmon code sujet \ No newline at end of file +A1A5B5C5D5A6B6cel D6A7B7C7cel D7A8cel D8A9C9cel D9J9A10cel D10A11B11C11D11A15B15F15F16B19F19B20C20F20Z20C21F21D22E22F22F23D24F24E25F25C28D28E28F28A31B31E31F31E32J1048576test Z1048576CE texet est dans une cellule fusionnée A2:H2Moi – cellule I201je tape un texte cellule C5234Le ori – cellule B85Le ori – cellule B9678Cellule F11Je tape ce texte dans une cellule fisionnée de B12:D219 + cellule E12cellule F1210cellule F13111213141516 – cellule E19cellule F19111Je tape dans cellule C25:C40cellile D39lui AM96Bonjour cellule AT97Le sernier XFD1048576???Page 1Prénom Nom2023-04-05T17:49:12.9440000002023-04-23T17:36:41.532000000Pablo RodriguezPT7H5M48S47LibreOffice/7.4.6.2$Windows_X86_64 LibreOffice_project/5b1f5509c2decdade7fda905e3e1429a67acd63dmon code sujet \ No newline at end of file diff --git a/sujet1.xml b/sujet1.xml new file mode 100644 index 0000000..dfefb9a --- /dev/null +++ b/sujet1.xml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/sujet2.xml b/sujet2.xml index b0fe2a3..d4ea357 100644 --- a/sujet2.xml +++ b/sujet2.xml @@ -1 +1 @@ -A1A5B5C5D5A6B6cel D6A7B7C7cel D7A8cel D8A9C9cel D9J9A10cel D10A11B11C11D11A15B15F15F16B19F19B20C20F20Z20C21F21D22E22F22F23D24F24E25F25C28D28E28F28A31B31E31F31E32J1048576test Z1048576CE texet est dans une cellule fusionnée A2:H2Moi – cellule I201je tape un texte cellule C5234Le ori – cellule B85Le ori – cellule B9678Cellule F11Je tape ce texte dans une cellule fisionnée de B12:D219 + cellule E12cellule F1210cellule F13111213141516 – cellule E19cellule F19111Je tape dans cellule C25:C40cellile D39lui AM96Bonjour cellule AT97Le sernier XFD1048576???Page 1Prénom Nom2023-04-05T17:49:12.9440000002023-04-23T17:36:41.532000000Pablo RodriguezPT7H5M48S47LibreOffice/7.4.6.2$Windows_X86_64 LibreOffice_project/5b1f5509c2decdade7fda905e3e1429a67acd63dmon code sujet \ No newline at end of file +???Page 1 \ No newline at end of file