MAJ V4.2.2

Nouvelle propriété de vérification.
Vérification que la première date de modification dans le fichier de
l'étudiant est postérieure à la date du controle.
Réglage dans les propriété du fichier d'analyse.
This commit is contained in:
pablo rodriguez 2023-02-11 09:43:12 +01:00
parent 38a6723386
commit 7fda6ed87f
85 changed files with 603 additions and 292 deletions

View File

@ -12,6 +12,6 @@
<classpathentry kind="lib" path="C:/Users/pabr6/git/analyseWriter/MEPTL/miglayout15-swing.jar"/>
<classpathentry kind="lib" path="jgoodies-forms-1.8.0.jar" sourcepath="jgoodies-forms-1.8.0-sources.jar"/>
<classpathentry kind="lib" path="C:/Users/pabr6/eclipse-workspace/Exportation documentation analyseWriter/plugins/documentation.analyseWriter_1.0.0.202212032022.jar"/>
<classpathentry kind="lib" path="C:/Users/pabr6/eclipse-workspace/cXML.jar"/>
<classpathentry kind="lib" path="C:/Users/pabr6/eclipse-workspace/cXML.jar" sourcepath="/cXML"/>
<classpathentry kind="output" path="bin"/>
</classpath>

Binary file not shown.

4
bin/.gitignore vendored
View File

@ -7,7 +7,3 @@
/menucontextuel/
/sousmenuEvaluation/
/sousmenuRepresentation/
/resources/
/legacystyleparentpresent.svg
/menulegacystyleparentpresent.png
/menulegacystyleparentpresentmini.png

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,118 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="45"
height="45"
viewBox="0 0 11.90625 11.90625"
version="1.1"
id="svg5"
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
sodipodi:docname="legacystyleparentpresent.svg"
inkscape:export-filename="menulegacystyleparentpresent.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="15.982927"
inkscape:cx="24.307188"
inkscape:cy="19.42698"
inkscape:window-width="1920"
inkscape:window-height="1009"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="g542"
showguides="true">
<sodipodi:guide
position="9.2206465,2.4538458"
orientation="0,-1"
id="guide621"
inkscape:locked="false" />
<sodipodi:guide
position="2.830755,9.0423867"
orientation="1,0"
id="guide623"
inkscape:locked="false" />
</sodipodi:namedview>
<defs
id="defs2" />
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g350"
transform="translate(-0.04532431,0.11331077)">
<g
id="g542"
transform="translate(-0.31727014,0.47590521)">
<path
style="fill:none;stroke:#333333;stroke-width:0.9;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-dasharray:0.45, 0.45;stroke-dashoffset:0"
d="M 3.1933495,2.2746472 V 8.8631881 H 9.583241"
id="path679" />
<path
sodipodi:type="star"
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.856455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="path617"
inkscape:flatsided="false"
sodipodi:sides="5"
sodipodi:cx="8.9470472"
sodipodi:cy="8.6967802"
sodipodi:r1="8.5111504"
sodipodi:r2="4.2555752"
sodipodi:arg1="0.90523997"
sodipodi:arg2="1.5335585"
inkscape:rounded="0"
inkscape:randomized="0"
d="M 14.202656,15.391424 9.105479,12.949405 4.2041347,15.76392 4.9515186,10.161591 0.76015757,6.3698685 6.319243,5.3494581 8.6301837,0.19153018 11.318504,5.1632105 l 5.6196,0.6039478 -3.897612,4.0930778 z"
transform="matrix(0.30745241,0,0,0.31041134,0.51352941,-0.32966544)"
inkscape:transform-center-x="0.030104671"
inkscape:transform-center-y="-0.22320291" />
<path
sodipodi:type="star"
style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.856455;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;-inkscape-stroke:none;stop-color:#000000;stop-opacity:1"
id="path619"
inkscape:flatsided="false"
sodipodi:sides="5"
sodipodi:cx="8.9470472"
sodipodi:cy="8.6967802"
sodipodi:r1="8.5111504"
sodipodi:r2="4.2555752"
sodipodi:arg1="0.90523997"
sodipodi:arg2="1.5335585"
inkscape:rounded="0"
inkscape:randomized="0"
d="M 14.202656,15.391424 9.105479,12.949405 4.2041347,15.76392 4.9515186,10.161591 0.76015757,6.3698685 6.319243,5.3494581 8.6301837,0.19153018 11.318504,5.1632105 l 5.6196,0.6039478 -3.897612,4.0930778 z"
transform="matrix(0.30745241,0,0,0.31041134,6.7213256,6.1429967)"
inkscape:transform-center-x="0.030104671"
inkscape:transform-center-y="-0.22320291" />
<text
xml:space="preserve"
style="font-size:8.30468px;line-height:1.2;font-family:Symbol;-inkscape-font-specification:Symbol;fill:#ffcc00;stroke-width:0.264583"
x="5.9957051"
y="6.193212"
id="text1238"
transform="scale(0.93137378,1.0736828)"><tspan
sodipodi:role="line"
id="tspan1236"
style="font-style:normal;font-variant:normal;font-weight:900;font-stretch:normal;font-family:Arial;-inkscape-font-specification:'Arial Heavy';fill:#ffcc00;stroke-width:0.264583"
x="5.9957051"
y="6.193212">?</tspan></text>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 944 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 944 B

View File

