#9 ajout des param manquants et de leur config pour l'étape 2

This commit is contained in:
nh805942 2019-11-04 20:04:29 +01:00
parent 683e8ce5ef
commit 6f75904efa

View File

@ -53,51 +53,48 @@ public class Config {
string = string.replaceAll("[\\p{Cntrl}&&[^\r\n\t]]", ""); string = string.replaceAll("[\\p{Cntrl}&&[^\r\n\t]]", "");
// removes non-printable characters from Unicode // removes non-printable characters from Unicode
string = string.replaceAll("\\p{C}", ""); string = string.replaceAll("\\p{C}", "");
return string.trim(); // trim() : eliminates leading and trailing spaces return string.trim(); // trim() : suppr. les espaces inutiles
} }
public Config(String s) { public Config(String s) {
// Constructeur, prend en parametre le chemin vers le fichier source // Constructeur, prend en parametre le chemin vers le fichier source
this.source = s; this.source = s;
// Initialisation des parametres avec les valeurs par défaut. // Initialisation des parametres avec les valeurs par défaut.
// Les élements avec des placeholders en valeur sont des élements qui ne servent // Les élements avec des placeholders en valeur sont des élements non remplis
// pas pour le moment this.param.put("PaperSize", "A4"); // A3 A4 A5 letter sont les valeurs possibles
this.param.put("PaperSize", "A4"); // A3 A4 A5 letter this.param.put("Title", ""); // titre de l'examen
this.param.put("Title", "Placeholder"); // titre de l exam this.param.put("Presentation", ""); // texte de consignes
this.param.put("Presentation", "Placeholder"); // texte de consignes this.param.put("DocumentModel", ""); // nom du fichier du modéle
this.param.put("DocumentModel", "PlaceHolder"); // nom du fichier du modéle this.param.put("ShuffleQuestions", "1"); // 1 = question mélangées, 0 = non mélangées
this.param.put("ShuffleQuestions", "1"); // 1 = qt mélangées, 0 = non mél this.param.put("ShuffleAnswers", "1"); // 1= propositions réponse mélangées, 0= non mélangé
this.param.put("ShuffleAnswers", "1"); // 1= proposition rép mélangées, 0= non this.param.put("Code", "8"); // code étudiant (ici = 8 chiffres) (valeur possible: entre 1 et 16)
this.param.put("Code", "8"); // code étudiant = 8 chiffres (entre 1 et 16) this.param.put("MarkFormat", "20"); // expl "20/4" pour des notes entre 0 et 20 notées à 0.25 points
this.param.put("MarkFormat", "20"); // expl "20" pour des notes entre 0 et 20 notées é 0.25 points // format assez libre.
this.param.put("NameField", "Nom et Prénom"); // remplace le texte // laisser 20 par défaut car defaultScoring without decimal point.
this.param.put("NameField", "Nom et Prénom"); // remplace le texte demandant d'écrire le nom et prenom
this.param.put("StudentField", this.param.put("StudentField",
"Veuillez coder votre numéro\r\n d'étudiant ci-contre et écrire votre nom \r\n dans la case ci-dessous"); "Veuillez coder votre numéro\r\n d'étudiant et écrire votre nom \r\n dans la case ci-dessous");
// sert à remplacer le petit texte qui demande de coder son numéro déétudiant et // sert à remplacer le petit texte qui demande de coder son numéro déétudiant et
// inscrire son nom // inscrire son nom
this.param.put("MarkField", "Veuillez coder le numéro de l'étudiant"); this.param.put("MarkField", "Codez la note de l'étudiant ici");
this.param.put("SeparateAnswerSheet", "1"); // si 1 = feuille de réponse séparée. this.param.put("SeparateAnswerSheet", "1"); // si 1 = feuille de réponse séparée.
this.param.put("AnswerSheetTitle", "Title"); // titre é inscrire en tete de la feuille de rép this.param.put("AnswerSheetTitle", getTitle()); // titre à inscrire en tete de la feuille de réponse (de base, le même que title)
this.param.put("AnswerSheetPresentation", "Presentation"); // Donne le texte de présentation de la feuille de this.param.put("AnswerSheetPresentation", getPresentation()); // Donne le texte de présentation de la feuille de réponse
// réponse this.param.put("SingleSided", "0");// si valeur = 1, aucune page blanche entre feuille de sujet et de réponse
this.param.put("SingleSided", "Placeholder");// si valeur = 1, aucune page blanche entre feuille de sujet et de this.param.put("DefaultScoringS", "e=0,v=0,p=-1,b=1,m=-1,d=0");// Donne le barème par défaut pour les questions simples
// réponse this.param.put("DefaultScoringM", "e=0,v=0,p=-1, formula=(NBC/NB)-(NMC/NM)");// Donne le barème par défaut pour les questions à multiple réponses correctes
this.param.put("DefaultScoringS", "Placeholder");// Donne le baréme par défaut pour les questions simples //columns = bonus.
this.param.put("DefaultScoringM", "Placeholder");// Donne le baréme par défaut pour les questions é choix this.param.put("Columns", "1");//questionnaire écrit sur n (nbe entier) colonnes < 5.
// multiple this.param.put("QuestionBlocks", "1");//si 1 = questions sont non coupées entre 2 pages si 0, possibilité qu'elles soient coupées.
this.param.put("QuestionBlocks", "Placeholder");// prend 0 pour valeur pour permettre é la boite d'une question
// boite
// d'etre coupé sur plusieurs pages, prend 1 sinon
} }
public void readConfig() { public void readConfig() {
// Methode pour lire le fichier config en chemin dans la variable source /* Methode pour lire le fichier config en chemin dans la variable source
// Si une ligne du fichier correspond é un parametre, changer la valeur du Si une ligne du fichier correspond é un parametre, changer la valeur du
// parametre avec celle dans le fichier (si valeur valide) parametre avec celle dans le fichier (si valeur valide)
// Gere aussi les questions dans le fichier source et les mets dans une liste de Gere aussi les questions dans le fichier source et les mets dans une liste de
// questions. questions.
// Gestion de questions mais actuellement inutile pour le programme */
try { try {
Scanner scan = new Scanner(new File(this.source), "UTF-8"); Scanner scan = new Scanner(new File(this.source), "UTF-8");
String ligne; String ligne;
@ -120,14 +117,13 @@ public class Config {
q = this.makeQuestion(Config.clearString(ligne)); q = this.makeQuestion(Config.clearString(ligne));
ligne = scan.nextLine(); ligne = scan.nextLine();
while (!ligne.equals("")) // tant que la ligne n'est pas vide, on lit la suite qui est while (!ligne.equals("")) // tant que la ligne n'est pas vide, on lit la suite qui est
// supposée // supposée etre les reponses
// etre les reponses
{ {
q.addReponse(Config.clearString(ligne)); q.addReponse(Config.clearString(ligne));
ligne = scan.nextLine(); ligne = scan.nextLine();
} }
this.questions.add(q); this.questions.add(q);
} else // si c'est pas une *, alors c'est un parametre (on ignore les lignes vides) } else // si c'est pas une *, alors c'est un parametre
{ {
this.lireParam(ligne); this.lireParam(ligne);
} }
@ -152,7 +148,7 @@ public class Config {
switch (s) { switch (s) {
case "*": case "*":
// si c'est une * alors c'est une question é choix multiple // si c'est une * alors c'est une question à choix multiple
q = new Question(ligne.substring(3, ligne.length()), true); q = new Question(ligne.substring(3, ligne.length()), true);
break; break;
@ -168,8 +164,7 @@ public class Config {
break; break;
default: default:
// si pas une des conditions citées en haut, alors c'est une question é choix // si pas une des conditions citées en haut, alors c'est une question simple
// unique
q = new Question(ligne.substring(2, ligne.length()), false); q = new Question(ligne.substring(2, ligne.length()), false);
} }
return q; return q;
@ -187,60 +182,90 @@ public class Config {
spl[1] = spl[1].substring(1, spl[1].length()); spl[1] = spl[1].substring(1, spl[1].length());
} }
spl[0] = spl[0].toUpperCase().trim(); // pour eviter la casse, on met tout en upper case spl[0] = spl[0].toUpperCase().trim(); // pour eviter la casse, on met tout en upper case
switch (spl[0]) // chaque case correspond é un parametre, pour le moment on ignore tout switch (spl[0]) // chaque case correspond à un parametre, pour le moment on ignore tout
// parametre qui n'est pas utile au programme. // parametre qui n'est pas utile au programme.
{ {
case "PAPERSIZE": case "PAPERSIZE":
this.setPaperSize(spl[1]); this.setPaperSize(spl[1]);
break;
case "TITLE":
this.setTitle(spl[1]);
break;
case "PRESENTATION":
this.setPresentation(spl[1]);
break; break;
case "DOCUMENTMODEL":
this.setDocumentModel(spl[1]);
break;
case "SHUFFLEQUESTIONS":
this.setShuffleQuestions(spl[1]);
break;
case "SHUFFLEANSWERS":
this.setShuffleAnswers(spl[1]);
break;
case "CODE": case "CODE":
this.setCode(spl[1]); this.setCode(spl[1]);
break; break;
case "MARKFORMAT": case "MARKFORMAT":
this.setMarkFormat(spl[1]); this.setMarkFormat(spl[1]);
break; break;
case "NAMEFIELD": case "NAMEFIELD":
this.setNameField(spl[1]); this.setNameField(spl[1]);
break; break;
case "STUDENTIDFIELD": case "STUDENTIDFIELD":
this.setStudentIdField(spl[1]); this.setStudentIdField(spl[1]);
break; break;
case "MARKFIELD": case "MARKFIELD":
this.setMarkField(spl[1]); this.setMarkField(spl[1]);
break; break;
case "SEPARATEANSWERSHEET": case "SEPARATEANSWERSHEET":
this.setSeparateAnswerSheet(spl[1]); this.setSeparateAnswerSheet(spl[1]);
break; break;
case "ANSWERSHEETTITLE": case "ANSWERSHEETTITLE":
this.setAnswerSheetTitle(spl[1]); this.setAnswerSheetTitle(spl[1]);
break; break;
case "ANSWERSHEETPRESENTATION": case "ANSWERSHEETPRESENTATION":
this.setAnswerSheetPresentation(spl[1]); this.setAnswerSheetPresentation(spl[1]);
break; break;
default: // parametre mal tapé ou non utile (pour le moment) au programme, on l'ignore
case "SINGLESIDED":
this.setSingleSided(spl[1]);
break;
case "DEFAULTSCORINGS":
this.setDefaultScoringS(spl[1]);
break;
case "DEFAULTSCORINGM":
this.setDefaultScoringM(spl[1]);
break;
case "COLUMNS":
this.setColumns(spl[1]);
break;
case "QUESTIONBLOCKS":
this.setQuestionBlocks(spl[1]);
break;
default: // par default: parametre ignoré
} }
} }
} }
// liste des set de chaque valeur de parametre
// actuellement, uniquement les parametres de l'étape 1 sont traités
// TODO // TODO
// possibilité d'afficher sur la console messages de valeur invalide et valeur // possibilité d'afficher sur la console messages de valeur invalide et valeur
@ -253,6 +278,36 @@ public class Config {
} }
} }
public void setTitle(String s) {
if (s.equals("")) {
this.param.replace("Title", s);
}
}
public void setPresentation(String s) {
if (s.equals("")) {
this.param.replace("Presentation", s);
}
}
public void setDocumentModel(String s) {
if (s.equals("")) {
this.param.replace("DocumentModel", s);
}
}
private void setShuffleQuestions(String s) {
if (s.equals("0")) {
this.param.replace("ShuffleQuestions", s);
}
}
private void setShuffleAnswers(String s) {
if (s.equals("0")) {
this.param.replace("ShuffleAnswers", s);
}
}
public void setCode(String s) { public void setCode(String s) {
s = s.trim(); s = s.trim();
if (this.isParsable(s)) { if (this.isParsable(s)) {
@ -262,26 +317,30 @@ public class Config {
} }
} }
} }
public void setMarkFormat(String s) { public void setMarkFormat(String s) {
s = s.trim(); s = s.trim();
if (s.equals("20/4") || s.equals("100")) { if (s.equals("20/4") || s.equals("100")) {
this.param.replace("MarkFormat", s); this.param.replace("MarkFormat", s);
} }
else {
//format libre selon souhait de l'examinateur mais entier demandé.
if (this.isParsable(s)) {
this.param.replace("MarkFormat", s);
}
}
} }
public void setNameField(String s) { public void setNameField(String s) {
if (!s.equals("")) { if (!s.equals("")) {
this.param.replace("NameField", s); this.param.replace("NameField", s);
} }
} }
public void setStudentIdField(String s) { public void setStudentIdField(String s) {
if (!s.equals("")) { if (!s.equals("")) {
this.param.replace("StudentIdField", s); this.param.replace("StudentIdField", s);
} }
} }
public void setMarkField(String s) { public void setMarkField(String s) {
@ -291,9 +350,7 @@ public class Config {
} }
public void setSeparateAnswerSheet(String s) { public void setSeparateAnswerSheet(String s) {
s = s.trim(); if (s.equals("0")) {
int n = Integer.parseInt(s);
if ((n == 0) || (n == 1)) {
this.param.replace("SeparateAnswerSheet", s); this.param.replace("SeparateAnswerSheet", s);
} }
} }
@ -309,4 +366,45 @@ public class Config {
this.param.replace("AnswerSheetPresentation", s); this.param.replace("AnswerSheetPresentation", s);
} }
} }
public void setSingleSided(String s) {
if (s.equals("1")) {
this.param.replace("DocumentModel", s);
}
}
private void setDefaultScoringS(String s) {
// TODO Auto-generated method stub
}
private void setDefaultScoringM(String s) {
// TODO Auto-generated method stub
}
private void setColumns(String s) {
s = s.trim();
if (this.isParsable(s)) {
int n = Integer.parseInt(s);
if ((n > 1) && (n < 5)) {
this.param.replace("Columns", s);
}
}
}
public void setQuestionBlocks(String s) {
if (s.equals("0")) {
this.param.replace("QuestionBlocks", s);
}
}
/*Getters si jamais AnswerSheetTitle
et AnswerSheetPresentation non précisé.
*/
public String getTitle() {
return param.get("Title");
}
public String getPresentation() {
return param.get("Presentation");
}
} }