maj V4.5.2

This commit is contained in:
pablo rodriguez 2025-02-02 14:06:34 +01:00
parent 32eaacf607
commit 7cd90f1bac
13 changed files with 305 additions and 113 deletions

File diff suppressed because one or more lines are too long

View File

@ -144,7 +144,9 @@ public class commandes {
public static boolean analyse_presenceMetaSujet=false;
public static boolean analyse_controleDateCreation=false;
public static boolean analyse_controleDateModificationMini=false;
public static boolean analyse_interdireModele=true;
public static boolean analyse_controle_Initial_Creator=false;
public static boolean analyse_premierAuteurIdentiqueMoodle=false;
public static boolean analyse_baremeABC=false;
public static double analyse_progression=1;
public static double analyse_notefrom=20;
@ -212,6 +214,8 @@ public class commandes {
analyse_link_help="";
analyse_date="";
analyse_historiquePresent=false;
analyse_interdireModele=true;
analyse_premierAuteurIdentiqueMoodle=false;
analyse_exclure_name_creator = false;
analyse_auteur_exclure_historique = "";
analyse_presenceMetaSujet=false;

View File

@ -56,6 +56,8 @@ public class ecritureSujet {
}
nod.getAttributs().put("controle_Initial_Creator", "false");
nod.getAttributs().put("presenceMetaSujet", "false");
nod.getAttributs().put("interdireModele", "true");
nod.getAttributs().put("premierAuteurIdentiqueMoodle", "false");
node b = a.retourneName(nod.retourneFirstEnfantsByName("office:meta"),"meta:user-defined","meta:name","Sujet");
if(b!=null) { nod.getAttributs().put("metaSujet", b.getContenu().get(0));}else {nod.getAttributs().put("metaSujet", "?");}
b = nod.retourneFirstEnfantsByName("office:meta").retourneFirstEnfantsByName("meta:creation-date");

View File

@ -275,7 +275,10 @@ public class feedbacks {
if(Boolean.valueOf(errors.getAttributs().get("manqueValeurCreationDate"))) fichier.append(HTML.Paragraph_classp5("ERREUR : Ce n'est pas la bonne date de création du fichier. Le fichier a été réïnitialisé ou ce n'est pas le fichier du sujet."));
if(Boolean.valueOf(errors.getAttributs().get("manqueMetaSujet"))) fichier.append(HTML.Paragraph_classp5("ERREUR : La méta donnée \"Sujet\" dans les propriétés du fichier a été supprimée ou renommée."));
if(Boolean.valueOf(errors.getAttributs().get("manqueValeurMetaSujet"))) fichier.append(HTML.Paragraph_classp5("ERREUR : La valeur de la méta donnée \"Sujet\" dans les propriétés du fichier n'est pas \"" + nodana.retourneFirstEnfantsByName("ouverture").getAttributs().get("metaSujet"))+".\"");
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"))+".\"");
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"))+".\"");
if(Boolean.valueOf(errors.getAttributs().get("creationDepuisModele"))) fichier.append(HTML.Paragraph_classp5("ERREUR : Le fichier a été créé depuis un modèle."));
if(Boolean.valueOf(errors.getAttributs().get("premierAuteurPasIdentiqueMoodle"))) fichier.append(HTML.Paragraph_classp5("ERREUR : Celui qui a remis le fichier n'est pas le premier auteur du fichier."));
}
//Affichage du feedback pour le plagiat

View File

