MAJ
This commit is contained in:
parent
c3cd9e86c1
commit
87adb0f4d8
File diff suppressed because one or more lines are too long
2
bin/.gitignore
vendored
2
bin/.gitignore
vendored
@ -5,3 +5,5 @@
|
||||
/actions/
|
||||
/list/
|
||||
/resources/
|
||||
/evaluer/
|
||||
/outils/
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -8,16 +8,18 @@ import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.HashMap;
|
||||
|
||||
import nodeAC.nodeAC;
|
||||
import xml.node;
|
||||
|
||||
|
||||
|
||||
public class AnalyseHisto {
|
||||
|
||||
private HashMap<nodeAC,String> Correspondance = new HashMap<nodeAC,String>();
|
||||
private HashMap<nodeAC,Integer> CorrespondancesTotal = new HashMap<nodeAC,Integer>();
|
||||
private HashMap<nodeAC,String> CorrespondancesDate = new HashMap<nodeAC,String>();
|
||||
private HashMap<nodeAC,String> CopyDate = new HashMap<nodeAC,String>();
|
||||
private HashMap<nodeAC,Integer> NbrModificationDate = new HashMap<nodeAC,Integer>();
|
||||
private HashMap<nodeAC,String> CorrespondancesCopier = new HashMap<nodeAC,String>();
|
||||
private HashMap<node,String> Correspondance = new HashMap<node,String>();
|
||||
private HashMap<node,Integer> CorrespondancesTotal = new HashMap<node,Integer>();
|
||||
private HashMap<node,String> CorrespondancesDate = new HashMap<node,String>();
|
||||
private HashMap<node,String> CopyDate = new HashMap<node,String>();
|
||||
private HashMap<node,Integer> NbrModificationDate = new HashMap<node,Integer>();
|
||||
private HashMap<node,String> CorrespondancesCopier = new HashMap<node,String>();
|
||||
|
||||
public AnalyseHisto() {
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
package AnalyseCalc;
|
||||
|
||||
import nodeAC.nodeAC;
|
||||
import xml.node;
|
||||
|
||||
public class ObjejctGraphic {
|
||||
|
||||
public ObjejctGraphic(String nomFeuille, nodeAC nodeGraphic) {
|
||||
public ObjejctGraphic(String nomFeuille, node nodeGraphic) {
|
||||
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,7 @@ import javax.swing.ImageIcon;
|
||||
import javax.swing.JOptionPane;
|
||||
|
||||
import fenetres.create;
|
||||
import nodeAC.nodeAC;
|
||||
import xml.node;
|
||||
|
||||
public class actDeleteNode extends AbstractAction{
|
||||
|
||||
@ -29,11 +29,11 @@ public class actDeleteNode extends AbstractAction{
|
||||
int a = JOptionPane.showConfirmDialog(null,"Voulez-vous supprimer le nodeAC " + fenetres.create.getSelectNode().toString() + "?", "Sélectionner un choix", JOptionPane.YES_NO_OPTION);
|
||||
|
||||
if(a == JOptionPane.YES_NO_OPTION) {
|
||||
nodeAC nod = (nodeAC) fenetres.create.getSelectNode().getUserObject();
|
||||
if(!(nod.getNomElt().equals("setting")||nod.getNomElt().equals("csv")||nod.getNomElt().equals("import_moodle")||nod.getNomElt().equals("zip")
|
||||
||nod.getNomElt().equals("plagiarism")||nod.getNomElt().equals("text:similarity")||nod.getNomElt().equals("color") ||nod.getNomElt().equals("translation") )) {
|
||||
node nod = (node) fenetres.create.getSelectNode().getUserObject();
|
||||
if(!(nod.getNameNode().equals("setting")||nod.getNameNode().equals("csv")||nod.getNameNode().equals("import_moodle")||nod.getNameNode().equals("zip")
|
||||
||nod.getNameNode().equals("plagiarism")||nod.getNameNode().equals("text:similarity")||nod.getNameNode().equals("color") ||nod.getNameNode().equals("translation") )) {
|
||||
|
||||
nod.getParent().supprimeNodeEnfant(nod);
|
||||
nod.getParent().removeEnfant(nod);
|
||||
fenetres.create.constructionTree();
|
||||
|
||||
}else {
|
||||
|
@ -8,7 +8,7 @@ import javax.swing.ImageIcon;
|
||||
import javax.swing.JOptionPane;
|
||||
|
||||
import fenetres.create;
|
||||
import nodeAC.nodeAC;
|
||||
import xml.node;
|
||||
|
||||
public class actDownNode extends AbstractAction{
|
||||
|
||||
@ -27,9 +27,9 @@ public class actDownNode extends AbstractAction{
|
||||
int a = JOptionPane.showConfirmDialog(null,"Voulez-vous descendre le nodeAC " + fenetres.create.getSelectNode().toString() + "?", "Sélectionner un choix", JOptionPane.YES_NO_OPTION);
|
||||
|
||||
if(a == JOptionPane.YES_NO_OPTION) {
|
||||
nodeAC nod = (nodeAC) fenetres.create.getSelectNode().getUserObject();
|
||||
if(!nod.chemin().contains("setting")) {
|
||||
nod.getParent().downNodeEnfant(nod);
|
||||
node nod = (node) fenetres.create.getSelectNode().getUserObject();
|
||||
if(!nod.getAllNameParents().contains("setting")) {
|
||||
nod.moveDown();
|
||||
fenetres.create.constructionTree();
|
||||
}else {
|
||||
JOptionPane.showMessageDialog(null,"Vous ne devez pas déplacer ce nodeAC !", "Oh non!!!", JOptionPane.INFORMATION_MESSAGE);
|
||||
|
@ -9,7 +9,8 @@ import javax.swing.JOptionPane;
|
||||
import javax.swing.tree.DefaultMutableTreeNode;
|
||||
|
||||
import fenetres.create;
|
||||
import nodeAC.nodeAC;
|
||||
import xml.node;
|
||||
|
||||
|
||||
public class actUpNode extends AbstractAction{
|
||||
|
||||
@ -27,15 +28,15 @@ public class actUpNode extends AbstractAction{
|
||||
if(fenetres.create.getTree().getSelectionPath()!=null) {
|
||||
DefaultMutableTreeNode selectNode = (DefaultMutableTreeNode) fenetres.create.getTree().getSelectionPath().getLastPathComponent();
|
||||
|
||||
int a = JOptionPane.showConfirmDialog(null,"Voulez-vous monter le nodeAC " + selectNode.toString() + "?", "Sélectionner un choix", JOptionPane.YES_NO_OPTION);
|
||||
int a = JOptionPane.showConfirmDialog(null,"Voulez-vous monter le node " + selectNode.toString() + "?", "Sélectionner un choix", JOptionPane.YES_NO_OPTION);
|
||||
|
||||
if(a == JOptionPane.YES_NO_OPTION) {
|
||||
nodeAC nod = (nodeAC) selectNode.getUserObject();
|
||||
if(!nod.chemin().contains("setting")) {
|
||||
nod.getParent().upNodeEnfant(nod);
|
||||
node nod = (node) selectNode.getUserObject();
|
||||
if(!nod.getAllNameParents().contains("setting")) {
|
||||
nod.moveUp();
|
||||
fenetres.create.constructionTree();
|
||||
}else {
|
||||
JOptionPane.showMessageDialog(null,"Vous ne devez pas déplacer ce nodeAC !", "Oh non!!!", JOptionPane.INFORMATION_MESSAGE);
|
||||
JOptionPane.showMessageDialog(null,"Vous ne devez pas déplacer ce node !", "Oh non!!!", JOptionPane.INFORMATION_MESSAGE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
299
src/evaluer/evaluerLesFichiersEtudiants.java
Normal file
299
src/evaluer/evaluerLesFichiersEtudiants.java
Normal file
@ -0,0 +1,299 @@
|
||||
package evaluer;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.text.ParseException;
|
||||
|
||||
import javax.swing.JEditorPane;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
import calc.commandes;
|
||||
import calcul.calculIntervalleBaremeABCDE;
|
||||
import fenetres.baliseStyle;
|
||||
import net.lingala.zip4j.exception.ZipException;
|
||||
import xml.node;
|
||||
|
||||
public class evaluerLesFichiersEtudiants implements Runnable{
|
||||
|
||||
private final JEditorPane txt;
|
||||
|
||||
|
||||
public evaluerLesFichiersEtudiants(JEditorPane txt) {
|
||||
|
||||
commandes.analyse=true;
|
||||
this.txt=txt;
|
||||
this.txt.setContentType("text/plain");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public synchronized void run() {
|
||||
|
||||
|
||||
commandes.message = new StringBuilder();
|
||||
commandes.message.append(baliseStyle.balise());
|
||||
commandes.message.append("<hr><h1>*** LES FICHIERS DES ETUDIANTS ANALYSÉS ET ÉVALUÉS ***</h1><hr>");
|
||||
commandes.message.append("<p>Dossier contenant les fichiers des étudiants.</p>");
|
||||
commandes.message.append("<p><b>" + commandes.path + "</b></p>");
|
||||
commandes.message.append("<br>");
|
||||
|
||||
if(commandes.analyse_baremeABC) {
|
||||
commandes.message.append("<p>Barème alphabétique ABCDE.<p>");
|
||||
commandes.message.append("<p>progression=" + String.valueOf(commandes.analyse_progression) + "<p>");
|
||||
calculIntervalleBaremeABCDE C = new calculIntervalleBaremeABCDE(commandes.analyse_progression);
|
||||
commandes.message.append("<p>" + C.getMessageLigne() +"</p>");
|
||||
commandes.message.append("<br>");
|
||||
}
|
||||
|
||||
if(commandes.zipfeedback) {
|
||||
commandes.message.append("<p>Les feedbacks sont dans une archive ou des archives ZIP dans le dossier contenant les fichiers des étudiants.</p>");
|
||||
commandes.message.append("<br>");
|
||||
}
|
||||
|
||||
if(commandes.ecritNoteCSV) {
|
||||
commandes.message.append("<p>Un fichiers CSV contenant les notes a été créé dans le dossier contenant les fichiers des étudiants.</p>");
|
||||
commandes.message.append("<br>");
|
||||
}
|
||||
|
||||
commandes.message.append("<hr>");
|
||||
|
||||
Run a = null;
|
||||
try {
|
||||
a = new Run(commandes.path,commandes.Profil, commandes.fichierStudentMoodle);
|
||||
} catch (ParserConfigurationException e2) {
|
||||
e2.printStackTrace();
|
||||
} catch (SAXException e2) {
|
||||
e2.printStackTrace();
|
||||
} catch (IOException e2) {
|
||||
e2.printStackTrace();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//*****************************************
|
||||
//** Nombre de fichier writer à analyser **
|
||||
//*****************************************
|
||||
int nbFichierWriter = a.getLectDossiers().getEC().getListeContentWriter().size();
|
||||
String NbFichiers = String.valueOf(nbFichierWriter);
|
||||
commandes.analyse_Nbre_Fichier_Student = nbFichierWriter;
|
||||
commandes.message.append("<br>");
|
||||
commandes.message.append("<p>Nombre de fichier à analyser et évaluer : " + NbFichiers + "</p>");
|
||||
commandes.message.append("<br>");
|
||||
commandes.message.append("<hr>");
|
||||
|
||||
//***************************************
|
||||
//** -verif ou -use file.xml -verifcsv **
|
||||
//***************************************
|
||||
node verif = new node();
|
||||
if(commandes.verifHisto || commandes.verifHisto2) {
|
||||
node verification = new node();
|
||||
verification.setNomElt("verification");
|
||||
verification.getAttributs().put("nombre_fichier", String.valueOf(a.getLectDossiers().getEC().getListeFichierodt().size()));
|
||||
for(int i = 0 ; i < nbFichierWriter ; i++) {
|
||||
txt.setText("\nChargement de l'historique du fichier n° " + String.valueOf(i) +" par comparaison avec les "+ String.valueOf(nbFichierWriter-1) + " autres fichiers");
|
||||
node nod = Run.XMLContent(a.getLectDossiers().getEC().getListeContentWriter().get(i));
|
||||
node nodStudent = meptl.LectureFichierEtudiantPourVerification(nod,a,i);
|
||||
verification.getNodes().add(nodStudent);
|
||||
}
|
||||
//a.ecritureNodeEnXML(verification, "VerificationHistorique","",false); //écriture du node de l'étudiant
|
||||
txt.setText("\nRecherche des concordances temporelles et d'auteur dans l'historique des modifications des " + nbFichierWriter + " fichiers."
|
||||
+ "\nPatientez, cela peut prendre quelques secondes ou minutes.");
|
||||
|
||||
//********************************
|
||||
//** Ecriture du node verif.xml **
|
||||
//********************************
|
||||
try {
|
||||
verif = VerificationHistorique.verificationHistorique(verification, a,txt);
|
||||
Run.ecritureNodeEnXML(verif, "Verif",commandes.path, Run.TypeFile.Verif );
|
||||
} catch (IOException | ParseException | CloneNotSupportedException e) {
|
||||
e.printStackTrace();
|
||||
} //écriture du node de vérification
|
||||
commandes.message.append("<br>");
|
||||
commandes.message.append("<hr><h1> *** Ecriture du fichier Verif.xml dans le dossier d'analyse *** </h1><hr>");
|
||||
commandes.message.append("<br>");
|
||||
if(!commandes.analyse) {
|
||||
//** bye bye analyseWriter
|
||||
commandes.clotureApplication();
|
||||
}
|
||||
}
|
||||
|
||||
//*********************************************************
|
||||
//** Node contenant l'ensemble des analyses des étudiants **
|
||||
//*********************************************************
|
||||
node ensembleanalyse = new node();
|
||||
ensembleanalyse.setNomElt("analyses");
|
||||
|
||||
//*****************************************************
|
||||
//** Parcours l'ensemble des fichiers des étudiants ***
|
||||
//*****************************************************
|
||||
for(int i = 0 ; i < nbFichierWriter ; i++) {
|
||||
String texteAfficher = "\nEvaluation du fichier n° " + String.valueOf(i+1) + "/" + String.valueOf(nbFichierWriter) + " fichier(s)";
|
||||
txt.setText(texteAfficher);
|
||||
|
||||
//index de l'étudiant
|
||||
commandes.analyse_index_Fichier_Student = i;
|
||||
|
||||
//** Ne prends pas en compte le dossier destination créé par la commande -dest
|
||||
//** Si pas d'analyse alors le nom doit contenir le caractère $ dans le nom du dossier.
|
||||
if(commandes.fourniDossierDestination) if(a.getLectDossiers().getEC().getListeNomDossier().get(i).equals(commandes.pathDestination)) continue;
|
||||
|
||||
//***********************************************************
|
||||
//** Lecture et transformation en node du fichier étudiant **
|
||||
//***********************************************************
|
||||
node nod = Run.XMLContent(a.getLectDossiers().getEC().getListeContentWriter().get(i));
|
||||
node nodStudent=null;
|
||||
try {
|
||||
|
||||
|
||||
//Création du node de l'étudiant.
|
||||
//Permet aussi d'avoir l'historique des modifications du fichier de l'étudiant.
|
||||
nodStudent = meptl.LectureFichierEtudiantSousFormeDeNode(nod,a,i);
|
||||
|
||||
//Supprime l'historique des modifications
|
||||
nodStudent.supprimeTousLesNodesEnfantWithThisName("text:tracked-changes");
|
||||
nodStudent.supprimeTousLesNodesEnfantWithThisName("text:change");
|
||||
nodStudent.supprimeTousLesNodesEnfantWithThisName("text:change-start");
|
||||
nodStudent.supprimeTousLesNodesEnfantWithThisName("text:change-end");
|
||||
nodStudent.supprimeTousLesNodesEnfantWithThisName("text:deletion");
|
||||
nodStudent.supprimeTousLesNodesEnfantWithThisName("text:bookmark-start");
|
||||
nodStudent.supprimeTousLesNodesEnfantWithThisName("text:bookmark-end");
|
||||
|
||||
|
||||
} catch (IOException e1) {
|
||||
e1.printStackTrace();
|
||||
}
|
||||
|
||||
//Ecriture du node fichier de l'étudiant
|
||||
// try {
|
||||
// Run.ecritureNodeEnXML(nodStudent, a.getLectDossiers().getEC().getListeNomDossier().get(i),commandes.path,"Sujet");
|
||||
// } catch (IOException e1) {
|
||||
// // TODO Auto-generated catch block
|
||||
// e1.printStackTrace();
|
||||
// }
|
||||
|
||||
|
||||
//**********************************
|
||||
//** Analyse des fichiers student **
|
||||
//**********************************
|
||||
if(commandes.analyse||commandes.ecritNodeAnalyse) {
|
||||
|
||||
// Run.ecritureNodeEnXML(nodStudent, "fichier student","",false,""); //écriture du node nodStudent de l'étudiant
|
||||
node ana = analyseFichier.analyse(nodStudent, commandes.sujet, i, a, txt,texteAfficher);
|
||||
// try {
|
||||
// Run.ecritureNodeEnXML(ana, "analyse", commandes.path, Run.TypeFile.Verif);
|
||||
// } catch (IOException e1) {
|
||||
// // TODO Auto-generated catch block
|
||||
// e1.printStackTrace();
|
||||
// }
|
||||
//**************************************************
|
||||
//** Ecriture des fichiers d'analyse des students **
|
||||
//**************************************************
|
||||
if(commandes.ecritNodeAnalyse) {
|
||||
try {
|
||||
Run.ecritureNodeEnXML(ana, "nodana"+ana.retourneFirstEnfantsByName("ouverture").getAttributs().get("dossier"),commandes.path,Run.TypeFile.Analyse);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
//****************************
|
||||
//** Création des feedbacks **
|
||||
//****************************
|
||||
if(!commandes.sansFeeback&&!commandes.ecritNodeAnalyse) {
|
||||
if(!commandes.zipfeedback) {
|
||||
//feedback(ana, verif); //classique directement dans le répertoire
|
||||
try {
|
||||
feedbacks.feedback(ana,verif, false,false);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if(commandes.zipfeedback) { // Dans une archive pour Moodle
|
||||
try {
|
||||
// a.AddStreamToZip(feedbacks.feedback(ana, verif, true,false), meptl.retourneLeNomDuFeedback(a.getLectDossiers().getEC().getListeNomFichierFeedBack().get(i),ana, verif),commandes.analyse_size,commandes.analyse_nameZip);
|
||||
// Modification imposé par Moodle 4
|
||||
if(commandes.fichierStudentMoodle) {
|
||||
a.AddStreamToZip(feedbacks.feedback(ana, verif, true,false), meptl.retourneLeNomDuFeedbackMoodle4(a.getLectDossiers().getEC().getListeFichierodt().get(i),ana, verif),commandes.analyse_size,commandes.analyse_nameZip);
|
||||
}else {
|
||||
String nomFichiermoodle4 = a.getLectDossiers().getEC().getListeNomFichierFeedBack().get(i)+"_"+a.getLectDossiers().getEC().getListeFichierodt().get(i);
|
||||
a.AddStreamToZip(feedbacks.feedback(ana, verif, true,false), meptl.retourneLeNomDuFeedbackMoodle4(nomFichiermoodle4,ana, verif),commandes.analyse_size,commandes.analyse_nameZip);
|
||||
}
|
||||
|
||||
} catch (ZipException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} catch (ParseException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//********************************************************************************
|
||||
//** Ajoute au node ensembleanalyse lorsque -csv file.csv ou -verifcsv file.scv **
|
||||
//********************************************************************************
|
||||
if(commandes.ecritNoteCSV) ensembleanalyse.addNode(ana);
|
||||
|
||||
//*********************************************************
|
||||
//** Message dans la console sur l'analyse de l'étudiant **
|
||||
//*********************************************************
|
||||
commandes.message.append(meptl.messageSystem(ana).toString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//*****************************************************
|
||||
//** Exportation au format CSV si -csv ou -verifcsv **
|
||||
//*****************************************************
|
||||
if(commandes.ecritNoteCSV && !commandes.fourniCSV) {
|
||||
if(!commandes.verifHisto2)
|
||||
try {
|
||||
meptl.ecritureCSV(ensembleanalyse);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if(commandes.verifHisto2)
|
||||
try {
|
||||
meptl.ecritureCSV(ensembleanalyse,verif,a,commandes.sujet.retourneFirstEnfantsByName("setting"));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
//***********************************************************************
|
||||
//** Exportation au format CSV si -csv file.csv ou -verifcsv file.csv **
|
||||
//***********************************************************************
|
||||
if(commandes.ecritNoteCSV && commandes.fourniCSV) {
|
||||
try {
|
||||
meptl.ecritureCSV(ensembleanalyse,verif,a,commandes.nodeCSV, commandes.sujet.retourneFirstEnfantsByName("setting"));
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
//a.ecritureNodeEnXML(ensembleanalyse, "ensembleAnalyse"); //écriture du node de l'étudiant
|
||||
}
|
||||
|
||||
//**************************************
|
||||
//** Mise à jour du fichier d'analyse **
|
||||
//**************************************
|
||||
if(commandes.MAJFichierAnalyse||commandes.MAJnameAnalysisFile) {
|
||||
try {
|
||||
verificationFichierAnalyse_node_commandesSujet.MiseAJourFichierAnalyse();
|
||||
} catch (CloneNotSupportedException | IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
verificationFichierAnalyse_node_commandesSujet.messagMiseAJourFichierAnalyseAprèsAnalyse();
|
||||
}
|
||||
|
||||
txt.setContentType("text/html");
|
||||
txt.setText(commandes.message.toString());
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
@ -819,8 +819,8 @@ public class evaluate extends JFrame {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if(commandes.fichierAnalyseValide) {
|
||||
// Thread t2 = new Thread(new evaluerLesFichiersEtudiants(txtpnmessages));
|
||||
// t2.start();
|
||||
Thread t2 = new Thread(new evaluerLesFichiersEtudiants(txtpnmessages));
|
||||
t2.start();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -3,7 +3,8 @@ package list;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import nodeAC.nodeAC;
|
||||
import xml.node;
|
||||
|
||||
|
||||
public class listeNodeFormatageDirectDeWriter {
|
||||
/**
|
||||
@ -12,12 +13,12 @@ public class listeNodeFormatageDirectDeWriter {
|
||||
* @param nod
|
||||
* @return
|
||||
*/
|
||||
public static boolean isFormatageDirect(nodeAC nod) {
|
||||
public static boolean isFormatageDirect(node nod) {
|
||||
|
||||
//** Si le nom du style est P1, P2, ...Pxx ou T1, T2, ..., Txx alors retourn true.
|
||||
if(nod.chemin().contains("style:paragraph")) {
|
||||
if(nod.getAllNameParents().contains("style:paragraph")) {
|
||||
|
||||
nodeAC nodStyleParent = nod.retourneParentAyantLAttribut("style:name");
|
||||
node nodStyleParent = nod.retourneParentAyantLAttribut("style:name");
|
||||
|
||||
String nomDuStle = nodStyleParent.getAttributs().get("style:name");
|
||||
Pattern p = Pattern.compile("^P[0-9]{1,}$|^T[0-9]{1,}$");
|
||||
|
@ -1,12 +1,12 @@
|
||||
package list;
|
||||
|
||||
import nodeAC.nodeAC;
|
||||
import xml.node;
|
||||
|
||||
public class listeRechercheParAnchorPageNumber {
|
||||
|
||||
|
||||
public static boolean isRechercheParAnchorPageNumber(nodeAC nod) {
|
||||
if(nod.getNomElt().equals("draw:frame")) return true;
|
||||
public static boolean isRechercheParAnchorPageNumber(node nod) {
|
||||
if(nod.getNameNode().equals("draw:frame")) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -1,21 +0,0 @@
|
||||
package nodeAC;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
public class Attributs extends LinkedHashMap<String,String>{
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public String put(String key, String value) {
|
||||
if(key!=null && value!=null) {
|
||||
return super.put(key, value);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,560 +0,0 @@
|
||||
package nodeAC;
|
||||
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Set;
|
||||
|
||||
import xml.node;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public class Ecriture {
|
||||
|
||||
|
||||
public enum LocationFile {
|
||||
DansDossier,
|
||||
UniquementFichier,
|
||||
}
|
||||
|
||||
public enum typeFichier {
|
||||
fichier_analyse,
|
||||
verification_etudiant,
|
||||
fichier_etudiant,
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Ecriture de node au format XML dans un StringBuilder.<br>
|
||||
*
|
||||
* @param nod Le node à écire.
|
||||
* @param indent Le nombre d'indentation.
|
||||
* @return Un StringBuilder contenant le format XML du node.
|
||||
* @throws IOException Exception
|
||||
*/
|
||||
public static StringBuilder ecritureNodeWithIndent(node nod,Integer indent) {
|
||||
if(nod!=null) {
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
String tab = "";
|
||||
String tab1 = "\t";
|
||||
for(int i = 0 ; i < indent ; i++) {
|
||||
tab = tab + tab1;
|
||||
}
|
||||
|
||||
sb.append("\r\r"+tab + "<" + nod.getNameNode() );
|
||||
Set<String> keys = nod.getAttributs().keySet();
|
||||
for (String key : keys) {
|
||||
sb.append(" " + key + "=\"" + nod.getAttributs().get(key)+"\"");
|
||||
}
|
||||
sb.append(">");
|
||||
|
||||
int indexContenu = 0 ;
|
||||
if(nod.getContenu().size()>indexContenu) {
|
||||
sb.append(nod.getContenu().get(indexContenu));
|
||||
indexContenu++;
|
||||
}
|
||||
|
||||
|
||||
if(nod.getEnfants().size()>0) {
|
||||
indent++;
|
||||
|
||||
for(int i = 0 ; i < nod.getEnfants().size(); i++) {
|
||||
sb.append(ecritureNodeWithIndent(nod.getEnfants().get(i),indent));
|
||||
|
||||
if(nod.getContenu().size()>indexContenu) {
|
||||
sb.append(nod.getContenu().get(indexContenu));
|
||||
indexContenu++;
|
||||
}
|
||||
}
|
||||
|
||||
sb.append("\r\r" + tab +"</" + nod.getEnfants() + ">");
|
||||
|
||||
}else {
|
||||
sb.append("</" + nod.getEnfants() + ">");
|
||||
}
|
||||
|
||||
return sb;
|
||||
}
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Ecriture de node au format XML dans un StringBuilder.<br>
|
||||
*
|
||||
* @param nod Le node à écire.
|
||||
* @param indent Le nombre d'indentation.
|
||||
* @return Un StringBuilder contenant le format XML du node.
|
||||
* @throws IOException Exception
|
||||
*/
|
||||
public static StringBuilder ecritureNode(nodeAC nod) {
|
||||
if(nod!=null) {
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
|
||||
|
||||
sb.append("\r\r<" + nod.getNomElt() );
|
||||
Set<String> keys = nod.getAttributs().keySet();
|
||||
for (String key : keys) {
|
||||
sb.append(" " + key + "=\"" + nod.getAttributs().get(key)+"\"");
|
||||
}
|
||||
sb.append(">");
|
||||
|
||||
int indexContenu = 0 ;
|
||||
if(nod.getContenu().size()>indexContenu) {
|
||||
sb.append(nod.getContenu().get(indexContenu));
|
||||
indexContenu++;
|
||||
}
|
||||
|
||||
|
||||
if(nod.getNodes().size()>0) {
|
||||
|
||||
for(int i = 0 ; i < nod.getNodes().size(); i++) {
|
||||
sb.append(ecritureNode(nod.getNodes().get(i)));
|
||||
|
||||
if(nod.getContenu().size()>indexContenu) {
|
||||
sb.append(nod.getContenu().get(indexContenu));
|
||||
indexContenu++;
|
||||
}
|
||||
}
|
||||
|
||||
sb.append("\r\r</" + nod.getNomElt() + ">");
|
||||
|
||||
}else {
|
||||
sb.append("</" + nod.getNomElt() + ">");
|
||||
}
|
||||
|
||||
return sb;
|
||||
}
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Ecriture du commentaire du fichier au format XML qui se place au début.<br>
|
||||
* @return Le commentaire.
|
||||
*/
|
||||
static public String ecritureCommentaireFichierAnalyse() {
|
||||
|
||||
|
||||
|
||||
// fichier.write("<!-- Pablo Rodriguez mai 2020 symbôles : ‽ ↕ ↑ ¦ → ⌂ -->\r\r");
|
||||
// fichier.write("<!-- ‽5 doit se placer à la fin correspond à 5 points -->\r\r");
|
||||
// fichier.write("<!-- ⌂ ne prend pas en compte les $ -->\r\r");
|
||||
// fichier.write("<!-- ¬ ne prend pas en compte les espaces -->\r\r");
|
||||
// fichier.write("<!-- ⌂¬ ou ¬⌂ ne prend pas en compte les dollars et les espaces -->\r\r");
|
||||
// fichier.write("<!-- ¦ OU sans nettoyer le texte -->\r\r");
|
||||
// fichier.write("<!-- ↕ OU avec nettoyage du texte (caractères spéciaux et CASE) -->\r\r");
|
||||
// fichier.write("<!-- ↑ OU avec nettoyage numérique (1 à 9 et la CASE) -->\r\r");
|
||||
// fichier.write("<!-- → étendu entre deux bornes numérique avec ou sans unité -->\r\r");
|
||||
|
||||
|
||||
return "<!-- Pour adapter ce fichier aux consignes de votre sujet, vous devez apporter des modifications à ce fichier.\r\n"
|
||||
+ "\r\n"
|
||||
+ "Voir la documentation : forge de chapril de l'application analyseCalc.\r\n"
|
||||
+"https://forge.chapril.org/pablo/analyseCalc-->\r\r";
|
||||
}
|
||||
|
||||
/**
|
||||
* Ecriture commentaire du fichier de vérification.
|
||||
* @return
|
||||
*/
|
||||
static private String ecritureCommentaireVerificationHistorique() {
|
||||
return "<!-- Fichier permettant la vérification des historiques entre les fichiers -->\r\n"+
|
||||
"<!-- -->";
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Ecriture d'un node dans un fichier au format XML.<br>
|
||||
*
|
||||
* @param nod Le node à écrire dans un fichier.
|
||||
* @param filename Le nom du fichier.
|
||||
* @param pathDestination Le répertoire de destination qui sera inclus dans le répertoire courant de l'application.
|
||||
* @param fourniDestination Le répertoire courant de l'application.
|
||||
* @throws IOException Exception Input Output
|
||||
*/
|
||||
static public void ecritureNodeEnXML(node nod, String filename, String pathDestination, Ecriture.typeFichier Type) throws IOException {
|
||||
|
||||
if(nod==null) {
|
||||
System.out.println("Le node à écrire est null.");
|
||||
}
|
||||
|
||||
if(filename.contains(".xml")) filename = filename.substring(0,filename.lastIndexOf(".xml"));
|
||||
|
||||
Path outputFilePath = Paths.get(pathDestination +"/"+ filename + ".xml");
|
||||
|
||||
BufferedWriter fichier = Files.newBufferedWriter(outputFilePath, StandardCharsets.UTF_8);
|
||||
|
||||
if(Type == Ecriture.typeFichier.fichier_analyse) {
|
||||
// écriture de l'aide au début du fichier
|
||||
fichier.write(ecritureCommentaireFichierAnalyse());
|
||||
|
||||
//Suppression de l'historique
|
||||
node n1 = nod.retourneFirstEnfant("historique");
|
||||
if(n1!=null) nod.getEnfants().remove(n1);
|
||||
}
|
||||
|
||||
if(Type == Ecriture.typeFichier.verification_etudiant) {
|
||||
// écriture de l'aide au début du fichier
|
||||
fichier.write(ecritureCommentaireVerificationHistorique());
|
||||
}
|
||||
|
||||
|
||||
fichier.write(ecritureNodeWithIndent(nod, 0).toString());
|
||||
|
||||
|
||||
|
||||
|
||||
fichier.close();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Ce node permet la configuration personnalisé de l'application.<br>
|
||||
* Ajoute le node setting avec les différentes valeurs par défaut.<br>
|
||||
*
|
||||
* @param sujet Le node du sujet.
|
||||
* @return Le node du sujet avec le node setting ajouté.
|
||||
*/
|
||||
public static nodeAC addSetting(nodeAC sujet) {
|
||||
//nodeAC setting
|
||||
nodeAC setting = new nodeAC();
|
||||
setting.setNomElt("settings");
|
||||
setting.getAttributs().put("culture","FR");
|
||||
|
||||
|
||||
//nodeAC csv
|
||||
nodeAC csv = new nodeAC();
|
||||
csv.setNomElt("csv");
|
||||
csv.getAttributs().put("encoding", "UTF-8");
|
||||
csv.getAttributs().put("separator", ";");
|
||||
csv.setContenu("choose the encoding from this list : UTF-8 US-ASCII ISO-8859-1 UTF-16BE UTF-16LE UTF-16");
|
||||
csv.setClose(true);
|
||||
|
||||
//nodeAC export du csv
|
||||
nodeAC export = new nodeAC();
|
||||
export.setNomElt("import_moodle");
|
||||
export.getAttributs().put("email", "adresse");
|
||||
export.getAttributs().put("id", "identification");
|
||||
export.getAttributs().put("firstname", "prenom");
|
||||
export.getAttributs().put("name", "nom");
|
||||
export.setClose(true);
|
||||
|
||||
//nodeAC taille zip
|
||||
nodeAC zip = new nodeAC();
|
||||
zip.setNomElt("zip");
|
||||
zip.getAttributs().put("size", "48000000");
|
||||
zip.getAttributs().put("nameZip", "feedbackMoodle");
|
||||
zip.isClose();
|
||||
|
||||
//nodeAC verif
|
||||
nodeAC plagiarism = new nodeAC();
|
||||
plagiarism.setNomElt("plagiarism");
|
||||
plagiarism.getAttributs().put("number_match", "2");
|
||||
plagiarism.getAttributs().put("mini_number_modification", "-1");
|
||||
plagiarism.getAttributs().put("nombres_modifications_simultané_maxi", "100");
|
||||
plagiarism.setClose(true);
|
||||
|
||||
//construction nodeAC similitude
|
||||
nodeAC similarity = new nodeAC();
|
||||
similarity.setNomElt("text:similarity");
|
||||
similarity.getAttributs().put("tolerance_characters", "5");
|
||||
similarity.getAttributs().put("tolerance_text", "0.79");
|
||||
similarity.setClose(true);
|
||||
|
||||
//nodeAC color
|
||||
nodeAC color = new nodeAC();
|
||||
color.setNomElt("color");
|
||||
color.getAttributs().put("tolerance_rouge", "30");
|
||||
color.getAttributs().put("tolerance_vert", "30");
|
||||
color.getAttributs().put("tolerance_bleu", "30");
|
||||
color.setClose(true);
|
||||
|
||||
//construction du nodeAC setting
|
||||
csv.getNodes().add(export);
|
||||
setting.getNodes().add(csv);
|
||||
setting.getNodes().add(zip);
|
||||
setting.getNodes().add(plagiarism);
|
||||
setting.getNodes().add(similarity);
|
||||
setting.getNodes().add(color);
|
||||
|
||||
//ajoute la nodeAC translation
|
||||
setting.getNodes().add(translation());
|
||||
|
||||
|
||||
// ajoute le nodeAC setting au nodeAC sujet
|
||||
sujet.getNodes().add(setting);
|
||||
|
||||
//fermeture du nodeAC
|
||||
setting.setClose(true);
|
||||
|
||||
return sujet;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retourne le node translation.<br>
|
||||
* @return Le node translation.
|
||||
*/
|
||||
public static nodeAC translation() {
|
||||
nodeAC translation = new nodeAC();
|
||||
translation.setNomElt("translation");
|
||||
translation.getAttributs().put("class", "tooltip1");
|
||||
translation.getAttributs().put("classtext", "tooltiptext1");
|
||||
|
||||
//les champs
|
||||
translation.getNodes().add(nodeTranslation("text:initial-creator..name","La valeur du champ premier auteur","", "#111166","",false));
|
||||
translation.getNodes().add(nodeTranslation("dc:subject..texte","Valeur de la méta donnée -!b!-Sujet-!/b!-","Menu Fichier/Propriétés-!br!-Onglet Description","#111166","",false));
|
||||
translation.getNodes().add(nodeTranslation("dc:title..texte","Valeur de la méta donnée -!b!-Titre-!/b!-","Menu Fichier/Propriétés-!br!-Onglet Description", "#111166","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:title..name","Valeur de la méta donnée -!b!-Titre-!/b!-","Menu Fichier/Propriétés-!br!-Onglet Description", "#111166","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:editing-cycles..name","Valeur du champ révision","", "#111166","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:creator..name","Auteur des modifications","", "#111166","",false));
|
||||
translation.getNodes().add(nodeTranslation("meta:initial-creator..texte","Premier auteur du fichier","", "#111166","",false));
|
||||
translation.getNodes().add(nodeTranslation("meta:user-defined..Auteur2","La méta donnée -!b!-Auteur2-!/b!-","Menu Fichier/Propriétés-!br!-Onglet Propriétés personnalisées-!br!-Cliquez sur le bouton "Ajouter une propriété" pour ajouter une méta données.-!br!--!br!--!b!--!u!-ATTENTION-!/u!--!/b!-: Vous devez tapez comme nom de la méta donnée -!b!-Auteur2-!b!--!br!-Exactement ces caractères, ne tapez pas d'espace après le dernier caractère.-!br!-Sinon vous aurez une valeur -!b!-null-!/b!-.", "#111166","",true));
|
||||
translation.getNodes().add(nodeTranslation("meta:user-defined..Date..du..contrôle","La méta donnée -!b!-Date du contrôle-!/b!-","Menu Fichier/Propriétés-!br!-Onglet Propriétés personnalisées-!br!-Clique sur le bouton "Ajouter une propriété" pour ajouter une méta données.-!br!--!br!--!b!--!u!-ATTENTION-!/u!--!/b!-: Vous devez tapez comme nom de la méta donnée -!b!-Date du contrôle-!b!--!br!-Exactement ces caractères, ne tapez pas d'espace après le dernier caractère.-!br!-Sinon vous aurez une valeur -!b!-null-!/b!-.", "#111166","",true));
|
||||
translation.getNodes().add(nodeTranslation("meta:user-defined..Département","La méta donnée -!b!-Département-!/b!-","Menu Fichier/Propriétés-!br!-Onglet Propriétés personnalisées-!br!-Cliquez sur le bouton "Ajouter une propriété" pour ajouter une méta données.-!br!--!br!--!b!--!u!-ATTENTION-!/u!--!/b!-: Vous devez tapez comme nom de la méta donnée -!b!-Département-!b!--!br!-Exactement ces caractères, ne tapez pas d'espace après le dernier caractère.-!br!-Sinon vous aurez une valeur -!b!-null-!/b!-.", "#111166","",true));
|
||||
translation.getNodes().add(nodeTranslation("meta:user-defined..Groupe","La méta donnée -!b!-Groupe-!/b!-","Menu Fichier/Propriétés-!br!-Onglet Propriétés personnalisées-!br!-Clique sur le bouton "Ajouter une propriété" pour ajouter une méta données.-!br!--!br!--!b!--!u!-ATTENTION-!/u!--!/b!-: Vous devez tapez comme nom de la méta donnée -!b!-Groupe-!b!--!br!-Exactement ces caractères, ne tapez pas d'espace après le dernier caractère.-!br!-Sinon vous aurez une valeur -!b!-null-!/b!-.", "#111166","",true));
|
||||
translation.getNodes().add(nodeTranslation("text:user-defined..text:name","La méta donnée personnalisée","Menu Fichier/Propriétés-!br!-Onglet Propriétés personnalisées-!br!-Clique sur le bouton "Ajouter une propriété" pour ajouter une méta données.", "#111166","",true));
|
||||
translation.getNodes().add(nodeTranslation("text:initial-creator..name","La valeur du champ premier auteur","", "#111166","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:creation-date..Nom..du..nodeAC","Champ date de création","", "#111166","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:creator..Nom..du..nodeAC","Champ auteur","", "#111166","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:date..Nom..du..nodeAC","Champ date de modification","", "#111166","",false));
|
||||
translation.getNodes().add(nodeTranslation("dc:subject..Contenu..textuel","Champ sujet","", "#111166","",false));
|
||||
translation.getNodes().add(nodeTranslation("dc:title..Contenu..textuel","Champ titre","", "#111166","",false));
|
||||
translation.getNodes().add(nodeTranslation("meta:user-defined..meta:name","Propriété personnalisée","", "#111166","",false));
|
||||
|
||||
|
||||
|
||||
|
||||
//style de paragraphe
|
||||
translation.getNodes().add(nodeTranslation("style:style..style:master-page-name","Enchaînement insère saut de page","Le style de paragraphe doit insérer un saut de page.", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:style..style:next-style-name","Style du paragraphe suivant","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:border-bottom","Bordure basse du paragraphe","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:border-top","Bordure haute du paragraphe","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:border-left","Bordure gauche du paragraphe","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:border-right","Bordure droite du paragraphe","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:keep-with-next","Conserver avec le paragraphe suivant","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:keep-together","Ne pas scinder le paragraphe","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:margin-top","Espacement au dessus du paragraphe","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:margin-bottom","Espacement en dessous du paragraphe","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:orphans","Nombre de ligne d'orpheline","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:widows","Nombre de ligne de veuve","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:text-properties..style:text-underline-color","Couleur de soulignement du paragraphe","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:text-properties..style:text-underline-style","Style du soulignement du paragraphe","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:text-properties..style:text-underline-width","Epaisseur du trait de soulignement du paragraphe","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:text-properties..style:font-name","Police de caractère du paragraphe","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:text-properties..fo:font-size","Taille de la police de caractère du paragraphe","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:text-properties..style:font-style-name","Style de la police de caractère du paragraphe","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:text-properties..fo:text-shadow","Effet de caractère ombré du paragraphe","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:text-align","Alignement du paragraphe","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:text-properties..fo:font-variant","Effet de caractère petite majuscule","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:line-height","Interligne","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:text-indent","Retrait de première ligne","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:style..style:parent-style-name","Hérite du style","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:text-indent","Retrait de première ligne","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:padding-top","Remplissage (espacement) en haut","Les padding sont des marges intérieures.", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:padding-left","Remplissage (espacement) à gauche","Les padding sont des marges intérieures.", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:padding-right","Remplissage (espacement) à droite","Les padding sont des marges intérieures.", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:padding-bottom","Remplissage (espacement) en bas","Les padding sont des marges intérieures.", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:text-properties..style:text-underline-type","Style du trait de soulignage","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..style:tab-stop-distance","Distance du stop de la tabulation","", "#118811","https://moodle.univ-artois.fr/cours/",false));
|
||||
translation.getNodes().add(nodeTranslation("style:text-properties..fo:font-weight","Style texte GRAS","", "#000000","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:text-properties..fo:font-style","Style texte italic","", "#000000","",false));
|
||||
|
||||
//style de page
|
||||
translation.getNodes().add(nodeTranslation("style:master-page..style:name","Nom du style de page","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:style..style:name","Nom du style de page","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:page-layout..style:page-usage","Mise en page de la page","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:page-layout-properties..fo:page-width","Largeur de la page","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:page-layout-properties..fo:page-height","Hauteur de la page","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:page-layout-properties..fo:margin-right","Marge à droite de la page","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:page-layout-properties..fo:border","Les 4 bordures de la page","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:page-layout-properties..fo:margin-left","Marge à gauche de la page","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:page-layout-properties..fo:margin-bottom","Marge en bas de la page","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:page-layout-properties..fo:margin-top","Marge en haut de la page","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:page-layout-properties..fo:margin-right","Marge à droite de la page","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:page-layout-properties..fo:padding","Remplissage (marges intéreures)","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:chapter..text:display","Champ chapitre","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:chapter..Contenu..textuel","Valeur du champ chapitre","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:header-footer-properties..fo:border-bottom","-!b!-Entête ou Pied de page-!/b!- : Bordure inférieure","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:header-footer-properties..fo:border-right","-!b!-Entête ou Pied de page-!/b!- : Bordure droite","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:header-footer-properties..fo:border-left","-!b!-Entête ou Pied de page-!/b!- : Bordure gauche","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:header-footer-properties..fo:border-top","-!b!-Entête ou Pied de page-!/b!- : Bordure haute","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:header-footer-properties..fo:margin-bottom","-!b!-Entête ou Pied de page-!/b!- : Marge en dessous","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:header-footer-properties..fo:margin-top","-!b!-Entête ou Pied de page-!/b!- : Marge au dessus","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:header-footer-properties..fo:margin-top","-!b!-Entête ou Pied de page-!/b!- : Marge au dessus","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:header-footer-properties..fo:margin-right","-!b!-Entête ou Pied de page-!/b!- : Marge à droite","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:header-footer-properties..fo:margin-left","-!b!-Entête ou Pied de page-!/b!- : Marge à gauche","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:master-page..style:next-style-name","Style de la page suivante","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:bookmark-ref..text:ref-name","Nom du repère de texte","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:bookmark-ref..text:reference-format","Réfèrence du repère de texte","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:bookmark-ref..Contenu..textuel","Contenu textuel du repère de texte","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:columns..fo:column-count","Nombre de colonne","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:columns..fo:column-gap","Espacement entre les colonnes-!br!--!i!-Gouttière-!/i!-","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:header-footer-properties..fo:border","Les 4 bordures du pied de page-!br!--!i!-droite gauche bas haut-!/i!-","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:header-footer-properties..fo:border","Les 4 bordures de l'entête-!br!--!i!-droite gauche bas haut-!/i!-","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:tab..name","Tabulation","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:tab..Contenu..textuel","Contenu textuel après tabulation","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:initial-creator..Contenu..textuel","Champ auteur (premier auteur)","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:creator..Contenu..textuel","Champ auteur (modifié)","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:page-layout-properties..style:num-format","Format de la numérotation","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:page-number..text:select-page","Champ numérotation de la page","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:page-layout-properties..style:print-orientation","Orientation de la page","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:header-footer-properties..fo:min-height","Hauteur minimal du pied de page","", "#995511","",false));
|
||||
translation.getNodes().add(nodeTranslation("page..style:page_number","Champ - numéro de la page","", "#000000","",false));
|
||||
|
||||
|
||||
//style structure
|
||||
translation.getNodes().add(nodeTranslation("page..style:master-page-name","Nom du style de page","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("page..numeroabsolue","Position (numéro) absolue de la page-!br!-par rapport à l'ensemble des pages","C'est l'ordre d'apparition de la page lorsque le mode "-!b!-Livre-!/b!-" est utilisé.-!br!-Dans le mode d'affichage "-!b!-Livre-!/b!-" toutes les pages s'affichent, y compris les pages vides.", "#903BA9","",true));
|
||||
translation.getNodes().add(nodeTranslation("text:title..Contenu..textuel","Valeur de la méta donnée "-!b!-Titre-!/b!-"","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:subject..Contenu..textuel","Valeur de la méta donnée "-!b!-Sujet-!/b!-"","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("draw:frame..draw:name","Nom de l'objet indiqué dans-!br!-l'onglet "-!b!-Options-!/b!-"-!br!-de la boite "-!b!--!u!-Propriétés-!/u!--!/b!-" de l'objet.","Si l'objet ne se nomme pas -!b!--!u!-EXACTEMENT-!/u!--!/b!- comme indiqué dans la consigne.-!br!--!br!-L'algorithme d'analyse ne pourra pas trouver l'objet.Vous aurez que des valeurs -!b!--!u!-NULL-!/u!--!/b!--!br!--!br!-Faites attention à la case (majuscule et minuscule). Ne tapez pas d'espace après le dernier caractère. Ne tapez pas de guillemet, etc.", "#903BA9","",true));
|
||||
translation.getNodes().add(nodeTranslation("text:description..Contenu..textuel","Champ -!b!-Commentaires-!/b!-","Pour insérer le champ "-!b!-Commentaires-!/b!-".-!br!-Sélectionner le menu Insertion/Champ/Autres champs...-!br!--!br!-Dans la boite de dialogue "Champ"-!br!-Onglet "Info document"", "#903BA9","",true));
|
||||
translation.getNodes().add(nodeTranslation("page..style:page-usage","Mise en page de la page","Dans les -!b!-Propriétés-!/b!- du style de page-!br!-Onglet -!b!-Page-!/b!--!br!--!b!-Mise en page-!/b!-", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:illustration-index-source..text:caption-sequence-name","Catégorie de la légende","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:index-title-template..Contenu..textuel","Titre de l'index","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:table-of-content..text:protected","Protection de l'index","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:table-of-content-source..text:outline-level","Niveau de plan de l'index-!br!-Type "Table des matières"", "", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:conditional-text..text:condition","La condition du texte conditionnel","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:conditional-text..text:string-value-if-true","Si la condition est -!b!-Vrai-!/b!- affiche le texte","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:conditional-text..text:string-value-if-false","Si la condition est -!b!-Fausse-!/b!- affiche le texte","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:date..text:fixed","La date est fixe","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:date..style:data-style-name","Style de la date","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:span..Contenu..textuel","Contenu textuel formatage local","-!b!--!u!-Attention formatage local:-!/u!--!/b!--!br!-Si le texte n'a pas été trouvé.-!br!-Vous devez savoir que l'application recherche le texte par son contenu.-!br!-Mais aussi par le type d'élément, ici un formatage local.-!br!-Il est probable que tous les autres attributs (propriétés) de ce formatage local soient "null".-!br!-Vérifier le contenu textuel, ou vérifier que vous avez formaté localement ce text.-!br!-N'oubliez pas d'effacer le format avant de reformater le texte.", "#000000","",true));
|
||||
translation.getNodes().add(nodeTranslation("text:p..Contenu..textuel","Contenu textuel (paragraphe)","-!b!--!u!-Attention paragraphe de texte:-!/u!--!/b!--!br!-Si le texte de ce paragraphe n'a pas été trouvé.-!br!-Vous devez savoir que l'application recherche le paragraphe par son contenu.-!br!-Mais aussi par le type de l'élément, ici un paragraphe.-!br!-Il est probable que tous les autres attributs (propriétés) de ce paragraphe soient "null".-!br!-Vérifier le contenu textuel de votre paragraphe, ou vérifier que c'est bien un paragraphe.-!br!-", "#000000","",true));
|
||||
translation.getNodes().add(nodeTranslation("text:date..text:date-value","La date","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:section..text:name","Nom de la section","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:section..text:condition","Condition de la section","-!b!--!u!-Attention :-!/u!--!/b!--!br!-Ne tapez pas d'espace après le dernier guillemet du texte.-!br!-Ne tapez pas d'espace après le dernier caractère de votre condition.", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:section..Contenu..textuel","Contenu textuel de la section","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:section..text:display","Masqué la section","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:break-before","Type de saut placé avant","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:padding","Remplissage (padding) du paragraphe","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:text-properties..fo:color","Couleur de la police","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:h..text:style-name","Nom du style du paragraphe Titre","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:change-start..Contenu..textuel","Insertion du texte","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:margin-right","Retrait après le paragraphe","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:margin-left","Retrait avant le paragraphe","", "#903BA9","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:paragraph-properties..fo:border","Style des quatre bordures","", "#903BA9","",false));
|
||||
|
||||
|
||||
//frame
|
||||
translation.getNodes().add(nodeTranslation("draw:frame..text:anchor-type","Ancrage de l'objet","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("draw:frame..text:anchor-page-number","Ancrage dans la page numéro","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("draw:frame..svg:y","Position (distance) verticale-!br!-de l'objet","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("draw:frame..svg:x","Position (distance) horizontale-!br!-de l'objet","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("draw:frame..svg:height","Hauteur de l'objet","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("draw:frame..svg:width","Largeur de l'objet","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:graphic-properties..fo:padding","Remplissage (marge)-!br!-avec les bords du cadre de l'objet","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:graphic-properties..style:vertical-pos","Position verticale de l'objet par rapport à","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:graphic-properties..style:horizontal-pos","Position horizontale de l'objet par rapport à","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:graphic-properties..fo:border","Les 4 bordures de l'objet","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:graphic-properties..fo:margin-bottom","Espacement en dessous de l'objet","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:graphic-properties..fo:margin-top","Espacement au dessus de l'objet","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:graphic-properties..fo:margin-right","Espacement à droite de l'objet","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:graphic-properties..fo:margin-left","Espacement à gauche de l'objet","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:graphic-properties..style:horizontal-rel","Position horizontale par rapport à","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:graphic-properties..style:vertical-rel","Position verticale par rapport à","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:graphic-properties..style:wrap","Adaptation du texte","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:graphic-properties..style:number-wrapped-paragraphs","Adaptation du texte-!br!-nombre de paragraphe adapté","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:graphic-properties..style:wrap-contour","Adaptation du texte "-!b!-Contour-!/b!-"","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:sequence..text:name","Nom de la variable de -!b!-Séquence-!/b!- pour légender","Menu Insertion/Champ/Autres champs...-!br!-Onglet "-!b!-Variables-!/b!-"", "#FF5B00","",true));
|
||||
translation.getNodes().add(nodeTranslation("text:sequence..Contenu..textuel","La légende avec la variable de -!b!-Séquence-!/b!-","Pour légender une image, il faut un clic droite sur l'image et sélectionner -!b!-Insérer une légende...-!/b!--!br!-Cependant, il faut retirer la protection du contenu.", "#FF5B00","",true));
|
||||
translation.getNodes().add(nodeTranslation("style:graphic-properties..style:protect","Protection de l'objet","Dans la boite de dialogue -!b!-Propriétés-!/b!--!br!-Onglet Option-!br!-Vou devez cocher les protections (case à cocher)", "#FF5B00","",true));
|
||||
translation.getNodes().add(nodeTranslation("style:graphic-properties..style:wrap-contour-mode","Mode contour du texte","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("draw:text-box..fo:min-height","Hauteur du frame-!br!-(cadre de texte)","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("draw:frame..Contenu..textuel","Paragraphe d'ancrage","", "#FF5B00","",false));
|
||||
|
||||
//numérotation hiérarchisée
|
||||
translation.getNodes().add(nodeTranslation("text:outline-level-style..style:num-suffix","Suffix (après la numérotation)","", "#C1BA00","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:outline-level-style..style:num-prefix","Prefix (devant la numérotation)","-!b!--!u!-Attention :-!/u!--!/b!--!br!-Il peut y avoir devant la numération un espace.-!br!--!br!-Par exemple : -!b!-§[espace]-!/b!-", "#C1BA00","",true));
|
||||
translation.getNodes().add(nodeTranslation("text:outline-level-style..style:num-format","Format de la numérotation","", "#C1BA00","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:outline-level-style..text:level","Niveau de la numérotation","", "#C1BA00","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:list-level-properties..text:list-level-position-and-space-mode","Position, Espacement de la numérotation","", "#C1BA00","",false));
|
||||
translation.getNodes().add(nodeTranslation("style:list-level-label-alignment..text:label-followed-by","Numérotation suivi d'un(e)","Dans la boite de dialogue "Numérotation des chapitres"-!br!-Onglet Position-!br!-Numerotation suivi par.", "#C1BA00","",true));
|
||||
translation.getNodes().add(nodeTranslation("text:outline-level-style..text:display-levels","Nombre de niveau affiché par la numérotation","Dans la boite de dialogue "Numérotation des chapitre"-!br!-Afficher les sous-niveaux.", "#C1BA00","",true));
|
||||
|
||||
//Table, index, bibliographie
|
||||
translation.getNodes().add(nodeTranslation("text:a..Contenu..textuel","Le texte du lien","Le texte du lien qui permet d'atteindre le paragraphe.", "#0000FF","",true));
|
||||
translation.getNodes().add(nodeTranslation("text:bibliography..Contenu..textuel","Tout le contenu textuel de la biliographie","", "#0000FF","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:index-body..Contenu..textuel","Tout le contenu textuel de l'index","", "#0000FF","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:table-of-content..Contenu..textuel","Tout le contenu textuel de la table","", "#0000FF","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:illustration-index..Contenu..textuel","Tout le contenu textuel de la table des figures","", "#0000FF","",false));
|
||||
|
||||
//Les tableaux
|
||||
translation.getNodes().add(nodeTranslation("table:table-row..Contenu..textuel","Tout le contenu textuel d'un ligne de la table","", "#0000FF","",false));
|
||||
translation.getNodes().add(nodeTranslation("table:table-cell..Contenu..textuel","Tout le contenu textuel d'une cellule de la table","", "#0000FF","",false));
|
||||
|
||||
//database
|
||||
translation.getNodes().add(nodeTranslation("text:database-display..name","Base de données","", "#0000FF","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:database-display..text:table-type","Type de la source de données","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:database-display..text:column-name","Nom du champ de données","Ne tapez pas d'espace à la fin du nom de la colonne, Sinon Null.", "#FF5B00","",true));
|
||||
translation.getNodes().add(nodeTranslation("text:database-display..text:database-name","Nom de la base de données","", "#FF5B00","",false));
|
||||
translation.getNodes().add(nodeTranslation("text:database-display..text:table-name","Nom de la table de données","", "#FF5B00","",false));
|
||||
|
||||
|
||||
//variable de séquence
|
||||
translation.getNodes().add(nodeTranslation("text:sequence-decl..text:name","Variable de séquence","La variable de séquence permet de légender et de créer des index.-!br!-Pour ajouter une variable de séquence, vous devez sélectionner le menu-!br!-Insertion/Champ/Autres champs...-!br!-Onglet "-!b!-Variables-!/b!-".", "#C1BA00","",true));
|
||||
|
||||
//Retour à la ligne
|
||||
translation.getNodes().add(nodeTranslation("text:line-break..name","Retour à la ligne" ,"Retour à la ligne-!br!-Un retour à la ligne est différent d'un paragraphe.-!br!-Pour réaliser un retour à la ligne vous devez taper-!br!--!b!-SHIFT (majuscule) + ENTRÉE-!/b!-","#000000","",true));
|
||||
translation.getNodes().add(nodeTranslation("text:line-break..Contenu..textuel","Contenu textuel dans un retour à la ligne," ,"-!b!--!u!-Attention retour à la ligne:-!/u!--!/b!--!br!-Si le texte n'a pas été trouvé.-!br!-Vous devez savoir que l'application recherche le texte par son contenu.-!br!-Mais aussi par le type de l'élément, ici un retour à la ligne.-!br!-Il est probable que tous les autres attributs (propriétés) de ce paragraphe soient "null".-!br!-Vérifier le contenu textuel de votre paragraphe, ou vérifier que c'est bien un retour à la ligne.-!br!-", "#000000","",true));
|
||||
translation.getNodes().add(nodeTranslation("text:line-break..Nom..du..nodeAC","Retour à la ligne" ,"Retour à la ligne-!br!-Un retour à la ligne est différent d'un paragraphe.-!br!-Pour réaliser un retour à la ligne vous devez taper-!br!--!b!-SHIFT (majuscule) + ENTRÉE-!/b!-","#000000","",true));
|
||||
|
||||
// tabulation
|
||||
translation.getNodes().add(nodeTranslation("text:tab..Nom..du..nodeAC","Tabulation" ,"Insertion d'un caractère tabulation","#000000","",true));
|
||||
|
||||
// numérotation des pages
|
||||
translation.getNodes().add(nodeTranslation("text:page-number..Nom..du..nodeAC","Numéro de page" ,"Insertion du champ numéro de page","#000000","",true));
|
||||
translation.getNodes().add(nodeTranslation("text:page-count..Nom..du..nodeAC","Nombre de page" ,"Insertion du champ nombre de page","#000000","",true));
|
||||
|
||||
//Paragraphe de texte
|
||||
translation.getNodes().add(nodeTranslation("text:p..name","Paragraphe de texte" ,"Paragraphe de texte-!br!-Un paragraphe de texte est créé avec la touche-!br!--!b!-ENTRÉE-!/b!-","#000000","",true));
|
||||
translation.getNodes().add(nodeTranslation("txt:p..Contenu..textuel","Contenu textuel dans un paragraphe de texte" ,"Paragraphe de texte-!br!-Un paragraphe de texte est créé avec la touche-!br!--!b!-ENTRÉE-!/b!-","#000000","",true));
|
||||
translation.getNodes().add(nodeTranslation("text:span..name","Texte formatage direct" ,"Le formatage direct des cacartères-!br!-Lorsque l'on modifie localement les attributs d'un texte (Gras, italic, taille, soulignage, etc.)","#000000","",true));
|
||||
translation.getNodes().add(nodeTranslation("text:span..Nom..du..nodeAC","Texte formatage direct des caractères" ,"Le formatage direct-!br!-Lorsque l'on modifie localement les attributs d'un texte (Gras, italic, taille, soulignage, etc.)","#000000","",true));
|
||||
|
||||
//Espace
|
||||
translation.getNodes().add(nodeTranslation("text:s","Espace LO Writer","Un espace est inséré lorsque vous souhaitez un séparateur de mots à un endroit où un saut de ligne est acceptable.", "#000000","",true));
|
||||
translation.getNodes().add(nodeTranslation("text:s..name","Espace LO Writer","Un espace est inséré lorsque vous souhaitez un séparateur de mots à un endroit où un saut de ligne est acceptable.", "#000000","",true));
|
||||
translation.getNodes().add(nodeTranslation("text:s..Contenu..textuel","Espace suivi du texte","Un espace est inséré lorsque vous souhaitez un séparateur de mots à un endroit où un saut de ligne est acceptable.", "#000000","",true));
|
||||
|
||||
|
||||
return translation;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Permet de réaliser les nodes de traduction.<br>
|
||||
*
|
||||
* @param nameNode Le nom du nodeAC.
|
||||
* @param traduction La traduction qui s'affiche dans le feedback.
|
||||
* @param commentaire Le commentaire qui apparaît.
|
||||
* @return Le nodeAC traduction.
|
||||
*/
|
||||
private static nodeAC nodeTranslation(String nameNode, String traduction, String commentaire, String color, String link, Boolean T) {
|
||||
nodeAC A = new nodeAC();
|
||||
A.setNomElt(nameNode);
|
||||
A.getAttributs().put("translate", traduction);
|
||||
A.setContenu(commentaire);
|
||||
A.getAttributs().put("color", color);
|
||||
if(T.equals(true)) A.getAttributs().put("image", "true");
|
||||
if(!link.isEmpty()) A.getAttributs().put("link", link);
|
||||
A.setClose(true);
|
||||
return A;
|
||||
}
|
||||
|
||||
}
|
@ -1,98 +0,0 @@
|
||||
package nodeAC;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class EnsembleFichiers {
|
||||
private static ArrayList<String> ListeContentTableur = new ArrayList<String>();
|
||||
private static ArrayList<String> ListeNomDossier = new ArrayList<String>();
|
||||
private static ArrayList<String> ListeNomFichierFeedBack = new ArrayList<String>();
|
||||
private static ArrayList<String> ListeFichierods = new ArrayList<String>();
|
||||
private static ArrayList<String> ListeObjetGraphicTableur = new ArrayList<String>();
|
||||
public static int size=0;
|
||||
|
||||
public EnsembleFichiers() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public void Initialise() {
|
||||
ListeNomDossier.clear();
|
||||
ListeNomFichierFeedBack.clear();
|
||||
ListeFichierods.clear();
|
||||
ListeObjetGraphicTableur.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param NomDossier
|
||||
* @param ContentWriter
|
||||
* @param contentT
|
||||
* @param contentB
|
||||
* @param fichierodt
|
||||
* @param fichierods
|
||||
* @param fichierodb
|
||||
* @param fichierObjectgraphicTableur
|
||||
* @param fichierFeedBack
|
||||
*/
|
||||
public void AjouteEnsembleAnalyse(String NomDossier, String contentT,String fichierods,
|
||||
String fichierObjectgraphicTableur, String fichierFeedBack) {
|
||||
ListeContentTableur.add(contentT);
|
||||
ListeNomDossier.add(NomDossier);
|
||||
ListeObjetGraphicTableur.add(fichierObjectgraphicTableur);
|
||||
ListeFichierods.add(fichierods);
|
||||
ListeNomFichierFeedBack.add(fichierFeedBack);
|
||||
size++;
|
||||
}
|
||||
|
||||
|
||||
public ArrayList<String> getListeNomDossier() {
|
||||
return ListeNomDossier;
|
||||
}
|
||||
|
||||
public ArrayList<String> getListeFichierods() {
|
||||
return ListeFichierods;
|
||||
}
|
||||
|
||||
|
||||
public int getSize() {
|
||||
return EnsembleFichiers.size;
|
||||
}
|
||||
|
||||
|
||||
public void setListeNomDossier(ArrayList<String> listeNomDossier) {
|
||||
ListeNomDossier = listeNomDossier;
|
||||
}
|
||||
|
||||
public void setListeFichierods(ArrayList<String> listeFichierods) {
|
||||
ListeFichierods = listeFichierods;
|
||||
}
|
||||
|
||||
|
||||
public void setSize(int size) {
|
||||
EnsembleFichiers.size = size;
|
||||
}
|
||||
|
||||
public ArrayList<String> getListeObjetGraphicTableur() {
|
||||
return ListeObjetGraphicTableur;
|
||||
}
|
||||
|
||||
public void setListeObjetGraphicTableur(ArrayList<String> listeObjetGraphicTableur) {
|
||||
ListeObjetGraphicTableur = listeObjetGraphicTableur;
|
||||
}
|
||||
|
||||
public ArrayList<String> getListeNomFichierFeedBack() {
|
||||
return ListeNomFichierFeedBack;
|
||||
}
|
||||
|
||||
public void setListeNomFichierFeedBack(ArrayList<String> listeNomFichierFeedBack) {
|
||||
ListeNomFichierFeedBack = listeNomFichierFeedBack;
|
||||
}
|
||||
|
||||
public ArrayList<String> getListeContentTableur() {
|
||||
return ListeContentTableur;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -1,384 +0,0 @@
|
||||
package nodeAC;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.CharBuffer;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
import net.lingala.zip4j.core.ZipFile;
|
||||
import net.lingala.zip4j.model.FileHeader;
|
||||
import xml.node;
|
||||
import xml.transformeXLMtoNode;
|
||||
|
||||
public class LecturesDossiers {
|
||||
|
||||
|
||||
private static EnsembleFichiers EC = new EnsembleFichiers();
|
||||
|
||||
|
||||
public LecturesDossiers( Ecriture.LocationFile location, String patch) throws ParserConfigurationException, SAXException, IOException {
|
||||
String NomDossier = null;
|
||||
String leNomDuRepertoire = patch;
|
||||
String ContentT = null;
|
||||
String ContentObjectGraphicTableur = null;
|
||||
|
||||
String fichierAnalyseods = null;
|
||||
|
||||
|
||||
File rep = new File(leNomDuRepertoire);
|
||||
|
||||
if(location==Ecriture.LocationFile.DansDossier) {
|
||||
System.out.println();
|
||||
|
||||
if(rep.isDirectory()) {
|
||||
File[] fichiers = rep.listFiles();
|
||||
|
||||
for(int i=0; i<fichiers.length; i++ ) {
|
||||
ContentT = "";
|
||||
ContentObjectGraphicTableur = "";
|
||||
fichierAnalyseods = null;
|
||||
NomDossier=null;
|
||||
|
||||
if(fichiers[i].isDirectory()) {
|
||||
|
||||
String filename = fichiers[i].getName();
|
||||
|
||||
//String fichierAnalyseods = null ;
|
||||
if(fichiers[i].getName().contains("_")) {
|
||||
NomDossier = fichiers[i].getName().substring(0, fichiers[i].getName().indexOf("_"));
|
||||
}else {
|
||||
NomDossier = fichiers[i].getName();
|
||||
}
|
||||
|
||||
File[] fichiers2 = fichiers[i].listFiles();
|
||||
for(int j=0; j<fichiers2.length; j++ ) {
|
||||
if(fichiers2[j].getName().contains(".")) {
|
||||
String ext = fichiers2[j].getName().substring( fichiers2[j].getName().lastIndexOf("."));
|
||||
if(ext.equals(".ods")) {
|
||||
ContentT = ContenuContent(fichiers2[j]);
|
||||
fichierAnalyseods = fichiers2[j].getName();
|
||||
ContentObjectGraphicTableur = ContenuContentObject(fichiers2[j]);
|
||||
fichierAnalyseods = fichiers2[j].getName(); }
|
||||
}
|
||||
}
|
||||
if(NomDossier==null) {NomDossier="inconnu"; filename="inconnu";}
|
||||
if(fichierAnalyseods==null) fichierAnalyseods="pas de fichier calc déposé.";
|
||||
|
||||
|
||||
if(fichierAnalyseods!=null) {
|
||||
new transformeXLMtoNode(fichierAnalyseods, false, null);
|
||||
node nod = transformeXLMtoNode.getNodeRoot();
|
||||
fichierAnalyseods = Ecriture.ecritureNodeWithIndent(nod,0).toString();
|
||||
|
||||
new transformeXLMtoNode(ContentObjectGraphicTableur, false, null);
|
||||
nod = transformeXLMtoNode.getNodeRoot();
|
||||
ContentObjectGraphicTableur = Ecriture.ecritureNodeWithIndent(nod,0).toString();
|
||||
}
|
||||
|
||||
EC.AjouteEnsembleAnalyse(NomDossier, ContentT, fichierAnalyseods,ContentObjectGraphicTableur,filename );
|
||||
System.out.print(".");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(location == Ecriture.LocationFile.UniquementFichier) {
|
||||
System.out.println();
|
||||
|
||||
File[] fichiers = rep.listFiles();
|
||||
|
||||
ContentT = "";
|
||||
fichierAnalyseods = null;
|
||||
NomDossier=null;
|
||||
|
||||
for(int j=0; j<fichiers.length; j++ ) {
|
||||
if(fichiers[j].getName().contains(".")) {
|
||||
String ext = fichiers[j].getName().substring( fichiers[j].getName().lastIndexOf("."));
|
||||
if(fichiers[j].isFile()) {
|
||||
if(ext.equals(".ods")) {
|
||||
ContentT = ContenuContent(fichiers[j]);
|
||||
fichierAnalyseods = fichiers[j].getName();
|
||||
NomDossier=fichierAnalyseods;
|
||||
if(NomDossier.contains("_")) NomDossier = NomDossier.substring(0, NomDossier.indexOf("_"));
|
||||
ContentObjectGraphicTableur = ContenuContentObject(fichiers[j]); fichierAnalyseods = fichiers[j].getName();
|
||||
|
||||
if(fichierAnalyseods!=null) {
|
||||
new transformeXLMtoNode(fichierAnalyseods, false, null);
|
||||
node nod = transformeXLMtoNode.getNodeRoot();
|
||||
Ecriture.ecritureNodeEnXML(nod, "fichierAnalyseods", patch, Ecriture.typeFichier.fichier_etudiant);
|
||||
fichierAnalyseods = Ecriture.ecritureNodeWithIndent(nod,0).toString();
|
||||
|
||||
if(ContentObjectGraphicTableur!=null) {
|
||||
// nod = A.NewNode(ContentObjectGraphicTableur);
|
||||
new transformeXLMtoNode(ContentObjectGraphicTableur, false, null);
|
||||
nod = transformeXLMtoNode.getNodeRoot();
|
||||
ContentObjectGraphicTableur = Ecriture.ecritureNodeWithIndent(nod,0).toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
EC.AjouteEnsembleAnalyse(NomDossier, ContentT,fichierAnalyseods, ContentObjectGraphicTableur, "");
|
||||
ContentT="";
|
||||
ContentObjectGraphicTableur="";
|
||||
NomDossier="";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param Version
|
||||
* @param patch
|
||||
* @param fichierStudentInCurrentFolder
|
||||
* @throws ParserConfigurationException
|
||||
* @throws SAXException
|
||||
* @throws IOException
|
||||
*/
|
||||
public LecturesDossiers(String pathFichier) throws ParserConfigurationException, SAXException, IOException {
|
||||
String NomDossier = null;
|
||||
|
||||
String ContentT = null;
|
||||
String ContentObjectGraphicTableur = null;
|
||||
String fichierAnalyseods = null;
|
||||
|
||||
File fichiers = new File(pathFichier);
|
||||
|
||||
ContentT = "";
|
||||
ContentObjectGraphicTableur = "";
|
||||
|
||||
String filename = fichiers.getName();
|
||||
if(fichiers.getName().contains(".")) {
|
||||
String ext = fichiers.getName().substring( fichiers.getName().lastIndexOf("."));
|
||||
filename = fichiers.getName();
|
||||
NomDossier = pathFichier;
|
||||
|
||||
if(ext.equals(".ods")) {
|
||||
ContentT = ContenuContent(fichiers);
|
||||
fichierAnalyseods = fichiers.getName();
|
||||
ContentObjectGraphicTableur = ContenuContentObject(fichiers);
|
||||
fichierAnalyseods = fichiers.getName();
|
||||
}
|
||||
}
|
||||
|
||||
if(fichierAnalyseods==null) fichierAnalyseods="pas de fichier calc déposé.";
|
||||
|
||||
System.out.println("ContentT :" + ContentT);
|
||||
System.out.println("ContentObjectGraphicTableur :" + ContentObjectGraphicTableur);
|
||||
System.out.println("NomDossier :" + NomDossier);
|
||||
System.out.println("filename :" + filename);
|
||||
|
||||
|
||||
EC.AjouteEnsembleAnalyse(NomDossier, ContentT, fichierAnalyseods,ContentObjectGraphicTableur,filename );
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param zipf
|
||||
* @return
|
||||
* @throws ParserConfigurationException
|
||||
* @throws SAXException
|
||||
* @throws IOException
|
||||
*/
|
||||
private static String ContenuContent(File zipf) throws ParserConfigurationException, SAXException, IOException {
|
||||
String content = null;
|
||||
String style= null;
|
||||
String meta =null;
|
||||
|
||||
try {
|
||||
ZipFile zipFile = new ZipFile(zipf.getAbsolutePath());
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
List<FileHeader> fileHeaderList = (List<FileHeader>) zipFile.getFileHeaders();
|
||||
|
||||
for (int i = 0; i < fileHeaderList.size(); i++) {
|
||||
FileHeader fileHeader = (FileHeader) fileHeaderList.get(i);
|
||||
net.lingala.zip4j.io.ZipInputStream is = zipFile.getInputStream(fileHeader);
|
||||
|
||||
if(fileHeader.getFileName().equals("content.xml")) {
|
||||
int uncompressedSize = (int) fileHeader.getUncompressedSize();
|
||||
|
||||
OutputStream os = new ByteArrayOutputStream(uncompressedSize);
|
||||
|
||||
int bytesRead;
|
||||
|
||||
byte[] buffer = new byte[4096];
|
||||
while ((bytesRead = is.read(buffer)) != -1) {
|
||||
os.write(buffer, 0, bytesRead); // os le contenu du fichier
|
||||
}
|
||||
content = os.toString();
|
||||
|
||||
}
|
||||
if(fileHeader.getFileName().equals("styles.xml")) {
|
||||
int uncompressedSize = (int) fileHeader.getUncompressedSize();
|
||||
|
||||
OutputStream os = new ByteArrayOutputStream(uncompressedSize);
|
||||
|
||||
int bytesRead;
|
||||
|
||||
byte[] buffer = new byte[4096];
|
||||
|
||||
while ((bytesRead = is.read(buffer)) != -1) {
|
||||
os.write(buffer, 0, bytesRead); // os le contenu du fichier
|
||||
}
|
||||
style = os.toString();
|
||||
}
|
||||
if(fileHeader.getFileName().equals("meta.xml")) {
|
||||
int uncompressedSize = (int) fileHeader.getUncompressedSize();
|
||||
|
||||
OutputStream os = new ByteArrayOutputStream(uncompressedSize);
|
||||
|
||||
int bytesRead;
|
||||
|
||||
byte[] buffer = new byte[4096];
|
||||
|
||||
while ((bytesRead = is.read(buffer)) != -1) {
|
||||
os.write(buffer, 0, bytesRead); // os le contenu du fichier
|
||||
}
|
||||
meta = os.toString();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
ex.printStackTrace(System.err);
|
||||
} catch (net.lingala.zip4j.exception.ZipException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
String tout = content + style + meta ;
|
||||
|
||||
|
||||
byte[] defaultBytes = tout.getBytes();
|
||||
//Charset def = Charset.defaultCharset();
|
||||
Charset utf8 = Charset.forName("utf-8");
|
||||
ByteBuffer bb = ByteBuffer.wrap(defaultBytes);
|
||||
CharBuffer cb = utf8.decode(bb);
|
||||
tout = cb.toString();
|
||||
|
||||
|
||||
|
||||
return tout;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param zipf
|
||||
* @return
|
||||
* @throws ParserConfigurationException
|
||||
* @throws SAXException
|
||||
* @throws IOException
|
||||
*/
|
||||
private static String ContenuContentObject(File zipf) throws ParserConfigurationException, SAXException, IOException {
|
||||
String object= null;
|
||||
|
||||
try {
|
||||
ZipFile zipFile = new ZipFile(zipf.getAbsolutePath());
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
List<FileHeader> fileHeaderList = (List<FileHeader>) zipFile.getFileHeaders();
|
||||
|
||||
// int CompteurObject = 1;
|
||||
|
||||
for (int i = 0; i < fileHeaderList.size(); i++) {
|
||||
FileHeader fileHeader = (FileHeader) fileHeaderList.get(i);
|
||||
net.lingala.zip4j.io.ZipInputStream is = zipFile.getInputStream(fileHeader);
|
||||
|
||||
if(fileHeader.getFileName().contains("Object ") && fileHeader.getFileName().contains("/content.xml") ) {
|
||||
String num = fileHeader.getFileName();
|
||||
Pattern p = Pattern.compile("[a-zA-Z]");
|
||||
Matcher m = p.matcher(num);
|
||||
num = m.replaceAll("");
|
||||
|
||||
p = Pattern.compile("/");
|
||||
m = p.matcher(num);
|
||||
num = m.replaceAll("");
|
||||
|
||||
p = Pattern.compile(" ");
|
||||
m = p.matcher(num);
|
||||
num = m.replaceAll("");
|
||||
|
||||
p = Pattern.compile("\\.");
|
||||
m = p.matcher(num);
|
||||
num = m.replaceAll("");
|
||||
|
||||
int uncompressedSize = (int) fileHeader.getUncompressedSize();
|
||||
|
||||
OutputStream os = new ByteArrayOutputStream(uncompressedSize);
|
||||
|
||||
int bytesRead;
|
||||
|
||||
byte[] buffer = new byte[4096];
|
||||
|
||||
while ((bytesRead = is.read(buffer)) != -1) {
|
||||
os.write(buffer, 0, bytesRead); // os le contenu du fichier
|
||||
}
|
||||
object = "<Object num=\""+num+"\">" + os.toString() + "</Object>" + object;
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
} catch (IOException ex) {
|
||||
ex.printStackTrace(System.err);
|
||||
} catch (net.lingala.zip4j.exception.ZipException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
|
||||
String tout = object ;
|
||||
if(tout!=null) {
|
||||
byte[] defaultBytes = tout.getBytes();
|
||||
//Charset def = Charset.defaultCharset();
|
||||
Charset utf8 = Charset.forName("utf-8");
|
||||
ByteBuffer bb = ByteBuffer.wrap(defaultBytes);
|
||||
CharBuffer cb = utf8.decode(bb);
|
||||
tout = cb.toString();
|
||||
}
|
||||
|
||||
|
||||
return tout;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public static EnsembleFichiers getEC() {
|
||||
return EC;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param eC
|
||||
*/
|
||||
public void setEC(EnsembleFichiers eC) {
|
||||
EC = eC;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
@ -1,269 +0,0 @@
|
||||
package nodeAC;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
|
||||
|
||||
|
||||
public class constructionNodeAvecString {
|
||||
private nodeAC nod;
|
||||
|
||||
|
||||
public constructionNodeAvecString() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructeur nodeAC à partir du fichier source ODF transformé en String.
|
||||
* @param code
|
||||
*/
|
||||
public nodeAC NewNode(String code) {
|
||||
ArrayList<nodeAC> suitenodes = new ArrayList<nodeAC>();
|
||||
|
||||
Pattern p3 = Pattern.compile("(<[.[^ /<]]{1,}>{1}|<[.[^ /<]]{1,}/>|<[.[^ /<]]{1,}\\p{Space}[.[^<]]{1,}(>|/>){1}|</[[^< ].]{1,}>{1}|[.[^>\"<]]{1,})");
|
||||
Matcher m3 = p3.matcher(code);
|
||||
ArrayList<String> nom = new ArrayList<String>() ;
|
||||
while(m3.find()) {
|
||||
nom.add(code.substring(m3.start(), m3.end()));
|
||||
}
|
||||
|
||||
String nomNode ="";
|
||||
|
||||
for(int i =0; i < nom.size(); i++) {
|
||||
|
||||
nodeAC No = new nodeAC();
|
||||
Attributs attributsNode = new Attributs();
|
||||
String codexml = nom.get(i);
|
||||
|
||||
|
||||
// Node sans attribut sans fermeture
|
||||
Pattern p = Pattern.compile("^<[.[^ /<]]{1,}>$");
|
||||
Matcher m = p.matcher(codexml);
|
||||
if(m.find()) {
|
||||
nomNode = codexml.substring(1, m.end()-1);
|
||||
if(nomNode.equals("?xml") || nomNode.equals("!--") ) continue;
|
||||
No.setNomElt(nomNode);
|
||||
suitenodes.add(No);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Node sans attribut avec fermeture
|
||||
p = Pattern.compile("^<[.[^ /<]]{1,}/>$");
|
||||
m = p.matcher(codexml);
|
||||
if(m.find()) {
|
||||
nomNode = codexml.substring(1, m.end()-2);
|
||||
if(nomNode.equals("?xml") || nomNode.equals("!--") ) continue;
|
||||
No.setNomElt(nomNode);
|
||||
suitenodes.add(No);
|
||||
No.setClose(true);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
// Node avec attribut sans fermeture
|
||||
p = Pattern.compile("^<[.[^ /<]]{1,}\\p{Space}[.[^<]]{1,}[^/]>$"); //^<[.[^ /<]]{1,}\\p{Space}[.[^<]]{1,}>$
|
||||
m = p.matcher(codexml);
|
||||
if(m.find()) {
|
||||
p = Pattern.compile("^<[.[^ /<]]{1,}\\p{Space}");
|
||||
m = p.matcher(codexml);
|
||||
if(m.find()) {
|
||||
nomNode = codexml.substring(1, m.end()-1);
|
||||
if(nomNode.equals("?xml") || nomNode.equals("!--") ) continue;
|
||||
No.setNomElt(nomNode);
|
||||
p = Pattern.compile("\\p{Space}[.[^ =]]{1,}=\"[.[^\"]]{1,}\"");
|
||||
m = p.matcher(codexml);
|
||||
while(m.find()) {
|
||||
String attr = codexml.substring(m.start()+1, m.end()).replace("\"", "");
|
||||
Pattern p2 = Pattern.compile("=");
|
||||
Matcher m2 = p2.matcher(attr);
|
||||
if(m2.find()) {
|
||||
attributsNode.put(attr.substring(0, m2.start()), attr.substring(m2.start()+1,attr.length()));
|
||||
}
|
||||
}
|
||||
No.setAttributs(attributsNode);
|
||||
}
|
||||
suitenodes.add(No);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
// Node avec attribut et avec fermeture
|
||||
p = Pattern.compile("^<[.[^ /<]]{1,}\\p{Space}[.[^<]]{1,}/>$");
|
||||
m = p.matcher(codexml);
|
||||
if(m.find()) {
|
||||
p = Pattern.compile("^<[.[^ /<]]{1,}\\p{Space}");
|
||||
m = p.matcher(codexml);
|
||||
if(m.find()) {
|
||||
nomNode = codexml.substring(1, m.end()-1);
|
||||
if(nomNode.equals("?xml") || nomNode.equals("!--") ) continue;
|
||||
No.setNomElt(nomNode);
|
||||
p = Pattern.compile("\\p{Space}[.[^ =]]{1,}=\"[.[^\"]]{1,}\"");
|
||||
m = p.matcher(codexml);
|
||||
while(m.find()) {
|
||||
String attr = codexml.substring(m.start()+1, m.end()).replace("\"", "");
|
||||
Pattern p2 = Pattern.compile("=");
|
||||
Matcher m2 = p2.matcher(attr);
|
||||
if(m2.find()) {
|
||||
attributsNode.put(attr.substring(0, m2.start()), attr.substring(m2.start()+1,attr.length()));
|
||||
}
|
||||
}
|
||||
No.setAttributs(attributsNode);
|
||||
}
|
||||
suitenodes.add(No);
|
||||
No.setClose(true);
|
||||
continue;
|
||||
}
|
||||
|
||||
//contenu à ajouter au node
|
||||
codexml = codexml.replaceAll("(\n|\r)", "");
|
||||
p = Pattern.compile("^[.[^>\"<]]{1,}$");
|
||||
m = p.matcher(codexml);
|
||||
if(m.find()) {
|
||||
try {
|
||||
int index = suitenodes.size()-1;
|
||||
for(int j = index; index>=0; j--) {
|
||||
if(!suitenodes.get(j).isClose()) {
|
||||
if(suitenodes.get(j).getContenu().size()==index-j) {
|
||||
suitenodes.get(j).setContenu(codexml.substring(m.start(), m.end()));
|
||||
}else {
|
||||
int nbContenuVide = index-j-suitenodes.get(j).getContenu().size();
|
||||
for(int k = 0 ; k<nbContenuVide; k++) {
|
||||
suitenodes.get(j).setContenu("");
|
||||
}
|
||||
suitenodes.get(j).setContenu(codexml.substring(m.start(), m.end()));
|
||||
}
|
||||
break;
|
||||
}else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
continue;
|
||||
}catch (Exception e) {
|
||||
System.out.println(e);
|
||||
System.out.println();
|
||||
System.out.println("\t****************************");
|
||||
System.out.println("\t** the file is corrupted **");
|
||||
System.out.println("\t****************************");
|
||||
System.out.println();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// poupée russe
|
||||
// Fermeture de node classique </nomNode>
|
||||
p = Pattern.compile("^</[[^< ].]{1,}>{1}$");
|
||||
m = p.matcher(codexml);
|
||||
if(m.find()) {
|
||||
nomNode = codexml.substring(2, m.end()-1);
|
||||
ArrayList<nodeAC> lesNodesEnfants = new ArrayList<nodeAC>();
|
||||
int niveau = 0;
|
||||
for(int h=suitenodes.size()-1; h >=0;h--) {
|
||||
if(suitenodes.get(h).getNomElt().equals(nomNode) && !suitenodes.get(h).isClose()) {
|
||||
suitenodes.get(h).setNodes(lesNodesEnfants);
|
||||
suitenodes.get(h).setClose(true);
|
||||
suitenodes.get(h).setLevel(niveau);
|
||||
break;
|
||||
}else {
|
||||
if(!suitenodes.get(h).isClose()) {
|
||||
System.out.println("Erreur fatale ... le node " + suitenodes.get(h).getNomElt() +" n'est pas close.");
|
||||
System.out.println(codexml);
|
||||
System.exit(0);
|
||||
}
|
||||
lesNodesEnfants.add(suitenodes.get(h));
|
||||
}
|
||||
}
|
||||
for(int x=0; x< lesNodesEnfants.size();x++) {
|
||||
suitenodes.remove(lesNodesEnfants.get(x));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
//remettre dans l'ordre les nodes de suitenode
|
||||
suitenodes = RemettreOrdreStructure(suitenodes);
|
||||
suitenodes = renverseOrdre(suitenodes);
|
||||
|
||||
//initialisation du nodeAC;
|
||||
nod = new nodeAC();
|
||||
|
||||
if(suitenodes.size()==1) {
|
||||
nod.setNomElt(suitenodes.get(0).getNomElt());
|
||||
nod.setAttributs(suitenodes.get(0).getAttributs());
|
||||
nod.setNodes(suitenodes.get(0).getNodes());
|
||||
nod.getContenu().addAll(suitenodes.get(0).getContenu());
|
||||
}
|
||||
|
||||
if(suitenodes.size()>1) {
|
||||
nod.setNomElt("fichier");
|
||||
nod.setNodes(suitenodes);
|
||||
|
||||
}
|
||||
|
||||
setParentsAndLevel(nod,0);
|
||||
|
||||
return nod;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Très important car remet dans l'ordre le node.<br>
|
||||
* <br>
|
||||
* @param N
|
||||
* @return
|
||||
*/
|
||||
private ArrayList<nodeAC> RemettreOrdreStructure(ArrayList<nodeAC> N) {
|
||||
ArrayList<nodeAC> ordre = new ArrayList<nodeAC>();
|
||||
for(int i = N.size()-1; i>=0; i--) {
|
||||
N.get(i).setNodes(RemettreOrdreStructure(N.get(i).getNodes()));
|
||||
ordre.add(N.get(i));
|
||||
}
|
||||
return ordre;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Renverse l'ordre d'ArrayList de nodes.
|
||||
* @param N une ArrayList de nodes.
|
||||
* @return une ArrayList de nodes.
|
||||
*/
|
||||
private ArrayList<nodeAC> renverseOrdre(ArrayList<nodeAC> N){
|
||||
ArrayList<nodeAC> ordre = new ArrayList<nodeAC>();
|
||||
for(int i = N.size()-1; i>=0; i--) {
|
||||
ordre.add(N.get(i));
|
||||
}
|
||||
return ordre;
|
||||
}
|
||||
|
||||
/**
|
||||
* Insère les parents comme informations.
|
||||
* @param N
|
||||
*/
|
||||
private void setParentsAndLevel(nodeAC N, Integer level) {
|
||||
level++;
|
||||
N.setLevel(level);
|
||||
for(int i = 0 ; i < N.getNodes().size();i++) {
|
||||
N.getNodes().get(i).setParent(N);
|
||||
setParentsAndLevel(N.getNodes().get(i),level);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Getter pour obtenir le node construit.
|
||||
* @return
|
||||
*/
|
||||
public nodeAC getNod() {
|
||||
return nod;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
@ -1,789 +0,0 @@
|
||||
package nodeAC;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public class nodeAC implements Cloneable{
|
||||
|
||||
private String nomElt = "";
|
||||
private ArrayList<nodeAC> Nodes = new ArrayList<nodeAC>();
|
||||
private Attributs attributs = new Attributs();
|
||||
private ArrayList<String> contenu = new ArrayList<String>();
|
||||
private int level = 0;
|
||||
private boolean close=false;
|
||||
private nodeAC parent = null;
|
||||
|
||||
/**
|
||||
* Node vide
|
||||
*/
|
||||
public nodeAC() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Création d'un node pour l'évaluation des étudiants.<br>
|
||||
* Ce node permet la réalisation du fichier d'analyse des fichier étudiants.<br>
|
||||
* @param namenode Le nom du node.
|
||||
* @param resultatcompare Le résultat de la comparaison.
|
||||
* @param attributSujet L'attribut du sujet (celui qui est évalué).
|
||||
* @param valueStudent Valeur de l'attribut de létudiant.
|
||||
* @param valueSujet Valeur de l'attribut du sujet.
|
||||
* @param niveau Le niveau.
|
||||
* @param point Le nombre de point.
|
||||
* @param nameElt Le nom de l'élément.
|
||||
*/
|
||||
public nodeAC(String namenode, String resultatcompare , String attributSujet , String valueStudent, String valueSujet, Integer niveau, Integer point, String nameElt) {
|
||||
nomElt = namenode;
|
||||
if(valueStudent==null) valueStudent="null";
|
||||
attributs.put("resultat", resultatcompare);
|
||||
attributs.put("attribut", attributSujet);
|
||||
attributs.put("valueStudent", valueStudent);
|
||||
attributs.put("valueSujet", valueSujet);
|
||||
attributs.put("niveau", String.valueOf(niveau));
|
||||
attributs.put("point", String.valueOf(point));
|
||||
attributs.put("elt", nameElt);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Supprime un node enfants
|
||||
* @param index
|
||||
*/
|
||||
public void supprimeNodeEnfant(nodeAC index) {
|
||||
try {
|
||||
Nodes.remove(index);
|
||||
}catch (Exception e) {
|
||||
System.out.println(e.toString());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Supprime un attribut du node
|
||||
* @param key
|
||||
*/
|
||||
public void supprimeAttribut(String key) {
|
||||
try {
|
||||
if(attributs.get(key)!=null) {
|
||||
attributs.remove(key);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.out.println(e.toString());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Up node Child
|
||||
* @param nodeChild
|
||||
*/
|
||||
public void upNodeEnfant(nodeAC nodeChild) {
|
||||
int i = Nodes.indexOf(nodeChild);
|
||||
if(i>0 && i!=-1) {
|
||||
Nodes.remove(i);
|
||||
Nodes.add(i-1,nodeChild);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Up node Child
|
||||
* @param nodeChild
|
||||
*/
|
||||
public void downNodeEnfant(nodeAC nodeChild) {
|
||||
int i = Nodes.indexOf(nodeChild);
|
||||
if(i<=Nodes.size()-1 && i!=-1) {
|
||||
Nodes.add(i+2,nodeChild);
|
||||
Nodes.remove(i);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le nom du node.
|
||||
* @return
|
||||
*/
|
||||
public String getNomElt() {
|
||||
return nomElt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne tous les attributs sous forme d'un Dictionary<Strin,String>.
|
||||
* @return
|
||||
*/
|
||||
public Attributs getAttributs() {
|
||||
return attributs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne TRUE s'il y a au moins un attribut.
|
||||
* @return
|
||||
*/
|
||||
public boolean isHasAttributs() {
|
||||
if(attributs.size()>0) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne TRUE s'il y a au moins un node enfant.
|
||||
* @return
|
||||
*/
|
||||
public boolean isHasEnfant() {
|
||||
if(Nodes.size()>0) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retourne les nodes enfants sous forme d'une ArrayList<node>.
|
||||
* @return
|
||||
*/
|
||||
public ArrayList<nodeAC> getNodes() {
|
||||
return Nodes;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retourne le contenu sous forme de ArrayList<String>
|
||||
* @return
|
||||
*/
|
||||
public ArrayList<String> getContenu() {
|
||||
return contenu;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Change le nom du node.
|
||||
* @param nomElt
|
||||
*/
|
||||
public void setNomElt(String nomElt) {
|
||||
this.nomElt = nomElt;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajoute une collection de node enfant.
|
||||
* @param enfants
|
||||
*/
|
||||
public void setEnfants(ArrayList<nodeAC> enfants) {
|
||||
this.Nodes = enfants;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajoute un node enfant à l'ArrayList<node>.
|
||||
* @param enfants
|
||||
*/
|
||||
public void addNodeEnfants(nodeAC enfants) {
|
||||
this.Nodes.add(enfants);
|
||||
}
|
||||
|
||||
/**
|
||||
* Insère un node enfant dans l'ArrayList<node>.
|
||||
* @param enfant
|
||||
* @param i
|
||||
*/
|
||||
public void insertNodeEnfant(nodeAC enfant, Integer i) {
|
||||
if(i<0) i =0;
|
||||
if(i>this.Nodes.size()-1) i = this.Nodes.size()-1;
|
||||
this.Nodes.add(i,enfant);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Change le contenu de l'élément.<br>
|
||||
* @param contenu Le nouveau contenu de l'élément
|
||||
*/
|
||||
public void setContenu(ArrayList<String> contenu) {
|
||||
this.contenu = contenu;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Change le contenu de l'élément.<br>
|
||||
*
|
||||
* @param contenu Le nouveau contenu de l'élément
|
||||
*/
|
||||
public void setContenu(String contenu) {
|
||||
this.contenu.add(contenu);
|
||||
}
|
||||
/**
|
||||
* Ajoute du contenu au contenu.<br>
|
||||
* @param newContenu Le nouveau contenu à ajouter.
|
||||
*/
|
||||
public void addContenu(String newContenu) {
|
||||
this.contenu.add(newContenu);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Retourne le chemin vers ce node.
|
||||
* @return
|
||||
*/
|
||||
public ArrayList<String> chemin() {
|
||||
ArrayList<String> ListParent = new ArrayList<String>();
|
||||
ListParent.add(this.nomElt);
|
||||
if(parent!=null) ListParent.addAll(parent.chemin());
|
||||
return ListParent;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param attributs
|
||||
*/
|
||||
public void setAttributs(Attributs attributs) {
|
||||
this.attributs = attributs;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param nodes
|
||||
*/
|
||||
public void setNodes(ArrayList<nodeAC> nodes) {
|
||||
this.Nodes = nodes;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param n
|
||||
*/
|
||||
public void addNode(nodeAC n) {
|
||||
if(n!=null) this.Nodes.add(n);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param nodes
|
||||
*/
|
||||
public void addNode(ArrayList<nodeAC> nodes) {
|
||||
for(int i = 0 ; i < nodes.size();i++) {
|
||||
if(nodes.get(i)!=null) this.Nodes.add(nodes.get(i));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public int getLevel() {
|
||||
return level;
|
||||
}
|
||||
|
||||
public void setLevel(int level) {
|
||||
this.level = level;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* overwrite toString pour la JTree
|
||||
*/
|
||||
public String toString()
|
||||
{
|
||||
String retourneIdentifiantNode =this.nomElt;
|
||||
|
||||
if(retourneIdentifiantNode.equals("feuille")) {
|
||||
return retourneIdentifiantNode = retourneIdentifiantNode + " * " + this.attributs.get("nomFeuille");
|
||||
}
|
||||
|
||||
if(retourneIdentifiantNode.equals("colonne")) {
|
||||
return retourneIdentifiantNode = retourneIdentifiantNode + " * " + this.attributs.get("RefColDansClasseur");
|
||||
}
|
||||
|
||||
if(retourneIdentifiantNode.equals("ligne")) {
|
||||
retourneIdentifiantNode = retourneIdentifiantNode + " * " + this.attributs.get("RefLigne");
|
||||
}
|
||||
|
||||
if(retourneIdentifiantNode.equals("cellule")) {
|
||||
retourneIdentifiantNode = retourneIdentifiantNode + " * " + this.attributs.get("RefColDansClasseur") + this.attributs.get("RefLigDansClasseur");
|
||||
}
|
||||
|
||||
|
||||
if(retourneIdentifiantNode.equals("meta:user-defined")) {
|
||||
if(this.attributs.get("meta:name").contains("‽")) return retourneIdentifiantNode = retourneIdentifiantNode + " * " + this.attributs.get("meta:name").substring(0,this.attributs.get("meta:name").lastIndexOf("‽"));
|
||||
retourneIdentifiantNode = retourneIdentifiantNode + " * " + this.attributs.get("meta:name");
|
||||
}
|
||||
|
||||
if(retourneIdentifiantNode.equals("graphic")) {
|
||||
if(this.attributs.get("nom")==null) retourneIdentifiantNode = retourneIdentifiantNode + " * " + this.attributs.get("nomObjet");
|
||||
if(this.attributs.get("nom")!=null) retourneIdentifiantNode = retourneIdentifiantNode + " * " + this.attributs.get("nom");
|
||||
}
|
||||
|
||||
|
||||
|
||||
return retourneIdentifiantNode;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* clone
|
||||
*/
|
||||
public nodeAC clone() throws CloneNotSupportedException {
|
||||
nodeAC b = (nodeAC)super.clone();
|
||||
b.setNodes(new ArrayList<nodeAC>());
|
||||
for(int i = 0 ; i < this.Nodes.size();i++) {
|
||||
if(this.Nodes.get(i)!=null) b.getNodes().add(this.Nodes.get(i).clone());
|
||||
}
|
||||
return b;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le node parent.
|
||||
* @return
|
||||
*/
|
||||
public nodeAC getParent() {
|
||||
return parent;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajoute le node parent.
|
||||
* @param parent
|
||||
*/
|
||||
public void setParent(nodeAC parent) {
|
||||
if(parent.getNodes().contains(this)) {
|
||||
this.parent = parent;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Etat du node fermer;
|
||||
* @return
|
||||
*/
|
||||
public boolean isClose() {
|
||||
return close;
|
||||
}
|
||||
|
||||
/**
|
||||
* Change l'état du node.
|
||||
* @param close
|
||||
*/
|
||||
public void setClose(boolean close) {
|
||||
this.close = close;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
return super.equals(obj);
|
||||
}
|
||||
|
||||
/**
|
||||
* Trie par ordre alphabétique les clés des attributs.
|
||||
*/
|
||||
public Stream<Entry<String, String>> sort() {
|
||||
return attributs.entrySet().stream().sorted(Map.Entry.comparingByKey());
|
||||
}
|
||||
|
||||
//***************************************************************************************************
|
||||
//***************************************************************************************************
|
||||
//***************************************************************************************************
|
||||
//***************************************************************************************************
|
||||
//***************************************************************************************************
|
||||
|
||||
/**
|
||||
* Retourne le premier enfant qui porte le nom "<b>nameNode</b>".<br>
|
||||
* Sinon retourne un node null.<br>
|
||||
*
|
||||
* @param nameNode "<b>nameNode</b>" de l'enfant à retourner.
|
||||
* @return retourne un nouveau node.
|
||||
*/
|
||||
public nodeAC retourneFirstEnfantsByName(String nameNode){
|
||||
if(nameNode==null) return null;
|
||||
if(nameNode.isEmpty()) return null;
|
||||
nodeAC enfant = null;
|
||||
|
||||
if(this.nomElt.equals(nameNode)) return this;
|
||||
|
||||
for(int i = 0 ; i< this.Nodes.size();i++) {
|
||||
if(this.Nodes.get(i)!=null) {
|
||||
if(this.Nodes.get(i).getNomElt().equals(nameNode)) return this.Nodes.get(i);
|
||||
enfant = this.Nodes.get(i).retourneFirstEnfantsByName(nameNode);
|
||||
if(enfant!=null) return enfant;
|
||||
}
|
||||
}
|
||||
|
||||
return enfant;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne la liste des nodes ayant tous les mêmes noms.
|
||||
* @param nameNode
|
||||
* @return
|
||||
*/
|
||||
public ArrayList<nodeAC> retourneListEnfantsByName(String nameNode){
|
||||
ArrayList<nodeAC> ListeNodes = new ArrayList<nodeAC>();
|
||||
|
||||
for(int i = 0 ; i< this.Nodes.size();i++) {
|
||||
if(Nodes.get(i)!=null) {
|
||||
if(Nodes.get(i).getNomElt().equals(nameNode)) {
|
||||
ListeNodes.add(Nodes.get(i));
|
||||
}
|
||||
ArrayList<nodeAC> B = Nodes.get(i).retourneListEnfantsByName(nameNode);
|
||||
if(B.size()>0) ListeNodes.addAll(B);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return ListeNodes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le premier enfant qui porte le nom "<b>nameNode</b>".<br>
|
||||
* Et qui contient un attribut nommé "<b>nameAttribut</b>".<br>
|
||||
* Et dont la valeur de cet attribut est "<b>valueAttribut</b>".<br>
|
||||
* Sinon retourne un node null.<br>
|
||||
* @param nameNode
|
||||
* @param nameAttribut
|
||||
* @param valueAttribut
|
||||
* @return
|
||||
*/
|
||||
public nodeAC retourneFirstEnfantsByName(String nameNode, String nameAttribut, String valueAttribut){
|
||||
if(nameNode==null) return null;
|
||||
if(nameNode.isEmpty()) return null;
|
||||
if(nameAttribut==null) return null;
|
||||
if(nameAttribut.isEmpty()) return null;
|
||||
if(valueAttribut==null) return null;
|
||||
if(valueAttribut.isEmpty()) return null;
|
||||
nodeAC enfant = null;
|
||||
|
||||
for(int i = 0 ; i< this.Nodes.size();i++) {
|
||||
if(this.Nodes.get(i)!=null) {
|
||||
if(this.Nodes.get(i).getNomElt().equals(nameNode)) {
|
||||
if(this.Nodes.get(i).getAttributs().get(nameAttribut)!=null) {
|
||||
if(this.Nodes.get(i).getAttributs().get(nameAttribut).equals(valueAttribut)) {
|
||||
return this.Nodes.get(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
enfant = this.Nodes.get(i).retourneFirstEnfantsByName(nameNode, nameAttribut, valueAttribut);
|
||||
if(enfant!=null) return enfant;
|
||||
}
|
||||
}
|
||||
return enfant;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne la liste des enfants qui porte le nom "<b>nameNode</b>".<br>
|
||||
* Et qui contient un attribut nommé "<b>nameAttribut</b>".<br>
|
||||
* Et dont la valeur de cet attribut est "<b>valueAttribut</b>".<br>
|
||||
* Sinon retourne un node null.<br>
|
||||
* @param nameNode
|
||||
* @return
|
||||
*/
|
||||
public ArrayList<nodeAC> retourneListEnfantsByName(String nameNode, String nameAttribut, String valueAttribut){
|
||||
ArrayList<nodeAC> ListeNodes = new ArrayList<nodeAC>();
|
||||
|
||||
if(this.nomElt.equals(nameNode)) {
|
||||
if(this.attributs.get(nameAttribut)!=null) {
|
||||
if(this.attributs.get(nameAttribut).equals(valueAttribut)) {
|
||||
ListeNodes.add(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for(int i = 0 ; i< this.Nodes.size();i++) {
|
||||
if(Nodes.get(i)!=null) {
|
||||
// nodeAC nod = Nodes.get(i).retourneFirstEnfantsByName(nameNode, nameAttribut, valueAttribut);
|
||||
ArrayList<nodeAC> B = Nodes.get(i).retourneListEnfantsByName(nameNode, nameAttribut, valueAttribut);
|
||||
if(B.size()>0) ListeNodes.addAll(B);
|
||||
}
|
||||
}
|
||||
return ListeNodes;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retourne Le premier parent ayant l'attribut demandé.<br>
|
||||
* Si ne trouve pas, alors retourne un node null.<br>
|
||||
* @param nameAttribut
|
||||
* @return
|
||||
*/
|
||||
public nodeAC retourneParentAyantLAttribut(String nameAttribut) {
|
||||
nodeAC nod = null;
|
||||
if(this.getAttributs().get(nameAttribut)!=null) {
|
||||
nod = this;
|
||||
}else {
|
||||
if(this.parent!=null) {
|
||||
nod = this.parent.retourneParentAyantLAttribut(nameAttribut);
|
||||
}
|
||||
}
|
||||
return nod;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le contenu et ceux des enfants.
|
||||
* @param Elt : node
|
||||
* @param contenu
|
||||
* @return
|
||||
*/
|
||||
public String retourneLesContenusEnfants(String content) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(content);
|
||||
switch (this.getNomElt()) {
|
||||
case "text:tab":
|
||||
sb.append("[tab]");
|
||||
break;
|
||||
case "text:line-break":
|
||||
sb.append("[text:line-break]");
|
||||
break;
|
||||
case "text:s":
|
||||
sb.append("[text:s]");
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
int indexContenu = 0 ;
|
||||
|
||||
if(this.getContenu().size()>indexContenu) {
|
||||
sb.append(this.getContenu().get(indexContenu));
|
||||
indexContenu++;
|
||||
}
|
||||
|
||||
if(this.getNodes().size()>0) {
|
||||
|
||||
for(int i = 0 ; i < this.getNodes().size(); i++) {
|
||||
if(this.getNodes().get(i)!=null) {
|
||||
if(!this.getNodes().get(i).getNomElt().equals("draw:frame")) {
|
||||
sb.append(this.getNodes().get(i).retourneLesContenusEnfants(""));
|
||||
}
|
||||
}
|
||||
|
||||
if(this.getContenu().size()>indexContenu) {
|
||||
sb.append(this.getContenu().get(indexContenu));
|
||||
indexContenu++;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Insère l'attribut addmenu avec la valeur logique.
|
||||
* @param value : valeur logique.
|
||||
*/
|
||||
public void addMenu(Boolean value) {
|
||||
attributs.put("addmenu", String.valueOf(value));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Insère l'attribut evaluer=true à ce node mais aussi aux nodes endfants.<br>
|
||||
* Si ce node est de level== alors insère aussi l'attribut addMenu=true.
|
||||
*/
|
||||
public void evaluerAllChildTrue() {
|
||||
this.attributs.put("evaluer", "true");
|
||||
if(this.level==1) attributs.put("addmenu", "true");
|
||||
for(int i = 0 ; i < this.getNodes().size();i++) {
|
||||
if(this.getNodes().get(i)!=null) this.getNodes().get(i).evaluerAllChildTrue();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Insère l'attribut titre avec le texte.<br>
|
||||
* Supprimer tous les attributs titre1, titre2 et titre3.
|
||||
* @param Text : Le texte à placer.
|
||||
*/
|
||||
public void titre(String Text) {
|
||||
attributs.put("titre", Text);
|
||||
attributs.remove("titre1");
|
||||
attributs.remove("titre2");
|
||||
attributs.remove("titre3");
|
||||
}
|
||||
|
||||
/**
|
||||
* Insère l'attribut titre1 avec le texte.<br>
|
||||
* Supprimer tous les attributs titre, titre2 et titre3.
|
||||
* @param Text : Le texte à placer.
|
||||
*/
|
||||
public void titre1(String Text) {
|
||||
attributs.remove("titre");
|
||||
attributs.put("titre1", Text);
|
||||
attributs.remove("titre2");
|
||||
attributs.remove("titre3");
|
||||
}
|
||||
|
||||
/**
|
||||
* Insère l'attribut titre2 avec le texte.<br>
|
||||
* Supprimer tous les attributs titre, titre1 et titre3.
|
||||
* @param Text : Le texte à placer.
|
||||
*/
|
||||
public void titre2(String Text) {
|
||||
attributs.remove("titre");
|
||||
attributs.remove("titre1");
|
||||
attributs.put("titre2", Text);
|
||||
attributs.remove("titre3");
|
||||
}
|
||||
|
||||
/**
|
||||
* Insère l'attribut titre3 avec le texte.<br>
|
||||
* Supprimer tous les attributs titre, titre1 et titre2.
|
||||
* @param Text : Le texte à placer.
|
||||
*/
|
||||
public void titre3(String Text) {
|
||||
attributs.remove("titre");
|
||||
attributs.remove("titre1");
|
||||
attributs.remove("titre2");
|
||||
attributs.put("titre3", Text);
|
||||
}
|
||||
|
||||
/**
|
||||
* Insère le poids avec sa valeur.
|
||||
* @param P : La valeur.
|
||||
*/
|
||||
public void poids(Double value ) {
|
||||
attributs.put("poids", String.valueOf(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* Insère l'attribut saut.
|
||||
* @param value : valeur logique du saut.
|
||||
*/
|
||||
public void saut(Boolean value) {
|
||||
attributs.put("saut", String.valueOf(value));
|
||||
}
|
||||
|
||||
/**
|
||||
* Insère l'attribut evaluer=false dans ce node uniquement.<br>
|
||||
* Si ce node est level==1 alors l'attribu addMenu=false.
|
||||
*/
|
||||
public void evaluerFalse() {
|
||||
attributs.put("evaluer", "false");
|
||||
if(this.level==1) attributs.put("addmenu", "false");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Insère l'attribut evaluer=false dans toute la branche de la racine à la feuille.
|
||||
*/
|
||||
public void evaluerAllChildFalse() {
|
||||
evaluerFalse();
|
||||
for(int i = 0 ; i < this.getNodes().size();i++) {
|
||||
if(this.getNodes().get(i)!=null) this.getNodes().get(i).evaluerAllChildFalse();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Insère l'attribut evaluer=true dans ce node uniquement.<br>
|
||||
* Et celui de tous les nodes parents jusqu'à la racine.<br>
|
||||
* Si un node parent est de level==1 alors insère aussi l'attribut addMenu=true.
|
||||
*
|
||||
*/
|
||||
public void evaluerTrue() {
|
||||
this.attributs.put("evaluer", "true");
|
||||
if(this.level==1) this.attributs.put("addmenu", "true");
|
||||
if(parent!=null) {
|
||||
this.parent.evaluerTrue();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Supprime tous les nodes ayant le nom nameNode.
|
||||
* @param nameNode
|
||||
* @return
|
||||
*/
|
||||
public void supprimeTousLesNodesEnfantWithThisName(String nameNode){
|
||||
List<nodeAC> listeDelete = new ArrayList<nodeAC>();
|
||||
boolean trouve =false;
|
||||
for(int i =0; i < this.Nodes.size();i++) {
|
||||
if(this.Nodes.get(i)!=null)if(this.Nodes.get(i).getNomElt().equals(nameNode)) {
|
||||
trouve=true;
|
||||
listeDelete.add(this.Nodes.get(i));
|
||||
}
|
||||
}
|
||||
if(trouve) {
|
||||
this.Nodes.removeAll(listeDelete);
|
||||
}
|
||||
for(int i =0; i < this.Nodes.size();i++) {
|
||||
if(this.Nodes.get(i)!=null) this.Nodes.get(i).supprimeTousLesNodesEnfantWithThisName(nameNode);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Supprime tous les nodes contenant l'attribut evaluer=false<br>
|
||||
* ou ne contenant pas l'attribut evaluer.
|
||||
*/
|
||||
public void supprimeTousLesNodesEvaluerFalseOuNull() {
|
||||
List<nodeAC> listeDelete = new ArrayList<nodeAC>();
|
||||
boolean trouve =false;
|
||||
for(int i =0; i < this.Nodes.size();i++) {
|
||||
if(!this.getNodes().get(i).getNomElt().equals("setting")) {
|
||||
if(this.Nodes.get(i).getAttributs().get("evaluer")!=null) {
|
||||
if(!this.Nodes.get(i).getAttributs().get("evaluer").equalsIgnoreCase("true")) {
|
||||
listeDelete.add(this.Nodes.get(i));
|
||||
trouve=true;
|
||||
}
|
||||
}else {
|
||||
listeDelete.add(this.Nodes.get(i));
|
||||
trouve=true;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(trouve) this.Nodes.removeAll(listeDelete);
|
||||
for(int i =0; i < this.Nodes.size();i++) {
|
||||
if(!this.Nodes.get(i).chemin().contains("setting")) {
|
||||
this.Nodes.get(i).supprimeTousLesNodesEvaluerFalseOuNull();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Retourne true si le node ne possède pas de nom.
|
||||
* @return
|
||||
*/
|
||||
public boolean isVide() {
|
||||
if(this.nomElt.isEmpty())return true;
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param nameNode
|
||||
* @return
|
||||
*/
|
||||
public boolean containChildByName(String nameNode) {
|
||||
if(this.nomElt.equals(nameNode)) return true;
|
||||
for(int i = 0 ; i < this.Nodes.size();i++) {
|
||||
if(this.Nodes.get(i).containChildByName(nameNode)) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Aperçu du code XMl du node.
|
||||
* @return
|
||||
*/
|
||||
public String appercuXMLString() {
|
||||
StringBuilder Text = new StringBuilder();
|
||||
Text.append("<"+ this.nomElt);
|
||||
Text.append(" parent=\"" + this.parent.nomElt + "\"");
|
||||
Text.append(" level=\"" + this.level + "\"");
|
||||
|
||||
Set<String> key = this.attributs.keySet();
|
||||
for (String k : key) {
|
||||
Text.append(" " + k + "=\"" + this.attributs.get(k) + "\"");
|
||||
}
|
||||
Text.append(">\r" );
|
||||
if(this.getContenu().size()>0) Text.append(this.getContenu().get(0));
|
||||
for(int i = 0 ; i < this.Nodes.size();i++) {
|
||||
Text.append("\r\t<" + this.Nodes.get(i).getNomElt() + "/>");
|
||||
if(this.getContenu().size()>i+1) Text.append(this.getContenu().get(i+1));
|
||||
}
|
||||
Text.append("\r</"+ this.nomElt+">");
|
||||
return Text.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -7,7 +7,9 @@ import java.util.ArrayList;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import nodeAC.nodeAC;
|
||||
import xml.node;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1124,7 +1126,7 @@ public class outils {
|
||||
* @param B
|
||||
* @return
|
||||
*/
|
||||
public static ArrayList<nodeAC> AjouteDansALesNodesB(ArrayList<nodeAC> A,ArrayList<nodeAC> B){
|
||||
public static ArrayList<node> AjouteDansALesNodesB(ArrayList<node> A,ArrayList<node> B){
|
||||
for(int i=0; i<B.size();i++) {
|
||||
A.add(B.get(i));
|
||||
}
|
||||
|
@ -6,9 +6,6 @@ import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.swing.JOptionPane;
|
||||
|
||||
import nodeAC.Ecriture;
|
||||
import nodeAC.nodeAC;
|
||||
import xml.node;
|
||||
|
||||
/**
|
||||
@ -22,7 +19,7 @@ public class verificationFichierAnalyse {
|
||||
|
||||
public static boolean erreur = false;
|
||||
public static StringBuilder messageErreur = new StringBuilder();
|
||||
static nodeAC verifSujet = new nodeAC();
|
||||
static node verifSujet = new node();
|
||||
|
||||
public verificationFichierAnalyse() throws CloneNotSupportedException{
|
||||
|
||||
|
@ -40,13 +40,6 @@ public class LectureFichierXML extends JFileChooser {
|
||||
}
|
||||
}
|
||||
|
||||
// @Override
|
||||
// protected JDialog createDialog( Component parent ) throws HeadlessException {
|
||||
// JDialog dialog = super.createDialog( parent );
|
||||
// Image img = new ImageIcon(getClass().getResource("/resources/evalwriter.png") ).getImage();
|
||||
// dialog.setIconImage(img);
|
||||
// return dialog;
|
||||
// }
|
||||
|
||||
|
||||
/**
|
||||
|
@ -18,10 +18,9 @@ import org.xml.sax.SAXException;
|
||||
import net.lingala.zip4j.core.ZipFile;
|
||||
import net.lingala.zip4j.model.FileHeader;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Class permettant la lecture des différents fichiers remis par les étudiants.
|
||||
*/
|
||||
public class LecturesDossiers {
|
||||
|
||||
|
||||
|
@ -9,9 +9,16 @@ public class transformeXLMtoNode {
|
||||
public static node nodeRoot = new node("root");
|
||||
private static String codeXML = "";
|
||||
|
||||
public transformeXLMtoNode(String code, boolean test, node nodePrecedent) {
|
||||
|
||||
/**
|
||||
* Permet de transformer un code XML en node.
|
||||
* @param code : Le code XML dans une String.
|
||||
* @param testCode : Boolean si vrai alors ignore le code XML fourni.
|
||||
* @param nodePrecedent : le node précédent.
|
||||
*/
|
||||
public transformeXLMtoNode(String code, boolean testCode, node nodePrecedent) {
|
||||
|
||||
if(test) {
|
||||
if(testCode) {
|
||||
codeXML = codeXMLPourTest();
|
||||
}else {
|
||||
codeXML=code;
|
||||
@ -43,9 +50,7 @@ public class transformeXLMtoNode {
|
||||
String lesAttributs = m.group("attribut");
|
||||
affecteAttribut(lastNode.retourneLastEnfant(),lesAttributs);
|
||||
String A = lesAttributs.substring(lesAttributs.length()-1, lesAttributs.length());
|
||||
if(A.equals("/")) {
|
||||
continue;
|
||||
}
|
||||
if(A.equals("/")) continue;
|
||||
lastNode = lastNode.retourneLastEnfant();
|
||||
continue;
|
||||
}
|
||||
@ -85,7 +90,11 @@ public class transformeXLMtoNode {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Nettoyage préliminaire du code XML
|
||||
* @param codeXML
|
||||
* @return
|
||||
*/
|
||||
private String nettoyagePreliminaire(String codeXML) {
|
||||
codeXML = codeXML.replace("\t","").replace("\r", "").replace("\n", "");
|
||||
// Suppression du node <?xml >
|
||||
@ -97,7 +106,12 @@ public class transformeXLMtoNode {
|
||||
return codeXML;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Affecte les attributs à un node.
|
||||
* Cette procédure est très importante pour la lecture du XML en node.
|
||||
* @param lastEnfant
|
||||
* @param attributs
|
||||
*/
|
||||
private void affecteAttribut(node lastEnfant, String attributs) {
|
||||
// (?<nameAttribut>[^= ]+?)="(?<valueAttribut>.*?)"|(?<attribut>\b[^= ]+?\b)
|
||||
Pattern p = Pattern.compile("(?<nameAttribut>[^=\\s]+?)=\\\"(?<valueAttribut>.*?)\\\"|(?<attribut>\\b[^\\s]+?\\b)");
|
||||
@ -114,7 +128,10 @@ public class transformeXLMtoNode {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Ce code XML pour tester l'application
|
||||
* @return
|
||||
*/
|
||||
private String codeXMLPourTest() {
|
||||
return "<!--Commentaire du test-->"
|
||||
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
|
||||
@ -133,7 +150,7 @@ public class transformeXLMtoNode {
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le node après transformationXMLtoNode
|
||||
* Retourne le node après transformationXMLtoNode. Le nom de la racine est root.
|
||||
* @return
|
||||
*/
|
||||
public static node getNodeRoot() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user