Premier commit - Mise en place de git sur le projet.

This commit is contained in:
Mysaa
2021-05-18 22:01:26 +02:00
commit 2df492c79c
132 changed files with 6554 additions and 0 deletions
Binary file not shown.
@@ -0,0 +1,214 @@
package com.bernard.mcq.formQuiz;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.PrintStream;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;
import org.jdom.Element;
import org.jopendocument.dom.spreadsheet.Cell;
import org.jopendocument.dom.spreadsheet.Sheet;
import org.jopendocument.dom.spreadsheet.SpreadSheet;
public class MainParser {
static JFileChooser inputChooser;
static JFileChooser outputChooser;
public static final byte[] appBernardKey = { 0b00100010, 0b01001001 };
public static final byte[] bernardSignature = { 0b00011001, 0b01101101 };
public static final Charset UTF_8 = Charset.forName("UTF-8");
public static void main(String[] args) throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException, FileNotFoundException {
System.setOut(new PrintStream(new FileOutputStream("out.log")));
inputChooser = new JFileChooser();
inputChooser.addChoosableFileFilter(new FileNameExtensionFilter("Libre office calc sheet", "ods"));
while (true) {
int returnVal = inputChooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
File inputFile = inputChooser.getSelectedFile();
outputChooser = new JFileChooser();
outputChooser.addChoosableFileFilter(new FileNameExtensionFilter("Bernard file", "bernard"));
int returnVal2 = outputChooser.showSaveDialog(null);
if (returnVal2 == JFileChooser.APPROVE_OPTION) {
String outputName = outputChooser.getSelectedFile().getName();
outputName += !outputName.endsWith(".bernard") ? ".bernard" : "";
File saveDirectory = outputChooser.getCurrentDirectory();
String outQuizID;
do {
outQuizID = JOptionPane.showInputDialog(null, "What is the quiz's quizID ?", "QuizID ?",
JOptionPane.QUESTION_MESSAGE);
} while (!outQuizID.matches("[0-9]+"));
int quizID = Integer.parseInt(outQuizID);
String name = JOptionPane.showInputDialog(null, "What is the quiz's name ?", "Name ?",
JOptionPane.QUESTION_MESSAGE);
String author = JOptionPane.showInputDialog(null, "Who is the quiz's author ?", "Author ?",
JOptionPane.QUESTION_MESSAGE);
Sheet sheet;
try {
sheet = SpreadSheet.createFromFile(inputFile).getSheet(0);
int row = 0;
List<String> formsMarkers = new ArrayList<>();
while (true) {
Cell<SpreadSheet> cell = sheet.getCellAt(0, row);
System.out.println("\"" + cell.getTextValue() + "\"");
String tv = getCellContent(cell);
if (tv == null || tv.isEmpty())
break;
formsMarkers.add(cell.getTextValue());
row++;
}
String endTag = formsMarkers.get(formsMarkers.size() - 1);
formsMarkers.remove(formsMarkers.size() - 1);
List<Map<Integer,List<String>>> verben = new ArrayList<>();
int col = 1;
int formID;
int tempFormID;
while (!sheet.getCellAt(col, 0).getTextValue().isEmpty()) {
//New Item
row = 0;
formID = -1;
Map<Integer,List<String>> forms = new HashMap<>();
String cellValue;
while (!(cellValue = getCellContent(sheet.getCellAt(col,row))).equals(endTag)) {
if ((tempFormID = formsMarkers.indexOf(cellValue))!=-1){
formID = tempFormID;
forms.put(formID, new ArrayList<String>());
}else if (cellValue != null && !cellValue.isEmpty() && forms.get(formID) != null)
forms.get(formID).add(cellValue);
row++;
System.out.println("Future test : ("+col+";"+row+")");
}
verben.add(forms);
col++;
}
System.out.println("Final : ");
System.out.println(verben.toString());
// Save as quiz file
File saveFile = new File(saveDirectory, outputName);
if (saveFile.exists()) {
int returnVal3 = JOptionPane.showConfirmDialog(null,
"Do you really want to overwrite " + saveFile.getPath(), "Overwrite ?",
JOptionPane.YES_NO_OPTION);
if (returnVal3 != JOptionPane.YES_OPTION)
continue;
saveFile.delete();
}
if (saveFile.canWrite())
error(saveFile.getAbsolutePath() + " is unwritable !!!");
if (saveFile.isDirectory())
error(saveFile.getAbsolutePath() + " is a directory !!!");
if (!saveFile.exists()) {
saveFile.createNewFile();
}
DataOutputStream dos = new DataOutputStream(new FileOutputStream(saveFile));
// Writing Bernard signature
dos.write(bernardSignature);
// Writing Bernard key
dos.write(appBernardKey);
//QuizMetadata
dos.writeInt(name.getBytes().length);
dos.write(name.getBytes());
dos.writeInt(author.getBytes().length);
dos.write(author.getBytes());
dos.writeLong(0);
dos.writeInt(quizID);
dos.writeBoolean(false);
//QuizPayload
// Writing quizType key
dos.writeInt(quizID);
// Writing quiz
dos.writeInt(verben.size());
for (Map<Integer,List<String>> forms : verben) {
dos.writeInt(forms.size());
for (Map.Entry<Integer,List<String>> entry : forms.entrySet()) {
if (entry.getValue().size() <= 0) {
dos.writeInt(-1);//FormID
dos.writeInt(0);
System.err.println("This clause should not be executed");
} else {
dos.writeInt(entry.getKey());
dos.writeInt(entry.getValue().get(0).getBytes(UTF_8).length);
dos.write(entry.getValue().get(0).getBytes(UTF_8));
dos.writeInt(entry.getValue().size() - 1);
for (int i = 1; i < entry.getValue().size(); i++) {
dos.writeInt(entry.getValue().get(i).getBytes(UTF_8).length);
dos.write(entry.getValue().get(i).getBytes(UTF_8));
}
}
}
}
dos.close();
int resultVal4 = JOptionPane.showConfirmDialog(null,
"Fichier crit !!! Voulez vous parser un autre document ?", "Done",
JOptionPane.YES_NO_OPTION);
if (resultVal4 != JOptionPane.YES_OPTION)
break;
} catch (IOException e) {
error("Impossible de lire le fichier , " + e.getClass().getName());
}
} else {
System.out.println("Bye !");
return;
}
} else {
System.out.println("Bye !");
return;
}
}
}
public static String getCellContent(Cell<SpreadSheet> cell){
try{
//String toString = new String(((Element)cell.getElement().getContent(0)).getContent(0).getValue().getBytes(UTF_8),UTF_8);
//System.out.println(toString + Arrays.toString(toString.getBytes(UTF_8)));
return cell.getTextValue();//toString;
}catch(Exception e){
System.err.println("(Un)expected Exception : " + e.getClass().getName());
}
return null;
}
public static void error(String text) {
System.out.println(text);
JOptionPane.showMessageDialog(null, text, "Error !!!!!", JOptionPane.ERROR_MESSAGE);
System.exit(1);
}
}