analyseWriter/src/fenetres/ChargeFichierXML.java

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_node_commandesSujet;
import cXML.node;
/**
* Chargement d'un fichier d'analyse
* @author pabr6
*
*/
public class ChargeFichierXML extends JFileChooser {
private static final long serialVersionUID = 1L;
/**
* Chragement d'un fichier d'analyse.<br>
* Le premier node doit être le node fichier.
*/
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_node_commandesSujet();
}
} 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;
}
return true;
}
}