Transformer et chemin absolu [Résolu]

cs_harleen 22 Messages postés lundi 10 novembre 2008Date d'inscription 20 juillet 2009 Dernière intervention - 7 juil. 2009 à 16:12 - Dernière réponse : cs_harleen 22 Messages postés lundi 10 novembre 2008Date d'inscription 20 juillet 2009 Dernière intervention
- 8 juil. 2009 à 16:42
Bonjour à tous,


Je travaille actuellement sur une application de conversion d'un
standard XML à un autre, je vais les nommer std 1 et std 2 par facilité.

Pour cela, j'ai deux boutons de traduction : de std1 à std2 et de std2 à std1.


Les transformations sont gérées par deux fichiers .xsl qui fonctionnent.


Cependant, je rencontre un problème au niveau de l'enregistrement du
fichier de sortie généré à la suite du clic sur le bouton de traduction.

En effet, j'ai un JFileChooser en entrée avec lequel je sélectionne un
fichier en entrée (qui a plus la fonction "ouvrir un fichier") et un
deuxième JFileChooser en sortie qui permettra soit d'écraser un fichier
.xml existant, soit de se placer où l'on souhaite et d'enregistrer avec
le fichier traduit en .xml.


Le JFileChooser d'ouverture de fichier est OK.

Cependant, j'ai fait de nombreux tests pour le deuxième JFileChooser
afin d'enregistrer le fichier de sortie où je souhaite, mais je n'y
arrive pas : cela bloque au niveau de transformer, en effet, pour ce
qui est du fichier.xsl de transformation, de la source ou de la sortie,
on ne peut passer qu'un seul nom de fichier.


Or, lorsqu'on ne passe qu'un seul nom de fichier, le fichier de sortie
apparait dans une sorte de répertoire par défaut lié, je pense, au
paramétrage des fichiers properties d'eclipse.


comment passer un chemin absolu afin d'enregistrer mon fichier de sortie où je souhaite?


J'ai tenté d'utiliser la méthode renameTo afin de déplacer la sortie
vers l'absolutePath du JFileChooser de sortie, sans succès...


Avez-vous d'autres idées?


Je vous remercie vivement d'avance

Harleen
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
cs_harleen 22 Messages postés lundi 10 novembre 2008Date d'inscription 20 juillet 2009 Dernière intervention - 8 juil. 2009 à 16:42
3
Merci
Salut Darksidious,

Je suis d'accord avec toi, j'ai compris que vous vouliez mon code afin de pouvoir tester directement, autant pour moi...
J'ai finalement pu résoudre mon problème moi-même :
Pour ceux que ça intéresserait, j'ai modifié les constructeurs de StreamSource et StreamResult en leur passant un File en paramètre et non un String comme auparavant, de même, j'ai retiré l'instruction :
System.setProperty("javax.xml.transform.TransformerFactory",
                "net.sf.saxon.TransformerFactoryImpl");

Tout fontionne désormais, merci de votre soutien

Harleen

Merci cs_harleen 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_harleen
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 7 juil. 2009 à 16:41
0
Merci
Salut,

Sans voir le code que tu utilises, on va pas pouvoir faire grand chose pour toi !
Commenter la réponse de cs_DARKSIDIOUS
cs_harleen 22 Messages postés lundi 10 novembre 2008Date d'inscription 20 juillet 2009 Dernière intervention - 8 juil. 2009 à 09:58
0
Merci
Salut et merci de ta réponse rapide,

Je tenais dans un  premier temps à exposer le problème de la manière la plus claire possible dans un premier temps.
Voici mon code actuellement :

package AppliConversion;
import gridbagLayout.ExampleFileFilter;

import java.awt.Color;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.filechooser.FileSystemView;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;

@SuppressWarnings("serial")
public class FenetreSaisie extends JFrame{
    //labels
    private JLabel label_presentation_fenetre;
    private JLabel label_entree;
    private JLabel label_sortie;
   
