@@ -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 ( ) ;