diff --git a/analyseWriter.jar b/analyseWriter.jar index 607048b..ccd7c17 100644 Binary files a/analyseWriter.jar and b/analyseWriter.jar differ diff --git a/bin/action/actSave.class b/bin/action/actSave.class index e307444..5cbbef5 100644 Binary files a/bin/action/actSave.class and b/bin/action/actSave.class differ diff --git a/bin/action/actSaveAs.class b/bin/action/actSaveAs.class index 0d686a4..a2b27fe 100644 Binary files a/bin/action/actSaveAs.class and b/bin/action/actSaveAs.class differ diff --git a/bin/calcul/formatDateWriter.class b/bin/calcul/formatDateWriter.class index 4fd30de..f37ba15 100644 Binary files a/bin/calcul/formatDateWriter.class and b/bin/calcul/formatDateWriter.class differ diff --git a/src/action/actOpenHistoriqueEvaluation.java b/src/action/actOpenHistoriqueEvaluation.java index d063de8..93c8a5f 100644 --- a/src/action/actOpenHistoriqueEvaluation.java +++ b/src/action/actOpenHistoriqueEvaluation.java @@ -82,8 +82,8 @@ public class actOpenHistoriqueEvaluation extends AbstractAction{ }catch (Exception e) { JFrame frame = new JFrame(); JLabel texte = new JLabel("

Il y a une erreur avec le fichier base_evaluations_analyseWriter.xml

" - + "

Probablement, il a été renommé ou supprimé.


" - + "

Une nouvelle base sera créé.

"); + + "

Probablement, il a été renommé, ou supprimé, ou déplacé.


" + + "

Une nouvelle base sera créé dans le dossier de l'application.

"); JOptionPane.showMessageDialog(frame, texte); } } diff --git a/src/action/actSave.java b/src/action/actSave.java index bc32510..9ee5543 100644 --- a/src/action/actSave.java +++ b/src/action/actSave.java @@ -3,6 +3,7 @@ package action; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.io.IOException; +import java.text.ParseException; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -50,7 +51,13 @@ public class actSave extends AbstractAction{ if(input==0) { try { verificationFichierAnalyse.MiseAJourHashNomFichierAnalyse(commandes.nameSujet); - + //Mise à jour de la date d'enregistrement du fichier d'analyse + try { + commandes.sujet.getAttributs().put("date", calcul.formatDateWriter.dateTodayLibreOffice()); + } catch (ParseException e1) { + e1.printStackTrace(); + } + Run.ecritureNodeEnXML(commandes.sujet, commandes.nameSujet,commandes.PathFilenameAnalysis,Run.TypeFile.Sujet); if(m.find()) { diff --git a/src/action/actSaveAs.java b/src/action/actSaveAs.java index 39c72e4..a96de64 100644 --- a/src/action/actSaveAs.java +++ b/src/action/actSaveAs.java @@ -4,6 +4,7 @@ import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.io.File; import java.io.IOException; +import java.text.ParseException; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -50,7 +51,13 @@ public class actSaveAs extends AbstractAction{ try { verificationFichierAnalyse.MiseAJourHashNomFichierAnalyse(fileToSave.getName()); - + //Mise à jour de la date d'enregistrement du fichier d'analyse + try { + commandes.sujet.getAttributs().put("date", calcul.formatDateWriter.dateTodayLibreOffice()); + } catch (ParseException e1) { + e1.printStackTrace(); + } + if(commandes.os.contains("Win")) { Run.ecritureNodeEnXML(commandes.sujet, fileToSave.getName(), fileToSave.getPath().substring(0,fileToSave.getPath().lastIndexOf("\\")),Run.TypeFile.Sujet ); }else { diff --git a/src/calcul/formatDateWriter.java b/src/calcul/formatDateWriter.java index b03c2f6..56a1a24 100644 --- a/src/calcul/formatDateWriter.java +++ b/src/calcul/formatDateWriter.java @@ -8,10 +8,13 @@ import java.util.regex.Pattern; import javax.swing.JOptionPane; +import MEPTL.commandes; + public class formatDateWriter { /** * Retourne true sie le format est YYYY-MM-JJTHH:MM:SS.
+ * C'est le format utilisé par LibreOffice.
* @param date une String. * @return retrourne true ou false. */ @@ -86,6 +89,17 @@ public class formatDateWriter { return DateLibreOffice(aujourdhui); } - + /** + * Retourne la date du fichier du node commandes.sujet
+ * Si ne trouve pas la date alors retourne un null. + * @return + */ + public static Date dateNodeSujet() { + if(commandes.sujet.getAttributs().get("date")!=null) { + String dateString = commandes.sujet.getAttributs().get("date"); + return calcul.formatDateWriter.DateLibreOffice(dateString); + } + return null; + } } diff --git a/src/fenetres/baseDonneesEvaluations.java b/src/fenetres/baseDonneesEvaluations.java index 89d14cd..9e05179 100644 --- a/src/fenetres/baseDonneesEvaluations.java +++ b/src/fenetres/baseDonneesEvaluations.java @@ -320,18 +320,32 @@ private void chargeEvaluationSelected(node evaluation) { File file = new File(CheminVersFileXML); if(file.exists()) { - JFrame frame = new JFrame(); - JLabel text = new JLabel(); - text.setText("

Le fichier d'analyse est déjà chargé depuis la base de données.


" - + "

Cependant, le fichier d'analyse se trouve aussi dans le dossier :

" - + "

"+CheminVersFileXML+"



" - + "

Voulez-vous le charger depuis ce dossier ?

"); - if (JOptionPane.showConfirmDialog(frame, text, "WARNING",JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { - chargeLeNodeSujet(file); - commandes.path = evaluation.getAttributs().get("path"); //Recharge le chemin vers le dossier contenant les fichiers des étudiants + + if (recupereDateFichierAnalyseSource(file)!=null) { + Date DateFichierSource = recupereDateFichierAnalyseSource(file); + Date DateFichierAnalyseBase = calcul.formatDateWriter.dateNodeSujet(); + + if(DateFichierAnalyseBase.before(DateFichierSource)) { + JFrame frame = new JFrame(); + JLabel text = new JLabel(); + text.setText("

Le fichier d'analyse est déjà chargé depuis la base de données.


" + + "

Cependant, vous avez le fichier d'analyse qui se trouve dans le dossier :

" + + "

"+CheminVersFileXML+"

" + + "

Et dont la date est plus récente que le fichier d'analyse qui se trouve dans la base.



" + + "

Voulez-vous le charger depuis ce dossier ?

"); + if (JOptionPane.showConfirmDialog(frame, text, "WARNING",JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { + chargeLeNodeSujet(file); + commandes.path = evaluation.getAttributs().get("path"); //Recharge le chemin vers le dossier contenant les fichiers des étudiants + + } } + + } + + + } // else { // JFrame frame = new JFrame(); // JLabel texte = new JLabel("

Le fichier d'analyse de l'évaluation, " + commandes.nameSujet + ", a été renommé ou supprimé.


" @@ -382,6 +396,7 @@ private void chargeLeNodeSujet(File file) { commandes.initialiseParametresSettingProprietes(); commandes.sujet = sujetLoad; commandes.sujetSauvegarde = commandes.sujet.clone(); + //Chargement des paramètres du fichier d'analyse System.out.println( "Chargement des paramètres du fichier d'analyse"); meptl.chargementParametresFichierAnalyse(); @@ -401,6 +416,44 @@ private void chargeLeNodeSujet(File file) { } +private Date recupereDateFichierAnalyseSource(File file) { + 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); + } + + //node.node2(targetString); + node sujetLoad = new node(targetString.toString().replace("\t","").replace("\r", "").replace("\n", "")); + + // Vérification de la conformité du fichier d'analyse + if(!ChargeFichierXML.fichierSujetValide(sujetLoad)) { + JOptionPane.showMessageDialog(null, "Le fichier d'analyse n'est pas valide."); + }else { + if(sujetLoad.getAttributs().get("date")!=null) { + String dateString = sujetLoad.getAttributs().get("date"); + return calcul.formatDateWriter.DateLibreOffice(dateString); + } + + } + + } catch (UnsupportedEncodingException e1) { + e1.printStackTrace(); + } catch (FileNotFoundException e1) { + e1.printStackTrace(); + } catch (Exception e) { + } + return null; + +} + + + private void ecritureBaseEvaluation(node evaluations) throws IOException { // File directory = new File(FileSystemView.getFileSystemView().getDefaultDirectory().getPath()); // Run.ecritureNodeEnXML(evaluations, "base_evaluations_analyseWriter.xml", directory.getAbsolutePath(), Run.TypeFile.Evaluation);