    //zones de texte
    private JTextField txtlocalPath = new JTextField(32);
    private JTextField txtSortie = new JTextField(32);
   
    //fichiers d'entrée et de sortie
    File inputFile;
    File outputFile;

    //boutons
    private JButton btnparcourirentree = new JButton("Parcourir...");     
    private JButton btnparcourirsortie = new JButton("Parcourir...");
    private JButton btntradsimple = new JButton("ebXML -> XML");
    private JButton btntradcomplique = new JButton("XML -> ebXML");
    //private JButton btnZero = new JButton ("Remise à zero");
   
    //creation du panel
    JPanel panel = new JPanel();
   
    //enumération
    private XmlType xmlType;

    //liste des erreurs
    private List<Error> listErrors =  new ArrayList<Error>();

    //JLabel pour afficher message d'erreur
    JTextArea message_erreur = new JTextArea(5,40);
   
    //Constructeur de la fenêtre
    public FenetreSaisie(){
        super();
        txtlocalPath.setEditable(false);
        inputFile = null;
        outputFile = null;
        xmlType = null;
        setTitle("Utilitaire de conversion");//On donne un titre à l'application
       
        xmlType = null;
        build();//On initialise notre fenêtre       
       
    }
   
    //initialisation Fenetre
    private void build(){
        setSize(500,350); //On donne une taille à notre fenêtre
        setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
        setResizable(false); //On permet le redimensionnement
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //On dit à l'application de se fermer lors du clic sur la croix
        setContentPane(buildContentPane());
        message_erreur.setText("Veuillez sélectionner un fichier en entrée");
        message_erreur.setForeground(Color.BLUE);
        btnparcourirsortie.setEnabled(false);
    }
   
