fix #4319 et correction (à améliorer) des problèmes liés aux \n présents dans le fichier source
This commit is contained in:
parent
c37adc36b4
commit
74b204aa33
@ -14,10 +14,49 @@ import org.apache.pdfbox.pdmodel.font.PDType1Font;
|
|||||||
import config.Config;
|
import config.Config;
|
||||||
import config.Question;
|
import config.Question;
|
||||||
|
|
||||||
// infor concernant strok, fill, ... : https://stackoverflow.com/a/27959484
|
// infos concernant strok, fill, ... : https://stackoverflow.com/a/27959484
|
||||||
|
|
||||||
|
// TODO: voir ouverture puis fermeture de stream dans chaque méthode
|
||||||
|
// ou ouverture de stream à l'instanciation puis fermeture dans save
|
||||||
|
|
||||||
public class SubjectGenerator {
|
public class SubjectGenerator {
|
||||||
|
|
||||||
|
private Config config;
|
||||||
|
private PDDocument pdDocument;
|
||||||
|
|
||||||
|
public SubjectGenerator(Config c, PDDocument doc) {
|
||||||
|
this.config = c;
|
||||||
|
this.pdDocument = doc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SubjectGenerator(Config c, int nbPages, PDRectangle format) {
|
||||||
|
this.config = c;
|
||||||
|
this.pdDocument = new PDDocument();
|
||||||
|
for (int i = 0; i < nbPages; i++) {
|
||||||
|
this.pdDocument.addPage(new PDPage(format));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public SubjectGenerator() {
|
||||||
|
this(null, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Config getConfig() {
|
||||||
|
return this.config;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setConfig(Config config) {
|
||||||
|
this.config = config;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PDDocument getPdDocument() {
|
||||||
|
return this.pdDocument;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPdDocument(PDDocument pdDocument) {
|
||||||
|
this.pdDocument = pdDocument;
|
||||||
|
}
|
||||||
|
|
||||||
private static void drawDotedLine(PDPageContentStream contentStream, int xi, int yi, int xf, int yf)
|
private static void drawDotedLine(PDPageContentStream contentStream, int xi, int yi, int xf, int yf)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
contentStream.moveTo(xi, yi);
|
contentStream.moveTo(xi, yi);
|
||||||
@ -40,13 +79,13 @@ public class SubjectGenerator {
|
|||||||
contentStream.fill();
|
contentStream.fill();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PDDocument generateFooter(PDDocument pdDocument) {
|
public void generateFooter() {
|
||||||
int nbTotal = pdDocument.getNumberOfPages();
|
int nbTotal = this.pdDocument.getNumberOfPages();
|
||||||
int count = 1;
|
int count = 1;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
for (PDPage page : pdDocument.getPages()) {
|
for (PDPage page : this.pdDocument.getPages()) {
|
||||||
PDPageContentStream pdPageContentStream = new PDPageContentStream(pdDocument, page,
|
PDPageContentStream pdPageContentStream = new PDPageContentStream(this.pdDocument, page,
|
||||||
PDPageContentStream.AppendMode.APPEND, true);
|
PDPageContentStream.AppendMode.APPEND, true);
|
||||||
PDFont font = PDType1Font.TIMES_ROMAN;
|
PDFont font = PDType1Font.TIMES_ROMAN;
|
||||||
int width = (int) page.getMediaBox().getWidth();
|
int width = (int) page.getMediaBox().getWidth();
|
||||||
@ -65,14 +104,14 @@ public class SubjectGenerator {
|
|||||||
} catch (IOException ioe) {
|
} catch (IOException ioe) {
|
||||||
ioe.printStackTrace();
|
ioe.printStackTrace();
|
||||||
}
|
}
|
||||||
return pdDocument;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PDDocument generateMarks(PDDocument pdDocument) {
|
public void generateMarks() {
|
||||||
for (PDPage page : pdDocument.getPages()) {
|
// TODO: divide generateMarks to avoid header's generation for all pages
|
||||||
|
// the header part should be added to generateHeader
|
||||||
|
for (PDPage page : this.pdDocument.getPages()) {
|
||||||
try {
|
try {
|
||||||
PDPageContentStream pdPageContentStream = new PDPageContentStream(pdDocument, page,
|
PDPageContentStream pdPageContentStream = new PDPageContentStream(this.pdDocument, page,
|
||||||
PDPageContentStream.AppendMode.APPEND, true);
|
PDPageContentStream.AppendMode.APPEND, true);
|
||||||
PDFont font = PDType1Font.TIMES_ROMAN;
|
PDFont font = PDType1Font.TIMES_ROMAN;
|
||||||
|
|
||||||
@ -174,19 +213,16 @@ public class SubjectGenerator {
|
|||||||
ioe.printStackTrace();
|
ioe.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return pdDocument;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* public static PDDocument generateIDPageArea(PDDocument pdDocument) {
|
* public static PDDocument generateIDPageArea(PDDocument pdDocument) { }
|
||||||
*
|
|
||||||
* }
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public static PDDocument generateNameArea(PDDocument pdDocument) {
|
public void generateNameArea() {
|
||||||
try {
|
try {
|
||||||
PDPage page = pdDocument.getPage(0);
|
PDPage page = this.pdDocument.getPage(0);
|
||||||
PDPageContentStream pdPageContentStream = new PDPageContentStream(pdDocument, page,
|
PDPageContentStream pdPageContentStream = new PDPageContentStream(this.pdDocument, page,
|
||||||
PDPageContentStream.AppendMode.APPEND, true);
|
PDPageContentStream.AppendMode.APPEND, true);
|
||||||
PDFont font = PDType1Font.TIMES_ROMAN;
|
PDFont font = PDType1Font.TIMES_ROMAN;
|
||||||
|
|
||||||
@ -199,7 +235,7 @@ public class SubjectGenerator {
|
|||||||
int width = (int) page.getMediaBox().getWidth();
|
int width = (int) page.getMediaBox().getWidth();
|
||||||
|
|
||||||
// generate rectangle nom
|
// generate rectangle nom
|
||||||
|
|
||||||
pdPageContentStream.addRect(width - 238, height - 196, 155, 50); // RECT
|
pdPageContentStream.addRect(width - 238, height - 196, 155, 50); // RECT
|
||||||
// text
|
// text
|
||||||
pdPageContentStream.beginText();
|
pdPageContentStream.beginText();
|
||||||
@ -224,13 +260,12 @@ public class SubjectGenerator {
|
|||||||
} catch (IOException ioe) {
|
} catch (IOException ioe) {
|
||||||
ioe.printStackTrace();
|
ioe.printStackTrace();
|
||||||
}
|
}
|
||||||
return pdDocument;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PDDocument generateNumEtudAreaBis(PDDocument pdDocument) {
|
public void generateNumEtudAreaBis() {
|
||||||
try {
|
try {
|
||||||
PDPage page = pdDocument.getPage(0);
|
PDPage page = this.pdDocument.getPage(0);
|
||||||
PDPageContentStream pdPageContentStream = new PDPageContentStream(pdDocument, page,
|
PDPageContentStream pdPageContentStream = new PDPageContentStream(this.pdDocument, page,
|
||||||
PDPageContentStream.AppendMode.APPEND, true);
|
PDPageContentStream.AppendMode.APPEND, true);
|
||||||
PDFont font = PDType1Font.TIMES_ROMAN;
|
PDFont font = PDType1Font.TIMES_ROMAN;
|
||||||
|
|
||||||
@ -268,13 +303,12 @@ public class SubjectGenerator {
|
|||||||
} catch (IOException ioe) {
|
} catch (IOException ioe) {
|
||||||
ioe.printStackTrace();
|
ioe.printStackTrace();
|
||||||
}
|
}
|
||||||
return pdDocument;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PDDocument generateNumEtudArea(PDDocument pdDocument) {
|
public void generateNumEtudArea() {
|
||||||
try {
|
try {
|
||||||
PDPage page = pdDocument.getPage(0);
|
PDPage page = this.pdDocument.getPage(0);
|
||||||
PDPageContentStream pdPageContentStream = new PDPageContentStream(pdDocument, page,
|
PDPageContentStream pdPageContentStream = new PDPageContentStream(this.pdDocument, page,
|
||||||
PDPageContentStream.AppendMode.APPEND, true);
|
PDPageContentStream.AppendMode.APPEND, true);
|
||||||
PDFont font = PDType1Font.TIMES_ROMAN;
|
PDFont font = PDType1Font.TIMES_ROMAN;
|
||||||
|
|
||||||
@ -307,78 +341,78 @@ public class SubjectGenerator {
|
|||||||
} catch (IOException ioe) {
|
} catch (IOException ioe) {
|
||||||
ioe.printStackTrace();
|
ioe.printStackTrace();
|
||||||
}
|
}
|
||||||
return pdDocument;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void generateHeader(PDDocument pdDocument) {
|
public void generateHeader() {
|
||||||
try {
|
try {
|
||||||
PDPageContentStream pdPageContentStream = new PDPageContentStream(pdDocument, pdDocument.getPage(0));
|
PDPageContentStream pdPageContentStream = new PDPageContentStream(this.pdDocument,
|
||||||
|
this.pdDocument.getPage(0));
|
||||||
PDFont font = PDType1Font.HELVETICA_BOLD;
|
PDFont font = PDType1Font.HELVETICA_BOLD;
|
||||||
} catch (IOException ioe) {
|
} catch (IOException ioe) {
|
||||||
ioe.printStackTrace();
|
ioe.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PDDocument generateBody(PDDocument pdDocument) {
|
public void generateBody() {
|
||||||
try {
|
try {
|
||||||
PDPageContentStream pdPageContentStream = new PDPageContentStream(pdDocument, pdDocument.getPage(0),
|
PDPageContentStream pdPageContentStream = new PDPageContentStream(this.pdDocument,
|
||||||
PDPageContentStream.AppendMode.APPEND, true);
|
this.pdDocument.getPage(0), PDPageContentStream.AppendMode.APPEND, true);
|
||||||
PDFont font = PDType1Font.HELVETICA_BOLD;
|
PDFont font = PDType1Font.HELVETICA_BOLD;
|
||||||
|
|
||||||
// Boucle sur les questions
|
// Boucle sur les questions
|
||||||
int qIndex = 1;
|
int qIndex = 1;
|
||||||
int heightOffset = 265;
|
int heightOffset = 265;
|
||||||
int pageIndex = 0;
|
int pageIndex = 0;
|
||||||
for (Question q : Config.getQuestions()) {
|
System.out.println(this.config.getQuestions());
|
||||||
int height = (int) pdDocument.getPage(0).getMediaBox().getHeight();
|
for (Question q : this.config.getQuestions()) {
|
||||||
PDPage page = pdDocument.getPage(pageIndex);
|
q.setTitre(q.getTitre().replace("\n", "")); // /\ TODO: must be done in Config /\
|
||||||
SubjectGenerator.generateQ(q, qIndex, pdDocument, page, 25, heightOffset);
|
int height = (int) this.pdDocument.getPage(0).getMediaBox().getHeight();
|
||||||
|
PDPage page = this.pdDocument.getPage(pageIndex);
|
||||||
|
this.generateQ(q, qIndex, this.pdDocument, page, 25, heightOffset);
|
||||||
qIndex++;
|
qIndex++;
|
||||||
heightOffset += 100;
|
heightOffset += 100;
|
||||||
|
|
||||||
if (heightOffset > height - 10) {
|
if (heightOffset > (height - 10)) {
|
||||||
heightOffset = 265;
|
heightOffset = 265;
|
||||||
pageIndex++;
|
pageIndex++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pdPageContentStream.close();
|
pdPageContentStream.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
catch (IOException ioe) {
|
catch (IOException ioe) {
|
||||||
ioe.printStackTrace();
|
ioe.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
return pdDocument;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void generateQ(Question q, int qIndex, PDDocument pdDocument, PDPage curPage, int widthOffset, int heightOffset) {
|
public void generateQ(Question q, int qIndex, PDDocument pdDocument, PDPage curPage, int widthOffset,
|
||||||
try {
|
int heightOffset) {
|
||||||
// Il faut rendre plus générale la génération des Q (en fonction du nombre de réponses, recycler le heightOffset)
|
try {
|
||||||
|
// Il faut rendre plus générale la génération des Q (en fonction du nombre de
|
||||||
|
// réponses, recycler le heightOffset)
|
||||||
|
|
||||||
int width = (int) pdDocument.getPage(0).getMediaBox().getWidth();
|
int width = (int) pdDocument.getPage(0).getMediaBox().getWidth();
|
||||||
int height = (int) pdDocument.getPage(0).getMediaBox().getHeight();
|
int height = (int) pdDocument.getPage(0).getMediaBox().getHeight();
|
||||||
|
|
||||||
|
|
||||||
PDPageContentStream pdPageContentStream = new PDPageContentStream(pdDocument, curPage,
|
PDPageContentStream pdPageContentStream = new PDPageContentStream(pdDocument, curPage,
|
||||||
PDPageContentStream.AppendMode.APPEND, true);
|
PDPageContentStream.AppendMode.APPEND, true);
|
||||||
PDFont font = PDType1Font.TIMES_ROMAN;
|
PDFont font = PDType1Font.TIMES_ROMAN;
|
||||||
int fontSize = 10;
|
int fontSize = 10;
|
||||||
pdPageContentStream.setFont(font, fontSize);
|
pdPageContentStream.setFont(font, fontSize);
|
||||||
float titleLength = (font.getStringWidth(q.getTitre()) / 1000)* fontSize;
|
float titleLength = (font.getStringWidth(q.getTitre()) / 1000) * fontSize;
|
||||||
|
|
||||||
System.out.println(qIndex + ". " + q.getTitre() + " - Width: " + titleLength + "/" + width + " - " + height + " - NbRep: " + q.getReponses().size() + "\n");
|
System.out.println(qIndex + ". " + q.getTitre() + " - Width: " + titleLength + "/" + width + " - " + height
|
||||||
|
+ " - NbRep: " + q.getReponses().size() + "\n");
|
||||||
|
|
||||||
// Titre
|
// Titre
|
||||||
// Si titre plus long que largeur page -> mise sur plusieurs lignes
|
// Si titre plus long que largeur page -> mise sur plusieurs lignes
|
||||||
if (titleLength > width - 20) {
|
if (titleLength > (width - 20)) {
|
||||||
pdPageContentStream.beginText();
|
pdPageContentStream.beginText();
|
||||||
pdPageContentStream.newLineAtOffset(widthOffset, height - heightOffset);
|
pdPageContentStream.newLineAtOffset(widthOffset, height - heightOffset);
|
||||||
pdPageContentStream.showText("Q." + qIndex + " -");
|
pdPageContentStream.showText("Q." + qIndex + " -");
|
||||||
pdPageContentStream.endText();
|
pdPageContentStream.endText();
|
||||||
|
|
||||||
for (String line : setTextOnMultLines(q.getTitre(), widthOffset, pdDocument, font, fontSize)) {
|
for (String line : setTextOnMultLines(q.getTitre(), widthOffset, pdDocument, font, fontSize)) {
|
||||||
pdPageContentStream.beginText();
|
pdPageContentStream.beginText();
|
||||||
pdPageContentStream.newLineAtOffset(widthOffset + 22, height - heightOffset);
|
pdPageContentStream.newLineAtOffset(widthOffset + 22, height - heightOffset);
|
||||||
@ -393,17 +427,13 @@ public class SubjectGenerator {
|
|||||||
pdPageContentStream.showText("Q." + qIndex + " - " + q.getTitre());
|
pdPageContentStream.showText("Q." + qIndex + " - " + q.getTitre());
|
||||||
pdPageContentStream.endText();
|
pdPageContentStream.endText();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Reponses (QCM)
|
// Reponses (QCM)
|
||||||
/// Rectangle
|
/// Rectangle
|
||||||
//pdPageContentStream.addRect(widthOffset + 20, height - heightOffset - 15, 100, 100);
|
// pdPageContentStream.addRect(widthOffset + 20, height - heightOffset - 15,
|
||||||
|
// 100, 100);
|
||||||
/// Texte
|
|
||||||
|
/// Texte
|
||||||
for (int i = 0; i < q.getReponses().size(); i++) {
|
for (int i = 0; i < q.getReponses().size(); i++) {
|
||||||
pdPageContentStream.beginText();
|
pdPageContentStream.beginText();
|
||||||
pdPageContentStream.newLineAtOffset(widthOffset + 40, height - heightOffset - 15);
|
pdPageContentStream.newLineAtOffset(widthOffset + 40, height - heightOffset - 15);
|
||||||
@ -411,63 +441,67 @@ public class SubjectGenerator {
|
|||||||
pdPageContentStream.endText();
|
pdPageContentStream.endText();
|
||||||
heightOffset += 17.5;
|
heightOffset += 17.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
pdPageContentStream.close();
|
pdPageContentStream.close();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
pdPageContentStream.beginText();
|
* pdPageContentStream.beginText(); pdPageContentStream.newLineAtOffset(80 + (22
|
||||||
pdPageContentStream.newLineAtOffset(80 + (22 * i) + 12, height - 105);
|
* * i) + 12, height - 105); pdPageContentStream.showText(String.valueOf(i));
|
||||||
pdPageContentStream.showText(String.valueOf(i));
|
* pdPageContentStream.endText(); // draw second range of rectangles
|
||||||
pdPageContentStream.endText();
|
* pdPageContentStream.addRect(80 + (22 * i), height - 124, 11, 11); // write
|
||||||
// draw second range of rectangles
|
* second range of numbers pdPageContentStream.beginText();
|
||||||
pdPageContentStream.addRect(80 + (22 * i), height - 124, 11, 11);
|
* pdPageContentStream.newLineAtOffset(80 + (22 * i) + 12, height - 122);
|
||||||
// write second range of numbers
|
* pdPageContentStream.showText(String.valueOf(i));
|
||||||
pdPageContentStream.beginText();
|
* pdPageContentStream.endText();
|
||||||
pdPageContentStream.newLineAtOffset(80 + (22 * i) + 12, height - 122);
|
*/
|
||||||
pdPageContentStream.showText(String.valueOf(i));
|
|
||||||
pdPageContentStream.endText();*/
|
|
||||||
} catch (IOException ioe) {
|
} catch (IOException ioe) {
|
||||||
ioe.printStackTrace();
|
ioe.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ArrayList<String> setTextOnMultLines (String text, int widthOffset, PDDocument pdDocument, PDFont font, int fontSize){
|
public static ArrayList<String> setTextOnMultLines(String text, int widthOffset, PDDocument pdDocument, PDFont font,
|
||||||
|
int fontSize) {
|
||||||
|
// TODO: voir si l'on laisse en static ou non
|
||||||
int width = (int) pdDocument.getPage(0).getMediaBox().getWidth();
|
int width = (int) pdDocument.getPage(0).getMediaBox().getWidth();
|
||||||
float subStrLength = 0;
|
float subStrLength = 0;
|
||||||
|
|
||||||
ArrayList<String> lines = new ArrayList<String>();
|
ArrayList<String> lines = new ArrayList<String>();
|
||||||
int widthMargin = 60;
|
int widthMargin = 60;
|
||||||
int lastSpace = -2;
|
int lastSpace = -2;
|
||||||
int spaceIndex = 0;
|
int spaceIndex = 0;
|
||||||
while (text.length() > 0) {
|
while (text.length() > 0) {
|
||||||
//System.out.println("1. Si: " + spaceIndex + " - Ls: " + lastSpace + " TxtL: " + text.length());
|
// System.out.println("1. Si: " + spaceIndex + " - Ls: " + lastSpace + " TxtL: "
|
||||||
|
// + text.length());
|
||||||
spaceIndex = text.indexOf(' ', lastSpace + 2);
|
spaceIndex = text.indexOf(' ', lastSpace + 2);
|
||||||
//System.out.println("2. Si: " + spaceIndex + " - Ls: " + lastSpace + " : " + text + "\n");
|
// System.out.println("2. Si: " + spaceIndex + " - Ls: " + lastSpace + " : " +
|
||||||
|
// text + "\n");
|
||||||
String subStr = "";
|
String subStr = "";
|
||||||
//System.out.println("1. SubL: " + subStrLength + " - W: " + (width - widthOffset));
|
// System.out.println("1. SubL: " + subStrLength + " - W: " + (width -
|
||||||
|
// widthOffset));
|
||||||
|
|
||||||
if (spaceIndex == -1) {
|
if (spaceIndex == -1) {
|
||||||
lines.add(text);
|
lines.add(text);
|
||||||
text = "";
|
text = "";
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
subStr = text.substring(0, spaceIndex);
|
subStr = text.substring(0, spaceIndex);
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
subStrLength = (font.getStringWidth(subStr) / 1000)* fontSize;
|
subStrLength = (font.getStringWidth(subStr) / 1000) * fontSize;
|
||||||
} catch (IOException ioe) {
|
} catch (IOException ioe) {
|
||||||
System.err.print(ioe.getMessage());
|
System.err.print(ioe.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
//System.out.println("2. SubL: " + subStrLength + " - W: " + (width - widthOffset));
|
// System.out.println("2. SubL: " + subStrLength + " - W: " + (width -
|
||||||
|
// widthOffset));
|
||||||
if (subStrLength > width - widthOffset - widthMargin) {
|
|
||||||
if (lastSpace > 0)
|
if (subStrLength > (width - widthOffset - widthMargin)) {
|
||||||
|
if (lastSpace > 0) {
|
||||||
lastSpace = spaceIndex;
|
lastSpace = spaceIndex;
|
||||||
|
}
|
||||||
//System.out.println("[IF] SubL: " + subStrLength + " - W: " + (width - widthOffset));
|
|
||||||
|
// System.out.println("[IF] SubL: " + subStrLength + " - W: " + (width -
|
||||||
|
// widthOffset));
|
||||||
subStr = text.substring(0, lastSpace);
|
subStr = text.substring(0, lastSpace);
|
||||||
lines.add(subStr);
|
lines.add(subStr);
|
||||||
text = text.substring(lastSpace).trim();
|
text = text.substring(lastSpace).trim();
|
||||||
@ -475,47 +509,57 @@ public class SubjectGenerator {
|
|||||||
} else if (spaceIndex == lastSpace) {
|
} else if (spaceIndex == lastSpace) {
|
||||||
lines.add(text);
|
lines.add(text);
|
||||||
text = "";
|
text = "";
|
||||||
//System.out.println("LTxt: " + text.length());
|
// System.out.println("LTxt: " + text.length());
|
||||||
} else {
|
} else {
|
||||||
lastSpace = spaceIndex;
|
lastSpace = spaceIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return lines;
|
return lines;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void save(String dest) {
|
||||||
|
try {
|
||||||
|
this.pdDocument.save(dest);
|
||||||
|
this.pdDocument.close();
|
||||||
|
} catch (IOException ioe) {
|
||||||
|
ioe.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void main(String args[]) throws IOException {
|
public static void main(String args[]) throws IOException {
|
||||||
// Create a Document object.
|
// config initialization
|
||||||
PDDocument pdDocument = new PDDocument();
|
// Config c = new Config("E:\\sourceB.txt"); // SourceB ne contient aucun '\n'
|
||||||
// Create a Page object
|
Config c = new Config("E:\\source.txt");
|
||||||
PDPage pdPage1 = new PDPage(PDRectangle.A4);
|
|
||||||
// System.out.println("Height : " + pdPage1.getMediaBox().getHeight());
|
|
||||||
// System.out.println("Width : " + pdPage1.getMediaBox().getWidth());
|
|
||||||
PDPage pdPage2 = new PDPage(PDRectangle.A4);
|
|
||||||
PDPage pdPage3 = new PDPage(PDRectangle.A4);
|
|
||||||
PDPage pdPage4 = new PDPage(PDRectangle.A4);
|
|
||||||
PDPage pdPage5 = new PDPage(PDRectangle.A4);
|
|
||||||
|
|
||||||
// Add the page to the document and save the document to a desired file.
|
|
||||||
pdDocument.addPage(pdPage1);
|
|
||||||
pdDocument.addPage(pdPage2);
|
|
||||||
pdDocument.addPage(pdPage3);
|
|
||||||
pdDocument.addPage(pdPage4);
|
|
||||||
pdDocument.addPage(pdPage5);
|
|
||||||
|
|
||||||
Config c = new Config("E:\\sourceB.txt"); // SourceB ne contient auucn '\n'
|
|
||||||
c.readConfig();
|
c.readConfig();
|
||||||
|
// Create a Document object.
|
||||||
|
/**
|
||||||
|
* PDDocument pdDocument = new PDDocument(); // Create a Page object PDPage
|
||||||
|
* pdPage1 = new PDPage(PDRectangle.A4); // System.out.println("Height : " +
|
||||||
|
* pdPage1.getMediaBox().getHeight()); // System.out.println("Width : " +
|
||||||
|
* pdPage1.getMediaBox().getWidth()); PDPage pdPage2 = new
|
||||||
|
* PDPage(PDRectangle.A4); PDPage pdPage3 = new PDPage(PDRectangle.A4); PDPage
|
||||||
|
* pdPage4 = new PDPage(PDRectangle.A4); PDPage pdPage5 = new
|
||||||
|
* PDPage(PDRectangle.A4);
|
||||||
|
*
|
||||||
|
* // Add the page to the document pdDocument.addPage(pdPage1);
|
||||||
|
* pdDocument.addPage(pdPage2); pdDocument.addPage(pdPage3);
|
||||||
|
* pdDocument.addPage(pdPage4); pdDocument.addPage(pdPage5);
|
||||||
|
*/
|
||||||
|
|
||||||
pdDocument = SubjectGenerator.generateMarks(pdDocument);
|
// instanciate a new SubjectGenerator
|
||||||
pdDocument = SubjectGenerator.generateNumEtudAreaBis(pdDocument);
|
// TODO: change PDRectangle.A4 to the format specified in the config
|
||||||
pdDocument = SubjectGenerator.generateNameArea(pdDocument);
|
SubjectGenerator subjectGenerator = new SubjectGenerator(c, 5, PDRectangle.A4);
|
||||||
pdDocument = SubjectGenerator.generateFooter(pdDocument);
|
|
||||||
pdDocument = SubjectGenerator.generateBody(pdDocument);
|
subjectGenerator.generateMarks();
|
||||||
|
subjectGenerator.generateNumEtudAreaBis();
|
||||||
|
subjectGenerator.generateNameArea();
|
||||||
|
subjectGenerator.generateFooter();
|
||||||
|
subjectGenerator.generateBody();
|
||||||
|
|
||||||
|
subjectGenerator.save("E:\\testPDFMarks.pdf");
|
||||||
|
|
||||||
// pdDocument.save("C:\\Users\\Nico\\Desktop\\testPDFMarks.pdf");
|
|
||||||
pdDocument.save("E:\\testPDFMarks.pdf");
|
|
||||||
pdDocument.close();
|
|
||||||
System.out.println("PDF saved to the location !!!");
|
System.out.println("PDF saved to the location !!!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
package config;
|
package config;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.File;
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
public class Config {
|
public class Config {
|
||||||
|
|
||||||
private HashMap<String, String> param = new HashMap<String, String>(); // Hashmap des parametres de config, Key =
|
private HashMap<String, String> param = new HashMap<String, String>(); // Hashmap des parametres de config, Key =
|
||||||
// nom paramn,
|
// nom paramn,
|
||||||
private ArrayList<Question> questions = new ArrayList<Question>();
|
private ArrayList<Question> questions = new ArrayList<Question>();
|
||||||
@ -12,7 +15,7 @@ public class Config {
|
|||||||
|
|
||||||
// Getters et setters
|
// Getters et setters
|
||||||
public HashMap<String, String> getParam() {
|
public HashMap<String, String> getParam() {
|
||||||
return param;
|
return this.param;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setParam(HashMap<String, String> param) {
|
public void setParam(HashMap<String, String> param) {
|
||||||
@ -20,7 +23,7 @@ public class Config {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public ArrayList<Question> getQuestions() {
|
public ArrayList<Question> getQuestions() {
|
||||||
return questions;
|
return this.questions;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setQuestions(ArrayList<Question> questions) {
|
public void setQuestions(ArrayList<Question> questions) {
|
||||||
@ -36,35 +39,55 @@ public class Config {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String clearString(String string) {
|
||||||
|
// Sources :
|
||||||
|
// https://howtodoinjava.com/regex/java-clean-ascii-text-non-printable-chars/
|
||||||
|
// https://stackoverflow.com/a/52559280
|
||||||
|
// https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#trim()
|
||||||
|
// https://stackoverflow.com/a/33724262
|
||||||
|
|
||||||
|
// strips off all non-ASCII characters
|
||||||
|
string = string.replace("\n", "");
|
||||||
|
string = string.replaceAll("[^\\x00-\\xFF]", " ");
|
||||||
|
// erases all the ASCII control characters
|
||||||
|
string = string.replaceAll("[\\p{Cntrl}&&[^\r\n\t]]", "");
|
||||||
|
// removes non-printable characters from Unicode
|
||||||
|
string = string.replaceAll("\\p{C}", "");
|
||||||
|
return string.trim(); // trim() : eliminates leading and trailing spaces
|
||||||
|
}
|
||||||
|
|
||||||
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
|
||||||
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 qui ne servent
|
||||||
// pas pour le moment
|
// pas pour le moment
|
||||||
param.put("PaperSize", "A4"); // A3 A4 A5 letter
|
this.param.put("PaperSize", "A4"); // A3 A4 A5 letter
|
||||||
param.put("Title", "Placeholder"); // titre de l exam
|
this.param.put("Title", "Placeholder"); // titre de l exam
|
||||||
param.put("Presentation", "Placeholder"); // texte de consignes
|
this.param.put("Presentation", "Placeholder"); // texte de consignes
|
||||||
param.put("DocumentModel", "PlaceHolder"); // nom du fichier du modéle
|
this.param.put("DocumentModel", "PlaceHolder"); // nom du fichier du modéle
|
||||||
param.put("ShuffleQuestions", "1"); // 1 = qt mélangées, 0 = non mél
|
this.param.put("ShuffleQuestions", "1"); // 1 = qt mélangées, 0 = non mél
|
||||||
param.put("ShuffleAnswers", "1"); // 1= proposition rép mélangées, 0= non
|
this.param.put("ShuffleAnswers", "1"); // 1= proposition rép mélangées, 0= non
|
||||||
param.put("Code", "8"); // code étudiant = 8 chiffres (entre 1 et 16)
|
this.param.put("Code", "8"); // code étudiant = 8 chiffres (entre 1 et 16)
|
||||||
param.put("MarkFormat", "20"); // expl "20" 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
|
||||||
param.put("NameField", "Nom et Prénom"); // remplace le texte
|
this.param.put("NameField", "Nom et Prénom"); // remplace le texte
|
||||||
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 ci-contre 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
|
||||||
param.put("MarkField", "Veuillez coder le numéro de l'étudiant");
|
this.param.put("MarkField", "Veuillez coder le numéro de l'étudiant");
|
||||||
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.
|
||||||
param.put("AnswerSheetTitle", "Title"); // titre é inscrire en tete de la feuille de rép
|
this.param.put("AnswerSheetTitle", "Title"); // titre é inscrire en tete de la feuille de rép
|
||||||
param.put("AnswerSheetPresentation", "Presentation"); // Donne le texte de présentation de la feuille de réponse
|
this.param.put("AnswerSheetPresentation", "Presentation"); // Donne le texte de présentation de la feuille de
|
||||||
param.put("SingleSided", "Placeholder");// si valeur = 1, aucune page blanche entre feuille de sujet et de
|
// réponse
|
||||||
// réponse
|
this.param.put("SingleSided", "Placeholder");// si valeur = 1, aucune page blanche entre feuille de sujet et de
|
||||||
param.put("DefaultScoringS", "Placeholder");// Donne le baréme par défaut pour les questions simples
|
// réponse
|
||||||
param.put("DefaultScoringM", "Placeholder");// Donne le baréme par défaut pour les questions é choix multiple
|
this.param.put("DefaultScoringS", "Placeholder");// Donne le baréme par défaut pour les questions simples
|
||||||
param.put("QuestionBlocks", "Placeholder");// prend 0 pour valeur pour permettre é la boite d'une question boite
|
this.param.put("DefaultScoringM", "Placeholder");// Donne le baréme par défaut pour les questions é choix
|
||||||
// d'etre coupé sur plusieurs pages, prend 1 sinon
|
// multiple
|
||||||
|
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
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,15 +99,16 @@ public class Config {
|
|||||||
// questions.
|
// questions.
|
||||||
// Gestion de questions mais actuellement inutile pour le programme
|
// Gestion de questions mais actuellement inutile pour le programme
|
||||||
try {
|
try {
|
||||||
Scanner scan = new Scanner(new File(source), "UTF-8");
|
Scanner scan = new Scanner(new File(this.source), "UTF-8");
|
||||||
String ligne;
|
String ligne;
|
||||||
Question q;
|
Question q;
|
||||||
ligne = scan.nextLine();
|
ligne = scan.nextLine();
|
||||||
// ligne pour gerer le code FEFF en UTF-8 BOM qui peut apparaitre si le fichier
|
// ligne pour gerer le code FEFF en UTF-8 BOM qui peut apparaitre si le fichier
|
||||||
// txt est edité avec windows notepad
|
// txt est edité avec windows notepad
|
||||||
// ce caractere apparait uniquement en debut de fichier
|
// ce caractere apparait uniquement en debut de fichier
|
||||||
if (ligne.startsWith("\uFEFF"))
|
if (ligne.startsWith("\uFEFF")) {
|
||||||
ligne = ligne.substring(1);
|
ligne = ligne.substring(1);
|
||||||
|
}
|
||||||
while (scan.hasNext() || !ligne.isEmpty() || ligne.equals(System.lineSeparator())) {
|
while (scan.hasNext() || !ligne.isEmpty() || ligne.equals(System.lineSeparator())) {
|
||||||
if (!ligne.equals("")) {
|
if (!ligne.equals("")) {
|
||||||
if (!(ligne.substring(0, 1).equals("#"))) // si ligne commence par un # c'est un commentaire, donc
|
if (!(ligne.substring(0, 1).equals("#"))) // si ligne commence par un # c'est un commentaire, donc
|
||||||
@ -93,25 +117,26 @@ public class Config {
|
|||||||
{
|
{
|
||||||
if (ligne.substring(0, 1).equals("*")) // si ligne commence par une *, c'est une question
|
if (ligne.substring(0, 1).equals("*")) // si ligne commence par une *, c'est une question
|
||||||
{
|
{
|
||||||
q = makeQuestion(ligne);
|
q = this.makeQuestion(Config.clearString(ligne));
|
||||||
ligne = scan.nextLine(); // on scan la prochaine ligne
|
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é
|
// supposée
|
||||||
// etre les reponses
|
// etre les reponses
|
||||||
{
|
{
|
||||||
q.addReponse(ligne);
|
q.addReponse(Config.clearString(ligne));
|
||||||
ligne = scan.nextLine();
|
ligne = scan.nextLine();
|
||||||
}
|
}
|
||||||
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 (on ignore les lignes vides)
|
||||||
{
|
{
|
||||||
lireParam(ligne);
|
this.lireParam(ligne);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ligne = scan.nextLine();
|
ligne = scan.nextLine();
|
||||||
while (ligne.equals("")) // on saute les lignes vides avant de recommencer la boucle while
|
while (ligne.equals("")) {
|
||||||
ligne = scan.nextLine();
|
ligne = scan.nextLine();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
scan.close();
|
scan.close();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@ -158,54 +183,55 @@ public class Config {
|
|||||||
if (n != -1) // si -1 alors il n'y a pas de : et donc ce n'est pas un paramètre
|
if (n != -1) // si -1 alors il n'y a pas de : et donc ce n'est pas un paramètre
|
||||||
{
|
{
|
||||||
String spl[] = { s.substring(0, n), s.substring(n + 1, s.length()) };
|
String spl[] = { s.substring(0, n), s.substring(n + 1, s.length()) };
|
||||||
while (spl[1].substring(0, 1).equals(" "))
|
while (spl[1].substring(0, 1).equals(" ")) {
|
||||||
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":
|
||||||
setPaperSize(spl[1]);
|
this.setPaperSize(spl[1]);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "CODE":
|
case "CODE":
|
||||||
setCode(spl[1]);
|
this.setCode(spl[1]);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "MARKFORMAT":
|
case "MARKFORMAT":
|
||||||
setMarkFormat(spl[1]);
|
this.setMarkFormat(spl[1]);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "NAMEFIELD":
|
case "NAMEFIELD":
|
||||||
setNameField(spl[1]);
|
this.setNameField(spl[1]);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "STUDENTIDFIELD":
|
case "STUDENTIDFIELD":
|
||||||
setStudentIdField(spl[1]);
|
this.setStudentIdField(spl[1]);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "MARKFIELD":
|
case "MARKFIELD":
|
||||||
setMarkField(spl[1]);
|
this.setMarkField(spl[1]);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "SEPARATEANSWERSHEET":
|
case "SEPARATEANSWERSHEET":
|
||||||
setSeparateAnswerSheet(spl[1]);
|
this.setSeparateAnswerSheet(spl[1]);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "ANSWERSHEETTITLE":
|
case "ANSWERSHEETTITLE":
|
||||||
setAnswerSheetTitle(spl[1]);
|
this.setAnswerSheetTitle(spl[1]);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "ANSWERSHEETPRESENTATION":
|
case "ANSWERSHEETPRESENTATION":
|
||||||
setAnswerSheetPresentation(spl[1]);
|
this.setAnswerSheetPresentation(spl[1]);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default: // parametre mal tapé ou non utile (pour le moment) au programme, on l'ignore
|
default: // parametre mal tapé ou non utile (pour le moment) au programme, on l'ignore
|
||||||
@ -223,16 +249,16 @@ public class Config {
|
|||||||
s = s.toUpperCase();
|
s = s.toUpperCase();
|
||||||
s = s.trim();
|
s = s.trim();
|
||||||
if (s.equals("A3") || s.equals("A4") || s.equals("A5") || s.equals("LETTER")) {
|
if (s.equals("A3") || s.equals("A4") || s.equals("A5") || s.equals("LETTER")) {
|
||||||
param.replace("PaperSize", s);
|
this.param.replace("PaperSize", s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCode(String s) {
|
public void setCode(String s) {
|
||||||
s = s.trim();
|
s = s.trim();
|
||||||
if (isParsable(s)) {
|
if (this.isParsable(s)) {
|
||||||
int n = Integer.parseInt(s);
|
int n = Integer.parseInt(s);
|
||||||
if (n >= 1 && n <= 16) {
|
if ((n >= 1) && (n <= 16)) {
|
||||||
param.replace("Code", s);
|
this.param.replace("Code", s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -240,47 +266,47 @@ 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")) {
|
||||||
param.replace("MarkFormat", s);
|
this.param.replace("MarkFormat", s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setNameField(String s) {
|
public void setNameField(String s) {
|
||||||
if (!s.equals("")) {
|
if (!s.equals("")) {
|
||||||
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("")) {
|
||||||
param.replace("StudentIdField", s);
|
this.param.replace("StudentIdField", s);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMarkField(String s) {
|
public void setMarkField(String s) {
|
||||||
if (!s.equals("")) {
|
if (!s.equals("")) {
|
||||||
param.replace("MarkField", s);
|
this.param.replace("MarkField", s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSeparateAnswerSheet(String s) {
|
public void setSeparateAnswerSheet(String s) {
|
||||||
s = s.trim();
|
s = s.trim();
|
||||||
int n = Integer.parseInt(s);
|
int n = Integer.parseInt(s);
|
||||||
if (n == 0 || n == 1) {
|
if ((n == 0) || (n == 1)) {
|
||||||
param.replace("SeparateAnswerSheet", s);
|
this.param.replace("SeparateAnswerSheet", s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAnswerSheetTitle(String s) {
|
public void setAnswerSheetTitle(String s) {
|
||||||
if (!s.equals("")) {
|
if (!s.equals("")) {
|
||||||
param.replace("AnswerSheetTitle", s);
|
this.param.replace("AnswerSheetTitle", s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAnswerSheetPresentation(String s) {
|
public void setAnswerSheetPresentation(String s) {
|
||||||
if (!s.equals("")) {
|
if (!s.equals("")) {
|
||||||
param.replace("AnswerSheetPresentation", s);
|
this.param.replace("AnswerSheetPresentation", s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,18 +8,41 @@ public class TestConfig {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testMakeQuestion() {
|
void testMakeQuestion() {
|
||||||
Config c=new Config("test");
|
Config c = new Config("test");
|
||||||
Question q=new Question("Je suis le titre",false);
|
Question q = new Question("Je suis le titre", false);
|
||||||
q=c.makeQuestion("* Dans M.A.S.K. qui sont les pilotes ou copilote de Rhino (un camion tracteur Kenworth w900)?");
|
q = c.makeQuestion(
|
||||||
assertEquals("Dans M.A.S.K. qui sont les pilotes ou copilote de Rhino (un camion tracteur Kenworth w900)?",q.getTitre());
|
"* Dans M.A.S.K. qui sont les pilotes ou copilote de Rhino (un camion tracteur Kenworth w900)?");
|
||||||
|
assertEquals("Dans M.A.S.K. qui sont les pilotes ou copilote de Rhino (un camion tracteur Kenworth w900)?",
|
||||||
Question q2=new Question("Selon la serie diffusée en 1991 sur TF1, où le petit Nicolas doit il travailler et s'appliquer ?",false);
|
q.getTitre());
|
||||||
q2=c.makeQuestion("** Dans M.A.S.K. qui sont les pilotes ou copilote de Rhino (un camion tracteur Kenworth w900)?");
|
|
||||||
assertEquals("Dans M.A.S.K. qui sont les pilotes ou copilote de Rhino (un camion tracteur Kenworth w900)?",q2.getTitre());
|
Question q2 = new Question(
|
||||||
|
"Selon la serie diffusée en 1991 sur TF1, où le petit Nicolas doit il travailler et s'appliquer ?",
|
||||||
Question q3=new Question("Quelles sont les bonnes réponses",false);
|
false);
|
||||||
q3=c.makeQuestion("*<lines=1> Cette jeune fille vient d'emménager à Sunnydale avec sa mère et rencontre son nouvel observateur. Quel est le nom de ce dernier ?");
|
q2 = c.makeQuestion(
|
||||||
assertEquals("Cette jeune fille vient d'emménager à Sunnydale avec sa mère et rencontre son nouvel observateur. Quel est le nom de ce dernier ?",q3.getTitre());
|
"** Dans M.A.S.K. qui sont les pilotes ou copilote de Rhino (un camion tracteur Kenworth w900)?");
|
||||||
|
assertEquals("Dans M.A.S.K. qui sont les pilotes ou copilote de Rhino (un camion tracteur Kenworth w900)?",
|
||||||
|
q2.getTitre());
|
||||||
|
|
||||||
|
Question q3 = new Question("Quelles sont les bonnes réponses", false);
|
||||||
|
q3 = c.makeQuestion(
|
||||||
|
"*<lines=1> Cette jeune fille vient d'emménager à Sunnydale avec sa mère et rencontre son nouvel observateur. Quel est le nom de ce dernier ?");
|
||||||
|
assertEquals(
|
||||||
|
"Cette jeune fille vient d'emménager à Sunnydale avec sa mère et rencontre son nouvel observateur. Quel est le nom de ce dernier ?",
|
||||||
|
q3.getTitre());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testClearString() {
|
||||||
|
String string = " \ntest \r testù ";
|
||||||
|
assertEquals("test testù", Config.clearString(string));
|
||||||
|
|
||||||
|
// TODO: improve tests with a string containing
|
||||||
|
// all non desired characters
|
||||||
|
/**
|
||||||
|
* String string2 = "\n\r\\u000A\\uFFFF"; assertEquals("",
|
||||||
|
* Config.clearString(string2));
|
||||||
|
* assertTrue(Config.clearString(string2).isEmpty());
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user