@ -0,0 +1,239 @@
package MEPTL;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Dictionary;
import java.util.Enumeration;
import java.util.Hashtable;
import cXML.Run;
import cXML.node;
import calcul.formatDateWriter;
public class VerificationHistorique {
/**
* Vérirication des historiques
* @param verification
* @param a
* @return le node verif
* @throws ParseException
*/
public static node verificationHistorique(node verification, Run a) throws ParseException {
node verif = new node();
verif.setNomElt("verification");
verif.setAttributs(verification.getAttributs());
verif.getAttributs().put("number_match", String.valueOf(commandes.number_match));
verif.getAttributs().put("mini_number_modification", String.valueOf(commandes.mini_number_modification));
verif.getAttributs().put("nombres_modifications_simultané_maxi", String.valueOf(commandes.nombres_modifications_simultané_maxi));
ArrayList<node> LesFichiers = verification.retourneLesEnfantsByName("fichier", new ArrayList<node>());
System.out.println();
System.out.println("***** DEBUT VERIFICATION DES HISTORIQUES DES MODIFICATION ****");
System.out.println();
commandes.message.append("\n\n***** DEBUT VERIFICATION DES HISTORIQUES DES MODIFICATION ****\n");
for(int i = 0 ; i < LesFichiers.size() ; i++) {
node nodStudent = new node();
nodStudent.setNomElt("fichier");
nodStudent.setAttributs(LesFichiers.get(i).getAttributs());
//String nameStudent1 = LesFichiers.get(i).getAttributs().get("dossier");
ArrayList<node> HitoriqueDuFichier = LesFichiers.get(i).retourneEnfantsByName("text:changed-region", new ArrayList<node>());
int nombreModifications = HitoriqueDuFichier.size();
nodStudent.getAttributs().put("nombre_modification", String.valueOf(nombreModifications));
int compteurnombreCorrespondance = 0 ;
int compteurnombreCorrespondancesSuivi = 0;
int compteurnombreCorrespondancesconsecutive = 0;
System.out.println(LesFichiers.get(i).getAttributs().get("dossier") + " - number of modifications : " + nombreModifications);
commandes.message.append("\n"+LesFichiers.get(i).getAttributs().get("dossier") + " - number of modifications : " + nombreModifications);
@SuppressWarnings("unchecked")
ArrayList<node> LesFichiers2 = (ArrayList<node>) LesFichiers.clone();
LesFichiers2.remove(i);
Dictionary<String, Integer> lesdates = new Hashtable<String, Integer>();
Date DateMini = null; //Première date de modification
// Parcours toutes les modifications dans l'historique
for(int j = 0 ; j < HitoriqueDuFichier.size(); j++) {
node nodDate = null;
node nodDateCreator = null;
String dcdate1 ="";
@SuppressWarnings("unused")
String dccreator ="";
nodDate = HitoriqueDuFichier.get(j).retourneFirstEnfantsByName("dc:date");
nodDateCreator = HitoriqueDuFichier.get(j).retourneFirstEnfantsByName("dc:creator");
if(nodDate!=null) {
dcdate1 = nodDate.getContenu().get(0);
}
if(nodDate!=null) {
dccreator = nodDateCreator.getContenu().get(0);
}
Date DcDate1 = formatDateWriter.DateLibreOffice(dcdate1);
if(DateMini==null) DateMini = DcDate1; // Amorçage de la date premère date de modification
if(DateMini!=null && DateMini.after(DcDate1)) DateMini = DcDate1; //recherche la première date de modification
if(lesdates.get(dcdate1)==null) {
lesdates.put(dcdate1, 1);
}else {
int compteur = lesdates.get(dcdate1) + 1;
lesdates.put(dcdate1, compteur);
}
node N1 = HitoriqueDuFichier.get(j).getNodes().get(0);
for(int i2 = 0 ; i2 < LesFichiers2.size(); i2++) {
String nameStudent2 = LesFichiers2.get(i2).getAttributs().get("dossier");
ArrayList<node> HitoriqueDuFichier2 = LesFichiers2.get(i2).retourneEnfantsByName("text:changed-region", new ArrayList<node>());
for(int j2 = 0 ; j2 <HitoriqueDuFichier2.size(); j2++ ) {
String dcdate2 = HitoriqueDuFichier2.get(j2).retourneFirstEnfantsByName("dc:date").getContenu().get(0);
String dccreator2 = HitoriqueDuFichier2.get(j2).retourneFirstEnfantsByName("dc:creator").getContenu().get(0);
node N2 = HitoriqueDuFichier2.get(j2).retourneFirstEnfantsByName(N1.getNomElt());
if(Run.equalNode(N1, N2)) { //Verification des deux nodes de l'historique identiques
if(nodStudent.retourneFirstNodeByNameAndAttributValueExactStrict("correspondance", "date", dcdate2)==null) {
//affinage du match
compteurnombreCorrespondance++;
if(compteurnombreCorrespondancesSuivi==0) {
compteurnombreCorrespondancesSuivi++;
}else {
ArrayList<node> correspondances = nodStudent.retourneEnfantsByName("correspondance", new ArrayList<node>());
node c = correspondances.get(correspondances.size()-1);
if(c.getAttributs().get("Avec_etudiant").equals(nameStudent2)&&c.getAttributs().get("dc:creator").equals(dccreator2)) {
compteurnombreCorrespondancesSuivi++;
if(compteurnombreCorrespondancesconsecutive+1>compteurnombreCorrespondancesconsecutive) compteurnombreCorrespondancesconsecutive++;
}else {
compteurnombreCorrespondancesSuivi=0;
}
}
node correspondance = new node();
correspondance.getNodes().add(N2);
correspondance.setNomElt("correspondance");
correspondance.getAttributs().put("date", formatDateWriter.DateLibreOffice(DateMini));
correspondance.getAttributs().put("type",N1.getNomElt());
correspondance.getAttributs().put("Avec_etudiant", nameStudent2);
correspondance.getAttributs().put("dc:creator", dccreator2);
nodStudent.getNodes().add(correspondance);
System.out.println("\t** Trouve une correspondance ** " + dcdate1);
commandes.message.append("\n\t** Trouve une correspondance ** " + dcdate1);
break;
}
}
}
}
}
Enumeration<String> key = lesdates.keys();
while(key.hasMoreElements()) {
String k = key.nextElement();
if(lesdates.get(k)>1) {
node modificationsMemeDate = new node();
modificationsMemeDate.setNomElt("memeinstant");
modificationsMemeDate.getAttributs().put("date", k);
modificationsMemeDate.getAttributs().put("nombres_modifications_simultané", String.valueOf(lesdates.get(k)));
if(commandes.nombres_modifications_simultané_maxi<lesdates.get(k)) {
modificationsMemeDate.getAttributs().put("copier_coller", "true");
nodStudent.getAttributs().put("copier_coller", "true");
}else {
modificationsMemeDate.getAttributs().put("copier_coller", "false");
}
nodStudent.getNodes().add(modificationsMemeDate);
}
}
node modificationsMemeDate = new node();
modificationsMemeDate.setNomElt("memeinstant");
if(compteurnombreCorrespondancesconsecutive>0)compteurnombreCorrespondancesconsecutive++; //C'est histoire des arbres et des intervalles entre les arbres. Il faut ajouter plus 1 au nombre de correspondances consecutives.
nodStudent.getAttributs().put("nombre_correspondance", String.valueOf(compteurnombreCorrespondance));
nodStudent.getAttributs().put("nombre_modifications_date_unique", String.valueOf(lesdates.size()));
nodStudent.getAttributs().put("nombre_correspondances_consecutives", String.valueOf(compteurnombreCorrespondancesconsecutive));
nodStudent.getAttributs().put("first_modification_date", formatDateWriter.DateLibreOffice(DateMini));
verif.getNodes().add(nodStudent);
System.out.println("\tDate de modification date unique " + String.valueOf(lesdates.size()));
commandes.message.append("\n\tDate de modification date unique " + String.valueOf(lesdates.size()));
}
// Ci-dessous le code pour vérifier la première date de modification dans le fichier.
// Recherche dans le node verif
int lastIndex = verif.getNodes().size();
for(int i = 0 ; i < lastIndex;i++) {
String D1 = verif.getNodes().get(i).getAttributs().get("first_modification_date");
boolean trouve =false;
for(int j = 0; j < lastIndex; j++) {
if(i!=j) {
String D2 = verif.getNodes().get(j).getAttributs().get("first_modification_date");
if(!D1.equals("null") && D1.equals(D2)) {
if(verif.getNodes().get(i).getAttributs().get("")==null) {
verif.getNodes().get(i).getAttributs().put("first_modification_identique", verif.getNodes().get(j).getAttributs().get("dossier"));
}else {
verif.getNodes().get(i).getAttributs().put("first_modification_identique_2", verif.getNodes().get(j).getAttributs().get("dossier"));
}
if(verif.getNodes().get(j).getAttributs().get("")==null) {
verif.getNodes().get(j).getAttributs().put("first_modification_identique", verif.getNodes().get(i).getAttributs().get("dossier"));
}else {
verif.getNodes().get(j).getAttributs().put("first_modification_identique_2", verif.getNodes().get(i).getAttributs().get("dossier"));
}
trouve=true;
}
}
}
if(!trouve) {
verif.getNodes().get(i).getAttributs().put("first_modification_identique","null");
}else {
verif.getNodes().get(i).getAttributs().put("plagiat", "probable");
}
//Verification la première date de modification postérieure à la date du contrôle.
if(commandes.analyse_controleDateModificationMini) {
Date dateFirstModifStudent = formatDateWriter.DateLibreOffice(D1);
if(commandes.analyse_modificationDateMini.after(dateFirstModifStudent)) {
verif.getNodes().get(i).getAttributs().put("first_date_modification_anterieur_date_du_controle","true");
}else {
verif.getNodes().get(i).getAttributs().put("first_date_modification_anterieur_date_du_controle","false");
}
}
}
System.out.println();
System.out.println("** FIN DE LA VERIFIACTION **");
System.out.println();
commandes.message.append("\n** FIN DE LA VERIFICATION **\n");
return verif;
}
}

View File

