Package org.analyse.core.save

Source Code of org.analyse.core.save.FiltreASI

/*
* 02/03/2004 - 15:08:06
*
* FiltreASI.java -
* Copyright (C) 2004 Dreux Loic
* dreuxl@free.fr
*
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/

package org.analyse.core.save;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

import org.analyse.core.modules.AnalyseModule;
import org.analyse.core.modules.FilterModule;
import org.analyse.core.modules.SaveModule;
import org.analyse.core.save.asi.ASIHandler;
import org.analyse.core.util.Constantes;
import org.analyse.core.util.GUIUtilities;
import org.analyse.core.util.save.AnalyseFilter;
import org.analyse.core.util.save.Open;
import org.analyse.core.util.save.Save;
import org.analyse.main.Main;

import com.microstar.xml.XmlException;
import com.microstar.xml.XmlParser;

/**
* La classe <code>FiltreASI</code> représente un filtre qui permet de
* sauvegarder et de récupérer les données depuis un fichier externe de type
* XML.
*/
public class FiltreASI extends AnalyseFilter implements Save, Open, Runnable
    private static final boolean OPEN = true;

    private static final boolean SAVE = false;

    private File file;

    private boolean action;

    /**
     * Créer un nouveau Filtre propre à l'application AnalyseSI. Ce filtre gère
     * les fichiers XML.
     */
    public FiltreASI()
    {
        super("ASI", "asi");
    }

    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() + "\"");
            }
        }
    }

    /**
     * Sauvegarde le fichier dans un fichier XML.
     */
    public void save(File file)
    {
        this.file = file;
        this.action = SAVE;

        //Thread t = new Thread(this);
        //t.start();
        run();
    }

    /**
     * Charge le fichier depuis un fichier XML.
     */
    public void open(File file)
    {
        this.file = file;
        this.action = OPEN;

        //Thread t = new Thread(this);
        //t.start();
        run();
    }

    /**
     * Retourne une brève description pour le type de fichier
     */
    public String getDescription()
    {
        return "ASI File";
    }
}
TOP

Related Classes of org.analyse.core.save.FiltreASI

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.