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.
* 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.
* Vérifie la présence du node fichier (le premier node).
* Vérifie la présence de l'attribut progression dans le node fichier.
* @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; } }