public void run()
    {
        if (action == SAVE) {
            try {
                PrintStream out = new PrintStream(new GZIPOutputStream(
                        new FileOutputStream(file)), false, Constantes.ASI_ENCODING);

                out.println("<?xml version=\"1.0\" encoding=\"" + Constantes.ASI_ENCODING + "\"?>");
                out.println("<analyse>");

                out.println("<about>");

                out.println("<release release=\""
                        + Constantes.RELEASE + "\" />");
                out.println("<company>");
                out.println ("<name>"+ Constantes.COMPANY + "</name>" ) ;
                out.println ("<email>"+ Constantes.CONTACT_EMAIL + "</email>" ) ;
                out.println("</company>");


                out.println("</about>");

                AnalyseModule mod;
                FilterModule fm;
                
                Iterator<Entry<String, AnalyseModule>> e = Main.modules.entrySet().iterator();
                while ( e.hasNext() ) {
                    mod = e.next().getValue();

                    out.println("<module id=\"" + mod.getID().toLowerCase()
                            + "\">");

                    fm = mod.getFiltre(ID);
                    if (fm != null && fm.canSave())
                        ((SaveModule) fm).save(out);

                    out.println("</module>");

                }
                
                out.println("</analyse>");

                out.flush();
                out.close();
            } catch (IOException e) {
                GUIUtilities.error("Impossible de sauvegarder le fichier "
                        + file.getName());
            }
        } else //if (action == OPEN)

        {
            try {
            	InputStream inStream = new GZIPInputStream(new FileInputStream(file));
                BufferedReader in = new BufferedReader(new InputStreamReader(inStream, Constantes.ASI_ENCODING));

                ASIHandler handler = new ASIHandler();
                XmlParser parser = new XmlParser();
                parser.setHandler(handler);
                try {
                    parser.parse(null, null, in);
                } catch (XmlException e) {
                    System.err.println(e);
                } catch (Exception e) {
                    // Should NEVER happend !
                    e.printStackTrace();
                }

                in.close();
            } catch (IOException e) {
                GUIUtilities.error("Impossible d'ouvrir le fichier \""
                        + file.getName() + "\"");
            }
        }
    }