Bug fixes

This commit is contained in:
Louis Calas
2019-10-04 10:49:13 +02:00
parent f367068e74
commit a1472c7b60
8 changed files with 77 additions and 50 deletions

View File

@@ -30,38 +30,38 @@ public class Config {
public Config(String s) {
// Constructeur, prend en parametre le chemin vers le fichier source
source = s;
// Initialisation des parametres avec les valeurs par d<>faut.
// Les <20>lements avec des placeholders en valeur sont des <20>lements qui ne servent
// Initialisation des parametres avec les valeurs par d<>faut.
// Les <20>lements avec des placeholders en valeur sont des <20>lements qui ne servent
// pas pour le moment
param.put("PaperSize", "A4"); // A3 A4 A5 letter
param.put("Title", "Placeholder"); // titre de l exam
param.put("Presentation", "Placeholder"); // texte de consignes
param.put("DocumentModel", "PlaceHolder"); // nom du fichier du mod<6F>le
param.put("ShuffleQuestions", "1"); // 1 = qt m<>lang<6E>es, 0 = non m<>l
param.put("ShuffleAnswers", "1"); // 1= proposition r<>p m<>lang<6E>es, 0= non
param.put("Code", "8"); // code <20>tudiant = 8 chiffres (entre 1 et 16)
param.put("MarkFormat", "20/4"); // expl "20/4" pour des notes entre 0 et 20 not<6F>es <20> 0.25 points
param.put("NameField", "Nom et Pr<50>nom"); // remplace le texte
param.put("DocumentModel", "PlaceHolder"); // nom du fichier du mod<6F>le
param.put("ShuffleQuestions", "1"); // 1 = qt m<>lang<6E>es, 0 = non m<>l
param.put("ShuffleAnswers", "1"); // 1= proposition r<>p m<>lang<6E>es, 0= non
param.put("Code", "8"); // code <20>tudiant = 8 chiffres (entre 1 et 16)
param.put("MarkFormat", "20/4"); // expl "20/4" pour des notes entre 0 et 20 not<6F>es <20> 0.25 points
param.put("NameField", "Nom et Pr<50>nom"); // remplace le texte
param.put("StudentField",
"Veuillez coder votre num<75>ro\r\n d<><64>tudiant ci-contre et <20>crire votre nom \r\n dans la case ci-dessous");
// sert <20> remplacer le petit texte qui demande de coder son num<75>ro d<><64>tudiant et
"Veuillez coder votre num<75>ro\r\n d<><64>tudiant ci-contre et <20>crire votre nom \r\n dans la case ci-dessous");
// sert <20> remplacer le petit texte qui demande de coder son num<75>ro d<><64>tudiant et
// inscrire son nom
param.put("MarkField", "Veuillez coder le num<75>ro de l'<27>tudiant");
param.put("SeparateAnswerSheet", "1"); // si 1 = feuille de r<>ponse s<>par<61>e.
param.put("AnswerSheetTitle", "Title"); // titre <20> inscrire en tete de la feuille de r<>p
param.put("AnswerSheetPresentation", "Presentation"); // Donne le texte de pr<70>sentation de la feuille de r<>ponse
param.put("MarkField", "Veuillez coder le num<75>ro de l'<27>tudiant");
param.put("SeparateAnswerSheet", "1"); // si 1 = feuille de r<>ponse s<>par<61>e.
param.put("AnswerSheetTitle", "Title"); // titre <20> inscrire en tete de la feuille de r<>p
param.put("AnswerSheetPresentation", "Presentation"); // Donne le texte de pr<70>sentation de la feuille de r<>ponse
param.put("SingleSided", "Placeholder");// si valeur = 1, aucune page blanche entre feuille de sujet et de
// r<>ponse
param.put("DefaultScoringS", "Placeholder");// Donne le bar<61>me par d<>faut pour les questions simples
param.put("DefaultScoringM", "Placeholder");// Donne le bar<61>me par d<>faut pour les questions <20> choix multiple
param.put("QuestionBlocks", "Placeholder");// prend 0 pour valeur pour permettre <20> la boite d'une question boite
// d'etre coup<75> sur plusieurs pages, prend 1 sinon
// r<>ponse
param.put("DefaultScoringS", "Placeholder");// Donne le bar<61>me par d<>faut pour les questions simples
param.put("DefaultScoringM", "Placeholder");// Donne le bar<61>me par d<>faut pour les questions <20> choix multiple
param.put("QuestionBlocks", "Placeholder");// prend 0 pour valeur pour permettre <20> la boite d'une question boite
// d'etre coup<75> sur plusieurs pages, prend 1 sinon
}
public void readConfig() {
// Methode pour lire le fichier config en chemin dans la variable source
// Si une ligne du fichier correspond <20> un parametre, changer la valeur du
// Si une ligne du fichier correspond <20> un parametre, changer la valeur du
// parametre avec celle dans le fichier (si valeur valide)
// Gere aussi les questions dans le fichier source et les mets dans une liste de
// questions.
@@ -72,7 +72,7 @@ public class Config {
Question q;
ligne = scan.nextLine();
// ligne pour gerer le code FEFF en UTF-8 BOM qui peut apparaitre si le fichier
// txt est edit<69> avec windows notepad
// txt est edit<69> avec windows notepad
// ce caractere apparait uniquement en debut de fichier
if (ligne.startsWith("\uFEFF"))
ligne = ligne.substring(1);
@@ -86,7 +86,7 @@ public class Config {
{
q = makeQuestion(ligne);
ligne = scan.nextLine(); // on scan la prochaine ligne
while (!ligne.equals("")) // tant que la ligne n'est pas vide, on lit la suite qui est suppos<6F>
while (!ligne.equals("")) // tant que la ligne n'est pas vide, on lit la suite qui est suppos<6F>
// etre les reponses
{
q.addReponse(ligne);
@@ -104,12 +104,12 @@ public class Config {
}
scan.close();
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
// methode pour creer une question
// methode utilis<69>e <20> partir d'un string suppos<6F> lu sur un fichier config
// methode utilis<69>e <20> partir d'un string suppos<6F> lu sur un fichier config
// TODO : gestion des options telles que coeff et frozenanswer
public Question makeQuestion(String ligne) {
Question q;
@@ -117,7 +117,7 @@ public class Config {
switch (s) {
case "*":
// si c'est une * alors c'est une question <20> choix multiple
// si c'est une * alors c'est une question <20> choix multiple
q = new Question(ligne.substring(3, ligne.length()), true);
break;
@@ -126,14 +126,14 @@ public class Config {
// si c'est une < alors c'est une question de type boite
int debut = ligne.indexOf("="); // on cherche la position du =, le caractere apres le = sera le nb de lignes
// de la boite
int fin = ligne.indexOf(">"); // on cherce la position du >, la suite de ce caractere sera l'intitul<75> de la
int fin = ligne.indexOf(">"); // on cherce la position du >, la suite de ce caractere sera l'intitul<75> de la
// question
int nblignes = Integer.parseInt(ligne.substring(debut + 1, fin));
q = new QuestionBoite(ligne.substring(fin + 2, ligne.length()), false, nblignes);
break;
default:
// si pas une des conditions cit<69>es en haut, alors c'est une question <20> choix
// si pas une des conditions cit<69>es en haut, alors c'est une question <20> choix
// unique
q = new Question(ligne.substring(2, ligne.length()), false);
}
@@ -141,7 +141,7 @@ public class Config {
}
// modification des valeurs du hashmap param
// lecture d'un string suppos<6F> lu sur un fichier config
// lecture d'un string suppos<6F> lu sur un fichier config
public void lireParam(String s) {
int n = s.indexOf(":"); // recherche de position du premier ":" pour pouvoir separer le nom du param de
// sa valeur
@@ -149,7 +149,7 @@ public class Config {
while (spl[1].substring(0, 1).equals(" "))
spl[1] = spl[1].substring(1, spl[1].length());
spl[0] = spl[0].toUpperCase(); // pour eviter la casse, on met tout en upper case
switch (spl[0]) // chaque case correspond <20> un parametre, pour le moment on ignore tout
switch (spl[0]) // chaque case correspond <20> un parametre, pour le moment on ignore tout
// parametre qui n'est pas utile au programme.
{
case "PAPERSIZE":
@@ -195,16 +195,16 @@ public class Config {
setAnswerSheetPresentation(spl[1]);
break;
default: // parametre mal tap<61> ou non utile (pour le moment) au programme, on l'ignore
default: // parametre mal tap<61> ou non utile (pour le moment) au programme, on l'ignore
}
}
// liste des set de chaque valeur de parametre
// actuellement, uniquement les parametres de l'<27>tape 1 sont trait<69>s
// actuellement, uniquement les parametres de l'<27>tape 1 sont trait<69>s
// TODO
// possibilit<69> d'afficher sur la console messages de valeur invalide et valeur
// par d<>faut utilis<69>e en cas d'erreur si verbose
// possibilit<69> d'afficher sur la console messages de valeur invalide et valeur
// par d<>faut utilis<69>e en cas d'erreur si verbose
public void setPaperSize(String s) {
s = s.toUpperCase();
s = s.trim();