Package org.analyse.merise.save

Source Code of org.analyse.merise.save.FiltreMeriseASI

/*
* 02/05/2004 - 00:03:04
*
* FiltreMeriseASI.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.merise.save;

import java.io.IOException;
import java.io.PrintStream;
import java.util.Iterator;

import org.analyse.core.gui.zgraph.ZElement;
import org.analyse.core.gui.zgraph.ZLien;
import org.analyse.core.modules.SaveModule;
import org.analyse.core.save.asi.FilterASIModule;
import org.analyse.core.util.Constantes;
import org.analyse.merise.gui.table.DictionnaireTable;
import org.analyse.merise.main.MeriseModule;
import org.analyse.merise.mcd.composant.MCDComponent;
import org.analyse.merise.mcd.composant.MCDEntite;
import org.analyse.merise.mcd.composant.MCDLien;
import org.analyse.merise.mcd.composant.MCDObjet;
import org.analyse.merise.save.asi.ASIMeriseHandler;

/**
* Filtre enregistrant la partie Merise en XML.
*/
public class FiltreMeriseASI extends FilterASIModule implements SaveModule
{
    private DictionnaireTable dico;

    private MCDComponent mcd;

    public FiltreMeriseASI(MeriseModule module)
    {
        super("ASI", module, new ASIMeriseHandler(module));
    }

    /**
     * Implémentation de la class SaveModule.
     */
    public void save(PrintStream out) throws IOException
    {
        dico = ((MeriseModule) module).getDictionnaireTable();
        mcd = ((MeriseModule) module).getMCDComponent();

        saveDictionnaire(out);
        saveMCD(out);
    }

    /**
     * Sauvegarde du dictionnaire.
     */
    private void saveDictionnaire(PrintStream out) throws IOException
    {
        out.println("<dictionnaire>");

        for (int i = 0; i < dico.getRowCount() - 1; i++) {
            out.println("<information code=\""
                    + dico.getID(i)
                    + "\" nom=\""
                    + dico.getValue(dico.getID(i), DictionnaireTable.NAME)
                    + "\" type=\""
                    + dico.getValue(dico.getID(i), DictionnaireTable.TYPE)
                    + "\" taille=\""
                    + dico.getValue(dico.getID(i), DictionnaireTable.SIZE)
                    + "\" utilise=\""
                    + (((Boolean) dico.getValue(dico.getID(i),
                            DictionnaireTable.USE)).booleanValue() ? "true"
                            : "false") + "\" />");
        }

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

    /**
     * Sauvegarde du MPD.
     */
    private void saveMCD(PrintStream out) throws IOException
    {
        out.println("<mcd>");

        for (Iterator<ZElement> e = mcd.enumElements(); e.hasNext();) {
            MCDObjet o = (MCDObjet) e.next();
            if (o instanceof MCDEntite)
                out.println("<entite nom=\"" + o.getName() + "\" x=\""
                        + o.getX() + "\" y=\"" + o.getY() + "\">");
            else
                out.println("<association nom=\"" + o.getName() + "\" x=\""
                        + o.getX() + "\" y=\"" + o.getY() + "\">");

            for (int i = 0; i < o.sizeInformation(); i++) {
                out.println("<information code=\"" + o.getCodeInformation(i)
                        + "\" />");
            }

            if (o instanceof MCDEntite)
                out.println("</entite>");
            else
                out.println("</association>");
        }

        for (Iterator<ZLien> e = mcd.enumLiens(); e.hasNext();) {
            MCDLien l = (MCDLien) e.next();
            out.println("<lien cardmin=\"" + l.getCardMin() + "\" cardmax=\""
                    + l.getCardMax() + "\" elem1=\""
                    + ((MCDObjet) l.getElement( Constantes.MCDENTITE1 )).getName() + "\" elem2=\""
                    + ((MCDObjet) l.getElement( Constantes.MCDENTITE2 )).getName() + "\" />");
        }

        out.println("</mcd>");
    }
}
TOP

Related Classes of org.analyse.merise.save.FiltreMeriseASI

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.