    private JPanel buildContentPane(){
       
        //affectation du Layout GridBagLayout au panel
        panel.setLayout(new GridBagLayout());
       
       
        //création des composants
        label_presentation_fenetre = new JLabel("Informations");
            //creation du bouton Parcourir afin de chercher la source
        btnparcourirentree.addActionListener(new BoutonParcourirEntreeListener());
        btnparcourirentree.setFocusable(false);
        btnparcourirsortie.addActionListener(new BoutonParcourirSortieListener());
        btnparcourirsortie.setFocusable(false);
       
            //creation de labels pour informer l'utilisateur
        label_entree = new JLabel("Fichier à traduire");
        label_sortie = new JLabel("Saisir le nom du fichier XML de sortie");
       

            //creation du bouton Traduire ebXML vers XML
        btntradsimple.addActionListener(new BoutonTradSimpleListener());
        btntradsimple.setToolTipText("Traduit du ebXML vers le XML simplifié");   
       
            //creation du bouton traduire XML vers ebXML
        btntradcomplique.addActionListener(new BoutonTradCompliqueListener());       
        btntradcomplique.setToolTipText("Traduit du XML simplifié vers le ebXML");       
       
            //creation du bouton de remise à zero
        //btnZero.addActionListener(new BoutonZeroListener());
       
        //Ajout des composants en spécifiant les contraintes
         GridBagConstraints gbc = new GridBagConstraints();       

        panel.setPreferredSize(getPreferredSize());
       
        message_erreur.setEditable(false);
        message_erreur.setBorder(BorderFactory.createEtchedBorder());
       
       
        gbc.gridx =0;
        gbc.gridy = 0;
        gbc.gridwidth = 0;
        gbc.gridheight = 1;          
        gbc.anchor = GridBagConstraints.BASELINE_LEADING;
        gbc.fill =GridBagConstraints.CENTER;
        gbc.weighty = 0;
        panel.add(label_presentation_fenetre,gbc);
       
        gbc.weighty = 1.0;
        gbc.gridx =0;
        gbc.gridy = 1;
        gbc.gridwidth = 0;
        gbc.gridheight = 1;          
        gbc.anchor = GridBagConstraints.NORTH;
        gbc.fill = GridBagConstraints.BOTH;
        panel.add(message_erreur, gbc);

        gbc.gridx = 0;
        gbc.gridy = 2;       
        gbc.gridwidth =10 ;
        gbc.gridheight =1;
        gbc.anchor = GridBagConstraints.CENTER;
        gbc.fill = GridBagConstraints.HORIZONTAL;
        panel.add(label_entree, gbc);

        gbc.gridx = 0;
        gbc.gridy = 3;       
        gbc.gridwidth = 1;
        gbc.gridheight = 1;
        gbc.anchor = GridBagConstraints.WEST;
        gbc.fill = GridBagConstraints.NONE;
        panel.add(txtlocalPath, gbc);

       
        gbc.weighty = 3.0;
        gbc.gridx = 6;
        gbc.gridy = 3;
        gbc.gridwidth = GridBagConstraints.BASELINE_LEADING;
        gbc.gridheight = 0;
        gbc.anchor = GridBagConstraints.BASELINE_LEADING;
        gbc.fill = GridBagConstraints.BOTH;
        panel.add(btnparcourirentree, gbc);    
 
        gbc.gridx = 0;
        gbc.gridy = 4;
        gbc.gridwidth = 1;
        gbc.gridheight =1;
        gbc.anchor = GridBagConstraints.BASELINE_LEADING;
        gbc.fill = GridBagConstraints.HORIZONTAL;
        panel.add(label_sortie, gbc);
       
        
        gbc.gridx = 0;
        gbc.gridy = 5;
        gbc.gridwidth = GridBagConstraints.REMAINDER;
        gbc.gridheight = 1;
        gbc.anchor = GridBagConstraints.BASELINE_LEADING;
        gbc.fill = GridBagConstraints.NONE;
        panel.add(txtSortie, gbc);
       
        gbc.weighty = 3.0;
        gbc.gridx = 6;
        gbc.gridy = 5;
        gbc.gridwidth = GridBagConstraints.BASELINE_LEADING;
        gbc.gridheight = 0;
        gbc.anchor = GridBagConstraints.BASELINE_LEADING;
        gbc.fill = GridBagConstraints.BOTH;
        panel.add(btnparcourirsortie, gbc);
       
        gbc.gridx = 0;
        gbc.gridy = 6;        
        gbc.gridwidth = 1;
        gbc.gridheight =1;
        gbc.anchor = GridBagConstraints.BASELINE_LEADING;
        gbc.fill = GridBagConstraints.SOUTHWEST;
        panel.add(btntradsimple, gbc);

        gbc.gridx = 3;
        gbc.gridy = 6;
        gbc.gridwidth = GridBagConstraints.REMAINDER;
        gbc.gridheight = 1;
        gbc.anchor = GridBagConstraints.BASELINE_LEADING;
        gbc.fill = GridBagConstraints.SOUTHEAST;
        panel.add(btntradcomplique, gbc);  

      //DocumentListener rajouté pour les zones de texte entrée et sortie
        txtlocalPath.getDocument().addDocumentListener(new DocumentListener() {
            @Override
            public void changedUpdate(DocumentEvent e) {
                VerifAll();
            }
       
            @Override
            public void insertUpdate(DocumentEvent e) {
                VerifAll();
            }
            @Override
            public void removeUpdate(DocumentEvent e) {
                VerifAll();
            }
        });
 
        txtSortie.getDocument().addDocumentListener(new DocumentListener() {
            @Override
            public void changedUpdate(DocumentEvent e) {
                VerifAll();
            }
            @Override
            public void insertUpdate(DocumentEvent e) {
                VerifAll();
            }
            @Override
            public void removeUpdate(DocumentEvent e) {
                VerifAll();
            }
        });
        //fin des DocumentListener       
       
       
        btntradsimple.setEnabled(false);
        btntradcomplique.setEnabled(false);

        return panel;
    }

