analyseWriter/src/fenetres/ChargeFichierXML.java
pablo rodriguez 6c88b6b3b4 V4.4.4
Préparation pour nouvelle version avec gestion de la base des
évaluations.
La méthode analyseStyle peut être appliqué au niveau des styles de page
dans les en-têtes ou les pied de page.
2023-04-01 09:54:28 +02:00

161 lines
5.0 KiB
Java

package fenetres;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.HeadlessException;
import java.awt.Image;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;
import MEPTL.commandes;
import MEPTL.meptl;
import MEPTL.verificationFichierAnalyse;
import cXML.node;
public class ChargeFichierXML extends JFileChooser {
/**
*
*/
private static final long serialVersionUID = 1L;
public ChargeFichierXML() {
setDialogTitle("Sélectionner un fichier d'analyse");
FileNameExtensionFilter filter = new FileNameExtensionFilter("Fichier d'analyse .XML", "xml");
setFileFilter(filter);
if(!commandes.PathFilenameAnalysis.isEmpty()) {
File file = new File(commandes.PathFilenameAnalysis ); //+ "\\" + utils.filename + ".xml"
setCurrentDirectory(file);
}
setPreferredSize(new Dimension(550, 420));
int response = showOpenDialog(null);
if(response == JFileChooser.APPROVE_OPTION) {
File file = new File(getSelectedFile().getAbsolutePath());
String ext = file.getName().substring(file.getName().lastIndexOf("."));
if(ext.equals(".xml")){
openFileXML(file);
}
}
}
@Override
protected JDialog createDialog( Component parent ) throws HeadlessException {
JDialog dialog = super.createDialog( parent );
Image img = new ImageIcon(getClass().getResource("/evalwriter.png") ).getImage();
dialog.setIconImage(img);
return dialog;
}
/**
*
* @param file
*/
private void openFileXML(File file) {
commandes.fichierAnalyseValide=true;
if(commandes.os.contains("Win")) {
commandes.path = file.getPath().substring(0,file.getPath().lastIndexOf("\\")); // Sur Windows
}else {
commandes.path = file.getPath().substring(0,file.getPath().lastIndexOf("/")); // Sur mac & Linux
}
String PathFilenameAnalysis = getCurrentDirectory().getPath();
String nameSujet = file.getName().toString();
BufferedReader br;
try {
br = new BufferedReader(
new InputStreamReader(
new FileInputStream(file.getAbsoluteFile()), "UTF-8"));
String line;
StringBuilder targetString = new StringBuilder();
while ((line = br.readLine()) != null) {
targetString.append(line);
}
//node.node2(targetString);
node sujetLoad = new node(targetString.toString().replace("\t","").replace("\r", "").replace("\n", ""));
//Supprime l'historique des modifications pour pouvoir créer le fichier d'nalyse
sujetLoad.supprimeTousLesNodesEnfantWithThisName("text:tracked-changes");
sujetLoad.supprimeTousLesNodesEnfantWithThisName("text:deletion");
sujetLoad.supprimeTousLesNodesEnfantWithThisName("text:change-start");
sujetLoad.supprimeTousLesNodesEnfantWithThisName("text:change-end");
sujetLoad.supprimeTousLesNodesEnfantWithThisName("text:change");
sujetLoad.supprimeTousLesNodesEnfantWithThisName("text:bookmark-start");
sujetLoad.supprimeTousLesNodesEnfantWithThisName("text:bookmark-end");
// Vérification de la conformité du fichier d'analyse
if(!fichierSujetValide(sujetLoad)) {
JOptionPane.showMessageDialog(null, "Le fichier d'analyse n'est pas valide.");
}else {
commandes.initialiseParametresSettingProprietes();
commandes.sujet = sujetLoad;
commandes.sujetSauvegarde = commandes.sujet.clone();
commandes.PathFilenameAnalysis = PathFilenameAnalysis;
commandes.nameSujet = nameSujet;
//Chargement des paramètres du fichier d'analyse
System.out.println( "Chargement des paramètres du fichier d'analyse");
meptl.chargementParametresFichierAnalyse();
// Rechercher des erreurs dans le fichier d'analyse
System.out.println( "Vérification du fichier d'analyse" );
new verificationFichierAnalyse();
}
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
} catch (Exception e) {
}
}
/**
* Verification rapide du fichier.</br>
* Vérifie la présence du node fichier (le premier node).</br>
* Vérifie la présence de l'attribut progression dans le node fichier.</br>
* @return
*/
public static boolean fichierSujetValide (node SujetLoad) {
if(SujetLoad==null) {System.out.println("Le fichier est null."); return false;}
if(!SujetLoad.getNomElt().equals("fichier")){
System.out.println("Pas de node fichier.");
return false;
}else {
if(SujetLoad.getAttributs().get("progression")==null) {
System.out.println("Pas de node fichier.");
return false;
}
}
return true;
}
}