@ -6,6 +6,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.JTree;
@ -93,6 +94,7 @@ public class commandes {
public static String analyse_Initial_Creator="";
public static String analyse_version="";
public static String analyse_creationDate="";
public static Date analyse_modificationDateMini = null;
public static String analyse_titre="";
public static String analyse_link_sujet="";
public static String analyse_link_help="";
@ -100,6 +102,7 @@ public class commandes {
public static boolean analyse_historiquePresent=false;
public static boolean analyse_presenceMetaSujet=false;
public static boolean analyse_controleDateCreation=false;
public static boolean analyse_controleDateModificationMini=false;
public static boolean analyse_controle_Initial_Creator=false;
public static boolean analyse_baremeABC=false;
public static double analyse_progression=1;
@ -153,6 +156,7 @@ public class commandes {
analyse_historiquePresent=false;
analyse_presenceMetaSujet=false;
analyse_controleDateCreation=false;
analyse_controleDateModificationMini=false;
analyse_controle_Initial_Creator=false;
analyse_baremeABC=false;
analyse_progression=1;

View File

@ -42,6 +42,8 @@ public class ecritureSujet {
nod.getAttributs().put("link_help", "https://moodle.univ-artois.fr/cours/");
nod.getAttributs().put("historiquePresent", "false");
nod.getAttributs().put("controleDateCreation", "false");
nod.getAttributs().put("controleDateModificationMini", "false");
nod.getAttributs().put("modificationDateMini", String.valueOf(aujourdhui));
nod.getAttributs().put("controle_Initial_Creator", "false");
nod.getAttributs().put("presenceMetaSujet", "false");
node b = a.retourneName(nod.retourneFirstEnfantsByName("office:meta"),"meta:user-defined","meta:name","Sujet");

View File

@ -7,6 +7,7 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.DateFormat;
import java.text.ParseException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
@ -18,6 +19,7 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import cXML.node;
import calcul.formatDateWriter;
public class feedbacks {
@ -34,8 +36,9 @@ public class feedbacks {
* @parame zip : Pour créer un fichier html ou une archive zip.
* @return
* @throws IOException
* @throws ParseException
*/
public static StringBuilder feedback(node nodana, node verif, Boolean zip, Boolean TestFichierAnalyse) throws IOException {
public static StringBuilder feedback(node nodana, node verif, Boolean zip, Boolean TestFichierAnalyse) throws IOException, ParseException {
System.getProperty("file.encoding","UTF-8");
Date aujourdhui = new Date();
@ -43,6 +46,7 @@ public class feedbacks {
int number_match = 2;
int mini_modification = 0;
boolean plagiat = false;
boolean dateModificationAnterieur = false;
boolean copiercoller = false;
boolean pasAssezDeModification =false;
boolean baremeABC = false;
@ -63,6 +67,7 @@ public class feedbacks {
if(!verifStudent.getAttributs().get("first_modification_identique").equals("null") && Integer.valueOf(verifStudent.getAttributs().get("nombre_correspondances_consecutives"))>=number_match) plagiat=true;
if(verifStudent.getAttributs().get("copier_coller")!=null) copiercoller=true;
if(Integer.valueOf(verifStudent.getAttributs().get("nombre_modification"))<=mini_modification) pasAssezDeModification=true;
if(verifStudent.getAttributs().get("first_date_modification_anterieur_date_du_controle").equals("true")) dateModificationAnterieur=true;
}
}
}
@ -123,13 +128,14 @@ public class feedbacks {
node notation = nodana.retourneFirstEnfantsByName("bodyetnotation");
if(!baremeABC) {
if(noteFrom ==null) noteFrom="20";
if(!commandes.noNote) if(!plagiat&&!copiercoller&&!pasAssezDeModification) fichier.append("<p><spanpablo>" + notation.getAttributs().get("note") + " / " + noteFrom +"<br><span style=\"color:blue; font-size:30px\">"+ ouvre.getAttributs().get("metaSujet") +"</span></spanpablo></p>\r");
if(plagiat || copiercoller || pasAssezDeModification) {
if(!commandes.noNote) if(!plagiat&&!copiercoller&&!pasAssezDeModification&&!dateModificationAnterieur) fichier.append("<p><spanpablo>" + notation.getAttributs().get("note") + " / " + noteFrom +"<br><span style=\"color:blue; font-size:30px\">"+ ouvre.getAttributs().get("metaSujet") +"</span></spanpablo></p>\r");
if(plagiat || copiercoller || pasAssezDeModification || dateModificationAnterieur) {
notation.getAttributs().put("note","0");
String AffichageNote = "";
if(plagiat) AffichageNote = " Plagiat ";
if(copiercoller) AffichageNote = AffichageNote + " Copier Coller ";
if(pasAssezDeModification) AffichageNote = AffichageNote + " Pas assez de modification ";
if(dateModificationAnterieur) AffichageNote = AffichageNote + " Réalisation avant le contrôle ";
if(!commandes.noNote) fichier.append("<p><spanpablo>" + AffichageNote + " / " + noteFrom +"<br><span style=\"color:blue; font-size:30px\">"+ ouvre.getAttributs().get("metaSujet") +"</span></spanpablo></p>\r");
}
}else {
@ -155,13 +161,14 @@ public class feedbacks {
break;
}
if(!commandes.noNote) if(!plagiat&& !copiercoller &&!pasAssezDeModification) fichier.append("<p><spanpablo>" + imageNote +"<br><span style=\"color:blue; font-size:30px\">"+ ouvre.getAttributs().get("metaSujet") +"</span></spanpablo></p>\r");
if(plagiat || copiercoller || pasAssezDeModification) {
if(plagiat || copiercoller || pasAssezDeModification || dateModificationAnterieur) {
notation.getAttributs().put("note","0");
notation.getAttributs().put("noteABC","E");
String AffichageNote = "";
if(plagiat) AffichageNote = " Plagiat ";
if(copiercoller) AffichageNote = AffichageNote + " Copier Coller ";
if(pasAssezDeModification) AffichageNote = AffichageNote + " Pas assez de modification ";
if(dateModificationAnterieur) AffichageNote = AffichageNote + " Réalisation avant le controle ";
if(!commandes.noNote) fichier.append("<p><spanpablo>" + AffichageNote + " / " + "<br><span style=\"color:blue; font-size:30px\">"+ ouvre.getAttributs().get("metaSujet") +"</span></spanpablo></p>\r");
}
}
@ -217,11 +224,12 @@ public class feedbacks {
if(!commandes.noNote) {
if(!plagiat&&!copiercoller&&!pasAssezDeModification) fichier.append("Méthode : <div class=\"tooltip\"><font color=\"#0000ff\">Progression " + ouvre.getAttributs().get("progression") + "</font><span class=\"tooltiptext\">Explication<br>"+ HTML.imgProgression() +"</span></div> - Pourcentage correcte : " + nodana.retourneFirstEnfantsByName("bodyetnotation").getAttributs().get("proportioncorrect") +"<br>");
if(plagiat || copiercoller || pasAssezDeModification) {
if(plagiat || copiercoller || pasAssezDeModification || dateModificationAnterieur) {
String AffichageNote = "";
if(plagiat) AffichageNote = " Plagiat ";
if(copiercoller) AffichageNote = AffichageNote + " Copier Coller ";
if(pasAssezDeModification) AffichageNote = AffichageNote + " Pas assez de modification ";
if(dateModificationAnterieur) AffichageNote = AffichageNote + " Réalisation avant le contrôle ";
fichier.append("Méthode : <div class=\"tooltip\"><font color=\"#0000ff\">Progression " + ouvre.getAttributs().get("progression") + "</font><span class=\"tooltiptext\">Explication<br>"+ HTML.imgProgression() +"</span></div> - Pourcentage correcte : "+ AffichageNote +"<br>");
}
if(baremeABC) {
@ -267,7 +275,7 @@ public class feedbacks {
if(Boolean.valueOf(errors.getAttributs().get("manqueInitialCreator"))) fichier.append(HTML.Paragraph_classp5("ERREUR : La valeur de la méta donnée \"initial-creator\" dans les propriétés du fichier n'est pas \"" + nodana.retourneFirstEnfantsByName("ouverture").getAttributs().get("Initial_Creator"))+".\"");
}
//plagiat
//Affichage du feedback pour le plagiat
if(plagiat) if(verifStudent!=null){
fichier.append(HTML.SautLigne());
ArrayList<node> correspondance = verifStudent.retourneEnfantsByName("correspondance", new ArrayList<node>());
@ -276,10 +284,18 @@ public class feedbacks {
}
}
//Affichage du feedback pour la late de la première modification antérieure à la date du controle
if(dateModificationAnterieur) if(verifStudent!=null){
fichier.append(HTML.SautLigne());
fichier.append(HTML.Paragraph_classp5("La date du début du contrôle est le :" + formatDateWriter.DateLibreOffice(commandes.analyse_modificationDateMini)
+ " et la première date de modification dans le fichier est :" + verifStudent.getAttributs().get("first_modification_date")));
}
fichier.append(HTML.SautLigne());
if(!plagiat && !copiercoller && !pasAssezDeModification) {
//Affichage du feedback
if(!plagiat && !copiercoller && !pasAssezDeModification && !dateModificationAnterieur) {
//Ajoute de commentaire de l'exercice
fichier.append(HTML.H3(nodana.getContenu().get(0)).replace("-NewLine-", "<br>"));
@ -403,15 +419,19 @@ public class feedbacks {
String cheminFeedBack = nodana.retourneFirstEnfantsByName("ouverture").getAttributs().get("dossier") + "-DateLong" + aujourdhui.getTime()+"-"+metaS;
if(!commandes.noNote&&!baremeABC) {
if(!plagiat&&!copiercoller)cheminFeedBack = cheminFeedBack + "-" + nodana.retourneFirstEnfantsByName("bodyetnotation").getAttributs().get("note") + ".html";
if(plagiat) cheminFeedBack = cheminFeedBack + "- plagiat.html";
if(copiercoller) cheminFeedBack = cheminFeedBack + "- copier-coller.html";
if(pasAssezDeModification) cheminFeedBack = cheminFeedBack + "- pas assez de modification.html";
if(plagiat) cheminFeedBack = cheminFeedBack + "- plagiat";
if(copiercoller) cheminFeedBack = cheminFeedBack + "- copier-coller";
if(pasAssezDeModification) cheminFeedBack = cheminFeedBack + "- pas assez de modification";
if(dateModificationAnterieur) cheminFeedBack = cheminFeedBack + "- date modification antérieur au controle";
cheminFeedBack = cheminFeedBack + ".html";
}
if(!commandes.noNote&&baremeABC) {
if(!plagiat)cheminFeedBack = cheminFeedBack + "-" + nodana.retourneFirstEnfantsByName("bodyetnotation").getAttributs().get("noteABC") + ".html";
if(copiercoller) cheminFeedBack = cheminFeedBack + "- copier-coller.html";
if(plagiat) cheminFeedBack = cheminFeedBack + "- plagiat.html";
if(pasAssezDeModification) cheminFeedBack = cheminFeedBack + "- pas assez de modification.html";
if(copiercoller) cheminFeedBack = cheminFeedBack + "- copier-coller";
if(plagiat) cheminFeedBack = cheminFeedBack + "- plagiat";
if(pasAssezDeModification) cheminFeedBack = cheminFeedBack + "- pas assez de modification";
if(dateModificationAnterieur) cheminFeedBack = cheminFeedBack + "- date modification antérieur au controle";
cheminFeedBack = cheminFeedBack + ".html";
}
if(commandes.noNote) {
cheminFeedBack = cheminFeedBack + ".html";

View File

@ -11,22 +11,23 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Dictionary;
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.regex.Pattern;
import javax.swing.JEditorPane;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import cXML.Run;
import cXML.Run.UserStatus;
import cXML.node;
import calcul.formatDateWriter;
import evaluer.analyseFichier;
import evaluer.evaluation;
import cXML.Run;
import cXML.Run.UserStatus;
import net.lingala.zip4j.exception.ZipException;
@ -52,8 +53,9 @@ public class meptl {
* @throws IOException
* @throws CloneNotSupportedException
* @throws InterruptedException
* @throws ParseException
*/
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, CloneNotSupportedException, InterruptedException {
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException, CloneNotSupportedException, InterruptedException, ParseException {
System.getProperty("file.encoding","UTF-8");
commandes.path = System.getProperty("user.dir");
// patch = "C:/Users/pabr6/OneDrive/Desktop/Nouveau dossier";
@ -205,7 +207,7 @@ public class meptl {
verification.getNodes().add(nodStudent);
}
//a.ecritureNodeEnXML(verification, "VerificationHistorique","",false); //écriture du node de l'étudiant
verif = verificationHistorique(verification, a); // vérification des correspondances entre les fichiers
verif = VerificationHistorique.verificationHistorique(verification, a); // vérification des correspondances entre les fichiers
//********************************
//** Ecriture du node verif.xml **
@ -1357,92 +1359,142 @@ public class meptl {
//** Chargement du titre de l'exercice
if(commandes.sujet.getAttributs().get("titre")!=null) {
commandes.analyse_titre=commandes.sujet.getAttributs().get("titre");
}else {
commandes.analyse_titre = "";
}
// Chargement de la progression
if(commandes.sujet.getAttributs().get("progression")!=null) {
commandes.analyse_progression= Double.valueOf(commandes.sujet.getAttributs().get("progression"));
}else {
commandes.analyse_progression = 1.0;
}
// Chargement de la notefrom
if(commandes.sujet.getAttributs().get("notefrom")!=null) {
commandes.analyse_notefrom= Double.valueOf(commandes.sujet.getAttributs().get("notefrom"));
}else {
commandes.analyse_notefrom = 20.0;
}
// Chargement de la date de creation
if(commandes.sujet.getAttributs().get("creationDate")!=null) {
commandes.analyse_creationDate= commandes.sujet.getAttributs().get("creationDate");
}else {
commandes.analyse_creationDate = "";
}
// Chargement de modificationDateMini
if(commandes.sujet.getAttributs().get("modificationDateMini")!=null) {
commandes.analyse_modificationDateMini= formatDateWriter.DateLibreOffice(commandes.sujet.getAttributs().get("modificationDateMini"));
}else {
commandes.analyse_modificationDateMini= null;
}
// Chargement de la version
if(commandes.sujet.getAttributs().get("version")!=null) {
commandes.analyse_version= commandes.sujet.getAttributs().get("version");
}else {
commandes.analyse_version = "";
}
// Chargement du link_sujet
if(commandes.sujet.getAttributs().get("link_sujet")!=null) {
commandes.analyse_link_sujet= commandes.sujet.getAttributs().get("link_sujet");
}else {
commandes.analyse_link_sujet = "";
}
// Chargement du link_help
if(commandes.sujet.getAttributs().get("link_help")!=null) {
commandes.analyse_link_help= commandes.sujet.getAttributs().get("link_help");
}else {
commandes.analyse_link_help = "";
}
// Chargement du controleDateCreation
if(commandes.sujet.getAttributs().get("controleDateCreation")!=null) {
commandes.analyse_controleDateCreation = Boolean.valueOf(commandes.sujet.getAttributs().get("controleDateCreation"));
}else {
commandes.analyse_controleDateCreation = false;
}
// Chargement du modificationDateMini
if(commandes.sujet.getAttributs().get("controleDateModificationMini")!=null) {
commandes.analyse_controleDateModificationMini = Boolean.valueOf(commandes.sujet.getAttributs().get("controleDateModificationMini"));
}else {
commandes.analyse_controleDateModificationMini = false;
}
// Chargement du presenceMetaSujet
if(commandes.sujet.getAttributs().get("presenceMetaSujet")!=null) {
commandes.analyse_presenceMetaSujet = Boolean.valueOf(commandes.sujet.getAttributs().get("presenceMetaSujet"));
}else {
commandes.analyse_presenceMetaSujet = false;
}
// Chargement du historiquePresent
if(commandes.sujet.getAttributs().get("historiquePresent")!=null) {
commandes.analyse_historiquePresent = Boolean.valueOf(commandes.sujet.getAttributs().get("historiquePresent"));
}else {
commandes.analyse_historiquePresent = false;
}
// Chargement du baremeABC
if(commandes.sujet.getAttributs().get("baremeABC")!=null) {
commandes.analyse_baremeABC = Boolean.valueOf(commandes.sujet.getAttributs().get("baremeABC"));
}else {
commandes.analyse_baremeABC = false;
}
// Chargement du controle_Initial_Creator
if(commandes.sujet.getAttributs().get("controle_Initial_Creator")!=null) {
commandes.analyse_controle_Initial_Creator = Boolean.valueOf(commandes.sujet.getAttributs().get("controle_Initial_Creator"));
}else {
commandes.analyse_controle_Initial_Creator = false;
}
// Chargement du metaSujet
if(commandes.sujet.getAttributs().get("metaSujet")!=null) {
commandes.analyse_metaSujet= commandes.sujet.getAttributs().get("metaSujet");
}else {
commandes.analyse_metaSujet = "?";
}
// Chargement du auteur
if(commandes.sujet.getAttributs().get("auteur")!=null) {
commandes.analyse_auteur= commandes.sujet.getAttributs().get("auteur");
}else {
commandes.analyse_auteur = "";
}
// Chargement du Initial_Creator
if(commandes.sujet.getAttributs().get("Initial_Creator")!=null) {
commandes.analyse_Initial_Creator= commandes.sujet.getAttributs().get("Initial_Creator");
}else {
commandes.analyse_Initial_Creator = "";
}
// Chargement du date
if(commandes.sujet.getAttributs().get("date")!=null) {
commandes.analyse_date= commandes.sujet.getAttributs().get("date");
}else {
commandes.analyse_date = "";
}
//Charge le hash
if(commandes.sujet.getAttributs().get("hash")!=null) {
commandes.analyse_hash= commandes.sujet.getAttributs().get("hash");
}else {
commandes.analyse_hash = "";
}
//Charge le analysis_filename
if(commandes.sujet.getAttributs().get("analysis_filename")!=null) {
commandes.analysis_filename= commandes.sujet.getAttributs().get("analysis_filename");
}else {
commandes.analysis_filename ="";
}
@ -1520,8 +1572,9 @@ public class meptl {
* @throws ParserConfigurationException
* @throws SAXException
* @throws CloneNotSupportedException
* @throws ParseException
*/
public static void analyseVerifieHistoriqueLesFichiersEtudiantsEtExportNoteCSV(JEditorPane txt) throws IOException, ParserConfigurationException, SAXException, CloneNotSupportedException {
public static void analyseVerifieHistoriqueLesFichiersEtudiantsEtExportNoteCSV(JEditorPane txt) throws IOException, ParserConfigurationException, SAXException, CloneNotSupportedException, ParseException {
commandes.message = new StringBuilder();
commandes.message.append("\n *** LES FICHIERS ANALYSES & EVALUES ***\n");
@ -1564,7 +1617,7 @@ public class meptl {
verification.getNodes().add(nodStudent);
}
//a.ecritureNodeEnXML(verification, "VerificationHistorique","",false); //écriture du node de l'étudiant
verif = meptl.verificationHistorique(verification, a); // vérification des correspondances entre les fichiers
verif = VerificationHistorique.verificationHistorique(verification, a); // vérification des correspondances entre les fichiers
//********************************
//** Ecriture du node verif.xml **
@ -1737,6 +1790,7 @@ public class meptl {
manqueValeurCreationDate = false;
}
if(nodSujet.getAttributs().get("controle_Initial_Creator")!=null) {
if(nodSujet.getAttributs().get("controle_Initial_Creator").equalsIgnoreCase("true")) {
b = nodStudent.retourneFirstEnfantsByName("meta:initial-creator");
@ -1746,7 +1800,7 @@ public class meptl {
manqueInitialCreator = true;
}
}else {
System.out.println("ERROR. There is no Initial_Creator.");
System.out.println("Erreur, il n'y a pas de créateur initial.");
}
}else {
manqueInitialCreator = true;
@ -1762,7 +1816,6 @@ public class meptl {
}
}
erreurs.getAttributs().put("manqueMetaSujet", String.valueOf(manqueMetaSujet));
erreurs.getAttributs().put("manqueValeurMetaSujet", String.valueOf(manqueValeurMetaSujet));
erreurs.getAttributs().put("manqueCreationDate", String.valueOf(manqueCreationDate));
@ -1785,6 +1838,7 @@ public class meptl {
erreurs.getAttributs().put("manqueHistorique", "false");
manqueHistorique = false;
}
if( manqueMetaSujet == false && manqueValeurMetaSujet == false && manqueCreationDate == false && manqueValeurCreationDate == false
&& manqueHistorique == false && manqueInitialCreator == false) {
@ -2048,221 +2102,7 @@ public class meptl {
return nodanalyse;
}
/**
* Vérirication des historiques
* @param verification
* @param a
* @return le node verif
*/
public static node verificationHistorique(node verification, Run a) {
node verif = new node();
verif.setNomElt("verification");
verif.setAttributs(verification.getAttributs());
verif.getAttributs().put("number_match", String.valueOf(commandes.number_match));
verif.getAttributs().put("mini_number_modification", String.valueOf(commandes.mini_number_modification));
verif.getAttributs().put("nombres_modifications_simultané_maxi", String.valueOf(commandes.nombres_modifications_simultané_maxi));
ArrayList<node> LesFichiers = verification.retourneLesEnfantsByName("fichier", new ArrayList<node>());
System.out.println();
System.out.println("***** DEBUT VERIFICATION DES HISTORIQUES DES MODIFICATION ****");
System.out.println();
commandes.message.append("\n\n***** DEBUT VERIFICATION DES HISTORIQUES DES MODIFICATION ****\n");
for(int i = 0 ; i < LesFichiers.size() ; i++) {
node nodStudent = new node();
nodStudent.setNomElt("fichier");
nodStudent.setAttributs(LesFichiers.get(i).getAttributs());
//String nameStudent1 = LesFichiers.get(i).getAttributs().get("dossier");
ArrayList<node> HitoriqueDuFichier = LesFichiers.get(i).retourneEnfantsByName("text:changed-region", new ArrayList<node>());
int nombreModifications = HitoriqueDuFichier.size();
nodStudent.getAttributs().put("nombre_modification", String.valueOf(nombreModifications));
int compteurnombreCorrespondance = 0 ;
int compteurnombreCorrespondancesSuivi = 0;
int compteurnombreCorrespondancesconsecutive = 0;
System.out.println(LesFichiers.get(i).getAttributs().get("dossier") + " - number of modifications : " + nombreModifications);
commandes.message.append("\n"+LesFichiers.get(i).getAttributs().get("dossier") + " - number of modifications : " + nombreModifications);
@SuppressWarnings("unchecked")
ArrayList<node> LesFichiers2 = (ArrayList<node>) LesFichiers.clone();
LesFichiers2.remove(i);
Dictionary<String, Integer> lesdates = new Hashtable<String, Integer>();
Date DateMini = null; //Première date de modification
// Parcours toutes les modifications dans l'historique
for(int j = 0 ; j < HitoriqueDuFichier.size(); j++) {
node nodDate = null;
node nodDateCreator = null;
String dcdate1 ="";
@SuppressWarnings("unused")
String dccreator ="";
nodDate = HitoriqueDuFichier.get(j).retourneFirstEnfantsByName("dc:date");
nodDateCreator = HitoriqueDuFichier.get(j).retourneFirstEnfantsByName("dc:creator");
if(nodDate!=null) {
dcdate1 = nodDate.getContenu().get(0);
}
if(nodDate!=null) {
dccreator = nodDateCreator.getContenu().get(0);
}
Date DcDate1 = formatDateWriter.DateLibreOffice(dcdate1);
if(DateMini==null) DateMini = DcDate1; // Amorçage de la date premère date de modification
if(DateMini!=null && DateMini.after(DcDate1)) DateMini = DcDate1; //recherche la première date de modification
if(lesdates.get(dcdate1)==null) {
lesdates.put(dcdate1, 1);
}else {
int compteur = lesdates.get(dcdate1) + 1;
lesdates.put(dcdate1, compteur);
}
node N1 = HitoriqueDuFichier.get(j).getNodes().get(0);
for(int i2 = 0 ; i2 < LesFichiers2.size(); i2++) {
String nameStudent2 = LesFichiers2.get(i2).getAttributs().get("dossier");
ArrayList<node> HitoriqueDuFichier2 = LesFichiers2.get(i2).retourneEnfantsByName("text:changed-region", new ArrayList<node>());
for(int j2 = 0 ; j2 <HitoriqueDuFichier2.size(); j2++ ) {
String dcdate2 = HitoriqueDuFichier2.get(j2).retourneFirstEnfantsByName("dc:date").getContenu().get(0);
String dccreator2 = HitoriqueDuFichier2.get(j2).retourneFirstEnfantsByName("dc:creator").getContenu().get(0);
node N2 = HitoriqueDuFichier2.get(j2).retourneFirstEnfantsByName(N1.getNomElt());
if(Run.equalNode(N1, N2)) { //Verification des deux nodes de l'historique identiques
// if(dcdate1.equals(dcdate2) && N1.getNomElt().equals(N2.getNomElt()) && dccreator.equals(dccreator2)) { //cette ligne est redondante
if(nodStudent.retourneFirstNodeByNameAndAttributValueExactStrict("correspondance", "date", dcdate2)==null) {
//affinage du match
compteurnombreCorrespondance++;
if(compteurnombreCorrespondancesSuivi==0) {
compteurnombreCorrespondancesSuivi++;
}else {
ArrayList<node> correspondances = nodStudent.retourneEnfantsByName("correspondance", new ArrayList<node>());
node c = correspondances.get(correspondances.size()-1);
if(c.getAttributs().get("Avec_etudiant").equals(nameStudent2)&&c.getAttributs().get("dc:creator").equals(dccreator2)) {
compteurnombreCorrespondancesSuivi++;
if(compteurnombreCorrespondancesconsecutive+1>compteurnombreCorrespondancesconsecutive) compteurnombreCorrespondancesconsecutive++;
}else {
compteurnombreCorrespondancesSuivi=0;
}
}
node correspondance = new node();
correspondance.getNodes().add(N2);
correspondance.setNomElt("correspondance");
correspondance.getAttributs().put("date", dcdate1);
correspondance.getAttributs().put("type",N1.getNomElt());
correspondance.getAttributs().put("Avec_etudiant", nameStudent2);
correspondance.getAttributs().put("dc:creator", dccreator2);
nodStudent.getNodes().add(correspondance);
System.out.println("\t** Trouve une correspondance ** " + dcdate1);
commandes.message.append("\n\t** Trouve une correspondance ** " + dcdate1);
break;
}
// }
}
}
}
}
Enumeration<String> key = lesdates.keys();
while(key.hasMoreElements()) {
String k = key.nextElement();
if(lesdates.get(k)>1) {
node modificationsMemeDate = new node();
modificationsMemeDate.setNomElt("memeinstant");
modificationsMemeDate.getAttributs().put("date", k);
modificationsMemeDate.getAttributs().put("nombres_modifications_simultané", String.valueOf(lesdates.get(k)));
if(commandes.nombres_modifications_simultané_maxi<lesdates.get(k)) {
modificationsMemeDate.getAttributs().put("copier_coller", "true");
nodStudent.getAttributs().put("copier_coller", "true");
}else {
modificationsMemeDate.getAttributs().put("copier_coller", "false");
}
nodStudent.getNodes().add(modificationsMemeDate);
}
}
node modificationsMemeDate = new node();
modificationsMemeDate.setNomElt("memeinstant");
if(compteurnombreCorrespondancesconsecutive>0)compteurnombreCorrespondancesconsecutive++; //C'est histoire des arbres et des intervalles entre les arbres. Il faut ajouter plus 1 au nombre de correspondances consecutives.
nodStudent.getAttributs().put("nombre_correspondance", String.valueOf(compteurnombreCorrespondance));
nodStudent.getAttributs().put("nombre_modifications_date_unique", String.valueOf(lesdates.size()));
nodStudent.getAttributs().put("nombre_correspondances_consecutives", String.valueOf(compteurnombreCorrespondancesconsecutive));
nodStudent.getAttributs().put("first_modification_date", String.valueOf(DateMini));
verif.getNodes().add(nodStudent);
System.out.println("\tDate de modification date unique " + String.valueOf(lesdates.size()));
commandes.message.append("\n\tDate de modification date unique " + String.valueOf(lesdates.size()));
}
// Ci-dessous le code pour vérifier la première date de modification dans le fichier.
// Recherche dans le node verif
int lastIndex = verif.getNodes().size();
for(int i = 0 ; i < lastIndex;i++) {
String D1 = verif.getNodes().get(i).getAttributs().get("first_modification_date");
boolean trouve =false;
for(int j = 0; j < lastIndex; j++) {
if(i!=j) {
String D2 = verif.getNodes().get(j).getAttributs().get("first_modification_date");
if(!D1.equals("null") && D1.equals(D2)) {
if(verif.getNodes().get(i).getAttributs().get("")==null) {
verif.getNodes().get(i).getAttributs().put("first_modification_identique", verif.getNodes().get(j).getAttributs().get("dossier"));
}else {
verif.getNodes().get(i).getAttributs().put("first_modification_identique_2", verif.getNodes().get(j).getAttributs().get("dossier"));
}
if(verif.getNodes().get(j).getAttributs().get("")==null) {
verif.getNodes().get(j).getAttributs().put("first_modification_identique", verif.getNodes().get(i).getAttributs().get("dossier"));
}else {
verif.getNodes().get(j).getAttributs().put("first_modification_identique_2", verif.getNodes().get(i).getAttributs().get("dossier"));
}
trouve=true;
}
}
}
if(!trouve) {
verif.getNodes().get(i).getAttributs().put("first_modification_identique","null");
}else {
verif.getNodes().get(i).getAttributs().put("plagiat", "probable");
System.out.println("\t\t ************************");
System.out.println("\t\t ** Plagiat PROBABLE **");
System.out.println("\t\t ************************");
commandes.message.append("\n\t\t ************************");
commandes.message.append("\n\t\t Plagiat PROBABLE ");
commandes.message.append("\n\t\t ************************");
}
}
System.out.println();
System.out.println("** FIN DE LA VERIFIACTION **");
System.out.println();
commandes.message.append("\n** FIN DE LA VERIFICATION **\n");
return verif;
}
/**
* Ecriture de l'ensemble des notes brutes sans vérification et sans rechercher les identifiants des étudiants
@ -2880,7 +2720,7 @@ public class meptl {
}
/**
* Transformation des nodes number:date-style en style:style (pour évaluation avec analyseStyle;</br>
* Transformation des nodes number:date-style en style:style (pour évaluation avec analyseStyle)</br>
* @param nodStyles
*/
private static void transformationNumberDateToStyle(node nodStyles, node structure) {
@ -2911,18 +2751,6 @@ public class meptl {
}
}
// @SuppressWarnings("unlikely-arg-type")
// private static void nettoyerDesNoddesNull(node nodStyles) {
// ArrayList<Integer> index = new ArrayList<Integer>();
// for(int i = 0 ; i < nodStyles.getNodes().size();i++) {
// if( nodStyles.getNodes().get(i)==null) {
// index.add(i);
// }
// }
// for(int i = index.size()-1 ; i >= 0 ;i--) {
// nodStyles.getNodes().remove(index.get(i));
// }
// }
}

View File

@ -169,11 +169,10 @@ public class verificationFichierAnalyse {
/**
* Vérification des attribut du node fichier.
* Vérification des attributs du node fichier.
* @param attribut
*/
private static void verificationNodeFichier(Dictionary<String, String> attribut) {
boolean erreurNomPremierNodeFichier=false;
boolean erreurManqueAttributEvaluerPremierNodeFichier=false;
@ -185,6 +184,7 @@ public class verificationFichierAnalyse {
boolean erreurValeurAttributNoteFromNonConvertibleEnDouble=false;
boolean erreurValeurAttributBaremeABCNonConvertibleEnLogique=false;
boolean erreurValeurAttributcontroleDateCreationNonConvertibleEnLogique=false;
boolean erreurValeurAttributcontroleDateModificationMiniNonConvertibleEnLogique=false;
boolean erreurValeurAttributpresenceMetaSujetConvertibleEnLogique=false;
boolean erreurValeurAttributcontrole_Initial_CreatorConvertibleEnLogique=false;
boolean erreurValeurAttributhistoriquePresentConvertibleEnLogique=false;
@ -282,6 +282,7 @@ public class verificationFichierAnalyse {
}
}
if(attribut.get("controleDateCreation")!=null) {
String p = attribut.get("controleDateCreation");
if(!(p.equals("true")||p.equals("false"))) {
@ -296,6 +297,20 @@ public class verificationFichierAnalyse {
}
}
if(attribut.get("controleDateModificationMini")!=null) {
String p = attribut.get("controleDateModificationMini");
if(!(p.equals("true")||p.equals("false"))) {
commandes.message.append("\n**************************************************");
commandes.message.append("\nERREUR dans le fichier d'analyse, dans le node <fichier>.");
commandes.message.append("\nL'attribut \"controleDateModificationMini\" n'a pas une valeur logique.");
commandes.message.append("\n**************************************************");
JOptionPane.showMessageDialog(null, "<html>Dans le node <fichier>, l'attribut \"<b>controleDateModificationMini</b>\" ne possède pas une valeur correcte."
+ "<br>La valeur de la \"<b>controleDateCreation</b>\" doit être une valeur logique \"<b>true</b>\" ou \"<b>false</b>\"."
+ "<br>Sélectionner le node <fichier> est cliqué sur les propriétés du fichier.</html>", "Avertissement", JOptionPane.WARNING_MESSAGE);
erreurValeurAttributcontroleDateModificationMiniNonConvertibleEnLogique=true;
}
}
if(attribut.get("presenceMetaSujet")!=null) {
String p = attribut.get("presenceMetaSujet");
if(!(p.equalsIgnoreCase("true")||p.equalsIgnoreCase("false"))) {
@ -350,6 +365,7 @@ public class verificationFichierAnalyse {
verifSujet.getAttributs().put("erreurValeurAttributNoteFromNonConvertibleEnDouble",String.valueOf(erreurValeurAttributNoteFromNonConvertibleEnDouble));
verifSujet.getAttributs().put("erreurValeurAttributBaremeABCNonConvertibleEnLogique",String.valueOf(erreurValeurAttributBaremeABCNonConvertibleEnLogique));
verifSujet.getAttributs().put("erreurValeurAttributcontroleDateCreationNonConvertibleEnLogique",String.valueOf(erreurValeurAttributcontroleDateCreationNonConvertibleEnLogique));
verifSujet.getAttributs().put("erreurValeurAttributcontroleDateModificationMiniNonConvertibleEnLogique",String.valueOf(erreurValeurAttributcontroleDateModificationMiniNonConvertibleEnLogique));
verifSujet.getAttributs().put("erreurValeurAttributpresenceMetaSujetConvertibleEnLogique",String.valueOf(erreurValeurAttributpresenceMetaSujetConvertibleEnLogique));
verifSujet.getAttributs().put("erreurValeurAttributcontrole_Initial_CreatorConvertibleEnLogique",String.valueOf(erreurValeurAttributcontrole_Initial_CreatorConvertibleEnLogique));
verifSujet.getAttributs().put("erreurValeurAttributhistoriquePresentConvertibleEnLogique",String.valueOf(erreurValeurAttributhistoriquePresentConvertibleEnLogique));
@ -371,11 +387,6 @@ public class verificationFichierAnalyse {
if(attribut.get("evaluer").equals("true")) {
if(attribut.get("addmenu")!=null) {
if(!attribut.get("addmenu").equals("true")) {
System.out.println();
System.out.println("**-** ERREUR dans le fichier d'analyse, dans le node <"+ nameNode +">.");
System.out.println("Le node principal <" + nameNode +"> doit contenir l'attribut \"addmenu=true\".");
System.out.println("Pour cette version, Il est necessaire de créer un lien de menu du node principal.");
System.out.println();
commandes.message.append("\n**************************************************");
commandes.message.append("\nERREUR dans le fichier d'analyse, dans le node <"+ nameNode +">.");
commandes.message.append("\nLe node principal <" + nameNode +"> doit contenir l'attribut \"addmenu=true\".");
@ -384,11 +395,6 @@ public class verificationFichierAnalyse {
erreur=true;
}
}else {
System.out.println();
System.out.println("**-** ERREUR dans le fichier d'analyse, dans le node <"+ nameNode +">.");
System.out.println("Le node principal <" + nameNode +"> doit contenir l'attribut \"addmenu=true\". Cet attribut a été supprimé.");
System.out.println("Pour cette version, Il est necessaire de créer un lien de menu du node principal.");
System.out.println();
commandes.message.append("\n**************************************************");
commandes.message.append("\nERREUR dans le fichier d'analyse, dans le node <"+ nameNode +">.");
commandes.message.append("\nLe node principal <" + nameNode +"> doit contenir l'attribut \"addmenu=true\". Cet attribut a été supprimé.");

View File

@ -10,8 +10,8 @@ import javax.swing.ImageIcon;
import javax.swing.KeyStroke;
import MEPTL.commandes;
import fenetres.ChargeFichierXML;
import fenetres.create;
import fenetres.filechooserXML;
public class actOpen extends AbstractAction{
@ -28,7 +28,7 @@ public class actOpen extends AbstractAction{
}
@Override
public void actionPerformed(ActionEvent e) {
new filechooserXML();
new ChargeFichierXML();
if(commandes.fichierAnalyseValide) {
fenetres.create.getTree().setVisible(true);
fenetres.create.constructionTree();

View File

@ -10,20 +10,26 @@ import javax.swing.JOptionPane;
public class formatDateWriter {
//** exemple de date correct 2016-01-30T16:52:51
/**
* Retourne true sie le format est YYYY-MM-JJTHH:MM:SS.<br>
* @param date une String.
* @return retrourne true ou false.
*/
public static boolean isCorrect(String date) {
if(date.isEmpty()) return true;
Pattern p = Pattern.compile("^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}$");
Matcher m = p.matcher(date);
if(m.find()) return true;
JOptionPane.showMessageDialog(null, "Le format de la date n'est pas correct.");
JOptionPane.showMessageDialog(null, "Le format de la date "+ date +" n'est pas correct.");
return false;
}
/**
*
* Retourne une date à partir d'une String composée de YYYY-MM-JJTHH:MM:SS.<br>
* @param libreoffice_date
* @return
* @return une date.
*/
public static Date DateLibreOffice(String libreoffice_date){
boolean contientHeure = false;
@ -31,8 +37,9 @@ public class formatDateWriter {
libreoffice_date=libreoffice_date.replace("T", " ");
contientHeure=true;
}
SimpleDateFormat simpledateformat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date d = null;
SimpleDateFormat simpledateformat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
if(!contientHeure) simpledateformat = new SimpleDateFormat("yyyy-MM-dd");
try {
@ -44,4 +51,21 @@ public class formatDateWriter {
return d;
}
/**
* Retourne une String à partir d'une date composé de YYYY-MM-JJTHH:MM:SS.</br>
* @param d
* @return
* @throws ParseException
*/
public static String DateLibreOffice(Date d) throws ParseException {
SimpleDateFormat simpledateformat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
String d1 = simpledateformat.format(d);
return d1;
}
}

View File

@ -22,7 +22,7 @@ import MEPTL.meptl;
import MEPTL.verificationFichierAnalyse;
import cXML.node;
public class filechooserXML extends JFileChooser {
public class ChargeFichierXML extends JFileChooser {
/**
*
@ -30,7 +30,7 @@ public class filechooserXML extends JFileChooser {
private static final long serialVersionUID = 1L;
public filechooserXML() {
public ChargeFichierXML() {
setDialogTitle("Choisir un fichier d'analyse");

View File

@ -467,6 +467,8 @@ public class afficheText extends JEditorPane {
text.append("<br>");
text.append("<p>Contrôle la date de création : <b>" + commandes.analyse_controleDateCreation+ "</b></p>");
text.append("<br>");
text.append("<p>Contrôle la date minimale des modifications : <b>" + commandes.analyse_controleDateModificationMini+ "</b></p>");
text.append("<br>");
text.append("<p>Contrôle l'auteur initial du fichier : <b>" + commandes.analyse_controle_Initial_Creator + "</b></p>");
text.append("<br><hr><br>");
text.append("<p><b><u>Dossier de l'analyse contenant les fichiers des étudiants, feedbacks et notes</u></b> :</p>");

View File

@ -8,6 +8,7 @@ import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.io.IOException;
import java.text.ParseException;
import javax.swing.AbstractAction;
import javax.swing.Action;
@ -687,7 +688,7 @@ public class evaluate extends JFrame {
@Override
public void actionPerformed( ActionEvent e ) {
new filechooserXML();
new ChargeFichierXML();
refreshLabel();
}
};
@ -806,6 +807,9 @@ public class evaluate extends JFrame {
e1.printStackTrace();
} catch (InterruptedException e1) {
e1.printStackTrace();
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}else {
txtpnmessages.setText("*** Veuillez sélectionner un dossier d'analyse. ***");

View File

@ -1,12 +1,14 @@
package fenetres;
import java.io.IOException;
import java.text.ParseException;
import javax.swing.JEditorPane;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import MEPTL.VerificationHistorique;
import MEPTL.commandes;
import MEPTL.feedbacks;
import MEPTL.meptl;
@ -105,14 +107,16 @@ public class evaluerLesFichiersEtudiants implements Runnable{
//a.ecritureNodeEnXML(verification, "VerificationHistorique","",false); //écriture du node de l'étudiant
txt.setText("\nRecherche des concordances temporelles et d'auteur dans l'historique des modifications des " + nbFichierWriter + " fichiers."
+ "\nPatientez, cela peut prendre quelques secondes ou minutes.");
verif = meptl.verificationHistorique(verification, a); // vérification des correspondances entre les fichiers
//********************************
//** Ecriture du node verif.xml **
//********************************
try {
verif = VerificationHistorique.verificationHistorique(verification, a);
Run.ecritureNodeEnXML(verif, "Verif",commandes.path, Run.TypeFile.Verif );
} catch (IOException e) {
} catch (IOException | ParseException e) {
e.printStackTrace();
} //écriture du node de vérification
commandes.message.append("<br>");
@ -209,6 +213,8 @@ public class evaluerLesFichiersEtudiants implements Runnable{
feedbacks.feedback(ana,verif, false,false);
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
if(commandes.zipfeedback) { // Dans une archive pour Moodle
@ -219,6 +225,8 @@ public class evaluerLesFichiersEtudiants implements Runnable{
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
}

View File

@ -43,6 +43,7 @@ public final class proprieteFichierAnalyse extends JFrame {
private JComboBox<String> comboBoxhistoriquePresent;
private JComboBox<String> comboBoxcontrole_Initial_Creator;
private JComboBox<String> comboBoxcontroleDateCreation;
private JComboBox<String> comboBoxcontrole_modificationDateMini;
private JLabel lblNewLabel_8;
private JLabel lblNewLabel_9;
private JTextField textFieldInitial_Creator;
@ -64,12 +65,17 @@ public final class proprieteFichierAnalyse extends JFrame {
private JButton btnAideInitial_Creator;
private JButton btnAidecontrole_Initial_Creator;
private JButton btnAidecontrole_URLAide;
private JButton btnAidecontrole_dateModificationMini;
private JButton btnAidecontrole_URLSujet;
private JButton btnAidecontrole_Commentaire;
private JButton btnVoirBaremeABC;
private JButton btnVoirBaremeNumeric;
private static proprieteFichierAnalyse instance;
private JLabel lblNewLabel_13;
private JLabel lblNewLabel_14;
private JTextField textField_dateModificationMini;
private JLabel lblNewLabel_15;
@ -82,7 +88,7 @@ public final class proprieteFichierAnalyse extends JFrame {
setTitle("Propriétés du fichier d'analyse - " + commandes.version + " " + commandes.branch);
setIconImage(img.getImage());
setBounds(0, 0, 630, 715);
setBounds(0, 0, 682, 780);
setResizable(false);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
@ -93,7 +99,7 @@ public final class proprieteFichierAnalyse extends JFrame {
contentPane = new JPanel();
contentPane.setBorder(null);
setContentPane(contentPane);
contentPane.setLayout(new MigLayout("", "[260px][260px,grow][10,grow 20]", "[18px][18px][18px][30px][18px][18px][18px][30px][45px][18px][18px][18px][18px][18px][72px,grow][18px:24px:48px,grow]"));
contentPane.setLayout(new MigLayout("", "[260px][260px,grow][10,grow 20]", "[18px][18px][18px][30px][18px][18px][18px][30px][45px][18px][18px][18px][18px][18px][18px][18px][40px][18px:24px:48px,grow]"));
JLabel lblNewLabel = new JLabel("Titre de l'exercice");
lblNewLabel.setFont(new Font("Tahoma", Font.PLAIN, 12));
@ -379,9 +385,50 @@ public final class proprieteFichierAnalyse extends JFrame {
btnAidecontrole_Initial_Creator.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/whatmini.png")));
contentPane.add(btnAidecontrole_Initial_Creator, "cell 2 11");
lblNewLabel_14 = new JLabel("<html>La date et heure du début du contrôle.<br>C'est la date qui doit être<br>la plus ancienne dans le fichier des étudiant.</html>");
lblNewLabel_14.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(lblNewLabel_14, "cell 0 12,alignx left");
textField_dateModificationMini = new JTextField();
textField_dateModificationMini.setFont(new Font("Tahoma", Font.PLAIN, 12));
if(commandes.sujet.getAttributs().get("modificationDateMini")!=null){
textField_dateModificationMini.setText(commandes.sujet.getAttributs().get("modificationDateMini"));
}
contentPane.add(textField_dateModificationMini, "cell 1 12,growx");
textField_dateModificationMini.setColumns(10);
btnAidecontrole_dateModificationMini = new JButton("");
btnAidecontrole_dateModificationMini.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showInternalMessageDialog(null, "<html>Si vous indiquez une date, alors toutes les dates"
+ "<br>de modification dans un fichier doivent être postérieures à la date indiquée.<html>");
}
});
btnAidecontrole_dateModificationMini.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/whatmini.png")));
contentPane.add(btnAidecontrole_dateModificationMini, "cell 2 12");
lblNewLabel_15 = new JLabel("<html>La date des modifications doit être<br>postérieures à la date du début du contrôle.</html>");
lblNewLabel_15.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(lblNewLabel_15, "cell 0 13,alignx left");
comboBoxcontrole_modificationDateMini = new JComboBox<String>();
comboBoxcontrole_modificationDateMini.setModel(new DefaultComboBoxModel<String>(new String[] {"false", "true"}));
comboBoxcontrole_modificationDateMini.setFont(new Font("Tahoma", Font.BOLD, 12));
contentPane.add(comboBoxcontrole_modificationDateMini, "cell 1 13,growx");
if(commandes.sujet.getAttributs().get("controleDateModificationMini")!=null){
comboBoxcontrole_modificationDateMini.setSelectedItem(commandes.sujet.getAttributs().get("controleDateModificationMini").toLowerCase());
}
btnAidecontrole_dateModificationMini = new JButton("");
btnAidecontrole_dateModificationMini.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showInternalMessageDialog(null, "<html>Si vrai alors les dates"
+ "<br>de modification dans un fichier doivent être postérieures à la date indiquée.<html>");
}
});
btnAidecontrole_dateModificationMini.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/whatmini.png")));
contentPane.add(btnAidecontrole_dateModificationMini, "cell 2 13");
lblNewLabel_11 = new JLabel("Lien URL de l'aide");
lblNewLabel_11.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(lblNewLabel_11, "cell 0 12,alignx left");
contentPane.add(lblNewLabel_11, "cell 0 14,alignx left");
btnAidecontrole_URLAide = new JButton("");
btnAidecontrole_URLAide.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
@ -390,17 +437,17 @@ public final class proprieteFichierAnalyse extends JFrame {
}
});
btnAidecontrole_URLAide.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/whatmini.png")));
contentPane.add(btnAidecontrole_URLAide, "cell 2 12");
contentPane.add(btnAidecontrole_URLAide, "cell 2 14");
// URL Aide
lblNewLabel_12 = new JLabel("Lien URL du sujet");
lblNewLabel_12.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(lblNewLabel_12, "cell 0 13,alignx left");
contentPane.add(lblNewLabel_12, "cell 0 15,alignx left");
textFieldlink_help = new JTextField();
textFieldlink_help.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(textFieldlink_help, "cell 1 12,growx");
contentPane.add(textFieldlink_help, "cell 1 14,growx");
textFieldlink_help.setColumns(10);
if(commandes.sujet.getAttributs().get("link_help")!=null){
textFieldlink_help.setText(commandes.sujet.getAttributs().get("link_help"));
@ -422,7 +469,7 @@ public final class proprieteFichierAnalyse extends JFrame {
// URL Sujet Ligne 13
textFieldlink_sujet = new JTextField();
contentPane.add(textFieldlink_sujet, "cell 1 13,growx");
contentPane.add(textFieldlink_sujet, "cell 1 15,growx");
textFieldlink_sujet.setColumns(10);
if(commandes.sujet.getAttributs().get("link_sujet")!=null){
textFieldlink_sujet.setText(commandes.sujet.getAttributs().get("link_sujet"));
@ -435,15 +482,15 @@ public final class proprieteFichierAnalyse extends JFrame {
}
});
btnAidecontrole_URLSujet.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/whatmini.png")));
contentPane.add(btnAidecontrole_URLSujet, "cell 2 13");
contentPane.add(btnAidecontrole_URLSujet, "cell 2 15");
// Commentaire exercice Ligne 14
lblNewLabel_13 = new JLabel("Commentaire sur l'exercice");
lblNewLabel_13.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(lblNewLabel_13, "cell 0 14,alignx left");
contentPane.add(lblNewLabel_13, "cell 0 16,alignx left");
textAreaCommentaire = new JTextArea();
textAreaCommentaire.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(textAreaCommentaire, "cell 1 14,grow");
contentPane.add(textAreaCommentaire, "cell 1 16,grow");
if(!commandes.sujet.getContenu().isEmpty()) {
if(commandes.sujet.getContenu().get(0)!=null) {
String textCommentaire = commandes.sujet.getContenu().get(0).replace("-NewLine-", "\n");
@ -458,7 +505,7 @@ public final class proprieteFichierAnalyse extends JFrame {
}
});
btnAidecontrole_Commentaire.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/whatmini.png")));
contentPane.add(btnAidecontrole_Commentaire, "cell 2 14");
contentPane.add(btnAidecontrole_Commentaire, "cell 2 16");
// Bouton de calcul de la base numérique
@ -478,12 +525,13 @@ public final class proprieteFichierAnalyse extends JFrame {
// Bouton pour validation
JButton btnNewButton = new JButton("Valider");
btnNewButton.setFont(new Font("Tahoma", Font.BOLD, 14));
contentPane.add(btnNewButton, "cell 1 15,grow");
contentPane.add(btnNewButton, "cell 1 17,grow");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(verifCoefProgression()&&verifBareme()&&formatDateWriter.isCorrect(textFieldDateCreation.getText())) {
if(verifCoefProgression()&&verifBareme()&&formatDateWriter.isCorrect(textFieldDateCreation.getText())
&& formatDateWriter.isCorrect(textField_dateModificationMini.getText())){
commandes.sujet.getAttributs().put("titre", textFieldTitre.getText() );
commandes.sujet.getAttributs().put("auteur", textFieldAuteur.getText() );
commandes.sujet.getAttributs().put("metaSujet", textFieldMetaSujet.getText() );
@ -493,7 +541,9 @@ public final class proprieteFichierAnalyse extends JFrame {
commandes.sujet.getAttributs().put("progression", textFieldProgression.getText() );
commandes.sujet.getAttributs().put("historiquePresent", comboBoxhistoriquePresent.getSelectedItem().toString() );
commandes.sujet.getAttributs().put("creationDate", textFieldDateCreation.getText() );
commandes.sujet.getAttributs().put("modificationDateMini", textField_dateModificationMini.getText() );
commandes.sujet.getAttributs().put("controleDateCreation", comboBoxcontroleDateCreation.getSelectedItem().toString() );
commandes.sujet.getAttributs().put("controleDateModificationMini", comboBoxcontrole_modificationDateMini.getSelectedItem().toString() );
commandes.sujet.getAttributs().put("Initial_Creator", textFieldInitial_Creator.getText() );
commandes.sujet.getAttributs().put("controle_Initial_Creator", comboBoxcontrole_Initial_Creator.getSelectedItem().toString() );
commandes.sujet.getAttributs().put("link_help", textFieldlink_help.getText() );
@ -650,6 +700,11 @@ public final class proprieteFichierAnalyse extends JFrame {
}else {
textFieldDateCreation.setText("");
}
if(commandes.sujet.getAttributs().get("modificationDateMini")!=null){
textField_dateModificationMini.setText(commandes.sujet.getAttributs().get("modificationDateMini"));
}else {
textField_dateModificationMini.setText("");
}
if(commandes.sujet.getAttributs().get("presenceMetaSujet")!=null){
comboBoxPresenceMetaSujet.setSelectedItem(commandes.sujet.getAttributs().get("presenceMetaSujet").toLowerCase());
}else {
@ -675,6 +730,11 @@ public final class proprieteFichierAnalyse extends JFrame {
}else {
comboBoxcontroleDateCreation.setSelectedItem(String.valueOf(commandes.analyse_controleDateCreation));
}
if(commandes.sujet.getAttributs().get("controleDateModificationMini")!=null){
comboBoxcontrole_modificationDateMini.setSelectedItem(commandes.sujet.getAttributs().get("controleDateModificationMini").toLowerCase());
}else {
comboBoxcontrole_modificationDateMini.setSelectedItem(String.valueOf(commandes.analyse_controleDateModificationMini));
}
}