    //classe interne permettant d'écouter le bouton Parcourir pour la sélection d'un fichier en entrée
    //on utilise un JFileChooser
    class BoutonParcourirEntreeListener  implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent event)
        {       
            message_erreur.setText("");
            txtSortie.setText("");

            FileSystemView vueSysteme = FileSystemView.getFileSystemView();
            File defaut = vueSysteme.getDefaultDirectory(); 
            JFileChooser chooser = new JFileChooser(defaut);
           
            //rajout d'un filtre afin de ne garder que les documents .xml
            ExampleFileFilter filter = new ExampleFileFilter();
            filter.addExtension("xml");           
            filter.setDescription("fichiers .xml");
            chooser.setFileFilter(filter);
           
            //on ne garde que les fichiers
            chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
            int choix = chooser.showOpenDialog(null);
           
            //cas où on sélectionne un fichier à l'aide du bouton Parcourir
            if (choix == JFileChooser.APPROVE_OPTION) {
                inputFile = chooser.getSelectedFile();
                if(inputFile.exists()){
                txtlocalPath.setText(inputFile.getPath());
                txtSortie.requestFocus();
                }
                else{
                    message_erreur.setText("Le fichier "+inputFile.getName()+ " n'existe pas" );
                    txtlocalPath.setText("");
                }
               

            }
            //pas besoin de rajouter où l'utilisateur annule l'opération : JFileChooser.CANCEL_OPTION
            }
       
    }//fin classe BoutonParcourirListener       
   
   
    //classe interne permettant d'écouter le bouton Parcourir pour la sélection d'un fichier ou d'un répertoire en sortie
    //on utilise un JFileChooser
    //si on sélectionne un répertoire, alors va créer le fichier à cet endroit,
    //si on sélectionne un fichier, alors va deamnder à écraser le fichier ou non.
    class BoutonParcourirSortieListener  implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent event)
        {       
            message_erreur.setText("");
            txtSortie.setText("");

            FileSystemView vueSysteme = FileSystemView.getFileSystemView();
            File defaut = vueSysteme.getDefaultDirectory(); 
            JFileChooser chooser = new JFileChooser(defaut);
           
            //rajout d'un filtre afin de ne garder que les documents .xml
            ExampleFileFilter filter = new ExampleFileFilter();
            filter.addExtension("xml");           
            filter.setDescription("fichiers .xml");
            chooser.setFileFilter(filter);
           
            //soit on prend les fichiers, soit on prend les répertoires
            chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
            int choix = chooser.showOpenDialog(null);
           
            //cas où on sélectionne un fichier à l'aide du bouton Parcourir
            if (choix == JFileChooser.APPROVE_OPTION) {
                outputFile = chooser.getSelectedFile();//le fichier de sortie
               
                if(outputFile.exists()){
                    btnparcourirsortie.setEnabled(true);
                    if(outputFile.getName().endsWith(".xml")){   
                    boolean afficher = (txtSortie.getText().length() > 4 && ".xml".equalsIgnoreCase(txtSortie.getText().substring(txtSortie.getText().length()-4)));

                    JOptionPane jop = new JOptionPane();
                    int option = jop.showConfirmDialog(null, "Le fichier existe déjà, souhaitez-vous l'écraser ?", "Fichier existant", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
                        if(option == JOptionPane.NO_OPTION || option==JOptionPane.CANCEL_OPTION)
                        {
                            btntradsimple.setEnabled(false);
                            btntradcomplique.setEnabled(false);
                        }
                        else{//si l'utilisateur clique sur Yes, alors le fichier qui est existant sera écrasé
                            if(xmlType == XmlType.COMPLEX){             
                                txtSortie.setText(outputFile.getName());
                                btntradsimple.setEnabled(true);
                                message_erreur.setText("le fichier "+outputFile.getName()+" sera écrasé");
   
                            }
                            else if (xmlType == XmlType.SIMPLE){
                                txtSortie.setText(outputFile.getName());
                                btntradcomplique.setEnabled(true);
                                message_erreur.setText("le fichier "+outputFile.getName()+" sera écrasé");
   
                            }      
                        }//fin du else
                    }
               
                else{ //si le fichier sélectionné n'est pas un .xml
                    message_erreur.setText("Veuillez sélectionner un fichier .xml");
                    message_erreur.setForeground(Color.RED);
                    }
                }
                    else{ //si le fichier n'existe pas
                        if(xmlType == XmlType.COMPLEX){             
                            txtSortie.setText(outputFile.getName());
                            btntradsimple.setEnabled(true);
                           

                        }
                        else if (xmlType == XmlType.SIMPLE){
                            txtSortie.setText(outputFile.getName());
                            btntradcomplique.setEnabled(true);

                        }           
                    }
                }
            }//fin du if (choix == JFileChooser.APPROVE_OPTION)           
       
    }//fin classe BoutonParcourirSortieListener

   
    //classe BoutonTradSimpleListener permettant d'écouter le bouton btntradsimple : pour passer du ebXML vers le XML simple
    class BoutonTradSimpleListener  implements ActionListener{

        public void actionPerformed(ActionEvent arg0) {
           
        //récupérer le contenu de la textBox et traduire   
         System.setProperty("javax.xml.transform.TransformerFactory",
        "net.sf.saxon.TransformerFactoryImpl");
       
        //on crée une fabrique de transformeurs
        TransformerFactory factory = TransformerFactory.newInstance();
       
        //fichier xsl de transformation
        File fxsl = new File("transfo.xsl");       
       
        //fichier traduit et déplacé à l'endroit spécifié par le path
        String newpath = outputFile.getAbsolutePath();
        File nouveaufic = new File(newpath);
       
        //fichier xml source de type source
       
            Source xmlSource = new StreamSource(decoupeURL(txtlocalPath.getText()));
           
           
        //nom du fichier de sortie de type Result
           
            Result sortie = new StreamResult(nouveaufic.getName());
           
        //transformer
        Transformer transformer;
        try {
            //on récupère un transformeur à partir d'une fabrique de transformeurs
            transformer = factory.newTransformer(new StreamSource(fxsl));

            //encoding
            // transformer.setOutputProperty("encoding", "ISO-8859-1");
            transformer.setOutputProperty("encoding", "UTF-8");
           
            //pour l'indentation
            transformer.setOutputProperty(OutputKeys.INDENT,"yes");
           
            /*Utilisation d'un parser DOM ou SAX sans DTD ou xml schema pour la validation,
             * s'il ya une erreur de parsing alors le fichier XML n'est pas bien formé càd NON XML.
             */
            DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();           
            DocumentBuilder constructeur = fabrique.newDocumentBuilder();           
            // lecture du contenu d'un fichier XML avec DOM
            File xml = new File(decoupeURL(txtlocalPath.getText()));
            Document document = constructeur.parse(xml);
           
            //transformation en prenant en paramètre le fichier xml source et fait le fichier xml de sortie           
            transformer.transform(xmlSource, sortie );
            File old = new File(sortie.toString());
           
            File oldfile = new File(old.getAbsolutePath());

            File newfile = new File(outputFile.getAbsolutePath());
           
            System.out.println("Old File or directory name : "+ oldfile);
            System.out.println("New File or directory name : "+ newfile);
           
            boolean Rename = oldfile.renameTo(newfile);
             

              if(!Rename)
        {

              System.out.println("File or directory does not rename successfully.");

                System.exit(0);
         
          }
          
         else {

              System.out.println("File or directory rename is successfully.");

            }
            /*
             * BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    System.out.print("Please enter the file or directory name which has to be Renamed : ");  
                        String old_name = in.readLine();
    File oldfile = new File(old_name);
 
  
      if(!oldfile.exists())
{
 
      System.out.println("File or directory does not exist.");
 
    System.exit(0);

    }
  
    System.out.print("please enter the new file or directory name : ");
 
    String new_name = in.readLine();

    File newfile = new File(new_name);
 
   
    boolean Rename = oldfile.renameTo(newfile);
 

      if(!Rename)
{

      System.out.println("File or directory does not rename successfully.");

        System.exit(0);
 
  }
  
 else {

      System.out.println("File or directory rename is successfully.");

    }
 
             *
             */
             
            /*File interm = new File(sortie.toString());
           
           
            boolean Rename = interm.renameTo(nouveaufic);

            if(!Rename)
            {

                  System.out.println("File or directory does not rename successfully.");

                    System.exit(0);
             
              }
              
             else {

                  System.out.println("File or directory rename is successfully.");

                }
                         */
            //message informant que la traduction a bien été faite
            message_erreur.setText("Traduction simple effectuée");
            message_erreur.setForeground(Color.green);
                       

            btntradcomplique.setEnabled(false);
            btntradsimple.setEnabled(false);

        }
        catch (TransformerConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (TransformerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch(SAXException se){
            //C'est un fichier Non Xml
        }catch(IOException ioe){
            // TODO Auto-generated catch block
        }     
           
        }
       
    }//fin de la classe BoutonTradSimpleListener
   
   
    //classe BoutonTradCompliqueListener permettant d'écouter le bouton btntradcomplique : pour passer du XML simple au ebXML
    class BoutonTradCompliqueListener  implements ActionListener{

        public void actionPerformed(ActionEvent arg0) {
            //récupérer le contenu de la textBox et traduire   
             System.setProperty("javax.xml.transform.TransformerFactory",
                "net.sf.saxon.TransformerFactoryImpl");
               
                //on crée une fabrique de transformeurs
                TransformerFactory factory = TransformerFactory.newInstance();
               
                //fichier xsl de transformation
                File fxsl = new File("transfo_eb.xsl");               
               
                //fichier xml source de type source
               
                Source xmlSource = new StreamSource(decoupeURL(txtlocalPath.getText()));
               
                //fichier xml de sortie de type Result
               
                Result sortie = new StreamResult(decoupeURL(txtSortie.getText()));
               
                //transformer
                Transformer transformer;
                try {
                    //on récupère un transformeur à partir d'une fabrique de transformeurs
                    transformer = factory.newTransformer(new StreamSource(fxsl));

                    //encoding
                    // transformer.setOutputProperty("encoding", "ISO-8859-1");
                    transformer.setOutputProperty("encoding", "UTF-8");
                   
                    //pour l'indentation
                    transformer.setOutputProperty(OutputKeys.INDENT,"yes");
                   
                    /*Utilisation d'un parser DOM ou SAX sans DTD ou xml schema pour la validation,
                     * s'il ya une erreur de parsing alors le fichier XML n'est pas bien formé càd NON XML.
                     */
                    DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();           
                    DocumentBuilder constructeur = fabrique.newDocumentBuilder();           
                    // lecture du contenu d'un fichier XML avec DOM
                    File xml = new File(decoupeURL(txtlocalPath.getText()));
                    Document document = constructeur.parse(xml);
   
                    //transformation en prenant en paramètre le fichier xml source et fait le fichier xml de sortie           
                    transformer.transform(xmlSource, sortie );
                    //le fichier de sortie est copié dans le rep par défaut
                   
                    //message d'information                   
                    message_erreur.setText("Traduction complexe effectuée");
                    message_erreur.setForeground(Color.GREEN);
                   
                   
                    btntradcomplique.setEnabled(false);
                    btntradsimple.setEnabled(false);
                    /*txtlocalPath.setText("");
                    txtSortie.setText("");*/
                           
                } catch (TransformerConfigurationException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (TransformerException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (ParserConfigurationException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (SAXException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                   
                }   
        }
       
    }//fin de la classe BoutonTradCOmpliqueListener
   
   
    /*méthode permettant de découper l'adresse absolue qui est écrite dans le textarea du chemin : txtlocalPath
     * 1) permet de récupérer l'URL du fichier xml à traduire
     * 2) ne prend que le fichier .xml de cette URL
    */
    public String decoupeURL(String s){
       
        File file = new File(s);
        s = file.getName();
       
        return s;
           
    }
   
    /*méthode permettant d'extraire l'extension d'un fichier
     * On se servira de cette méthode pour s'assurer notamment que :
     * les fichiers qui sont passés en entrée et les noms de fichiers de sortie sont bien des .xml
     */
    public static String getFileExtension(String NomFichier) {
        File tmpFichier = new File(NomFichier);
        tmpFichier.getName();
        int posPoint = tmpFichier.getName().lastIndexOf('.');
        if (0 < posPoint && posPoint <= tmpFichier.getName().length() - 2 ) {
            return tmpFichier.getName().substring(posPoint + 1);
        }  
        return "";
    }
   
   
    private void VerifAll() {
        VerificationEntree();
        //VerificationSortie();
    }

    public void VerificationEntree(){
        String ligne;
       
        if (inputFile == null || !inputFile.exists()) {
            inputFile = null;
            listErrors.add(Error.UNKNOW_INPUT_FILE);           
        }
        //dans le cas où le fichier n'est pas d'extension .xml et que le contenu de la zone de txt d'entrée n'est pas renseigné
        else if((getFileExtension(txtlocalPath.getText())).compareTo("xml")!=0 && txtlocalPath.getText()!=null){
                    message_erreur.setText("Veuillez saisir un document XML");   
                    message_erreur.setForeground(Color.RED);
                    txtSortie.setEditable(false);
                    btnparcourirsortie.setEnabled(false);
                }
        /*cas où le fichier est bien d'extension .xml : on parse le fichier .xml et on analyse les racines pour voir
         * s'il s'agit d'un ebXML ou d'un XML simple*/
        else{

            try {           
                //test dans le cas où il s'agit bien d'un fichier .xml, mais vide

                FileInputStream b=new FileInputStream(inputFile.getName());
                InputStreamReader a=new InputStreamReader(b);
                BufferedReader buffer=new BufferedReader(a);     
               
                ligne=buffer.readLine();
 
                //sinon, on parse le fichier .xml
                 
                DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
                DocumentBuilder constructeur = fabrique.newDocumentBuilder();
               
                Document document = constructeur.parse(inputFile);
               
                Node racine = document.getDocumentElement();
                String nomRacine = racine.getNodeName();

                /*on se place sur la racine, on vérifie alors :
                 * - soit que le fichier d'entrée est un document ebXML
                 * -soit que le fichier d'entrée est un document XML simple
                 * - soit ni l'un ni l'autre, alors erreur...*/
           
                if (nomRacine.equals("Dematerialisation_prix")) {
                    xmlType = XmlType.SIMPLE;
                    txtSortie.setEditable(true);
                    btnparcourirsortie.setEnabled(true);
                    message_erreur.setText("Saisir le nom du document de sortie d'extension.xml.\nSi vous souhaitez changer d'emplacement pour le fichier de sortie : \n cliquez sur parcourir");
                    message_erreur.setForeground(Color.BLUE);
                    message_erreur.setLineWrap(true);

                   
                } else if (nomRacine.equals("itt:InvitationToTenderDetails")) {
                    xmlType = XmlType.COMPLEX;
                    txtSortie.setEditable(true);
                    btnparcourirsortie.setEnabled(true);
                    message_erreur.setText("Saisir le nom du document de sortie d'extension.xml.\nSi vous souhaitez changer d'emplacement pour le fichier de sortie : \n cliquez sur parcourir");
                    message_erreur.setForeground(Color.BLUE);
                    message_erreur.setLineWrap(true);

                }
                }catch (ParserConfigurationException e1) {
                    xmlType = null;
                    listErrors.add(Error.PARSE_ERROR);
                } catch (SAXException e1) {
                    xmlType = null;
                    listErrors.add(Error.SAX_ERROR);
                } catch (IOException e1) {
                    xmlType = null;
                    listErrors.add(Error.IO_ERROR);
                    message_erreur.setText("Le fichier XML n'est ni un ebXML, ni un XML simple, veuillez recommencer la saisie");
                    message_erreur.setForeground(Color.RED);
                    message_erreur.setLineWrap(true);
                   
                    txtSortie.setEditable(false);
                    btnparcourirsortie.setEnabled(false);
                }
              }
          }
               
   
    //vérification du document de sortie
    /*public void VerificationSortie() {
        boolean afficher = (txtSortie.getText().length() > 4 && ".xml".equalsIgnoreCase(txtSortie.getText().substring(txtSortie.getText().length()-4)));
        //tonBouton.setVisible(afficher);
        outputFile = new File(txtSortie.getText());
           
        if (outputFile.exists()) {
          // Si ce fichier existe déjà, on s'arrête pour ne pas le modifier.
          // 'System.err' est le flux d'erreur standard, qui s'affiche normalement
          // dans le terminal qui a servi à lancer l'exécution du programme.
       
        JOptionPane jop = new JOptionPane();           
        int option = jop.showConfirmDialog(null, "Le fichier existe déjà, souhaitez-vous l'écraser ?", "Fichier existant", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
        //if(option != JOptionPane.NO_OPTION && option != JOptionPane.CANCEL_OPTION && option != JOptionPane.CLOSED_OPTION)
        if(option == JOptionPane.NO_OPTION || option==JOptionPane.CANCEL_OPTION)
        {
            btntradsimple.setEnabled(false);
            btntradcomplique.setEnabled(false);
        }
        else{//si l'utilisateur clique sur Yes, alors le fichier qui est existant sera écrasé
            if(xmlType == XmlType.COMPLEX){             
               
                btntradsimple.setEnabled(afficher);   
                message_erreur.setText("le fichier "+outputFile.getName()+" sera écrasé");

            }
            else if (xmlType == XmlType.SIMPLE){
               
                btntradcomplique.setEnabled(afficher);
                message_erreur.setText("le fichier "+outputFile.getName()+" sera écrasé");

            }      
           
        }//fin du else
       }//fin du if(outputFile.exists())
        else{ //si le fichier n'existe pas, on peut le créer
            if(xmlType == XmlType.COMPLEX){             
               
                btntradsimple.setEnabled(afficher);           
            }
            else if (xmlType == XmlType.SIMPLE){
               
                btntradcomplique.setEnabled(afficher);           
            }      
           
        }
        //System.out.println(outputFile.getAbsolutePath());
       
    }//fin de la vérification du document de sortie*/
   
   
    //enum pour les erreurs
    private enum Error {
        UNKNOW_INPUT_FILE,
        UNDEFINED_OUTPUT_FILE,
        IO_ERROR,
        SAX_ERROR,
        PARSE_ERROR;
    }
 
    //enum pour les deux types de dic XML
    private enum XmlType {
        SIMPLE,
        COMPLEX;
    }
   
   
    public static void main(String[] args) {
        //On crée une nouvelle instance de notre FenetreTexte
        FenetreSaisie fenetre = new FenetreSaisie();
        fenetre.setVisible(true);//On la rend visible
    }
   
   
}//fin de la classe

Harleen
Commenter la réponse de cs_harleen
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 8 juil. 2009 à 10:19
0
Merci
C'est cool, on a ton code, mais facilite nous au moins le boulot en précisant les bout de code correspondant à ton problème : on va pas se relire un milier de ligne de code pour tenter de savoir d'où peux venir le problème, c'est à toi de faciliter la tâche en mettant en valeur là où ca coince !
Commenter la réponse de cs_DARKSIDIOUS

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.