@ -229,7 +229,7 @@ public class meptl {
node nodmeta = nod.retourneFirstEnfantsByName("office:meta");
// ajoute les créateurs ou éditeur dans les nodes dc:creator ou meta:initial-creator
// Ajoute les créateurs ou éditeur dans les nodes dc:creator ou meta:initial-creator
// Pour permettre l'analyse avec les attributs evalNameCreator ou evalNameInitialCreator
if(nodmeta.retourneEnfantsByNameExist("dc:creator")) {
if(a.getLectDossiers().getEC().getListeNomDossier().get(i)!=null) {
@ -888,6 +888,22 @@ public class meptl {
commandes.analyse_historiquePresent = false;
}
// Chargement du interdireModele
if(commandes.sujet.getAttributs().get("interdireModele")!=null) {
commandes.analyse_interdireModele = Boolean.valueOf(commandes.sujet.getAttributs().get("interdireModele"));
}else {
commandes.analyse_interdireModele = true;
commandes.sujet.getAttributs().put("interdireModele","true");
}
// Chargement du premierAuteurIdentiqueMoodle
if(commandes.sujet.getAttributs().get("premierAuteurIdentiqueMoodle")!=null) {
commandes.analyse_premierAuteurIdentiqueMoodle = Boolean.valueOf(commandes.sujet.getAttributs().get("premierAuteurIdentiqueMoodle"));
}else {
commandes.analyse_premierAuteurIdentiqueMoodle = true;
commandes.sujet.getAttributs().put("premierAuteurIdentiqueMoodle","false");
}
// Chargement du baremeABC
if(commandes.sujet.getAttributs().get("baremeABC")!=null) {
commandes.analyse_baremeABC = Boolean.valueOf(commandes.sujet.getAttributs().get("baremeABC"));
@ -1032,6 +1048,8 @@ public class meptl {
* <br><b> manqueValeurCreationDate</b> si VRAI, la date de la méta données <b>creationDate</b> n'est pas la bonne.
* <br><b> manqueHistorique</b> si VRAI, il n'y a pas d'historique des modifications.<br>
* <br><b> manqueInitialCreator</b> si VRAI, il n'y a pas de premier auteur ou qu'il ne correspond pas.<br>
* <br><b> creationDepuisModele</b> si VRAI, le fichier est créé depuis un modèle.<br>
* <br><b> premierAuteurPasIdentiqueMoodle</b> si VRAI, celui qui a remis le fichier n'est pas le premier auteur.<br>
* @param nodStudent : node de l'étudiants.
* @param nodSujet : node du sujet.
* @param a : objet Run de cXML.
@ -1046,6 +1064,8 @@ public class meptl {
boolean manqueValeurCreationDate = false;
boolean manqueHistorique = false;
boolean manqueInitialCreator = false;
boolean creationDepuisModele = false;
boolean premierAuteurPasIdentiqueMoodle = false;
node b = null;
@ -1061,6 +1081,29 @@ public class meptl {
}
}
}
if(nodSujet.getAttributs().get("interdireModele")!=null) {
if(nodSujet.getAttributs().get("interdireModele").equals("true")) {
b = nodStudent.retourneFirstEnfantsByName("meta:template");
if(!b.isVide()) {
if(b.getAttributs().get("xlink:href")!=null) {
if(b.getAttributs().get("xlink:href").contains(".ott")) creationDepuisModele=true;
}
}
}
}
if(nodSujet.getAttributs().get("premierAuteurIdentiqueMoodle")!=null) {
if(nodSujet.getAttributs().get("premierAuteurIdentiqueMoodle").equals("true")) {
b = nodStudent.retourneFirstEnfantsByName("dc:creator");
if(!b.isVide()) {
if(b.getAttributs().get("creator")!=null) {
if(!b.getAttributs().get("creator").toLowerCase().contains(b.getContenu().get(0).toLowerCase())) premierAuteurPasIdentiqueMoodle=true;
}
}
}
}
b = nodStudent.retourneFirstEnfantsByName("meta:creation-date");
@ -1110,6 +1153,8 @@ public class meptl {
erreurs.getAttributs().put("manqueCreationDate", String.valueOf(manqueCreationDate));
erreurs.getAttributs().put("manqueValeurCreationDate", String.valueOf(manqueValeurCreationDate));
erreurs.getAttributs().put("manqueInitialCreator", String.valueOf(manqueInitialCreator));
erreurs.getAttributs().put("creationDepuisModele", String.valueOf(creationDepuisModele));
erreurs.getAttributs().put("premierAuteurPasIdentiqueMoodle", String.valueOf(premierAuteurPasIdentiqueMoodle));
if(nodSujet.getAttributs().get("historiquePresent")!=null) {
@ -1130,7 +1175,7 @@ public class meptl {
if( manqueMetaSujet == false && manqueValeurMetaSujet == false && manqueCreationDate == false && manqueValeurCreationDate == false
&& manqueHistorique == false && manqueInitialCreator == false) {
&& manqueHistorique == false && manqueInitialCreator == false && creationDepuisModele == false && premierAuteurPasIdentiqueMoodle==false) {
erreurs.getAttributs().put("oneError", "false");
}else {
erreurs.getAttributs().put("oneError", "true");
@ -1290,6 +1335,18 @@ public class meptl {
Text.append("<p>Erreur : Le créateur initial ne correspond pas au créateur initial du fichier fourni à l'étudiant.</p>");
System.out.println("\t Erreur : Le créateur initial n'est pas correct.");
}
if(Boolean.valueOf(erreurs.getAttributs().get("creationDepuisModele"))) {
Text.append("<p>Erreur : Le fichier a été crée depuis un modèle.</p>");
System.out.println("\t Erreur : Le fichier a été crée depuis un modèle.");
}
if(Boolean.valueOf(erreurs.getAttributs().get("premierAuteurPasIdentiqueMoodle"))) {
Text.append("<p>Erreur : Le fichier n'a été remis par le premier auteur du fichier.</p>");
System.out.println("\t Erreur : Le fichier n'a été remis par le premier auteur du fichier.");
}
}
Text.append("<br><hr>");
System.out.println();

View File

@ -188,6 +188,8 @@ public class verificationFichierAnalyse_node_commandesSujet {
boolean erreurValeurAttributpresenceMetaSujetConvertibleEnLogique=false;
boolean erreurValeurAttributcontrole_Initial_CreatorConvertibleEnLogique=false;
boolean erreurValeurAttributhistoriquePresentConvertibleEnLogique=false;
boolean erreurValeurAttributinterdireModeleConvertibleEnLogique=false;
boolean erreurValeurAttributpremierAuteurIdentiqueMoodleConvertibleEnLogique=false;
// le node fichier doit avoir l'attribut evaluer=true
if(attribut.get("evaluer")==null) {
@ -325,6 +327,34 @@ public class verificationFichierAnalyse_node_commandesSujet {
}
}
if(attribut.get("interdireModele")!=null) {
String p = attribut.get("interdireModele");
if(!(p.equalsIgnoreCase("true")||p.equalsIgnoreCase("false"))) {
commandes.message.append("\n**************************************************");
commandes.message.append("\nERREUR dans le fichier d'analyse, dans le node <fichier>.");
commandes.message.append("\nL'attribut \"interdireModele\" n'a pas une valeur logique.");
commandes.message.append("\n**************************************************");
JOptionPane.showMessageDialog(null, "<html>Dans le node <fichier>, l'attribut \"<b>interdireModele</b>\" ne possède pas une valeur correcte."
+ "<br>La valeur de la \"<b>interdireModele</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);
erreurValeurAttributinterdireModeleConvertibleEnLogique=true;
}
}
if(attribut.get("premierAuteurIdentiqueMoodle")!=null) {
String p = attribut.get("premierAuteurIdentiqueMoodle");
if(!(p.equalsIgnoreCase("true")||p.equalsIgnoreCase("false"))) {
commandes.message.append("\n**************************************************");
commandes.message.append("\nERREUR dans le fichier d'analyse, dans le node <fichier>.");
commandes.message.append("\nL'attribut \"premierAuteurIdentiqueMoodle\" n'a pas une valeur logique.");
commandes.message.append("\n**************************************************");
JOptionPane.showMessageDialog(null, "<html>Dans le node <fichier>, l'attribut \"<b>premierAuteurIdentiqueMoodle</b>\" ne possède pas une valeur correcte."
+ "<br>La valeur de la \"<b>premierAuteurIdentiqueMoodle</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);
erreurValeurAttributpremierAuteurIdentiqueMoodleConvertibleEnLogique=true;
}
}
if(attribut.get("controle_Initial_Creator")!=null) {
String p = attribut.get("controle_Initial_Creator");
if(!(p.equals("true")||p.equals("false"))) {
@ -369,8 +399,9 @@ public class verificationFichierAnalyse_node_commandesSujet {
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));
verifSujet.getAttributs().put("erreurValeurAttributinterdireModeleConvertibleEnLogique",String.valueOf(erreurValeurAttributinterdireModeleConvertibleEnLogique));
verifSujet.getAttributs().put("erreurValeurAttributpremierAuteurIdentiqueMoodleConvertibleEnLogique",String.valueOf(erreurValeurAttributpremierAuteurIdentiqueMoodleConvertibleEnLogique));
}

View File

@ -96,10 +96,12 @@ public class chargeEvaluation {
commandes.fourniCSV = Boolean.valueOf(evaluation.getAttributs().get("fourniCSV"));
commandes.nameCSV = evaluation.getAttributs().get("nameCSV");
//** Les paramètres de l'évaluation
if(evaluation.getAttributs().get("analyse_nombres_modifications_simultané_maxi")!=null) {
commandes.analyse_nombres_modifications_simultané_maxi = Integer.valueOf(evaluation.getAttributs().get("analyse_nombres_modifications_simultané_maxi"));
}
commandes.fourniCSV = Boolean.valueOf(evaluation.getAttributs().get("fourniCSV"));
commandes.nameSVG = evaluation.getAttributs().get("nameSVG");

View File

@ -55,6 +55,8 @@ public class analyseFichier {
if(nodSujet.getAttributs().get("historiquePresent")!=null) nodouverture.getAttributs().put("historiquePresent", nodSujet.getAttributs().get("historiquePresent"));
if(nodSujet.getAttributs().get("controleDateCreation")!=null) nodouverture.getAttributs().put("controleDateCreation", nodSujet.getAttributs().get("controleDateCreation"));
if(nodSujet.getAttributs().get("presenceMetaSujet")!=null) nodouverture.getAttributs().put("presenceMetaSujet", nodSujet.getAttributs().get("presenceMetaSujet"));
if(nodSujet.getAttributs().get("interdireModele")!=null) nodouverture.getAttributs().put("interdireModele", nodSujet.getAttributs().get("interdireModele"));
if(nodSujet.getAttributs().get("premierAuteurIdentiqueMoodle")!=null) nodouverture.getAttributs().put("premierAuteurIdentiqueMoodle", nodSujet.getAttributs().get("premierAuteurIdentiqueMoodle"));
if(nodSujet.getAttributs().get("baremeABC")!=null) nodouverture.getAttributs().put("baremeABC", nodSujet.getAttributs().get("baremeABC"));
if(nodSujet.retourneEnfantsByNameExist("setting")) {
node setting = nodSujet.retourneFirstEnfantsByName("setting");

View File

@ -1094,11 +1094,10 @@ public class analyseLesNodesPrincipaux {
//*********************
page = meptl.addNodeSautTitre(pageSujet,page,nodmenu,a);
//*******************************
//** Recherche le node Student **
//*******************************
node pageStudent = a.retourneFirstNodeByNameAttributValue(nodStudentS, "page", "numeroabsolue", numeroabsolue);
//******************************************
//** Recherche le node de la page Student **
//******************************************
node pageStudent = recherchePageStudent(numeroabsolue,nomDeLaPage,nodStudentS,a);
//********************************************
//** analyse les attributs des nodes <page> **
@ -1186,7 +1185,29 @@ public class analyseLesNodesPrincipaux {
}
/**
*
* @param numeroabsolueSujet
* @param nomDeLaPageSujet
* @param nodStudentS
* @param a
* @return
*/
private static node recherchePageStudent(String numeroabsolueSujet, String nomDeLaPageSujet, node nodStudentS, Run a) {
node pageStudent = a.retourneFirstNodeByNameAttributValue(nodStudentS, "page", "numeroabsolue", numeroabsolueSujet);
String nomDeLaPageStudent = "";
if(pageStudent!=null) nomDeLaPageStudent = pageStudent.getAttributs().get("style:master-page-name");
if(!nomDeLaPageStudent.equals(nomDeLaPageSujet)) {
int numeroPageSujet = Integer.valueOf(numeroabsolueSujet);
ArrayList<node> LesPagesStudent = nodStudentS.retourneEnfantsByName("page", new ArrayList<node>());
for(int i = 0 ; i<LesPagesStudent.size();i++) {
int numeroPageStudent = Integer.valueOf(LesPagesStudent.get(i).getAttributs().get("numeroabsolue"));
nomDeLaPageStudent = LesPagesStudent.get(i).getAttributs().get("style:master-page-name");
if(numeroPageStudent>=numeroPageSujet-1 && nomDeLaPageStudent.equals(nomDeLaPageSujet)) return LesPagesStudent.get(i);
}
}
return pageStudent;
}
}

View File

@ -1416,10 +1416,10 @@ public class evaluationAttribut {
}
nameCreator = nameCreator.toLowerCase();
if(reponseStudent.contains(nameCreator)) {
reponseStudent = "auteur créateur "+ nameCreator + " identifié dans le nom du fichier.";
reponseSujet = "auteur créateur "+ nameCreator + " identifié dans le nom du fichier.";
reponseStudent = "auteur créateur "+ nameCreator + " identifié comme celui qui la remis sur Moodle.";
reponseSujet = "auteur créateur "+ nameCreator + " identifié comme celui qui la remis sur Moodle.";
}else {
reponseStudent = "auteur créateur "+ nameCreator + " n'est pas identifié dans le nom du fichier.";
reponseStudent = "auteur créateur "+ nameCreator + " n'est pas identifié comme celui qui la remis sur Moodle.";
}
item = retourneNoteAvecResultatsAnalyse(nameCreator,"name", reponseStudent,reponseSujet+ "" +point, nameElt );
}else {

View File

@ -512,8 +512,12 @@ public class afficheText extends JEditorPane {
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 le premier auteur doit être celui qui a remis le fichier : <b>" + commandes.analyse_premierAuteurIdentiqueMoodle + "</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>");
text.append("<p>Interdire la création d'un fichier à partir d'un modèle : <b>" + commandes.analyse_interdireModele + "</b></p>");
text.append("<br>");
text.append("<p>Exclure le nom du créateur dans l'analyse des historiques : <b>" + commandes.analyse_exclure_name_creator + "</b></p>");
text.append("<p>Le nom du créateur à exclure dans l'analyse des historiques est : <b>" + commandes.analyse_auteur_exclure_historique + "</b></p>");
text.append("<br><hr><br>");

View File

@ -43,6 +43,8 @@ public final class proprieteFichierAnalyse extends JFrame {
private JComboBox<String> comboBoxcontrole_Initial_Creator;
private JComboBox<String> comboBoxcontroleDateCreation;
private JComboBox<String> comboBoxcontrole_modificationDateMini;
private JComboBox<String> comboBoxModele;
private JComboBox<String> comboBoxPremierAuteurIdentiqueMoodle;
private JLabel lblNewLabel_8;
private JLabel lblNewLabel_9;
private JTextField textFieldInitial_Creator;
@ -79,6 +81,10 @@ public final class proprieteFichierAnalyse extends JFrame {
private JLabel lblNewLabel_18;
private JLabel lblNewLabel_19;
private JLabel lblNewLabel_20;
private JLabel lblNewLabel_21;
private JButton btnAideModele;
private JLabel lblNewLabel_22;
private JButton btnAidePremierAuteurIdentiqueMoodle;
@ -92,7 +98,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, 1220, 680);
setBounds(0, 0, 1220, 739);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
int screenWidth = (int) java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().getWidth();
@ -101,7 +107,7 @@ public final class proprieteFichierAnalyse extends JFrame {
contentPane = new JPanel();
setContentPane(contentPane);
contentPane.setLayout(new MigLayout("", "[260px][260px,grow][10,grow 20][2px:12px:24px][260px][260px][10,grow 20]", "[18px][18px][18px][30px][18px][18px][64px:64px:100px][18px][18px][16px:16px:16px][18px][18px][18px][][]"));
contentPane.setLayout(new MigLayout("", "[260px][260px,grow][10,grow 20][2px:12px:24px][260px][260px,grow][10,grow 20]", "[18px][18px][18px][30px][18px][18px][64px:64px:100px][50px:50px][18px][50px:50px][][18px][40px:40px][18px][][][][]"));
lblNewLabel_17 = new JLabel("INFORMATIONS");
@ -112,7 +118,7 @@ public final class proprieteFichierAnalyse extends JFrame {
lblNewLabel_16 = new JLabel("<html>VERIFICATIONS FICHIER TRANSMIS</html>");
lblNewLabel_16.setForeground(new Color(255, 0, 0));
lblNewLabel_16.setFont(new Font("Tahoma", Font.BOLD, 16));
contentPane.add(lblNewLabel_16, "cell 4 0,alignx left,aligny bottom");
contentPane.add(lblNewLabel_16, "cell 4 0 2 1,alignx left,aligny bottom");
btnAideMetaSujet = new JButton("");
btnAideMetaSujet.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
@ -141,7 +147,7 @@ public final class proprieteFichierAnalyse extends JFrame {
btnAideTitre.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/whatmini.png")));
contentPane.add(btnAideTitre, "cell 2 1,aligny top");
JLabel lblNewLabel_2 = new JLabel("La propriété Sujet dans le fichier transmis.");
JLabel lblNewLabel_2 = new JLabel("<html>La propriété <b>Sujet</b> dans le fichier transmis.</html>");
lblNewLabel_2.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(lblNewLabel_2, "cell 4 1,alignx left,aligny center");
@ -173,7 +179,7 @@ public final class proprieteFichierAnalyse extends JFrame {
contentPane.add(btnAideAuteur, "cell 2 2,aligny top");
JLabel lblNewLabel_3 = new JLabel("<HTML><p>Propriété personnalisé Sujet obligatoire<br>dans les fichiers des étudiants.</p></HTML>" );
JLabel lblNewLabel_3 = new JLabel("<HTML><p>La présence de la propriété personnalisée <b>Sujet</b> est obligatoire dans les fichiers des étudiants.</p></HTML>" );
lblNewLabel_3.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(lblNewLabel_3, "cell 4 2,alignx left,aligny center");
comboBoxPresenceMetaSujet = new JComboBox<String>();
@ -213,7 +219,7 @@ public final class proprieteFichierAnalyse extends JFrame {
contentPane.add(btnAidecontrole_URLAide, "cell 2 4,aligny top");
JLabel lblNewLabel_7 = new JLabel("<html>La date de création du fichier transmis aux étudiants.</html>");
JLabel lblNewLabel_7 = new JLabel("<html><b>La date de création</b> du fichier transmis aux étudiants.</html>");
lblNewLabel_7.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(lblNewLabel_7, "cell 4 4,alignx left");
@ -253,7 +259,7 @@ public final class proprieteFichierAnalyse extends JFrame {
btnAidecontrole_URLSujet.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/whatmini.png")));
contentPane.add(btnAidecontrole_URLSujet, "cell 2 5,aligny top");
lblNewLabel_8 = new JLabel("<html>La date de création dans les fichers des étudiants doit être le même que celui du fichier transmis.</html>");
lblNewLabel_8 = new JLabel("<html><b>La date de création</b> dans les fichers des étudiants doit être le même que celui du fichier transmis.</html>");
lblNewLabel_8.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(lblNewLabel_8, "cell 4 5,alignx trailing");
@ -293,29 +299,49 @@ public final class proprieteFichierAnalyse extends JFrame {
btnAidecontrole_Commentaire.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/whatmini.png")));
contentPane.add(btnAidecontrole_Commentaire, "cell 2 6,aligny top");
lblNewLabel_21 = new JLabel("<html><b>Interdire l'utilisation d'un modèle</b> pour créer le fichier. Protection contre les fraudes si le fichier est créé à partir d'un modèle (.ott) généré par un autre étudiant.</html>");
lblNewLabel_21.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(lblNewLabel_21, "cell 4 6,alignx trailing,aligny top");
comboBoxModele = new JComboBox<String>();
comboBoxModele.setFont(new Font("Tahoma", Font.BOLD, 12));
comboBoxModele.setModel(new DefaultComboBoxModel<String>(new String[] {"false", "true"}));
comboBoxModele.setSelectedIndex(1);
contentPane.add(comboBoxModele, "cell 5 6,growx,aligny top");
btnAideModele = new JButton("");
btnAideModele.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showInternalMessageDialog(null, "<html>Si VRAI alors rechercher la présence du node meta:template qui indique le modèle utilisé.<br>"
+ "Si ce node est présent alors l'étudiant obtient une note nulle.</html>");
}
});
btnAideModele.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/whatmini.png")));
contentPane.add(btnAideModele, "cell 6 6,aligny top");
lblNewLabel_18 = new JLabel("NOTATIONS");
lblNewLabel_18.setForeground(new Color(0, 128, 128));
lblNewLabel_18.setFont(new Font("Tahoma", Font.BOLD, 16));
contentPane.add(lblNewLabel_18, "cell 0 7,aligny bottom");
lblNewLabel_9 = new JLabel("Auteur du fichier transmis aux étudiants.");
lblNewLabel_9.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(lblNewLabel_9, "cell 4 7,alignx left");
lblNewLabel_22 = new JLabel("<html><b>Le créateur du fichier</b> doit être celui qui a remis le fichier sur Moodle</html>");
lblNewLabel_22.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(lblNewLabel_22, "cell 4 7,alignx trailing,aligny top");
textFieldInitial_Creator = new JTextField();
textFieldInitial_Creator.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(textFieldInitial_Creator, "cell 5 7,grow");
textFieldInitial_Creator.setColumns(10);
comboBoxPremierAuteurIdentiqueMoodle = new JComboBox<String>();
comboBoxPremierAuteurIdentiqueMoodle.setModel(new DefaultComboBoxModel<String>(new String[] {"false", "true"}));
comboBoxPremierAuteurIdentiqueMoodle.setFont(new Font("Tahoma", Font.BOLD, 12));
contentPane.add(comboBoxPremierAuteurIdentiqueMoodle, "cell 5 7,growx,aligny top");
btnAideInitial_Creator = new JButton("");
btnAideInitial_Creator.addActionListener(new ActionListener() {
btnAidePremierAuteurIdentiqueMoodle = new JButton("");
btnAidePremierAuteurIdentiqueMoodle.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showInternalMessageDialog(null, "<html>Le premier auteur du fichier (créateur).<br>"
+ "Ne modifier pas, sauf si vous avez fourni un nouveau fichier aux étudiants avec un autre créateur.<html>");
JOptionPane.showInternalMessageDialog(null, "<html>Si VRAI alors le premier auteur du fichier doit être celui qui remet le fichier.<br>"
+ "Si ce n'est pas le premier auteur qui remet le fichier alors la note est nulle.</html>");
}
});
btnAideInitial_Creator.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/whatmini.png")));
contentPane.add(btnAideInitial_Creator, "cell 6 7,aligny top");
btnAidePremierAuteurIdentiqueMoodle.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/whatmini.png")));
contentPane.add(btnAidePremierAuteurIdentiqueMoodle, "cell 6 7,aligny top");
JLabel lblNewLabel_4 = new JLabel("Barème alphabétique ABCDE");
lblNewLabel_4.setFont(new Font("Tahoma", Font.PLAIN, 12));
@ -326,27 +352,6 @@ public final class proprieteFichierAnalyse extends JFrame {
comboBoxBaremeABC.setFont(new Font("Tahoma", Font.BOLD, 12));
contentPane.add(comboBoxBaremeABC, "cell 1 8,growx");
lblNewLabel_10 = new JLabel("<html>L'auteur des fichiers des étudiants doit être celui du fichier transmis.</html>");
lblNewLabel_10.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(lblNewLabel_10, "cell 4 8,alignx trailing");
comboBoxcontrole_Initial_Creator = new JComboBox<String>();
comboBoxcontrole_Initial_Creator.setModel(new DefaultComboBoxModel<String>(new String[] {"false", "true"}));
comboBoxcontrole_Initial_Creator.setFont(new Font("Tahoma", Font.BOLD, 12));
contentPane.add(comboBoxcontrole_Initial_Creator, "cell 5 8,growx,aligny top");
btnAidecontrole_Initial_Creator = new JButton("");
btnAidecontrole_Initial_Creator.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showInternalMessageDialog(null, "<html>Si vrai alors le créateur du fichier des étudiants doit correspondre avec cet auteur.<br>"
+ "Si ce n'est pas le cas, l'étudiant aura une note nulle.<br><br>"
+ "Cette technique peut être utilisée pour les contrôles.<html>");
}
});
btnAidecontrole_Initial_Creator.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/whatmini.png")));
contentPane.add(btnAidecontrole_Initial_Creator, "cell 6 8,aligny top");
JLabel lblNoteFrom = new JLabel("Barème");
lblNoteFrom.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(lblNoteFrom, "cell 0 9,alignx left");
@ -401,61 +406,67 @@ public final class proprieteFichierAnalyse extends JFrame {
textAreaCommentaire.setText(textCommentaire);
}
}
lblNewLabel_9 = new JLabel("<html><b>Premier auteur</b> du fichier qui a transmis le fichier aux étudiants.<br>(Le créateur du fichier)</html>");
lblNewLabel_9.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(lblNewLabel_9, "cell 4 9,alignx left");
textFieldInitial_Creator = new JTextField();
textFieldInitial_Creator.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(textFieldInitial_Creator, "cell 5 9,grow");
textFieldInitial_Creator.setColumns(10);
btnAideInitial_Creator = new JButton("");
btnAideInitial_Creator.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showInternalMessageDialog(null, "<html>Le premier auteur du fichier (créateur).<br>"
+ "Ne modifier pas, sauf si vous avez fourni un nouveau fichier aux étudiants avec un autre créateur.<html>");
}
});
btnAideInitial_Creator.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/whatmini.png")));
contentPane.add(btnAideInitial_Creator, "cell 6 9,aligny top");
JLabel lblNewLabel_5 = new JLabel("Coefficient de progression");
lblNewLabel_5.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(lblNewLabel_5, "cell 0 10,alignx left");
textFieldProgression = new JTextField();
contentPane.add(textFieldProgression, "cell 1 10,grow");
textFieldProgression.setColumns(10);
btnAideProgression = new JButton("");
btnAideProgression.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "<html>Le coefficient de progression permet de régler la difficulté de l'exercice.<br><br>"
+ "Le coefficient de progression d'affiche dans les feedbacks des étudiants.<br><br>"
+ "Le coefficient de progression doit être compris entre ]0 et 10[.<br>"
+ " Un coef. inférieur à 1 signifie qu'il est facile d'atteindre la note maximale<br>"
+ " Un coef. supérieur à 1 signifie qu'il est difficile d'atteindre la note maximale.");
}
});
btnAideProgression.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/whatmini.png")));
contentPane.add(btnAideProgression, "cell 2 10,aligny top");
lblNewLabel_19 = new JLabel("<html>VERIFICATION AVEC SUIVI DES MODIFIACTIONS</html>");
lblNewLabel_19.setForeground(new Color(255, 128, 0));
lblNewLabel_19.setFont(new Font("Tahoma", Font.BOLD, 16));
lblNewLabel_19.setToolTipText("");
contentPane.add(lblNewLabel_19, "cell 4 10");
lblNewLabel_10 = new JLabel("<html><b>Le premier auteur</b> des fichiers des étudiants doit être celui du fichier transmis.</html>");
lblNewLabel_10.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(lblNewLabel_10, "cell 4 10,alignx trailing");
lblNewLabel_20 = new JLabel("<html>L'activation du suivi des modifications permettra de vérifier les échnages des fichiers entres les étudiants et les copiés et collés dans les fichiers.</html>");
lblNewLabel_20.setFont(new Font("Tahoma", Font.PLAIN, 10));
lblNewLabel_20.setForeground(new Color(232, 116, 0));
contentPane.add(lblNewLabel_20, "cell 5 10");
comboBoxcontrole_Initial_Creator = new JComboBox<String>();
comboBoxcontrole_Initial_Creator.setModel(new DefaultComboBoxModel<String>(new String[] {"false", "true"}));
comboBoxcontrole_Initial_Creator.setFont(new Font("Tahoma", Font.BOLD, 12));
contentPane.add(comboBoxcontrole_Initial_Creator, "cell 5 10,growx,aligny top");
JLabel lblNewLabel_5 = new JLabel("Coefficient de progression");
lblNewLabel_5.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(lblNewLabel_5, "cell 0 11,alignx left");
textFieldProgression = new JTextField();
contentPane.add(textFieldProgression, "cell 1 11,grow");
textFieldProgression.setColumns(10);
btnAideProgression = new JButton("");
btnAideProgression.addActionListener(new ActionListener() {
btnAidecontrole_Initial_Creator = new JButton("");
btnAidecontrole_Initial_Creator.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "<html>Le coefficient de progression permet de régler la difficulté de l'exercice.<br><br>"
+ "Le coefficient de progression d'affiche dans les feedbacks des étudiants.<br><br>"
+ "Le coefficient de progression doit être compris entre ]0 et 10[.<br>"
+ " Un coef. inférieur à 1 signifie qu'il est facile d'atteindre la note maximale<br>"
+ " Un coef. supérieur à 1 signifie qu'il est difficile d'atteindre la note maximale.");
JOptionPane.showInternalMessageDialog(null, "<html>Si vrai alors le créateur du fichier des étudiants doit correspondre avec cet auteur.<br>"
+ "Si ce n'est pas le cas, l'étudiant aura une note nulle.<br><br>"
+ "Cette technique peut être utilisée pour les contrôles.<html>");
}
});
btnAideProgression.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/whatmini.png")));
contentPane.add(btnAideProgression, "cell 2 11,aligny top");
JLabel lblNewLabel_6 = new JLabel("<html>Le suivi des modifications doit être activé dans les fichiers des étudiants.</html>");
lblNewLabel_6.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(lblNewLabel_6, "cell 4 11,alignx left");
comboBoxhistoriquePresent = new JComboBox<String>();
comboBoxhistoriquePresent.setModel(new DefaultComboBoxModel<String>(new String[] {"false", "true"}));
comboBoxhistoriquePresent.setFont(new Font("Tahoma", Font.BOLD, 12));
contentPane.add(comboBoxhistoriquePresent, "cell 5 11,growx,aligny top");
btnAideHistoriquePresent = new JButton("");
btnAideHistoriquePresent.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showInternalMessageDialog(null, "<html>Si VRAI alors le suivi des modifications doit être activé dans les fichiers des étudiants.<br>"
+ "Si ce n'est pas le cas alors l'étudiant aura une note nulle.<br><br>"
+ "L'étudiant doit utiliser le fichier remis par l'enseignant.<br>"
+ "L'enseignant aura activé le suivi des modifications et protégé le suivi par un mot de passe.<br><br>"
+ "Cette technique peut être utilisée durant les contrôles.<br>"
+ "Elle permettra de rechercher les fichiers échangés entre les étudiants en comparant les modifications.</html>");
}
});
btnAideHistoriquePresent.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/whatmini.png")));
contentPane.add(btnAideHistoriquePresent, "cell 6 11,aligny top");
btnAidecontrole_Initial_Creator.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/whatmini.png")));
contentPane.add(btnAidecontrole_Initial_Creator, "cell 6 10,aligny top");
// Bouton de calcul de la base numérique
btnVoirBaremeNumeric = new JButton("");
@ -483,12 +494,46 @@ public final class proprieteFichierAnalyse extends JFrame {
btnVoirBaremeABC.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/voirmini.png")));
contentPane.add(btnVoirBaremeABC, "cell 2 8");
lblNewLabel_19 = new JLabel("<html>VERIFICATION AVEC SUIVI DES MODIFIACTIONS</html>");
lblNewLabel_19.setForeground(Color.RED);
lblNewLabel_19.setFont(new Font("Tahoma", Font.BOLD, 16));
lblNewLabel_19.setToolTipText("");
contentPane.add(lblNewLabel_19, "cell 4 12");
lblNewLabel_20 = new JLabel("<html>L'activation du suivi des modifications permettra de vérifier les échnages des fichiers entres les étudiants et les copiés et collés dans les fichiers.</html>");
lblNewLabel_20.setFont(new Font("Tahoma", Font.PLAIN, 11));
lblNewLabel_20.setForeground(Color.RED);
contentPane.add(lblNewLabel_20, "cell 5 12,aligny top");
JLabel lblNewLabel_6 = new JLabel("<html>Le suivi des modifications doit être activé dans les fichiers des étudiants.</html>");
lblNewLabel_6.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(lblNewLabel_6, "cell 4 13,alignx left");
comboBoxhistoriquePresent = new JComboBox<String>();
comboBoxhistoriquePresent.setModel(new DefaultComboBoxModel<String>(new String[] {"false", "true"}));
comboBoxhistoriquePresent.setFont(new Font("Tahoma", Font.BOLD, 12));
contentPane.add(comboBoxhistoriquePresent, "cell 5 13,growx,aligny top");
btnAideHistoriquePresent = new JButton("");
btnAideHistoriquePresent.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showInternalMessageDialog(null, "<html>Si VRAI alors le suivi des modifications doit être activé dans les fichiers des étudiants.<br>"
+ "Si ce n'est pas le cas alors l'étudiant aura une note nulle.<br><br>"
+ "L'étudiant doit utiliser le fichier remis par l'enseignant.<br>"
+ "L'enseignant aura activé le suivi des modifications et protégé le suivi par un mot de passe.<br><br>"
+ "Cette technique peut être utilisée durant les contrôles.<br>"
+ "Elle permettra de rechercher les fichiers échangés entre les étudiants en comparant les modifications.</html>");
}
});
btnAideHistoriquePresent.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/whatmini.png")));
contentPane.add(btnAideHistoriquePresent, "cell 6 13,aligny top");
// Bouton pour validation
JButton btnNewButton = new JButton("Valider");
btnNewButton.setFont(new Font("Tahoma", Font.BOLD, 14));
contentPane.add(btnNewButton, "cell 1 13,grow");
contentPane.add(btnNewButton, "cell 0 13 2 4,grow");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
@ -510,7 +555,9 @@ public final class proprieteFichierAnalyse extends JFrame {
commandes.sujet.getAttributs().put("controle_Initial_Creator", comboBoxcontrole_Initial_Creator.getSelectedItem().toString() );
commandes.sujet.getAttributs().put("link_help", textFieldlink_help.getText() );
commandes.sujet.getAttributs().put("link_sujet", textFieldlink_sujet.getText() );
commandes.sujet.getAttributs().put("interdireModele", comboBoxModele.getSelectedItem().toString() );
commandes.sujet.getAttributs().put("premierAuteurIdentiqueMoodle", comboBoxPremierAuteurIdentiqueMoodle.getSelectedItem().toString() );
String textCommentaire = textAreaCommentaire.getText().replace("\n", "-NewLine-");
if(!commandes.sujet.getContenu().isEmpty()) {
commandes.sujet.getContenu().remove(0);
@ -530,10 +577,10 @@ public final class proprieteFichierAnalyse extends JFrame {
lblNewLabel_14 = new JLabel("<html>La date et heure du début du contrôle.<br>C'est la date de modification qui doit être la plus ancienne dans le fichier des étudiants.</html>");
lblNewLabel_14.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(lblNewLabel_14, "cell 4 13,alignx left");
contentPane.add(lblNewLabel_14, "cell 4 15,alignx left");
textField_dateModificationMini = new JTextField();
textField_dateModificationMini.setFont(new Font("Tahoma", Font.PLAIN, 12));
contentPane.add(textField_dateModificationMini, "cell 5 13,grow");
contentPane.add(textField_dateModificationMini, "cell 5 15,grow");
textField_dateModificationMini.setColumns(10);
btnAidecontrole_dateModificationMini = new JButton("");
btnAidecontrole_dateModificationMini.addActionListener(new ActionListener() {
@ -543,15 +590,15 @@ public final class proprieteFichierAnalyse extends JFrame {
}
});
btnAidecontrole_dateModificationMini.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/whatmini.png")));
contentPane.add(btnAidecontrole_dateModificationMini, "cell 6 13,aligny top");
contentPane.add(btnAidecontrole_dateModificationMini, "cell 6 15,aligny top");
lblNewLabel_15 = new JLabel("<html>La date des modifications doit être 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 4 14,alignx left");
contentPane.add(lblNewLabel_15, "cell 4 16,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 5 14,growx");
contentPane.add(comboBoxcontrole_modificationDateMini, "cell 5 16,growx");
btnAidecontrole_dateModificationMini = new JButton("");
btnAidecontrole_dateModificationMini.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
@ -560,7 +607,7 @@ public final class proprieteFichierAnalyse extends JFrame {
}
});
btnAidecontrole_dateModificationMini.setIcon(new ImageIcon(proprieteFichierAnalyse.class.getResource("/resources/whatmini.png")));
contentPane.add(btnAidecontrole_dateModificationMini, "cell 6 14");
contentPane.add(btnAidecontrole_dateModificationMini, "cell 6 16");
if(commandes.sujet.getAttributs().get("creationDate")!=null){
@ -611,6 +658,12 @@ public final class proprieteFichierAnalyse extends JFrame {
if(commandes.sujet.getAttributs().get("baremeABC")!=null){
comboBoxBaremeABC.setSelectedItem(commandes.sujet.getAttributs().get("baremeABC").toLowerCase());
}
if(commandes.sujet.getAttributs().get("interdireModele")!=null){
comboBoxModele.setSelectedItem(commandes.sujet.getAttributs().get("interdireModele").toLowerCase());
}
if(commandes.sujet.getAttributs().get("premierAuteurIdentiqueMoodle")!=null){
comboBoxPremierAuteurIdentiqueMoodle.setSelectedItem(commandes.sujet.getAttributs().get("premierAuteurIdentiqueMoodle").toLowerCase());
}
/**
* Fermeture de la fenêtre.
@ -783,6 +836,16 @@ public final class proprieteFichierAnalyse extends JFrame {
}else {
comboBoxcontrole_modificationDateMini.setSelectedItem(String.valueOf(commandes.analyse_controleDateModificationMini));
}
if(commandes.sujet.getAttributs().get("interdireModele")!=null){
comboBoxModele.setSelectedItem(commandes.sujet.getAttributs().get("interdireModele").toLowerCase());
}else {
comboBoxModele.setSelectedItem(String.valueOf(commandes.analyse_interdireModele));
}
if(commandes.sujet.getAttributs().get("premierAuteurIdentiqueMoodle")!=null){
comboBoxPremierAuteurIdentiqueMoodle.setSelectedItem(commandes.sujet.getAttributs().get("premierAuteurIdentiqueMoodle").toLowerCase());
}else {
comboBoxPremierAuteurIdentiqueMoodle.setSelectedItem(String.valueOf(commandes.analyse_premierAuteurIdentiqueMoodle));
}
}

View File

@ -83,6 +83,8 @@ public class listeAttributsAnalyseWriter {
case "metaSujet": return true;
case "notefrom": return true;
case "presenceMetaSujet": return true;
case "interdireModele": return true;
case "premierAuteurIdentiqueMoodle": return true;
case "producteur": return true;
case "progression": return true;
case "version": return true;