[Isis-fish-user] Re : Re : Re : (sans objet)

chirine HUSSEIN m475chi at yahoo.fr
Mer 28 Jan 10:43:10 CET 2009


bonjour,
avec le copie corrigé, j'ai eu 6 erreur de plus. En plus, je pense pas que on peut commencer la méthode beforeSimulation  comme (public boolean beforeSimulation(AnalysePlanContext context, SimulationStorage nextSimulation) throws)  
sans mettre à la fin:   Exception {

chirine


----- Message d'origine ----
De : letellier <letellier at codelutin.com>
À : Liste pour les utilisateurs du simulateur <isis-fish-user at lists.labs.libre-entreprise.org>
Envoyé le : Mardi, 27 Janvier 2009, 15h51mn 35s
Objet : Re: [Isis-fish-user] Re : Re : (sans objet)

chirine HUSSEIN a écrit :
> merci bien, mais je n'arrive pas à telecharger le fichier joindre. pourriez- vous me renvoyer un copie?
> Chirine
> 
> 
> 
> ----- Message d'origine ----
> De : letellier <letellier at codelutin.com>
> À : Liste pour les utilisateurs du simulateur <isis-fish-user at lists.labs.libre-entreprise.org>
> Envoyé le : Mardi, 27 Janvier 2009, 11h51mn 07s
> Objet : Re: [Isis-fish-user] Re : (sans objet)
> 
> Bonjour,
> 
> comme Youen l'a préciser, le message d'erreur parle de lui même, il manque une accolade.
> Pour éviter ce genre d'erreur, il est nécessaire de bien indenter son code (TAB) pour mettre en évidence tous les blocs.
> 
> Je vous renvoie la copie corrigé ;)
> A première vu, je pense qu'il manque une accolade fermante après le premier for.
> 
> Sylvain
> 
> chirine HUSSEIN a écrit :
>  
>> je pense que cette "eles" correspond à if qui est au debut de la méthode "beforesimulation".
>> 
>> 
>> 
>> ----- Message d'origine ----
>> De : "Youen.Vermard at ifremer.fr" <Youen.Vermard at ifremer.fr>
>> À : isis-fish-user at lists.labs.libre-entreprise.org
>> Envoyé le : Mardi, 27 Janvier 2009, 11h14mn 50s
>> Objet : Re: [Isis-fish-user] (sans objet)
>> 
>> Bonjour chirine, tout est dans le message d'erreur:
>> 
>> Sensibility.java:347 => ligne 347 tu as un else qui ne correspond à aucun if
>> 
>> Pour l instant l'accolade de ton else correspond au for (ligne 317)
>> 
>> Après je n ai pas regardé plus le code, je ne sais pas ce qu'il fait, à toi de retrouver où il faut replacer les accolades.
>> 
>> Youen
>> 
>> 
>> chirine HUSSEIN <m475chi at yahoo.fr> a écrit :
>> 
>>    
>>> Bonjour à tous,
>>> toujours avec le script de la sensibility, j'ai de nouvaux un autre problème que je n'arrive pas à me débarrasser:
>>> 
>>> C:\Documents and Settings\hussein\isis-database-3\analyseplans\Sensibility.java:347: 'else' without 'if'
>>>        } else {
>>>          ^
>>> je vous envoie le fichier de script
>>> merci pour votre aide
>>> 
>>> chirine
>>> 
>>> 
>>> 
>>>      
>> 
>> 
>> _______________________________________________
>> Isis-fish-user mailing list
>> Isis-fish-user at lists.labs.libre-entreprise.org
>> http://lists.labs.libre-entreprise.org/mailman/listinfo/isis-fish-user
>> 
>> 
>> 
>>      _______________________________________________
>> Isis-fish-user mailing list
>> Isis-fish-user at lists.labs.libre-entreprise.org
>> http://lists.labs.libre-entreprise.org/mailman/listinfo/isis-fish-user
>> 
>>    
> 
> 
> 
> 
> -----La pièce jointe correspondante suit-----
> 
> package analyseplans;
> 
> import static org.codelutin.i18n.I18n._;
> 
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
> 
> import scripts.ResultName;
> 
> import java.io.*;
> import java.io.File;
> import java.io.FileReader;
> import java.io.Writer;
> import java.util.*;
> import java.util.Arrays;
> import java.util.Collection;
> import java.util.Collections;
> import java.util.HashMap;
> import java.util.List;
> import java.util.Map;
> import java.util.Properties;
> 
> import org.codelutin.math.matrix.*;
> import org.codelutin.util.*;
> import org.codelutin.topia.*;
> 
> import fr.ifremer.isisfish.*;
> import fr.ifremer.isisfish.types.*;
> import fr.ifremer.isisfish.rule.Rule;
> import fr.ifremer.isisfish.rule.RuleHelper;
> import fr.ifremer.isisfish.simulator.SimulationContext;
> import fr.ifremer.isisfish.types.Date;
> import fr.ifremer.isisfish.entities.*;
> import fr.ifremer.isisfish.simulator.AnalysePlan;
> import fr.ifremer.isisfish.simulator.AnalysePlanContext;
> import fr.ifremer.isisfish.simulator.SimulationParameter;
> import fr.ifremer.isisfish.datastore.RegionStorage;
> import fr.ifremer.isisfish.datastore.RuleStorage;
> import fr.ifremer.isisfish.datastore.SimulationStorage;
> import fr.ifremer.isisfish.datastore.ResultStorage;
> 
> /**
> * Sensibility.java
> *
> * Created: 21 décembre 2008
> *
> * @author HUSSEIN chirine <m475chi at yahoo.fr>
> *
> */
> public class Sensibility implements AnalysePlan {
> 
>    /** to use log facility, just put in your code: log.info("..."); */
>    static private Log log = LogFactory.getLog(Sensibility.class);
> 
>    static private final String MATRIX = "matrix"; /// Le fichier est donc matrix.txt
>    static private final String VBGF = "growth";
>    static private final String SELECTIVITY = "selectivity";
>    static private final String SELECTIVITYFiletMer = "selectivityFiletMer";
>    static private final String SELECTIVITYFiletEtang = "selectivityFiletEtang";
>    static private final String SELECTIVITYLigncote = "selectivityLignecote";
>    static private final String SELECTIVITYLigneemb = "selectivityLigneemb";
>    static private final String SELECTIVITYChalut = "selectivityChalut";
>    static private final String SELECTIVITYHarpon = "selectivityHarpon";
>    static private final String CATCHABILITY = "capturabilite";
>    static private final String MORTALITY = "mortalite";
>    static private final String STANDARDISATION = "standardisation";    //static private final String AMP = "amp";
>    //static private final String AMP1 = "ampRPrepro_Lignecote";
>    //static private final String AMP2 = "ampRPrepro_FiletMer";    ///////////* completer ici avec tous les fichiers .txt des amp
>            public int param_parameterNumber = 5; /// ce paramètre n'est normalement pas modifié
>    public int param_first = 0; /// on utilise ce paramètre pour indiquer à quelle ligne                /// de la matrice on doit commencer à faire tourner les simulations au cas où on ait dû interompre le plan
>    public int param_simulationNumber = 32;/// ce paramètre n'est normalement pas modifié    public String param_directory = "C:/Documents and Settings/hussein/Bureau/isis-fish-3.1.3/isis-fish-3.1.3/fichier paramètres//"; /// Il s'agit du chemin vers le dossier        ///contenant les fichier de matrice et paramètres, par défaut le repertoire du go.bat        /// donc dans ce cas c'est le dossier Exemple_repertory qui est dans le dossier contenant le go.bat
>  /// Déclaration de la matrice d'expérience 
>    private MatrixND matrix = null;
> 
> /// Non utilisé pour ce script mais à ne pas effacer
>    public String [] necessaryResult = {
>    // put here all necessary result for this rule
>    // example:    // ResultName.MATRIX_BIOMASS,
>    // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET,
>    };
> 
>    public String[] getNecessaryResult() {
>        return this.necessaryResult;
>    }
> 
> 
>    /**
>    * Permet d'afficher a l'utilisateur une aide sur le plan.
>    * @return L'aide ou la description du plan
>    */
>    public String getDescription() throws Exception {
>              return _("réalise les expériences d'un plan complet pour 5 parametres à 2 modalités");
>    }
> 
>    /**
>    * Appel? au d?marrage de la simulation, cette m?thode permet d'initialiser
>    * des valeurs
>    * @param simulation La simulation pour lequel on utilise cette regle
>    */
>    public void init(AnalysePlanContext context) throws Exception {
>        /// Création de la matrice d'expérience et chargement :
>        File dir = new File(param_directory);
> 
>        File csvFile = new File(dir, MATRIX + ".txt");
>        log.info("CSV file is : " + csvFile.getAbsolutePath());
>        if(!csvFile.exists()) {
>            log.warn("File doesn't exists");
>        }
> 
>        matrix = MatrixFactory.getInstance().create(new int[]{param_simulationNumber, param_parameterNumber});
>        matrix.importCSV(new FileReader(csvFile), new int[]{0,0});
>        matrix.setSemantics(1, Arrays.asList(new String[]{VBGF,CATCHABILITY,MORTALITY,SELECTIVITY, STANDARDISATION}));
>        System.out.println(matrix);
> //System.out.println("amp 0 : "+ matrix.getValue(0,AMP));
> /// ajout des regles qui sont modifiées par le plan
> //context.getParam().addExtraRules("Cantonnement","Cantonnement","Cantonnement","Cantonnement","Cantonnement","Cantonnement");
>                ////////////* tu dois ecrire cantonnement 11 fois si tu as 11 regles cantonnement
>    }
> 
>        /// Création des méthodes qui réccupère dans la matrice la modalité du paramètre pour l'expérience en cours                /// Les arguments des méthodes sont le nom du fichier et le numéro de la simulation
>                /// (On détermine l'expérience en cours et donc la ligne de la matrice en sommant le numéro de la simulation et le param_first)
>                /// pour un double  
>    private double getDouble(String name, int simulation) throws Exception {
>        File dir = new File(param_directory);
>        Properties prop = new Properties();
>        prop.load(new BufferedReader(new FileReader(new File(dir, name + ".txt"))));                int ligne = simulation + param_first;
>        int mod = (int)matrix.getValue(ligne, name);
>        System.out.println("mod et ligne : "+ mod+" "+ligne);
>        double result = Double.parseDouble(prop.getProperty(""+mod));
>        System.out.println("result : "+ result);
>        return result;
>    }
>                        /// pour une liste de doubles
> 
> /**
>    * @param name le nom de l'element a recuperer
>    * @param simulation le numero de la simulation
>    * @return
>    */      private double [] getList(String name, int simulation) throws Exception {
>        File dir = new File(param_directory);
>        Properties prop = new Properties();
>        prop.load(new BufferedReader(new FileReader(new File(dir, name + ".txt"))));
>                int ligne = simulation + param_first;
>        int mod = (int)matrix.getValue(ligne, name);
>        double [] result = StringUtil.toArrayDouble(prop.getProperty(""+mod).split(";")); // ""+ ca construit une chaine de caractere
>        return result;
>    }
>                        /// pour une chaine de characteres (equation)
>    /**
>    * @param name le nom de l'element a recuperer
>    * @param simulation le numero de la simulation
>    * @return
>    */
>    private String getString(String name,String col, int simulation) throws Exception {
>        File dir = new File(param_directory);
>        Properties prop = new Properties();
>        prop.load(new BufferedReader(new FileReader(new File(dir, name + ".txt"))));
>                int ligne = simulation + param_first;
>        int mod = (int)matrix.getValue(ligne , col);
>        String result = prop.getProperty(""+mod);
>        return result;
>    }
>                /// pour les paramètres d'une règle de gestion
>          /**
>    * @param name le nom de l'element a recuperer
>    * @param simulation le numero de la simulation
>    * @return
>    */            private Rule getRule(RegionStorage regionStorage, String name, String col, int simulation) throws Exception {
>        File dir = new File(param_directory);
>        Properties prop = new Properties();
>        prop.load(new BufferedReader(new FileReader(new File(dir, name+".txt"))));
>                int ligne = simulation + param_first;
>        int mod = (int)matrix.getValue(ligne , col);
>        String ruleName = prop.getProperty(""+mod);
>        RuleStorage ruleStorage = RuleStorage.getRule(ruleName);
>        Rule rule = ruleStorage.getNewRuleInstance();
>        RuleHelper.populateRule(mod, regionStorage, rule, prop);        return rule;
>    }
>                        /**
>    * Call before each simulation
>    * @param context plan context
>    * @param nextSimulation storage used for next simulation
>    * @return true if we must do next simulation, false to stop plan
>    * @throws Exception
>    */
>    public boolean beforeSimulation(AnalysePlanContext context, SimulationStorage nextSimulation) throws
> 
>        int simNum = context.getNumber()+ param_first;                if (simNum < param_simulationNumber+1) { /// On vérifie qu'il reste des expériences à faire
> 
>                        /// On utilise les méthodes crées pour récupérer les valeurs des modalités pour l'expérience en cours
>            double [] croissance    = getList (VBGF , simNum);
>            double catchability    = getDouble (CATCHABILITY, simNum);
>            double [] standardisation    = getList (STANDARDISATION , simNum);
>            String selectivity      = getString (SELECTIVITY, simNum);
>            String selectivityFiletMer      = getString (SELECTIVITYFiletMer,SELECTIVITY, simNum);
>            String selectivityFiletEtang      = getString (SELECTIVITYFiletEtang,SELECTIVITY, simNum);
>            String selectivityLignecote      = getString (SELECTIVITYLignecote,SELECTIVITY, simNum);
>            String selectivityLigneemb      = getString (SELECTIVITYFLigneemb,SELECTIVITY, simNum);
>            String selectivityChalut      = getString (SELECTIVITYChalut,SELECTIVITY, simNum);
>            String selectivityHarpon      = getString (SELECTIVITYHarpon,SELECTIVITY, simNum);
>            String mortality      = getString (MORTALITY,MORTALITY, simNum);
>                        //Rule amp1 = getRule(context.getParam().getRegion(), AMP1, AMP, simNum);
>                        //Rule amp2 = getRule(context.getParam().getRegion(), AMP2, AMP, simNum);
>                        ///////////////* à completer avec le reste des amp*/
>                                                /// On peut afficher des informations dans les logs
>            nextSimulation.getInformation().addInformation("Growth ("+context.getNumber()+")= " + croissance);
>            nextSimulation.getInformation().addInformation("Selectivity ("+context.getNumber()+")= " + selectivity);
> 
> 
>                        /// Il faut maintenant modifier la valeur des paramètres dans la base de données et les paramètres des règle de la simulation
>                                /// modif les parametres des regles de gestion :
>                                    // on enleve la regle de la simulation passé (elle est stoquée sous le nom LastAMP)            //List<Rule> paramRules = nextSimulation.getParameter().getRules();
>                                    //paramRules.remove(context.getValue("lastAMP1"));
>            // on nomme la regle que l'on va ajouter LastAMP (pour pouvoir la retrouver a la simulation suivante)
>                        //context.setValue("lastAMP1", amp1);
>            // on ajoute la regle à la simulation
>          // paramRules.add(amp1);
>                                                //paramRules.remove(context.getValue("lastAMP2"));
>                        //context.setValue("lastAMP2", amp2);
>            //paramRules.add(amp2);
>                        /////////////////* à completer avec les autres amp */
>                                                                    /// modif les parametres dans la base de données :
>            TopiaContext tx = nextSimulation.getStorage().beginTransaction();
>            /// On récupère les objets ISIS a modifier dans la base de données
>            PopulationDAO popDAO = IsisFishDAOHelper.getPopulationDAO(tx);                                    Population pop = popDAO.findByName("CSar");
>            List<PopulationGroup> groups = pop.getPopulationGroup();
>              GearDAO gearDAO = IsisFishDAOHelper.getGearDAO(tx);
>            List<Gear> gears = gearDAO.findAll();
> 
>                
> 
> 
>                                        ///modif borne des classes de taille
>                                        /// On remplace les bornes par les éléments de la liste
>            for (PopulationGroup group : groups) {
>                group.setMinLength(croissance[group.getId()]) ;
>                group.setMaxLength(croissance[group.getId()+1]) ;
>            }
>                                                                                            // modif la capturabilité
>                                        /// On modifie la valeur de la base en la multipliant par la valeur contenue dans la modalité
>            MatrixND c = pop.getCapturability();
>            for (MatrixIterator i = c.iterator(); i.hasNext();){
>                i.next();
>                i.setValue(catchability);
>            }
>                                        
>                                        // modif la mortalité naturelle
>                                        /// On modifie la valeur de la base en la remplacant par la valeur contenue dans la modalité
>                              for (PopulationGroup group : groups) {
>                Equation eq = pop.getNaturalDeathRate();
>                eq.setContent(mortality);
>            }
> 
>                                        // modif les facteurs de standardisation
>                                        /// On modifie la valeur de la base en la remplacant par la valeur contenue dans la modalité
>            for (Gear gear : gears) {
>                                if ("FiletMer".equals(gear.getName())) {
>                                        gear.setStandardisationFactor(standardisation[0]);
>                                  }else if("Lignecote".equals(gear.getName())) {
>                                        gear.setStandardisationFactor(standardisation[1]);
>                                }else if("Harpon".equals(gear.getName())) {
>                                        gear.setStandardisationFactor(standardisation[2]);
>                                }else if("chalut".equals(gear.getName())) {
>                                        gear.setStandardisationFactor(standardisation[3]);
>                                }else if("Ligneemb".equals(gear.getName())) {
>                                        gear.setStandardisationFactor(standardisation[4]);
>                                }else if("FiletEtang".equals(gear.getName())) {
>                                        gear.setStandardisationFactor(standardisation[5]);
> /////////////*a completer
>                                }
>                }        
> 
>                                        /// modif selectivité
>                                        /// On remplace l'equation existante par une autre equation
>              for (Gear gear : gears) {
> 
>                    if ("FiletMer".equals(gear.getNam())) {
>                        Selectivity sel = gear.getPopulationSelectivity(pop);
>                        Equation eq = sel.getEquation();                                        eq.setContent(selectivityFiletMer);
>                          } else  if ("FiletEtang".equals(gear.getNam())) {
>                          Selectivity sel = gear.getPopulationSelectivity(pop);
>                          Equation eq = sel.getEquation();                                          eq.setContent(selectivityFiletEtang);
>                    }else  if ("Lignecote".equals(gear.getNam())) {
>                          Selectivity sel = gear.getPopulationSelectivity(pop);
>                          Equation eq = sel.getEquation();                                          eq.setContent(selectivityLignecote);
>                    }else  if ("Ligneemb".equals(gear.getNam())) {
>                          Selectivity sel = gear.getPopulationSelectivity(pop);
>                          Equation eq = sel.getEquation();                                          eq.setContent(selectivityLigneemb);
>                    }else  if ("Chalut".equals(gear.getNam())) {
>                          Selectivity sel = gear.getPopulationSelectivity(pop);
>                          Equation eq = sel.getEquation();                                          eq.setContent(selectivityChalut);
>                    }else  if ("Harpon".equals(gear.getNam())) {
>                          Selectivity sel = gear.getPopulationSelectivity(pop);                          Equation eq = sel.getEquation();                                          eq.setContent(selectivityHarpon);
>                    }                      tx.commitTransaction();
>                    return true;
> 
>              }
>              else {
>                  return false;
>              }
>      }
> 
> 
> 
>    /**
>    * Call before each simulation
>    * @param context plan context
>    * @param nextSimulation storage used for next simulation
>    * @return true if we must do next simulation, false to stop plan
>    * @throws Exception
>    */
>                public boolean afterSimulation(AnalysePlanContext context, SimulationStorage lastSimulation) throws Exception {
>        return true;
>    }
> 
> }
> 
> 
> 
>      _______________________________________________
> Isis-fish-user mailing list
> Isis-fish-user at lists.labs.libre-entreprise.org
> http://lists.labs.libre-entreprise.org/mailman/listinfo/isis-fish-user
> 
>  




-----La pièce jointe correspondante suit-----

package analyseplans;

import static org.codelutin.i18n.I18n._;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import scripts.ResultName;

import java.io.*;
import java.io.File;
import java.io.FileReader;
import java.io.Writer;
import java.util.*;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import org.codelutin.math.matrix.*;
import org.codelutin.util.*;
import org.codelutin.topia.*;

import fr.ifremer.isisfish.*;
import fr.ifremer.isisfish.types.*;
import fr.ifremer.isisfish.rule.Rule;
import fr.ifremer.isisfish.rule.RuleHelper;
import fr.ifremer.isisfish.simulator.SimulationContext;
import fr.ifremer.isisfish.types.Date;
import fr.ifremer.isisfish.entities.*;
import fr.ifremer.isisfish.simulator.AnalysePlan;
import fr.ifremer.isisfish.simulator.AnalysePlanContext;
import fr.ifremer.isisfish.simulator.SimulationParameter;
import fr.ifremer.isisfish.datastore.RegionStorage;
import fr.ifremer.isisfish.datastore.RuleStorage;
import fr.ifremer.isisfish.datastore.SimulationStorage;
import fr.ifremer.isisfish.datastore.ResultStorage;

/**
* Sensibility.java
*
* Created: 21 décembre 2008
*
* @author HUSSEIN chirine <m475chi at yahoo.fr>
*
*/
public class Sensibility implements AnalysePlan {

    /** to use log facility, just put in your code: log.info("..."); */
    static private Log log = LogFactory.getLog(Sensibility.class);

    static private final String MATRIX = "matrix"; /// Le fichier est donc matrix.txt
    static private final String VBGF = "growth";
    static private final String SELECTIVITY = "selectivity";
    static private final String SELECTIVITYFiletMer = "selectivityFiletMer";
    static private final String SELECTIVITYFiletEtang = "selectivityFiletEtang";
    static private final String SELECTIVITYLigncote = "selectivityLignecote";
    static private final String SELECTIVITYLigneemb = "selectivityLigneemb";
    static private final String SELECTIVITYChalut = "selectivityChalut";
    static private final String SELECTIVITYHarpon = "selectivityHarpon";
    static private final String CATCHABILITY = "capturabilite";
    static private final String MORTALITY = "mortalite";
    static private final String STANDARDISATION = "standardisation";     //static private final String AMP = "amp";
    //static private final String AMP1 = "ampRPrepro_Lignecote";
    //static private final String AMP2 = "ampRPrepro_FiletMer"; 
    ///////////* completer ici avec tous les fichiers .txt des amp
        
    public int param_parameterNumber = 5; /// ce paramètre n'est normalement pas modifié
    public int param_first = 0; /// on utilise ce paramètre pour indiquer à quelle ligne 
                /// de la matrice on doit commencer à faire tourner les simulations au cas où on ait dû interompre le plan
    public int param_simulationNumber = 32;/// ce paramètre n'est normalement pas modifié 
    public String param_directory = "C:/Documents and Settings/hussein/Bureau/isis-fish-3.1.3/isis-fish-3.1.3/fichier paramètres//"; /// Il s'agit du chemin vers le dossier 
        ///contenant les fichier de matrice et paramètres, par défaut le repertoire du go.bat 
        /// donc dans ce cas c'est le dossier Exemple_repertory qui est dans le dossier contenant le go.bat
  
/// Déclaration de la matrice d'expérience 

    private MatrixND matrix = null;

/// Non utilisé pour ce script mais à ne pas effacer
    public String [] necessaryResult = {
    // put here all necessary result for this rule
    // example: 
    // ResultName.MATRIX_BIOMASS,
    // ResultName.MATRIX_NET_VALUE_OF_LANDINGS_PER_STRATEGY_MET,
    };

    public String[] getNecessaryResult() {
        return this.necessaryResult;
    }


    /**
    * Permet d'afficher a l'utilisateur une aide sur le plan.
    * @return L'aide ou la description du plan
    */
    public String getDescription() throws Exception {
      
        return _("réalise les expériences d'un plan complet pour 5 parametres à 2 modalités");
    }

    /**
    * Appel? au d?marrage de la simulation, cette m?thode permet d'initialiser
    * des valeurs
    * @param simulation La simulation pour lequel on utilise cette regle
    */
    public void init(AnalysePlanContext context) throws Exception {
        /// Création de la matrice d'expérience et chargement :
        File dir = new File(param_directory);

        File csvFile = new File(dir, MATRIX + ".txt");
        log.info("CSV file is : " + csvFile.getAbsolutePath());
        if(!csvFile.exists()) {
            log.warn("File doesn't exists");
        }

        matrix = MatrixFactory.getInstance().create(new int[]{param_simulationNumber, param_parameterNumber});
        matrix.importCSV(new FileReader(csvFile), new int[]{0,0});
        matrix.setSemantics(1, Arrays.asList(new String[]{VBGF,CATCHABILITY,MORTALITY,SELECTIVITY, STANDARDISATION}));
        System.out.println(matrix);
//System.out.println("amp 0 : "+ matrix.getValue(0,AMP));
/// ajout des regles qui sont modifiées par le plan
//context.getParam().addExtraRules("Cantonnement","Cantonnement","Cantonnement","Cantonnement","Cantonnement","Cantonnement");
                ////////////* tu dois ecrire cantonnement 11 fois si tu as 11 regles cantonnement
    }

        /// Création des méthodes qui réccupère dans la matrice la modalité du paramètre pour l'expérience en cours 
                /// Les arguments des méthodes sont le nom du fichier et le numéro de la simulation
                /// (On détermine l'expérience en cours et donc la ligne de la matrice en sommant le numéro de la simulation et le param_first)
                /// pour un double  

    private double getDouble(String name, int simulation) throws Exception {
        File dir = new File(param_directory);
        Properties prop = new Properties();
        prop.load(new BufferedReader(new FileReader(new File(dir, name + ".txt"))));        
        int ligne = simulation + param_first;
        int mod = (int)matrix.getValue(ligne, name);
        System.out.println("mod et ligne : "+ mod+" "+ligne);
        double result = Double.parseDouble(prop.getProperty(""+mod));
        System.out.println("result : "+ result);
        return result;
    }
        
                /// pour une liste de doubles

/**
    * @param name le nom de l'element a recuperer
    * @param simulation le numero de la simulation
    * @return
    */  
    private double [] getList(String name, int simulation) throws Exception {
        File dir = new File(param_directory);
        Properties prop = new Properties();
        prop.load(new BufferedReader(new FileReader(new File(dir, name + ".txt"))));
                int ligne = simulation + param_first;
        int mod = (int)matrix.getValue(ligne, name);
        double [] result = StringUtil.toArrayDouble(prop.getProperty(""+mod).split(";")); // ""+ ca construit une chaine de caractere
        return result;
    }
        
                /// pour une chaine de characteres (equation)
    /**
    * @param name le nom de l'element a recuperer
    * @param simulation le numero de la simulation
    * @return
    */
    private String getString(String name,String col, int simulation) throws Exception {
        File dir = new File(param_directory);
        Properties prop = new Properties();
        prop.load(new BufferedReader(new FileReader(new File(dir, name + ".txt"))));
                int ligne = simulation + param_first;
        int mod = (int)matrix.getValue(ligne , col);
        String result = prop.getProperty(""+mod);
        return result;
    }
                /// pour les paramètres d'une règle de gestion
          /**
    * @param name le nom de l'element a recuperer
    * @param simulation le numero de la simulation
    * @return
    */        
    private Rule getRule(RegionStorage regionStorage, String name, String col, int simulation) throws Exception {
        File dir = new File(param_directory);
        Properties prop = new Properties();
        prop.load(new BufferedReader(new FileReader(new File(dir, name+".txt"))));
                int ligne = simulation + param_first;
        int mod = (int)matrix.getValue(ligne , col);
        String ruleName = prop.getProperty(""+mod);
        RuleStorage ruleStorage = RuleStorage.getRule(ruleName);
        Rule rule = ruleStorage.getNewRuleInstance();
        RuleHelper.populateRule(mod, regionStorage, rule, prop); 
        return rule;
    }
    
        
        
    /**
    * Call before each simulation
    * @param context plan context
    * @param nextSimulation storage used for next simulation
    * @return true if we must do next simulation, false to stop plan
    * @throws Exception
    */
    public boolean beforeSimulation(AnalysePlanContext context, SimulationStorage nextSimulation) throws

        int simNum = context.getNumber()+ param_first; 
        
        if (simNum < param_simulationNumber+1) { /// On vérifie qu'il reste des expériences à faire

                        /// On utilise les méthodes crées pour récupérer les valeurs des modalités pour l'expérience en cours
            double [] croissance    = getList (VBGF , simNum);
            double catchability    = getDouble (CATCHABILITY, simNum);
            double [] standardisation    = getList (STANDARDISATION , simNum);
            String selectivity      = getString (SELECTIVITY, simNum);
            String selectivityFiletMer      = getString (SELECTIVITYFiletMer,SELECTIVITY, simNum);
            String selectivityFiletEtang      = getString (SELECTIVITYFiletEtang,SELECTIVITY, simNum);
            String selectivityLignecote      = getString (SELECTIVITYLignecote,SELECTIVITY, simNum);
            String selectivityLigneemb      = getString (SELECTIVITYFLigneemb,SELECTIVITY, simNum);
            String selectivityChalut      = getString (SELECTIVITYChalut,SELECTIVITY, simNum);
            String selectivityHarpon      = getString (SELECTIVITYHarpon,SELECTIVITY, simNum);
            String mortality      = getString (MORTALITY,MORTALITY, simNum);
                        //Rule amp1 = getRule(context.getParam().getRegion(), AMP1, AMP, simNum);
                        //Rule amp2 = getRule(context.getParam().getRegion(), AMP2, AMP, simNum);
                        ///////////////* à completer avec le reste des amp*/
                        
                        /// On peut afficher des informations dans les logs
            nextSimulation.getInformation().addInformation("Growth ("+context.getNumber()+")= " + croissance);
            nextSimulation.getInformation().addInformation("Selectivity ("+context.getNumber()+")= " + selectivity);


                        /// Il faut maintenant modifier la valeur des paramètres dans la base de données et les paramètres des règle de la simulation
                                /// modif les parametres des regles de gestion :
            
                        // on enleve la regle de la simulation passé (elle est stoquée sous le nom LastAMP) 
            //List<Rule> paramRules = nextSimulation.getParameter().getRules();
            
                        //paramRules.remove(context.getValue("lastAMP1"));
            // on nomme la regle que l'on va ajouter LastAMP (pour pouvoir la retrouver a la simulation suivante)
                        //context.setValue("lastAMP1", amp1);
            // on ajoute la regle à la simulation
          // paramRules.add(amp1);
                        
                        //paramRules.remove(context.getValue("lastAMP2"));
                        //context.setValue("lastAMP2", amp2);
            //paramRules.add(amp2);
                        /////////////////* à completer avec les autres amp */
            
                        
                                /// modif les parametres dans la base de données :
            TopiaContext tx = nextSimulation.getStorage().beginTransaction();
            /// On récupère les objets ISIS a modifier dans la base de données
            PopulationDAO popDAO = IsisFishDAOHelper.getPopulationDAO(tx);                        
            Population pop = popDAO.findByName("CSar");
            List<PopulationGroup> groups = pop.getPopulationGroup();
              GearDAO gearDAO = IsisFishDAOHelper.getGearDAO(tx);
            List<Gear> gears = gearDAO.findAll();

                



                                        ///modif borne des classes de taille
                                        /// On remplace les bornes par les éléments de la liste
            for (PopulationGroup group : groups) {
                group.setMinLength(croissance[group.getId()]) ;
                group.setMaxLength(croissance[group.getId()+1]) ;
            }
            
                                        
                                        // modif la capturabilité
                                        /// On modifie la valeur de la base en la multipliant par la valeur contenue dans la modalité
            MatrixND c = pop.getCapturability();
            for (MatrixIterator i = c.iterator(); i.hasNext();){
                i.next();
                i.setValue(catchability);
            }
                                        

                                        // modif la mortalité naturelle
                                        /// On modifie la valeur de la base en la remplacant par la valeur contenue dans la modalité
                  
            for (PopulationGroup group : groups) {
                Equation eq = pop.getNaturalDeathRate();
                eq.setContent(mortality);
            }

                
    
                    // modif les facteurs de standardisation
                                        /// On modifie la valeur de la base en la remplacant par la valeur contenue dans la modalité
            for (Gear gear : gears) {
                
                if ("FiletMer".equals(gear.getName())) {
                                        gear.setStandardisationFactor(standardisation[0]);
                                  }else if("Lignecote".equals(gear.getName())) {
                                        gear.setStandardisationFactor(standardisation[1]);
                                }else if("Harpon".equals(gear.getName())) {
                                        gear.setStandardisationFactor(standardisation[2]);
                                }else if("chalut".equals(gear.getName())) {
                                        gear.setStandardisationFactor(standardisation[3]);
                                }else if("Ligneemb".equals(gear.getName())) {
                                        gear.setStandardisationFactor(standardisation[4]);
                                }else if("FiletEtang".equals(gear.getName())) {
                                        gear.setStandardisationFactor(standardisation[5]);
/////////////*a completer
                                }
                }        


                                        /// modif selectivité
                                        /// On remplace l'equation existante par une autre equation
              for (Gear gear : gears) {

                    if ("FiletMer".equals(gear.getNam())) {
                        Selectivity sel = gear.getPopulationSelectivity(pop);
                        Equation eq = sel.getEquation();                
                        eq.setContent(selectivityFiletMer);
                          } else  if ("FiletEtang".equals(gear.getNam())) {
                          Selectivity sel = gear.getPopulationSelectivity(pop);
                          Equation eq = sel.getEquation();                
                          eq.setContent(selectivityFiletEtang);
                    }else  if ("Lignecote".equals(gear.getNam())) {
                          Selectivity sel = gear.getPopulationSelectivity(pop);
                          Equation eq = sel.getEquation();                
                          eq.setContent(selectivityLignecote);
                    }else  if ("Ligneemb".equals(gear.getNam())) {
                          Selectivity sel = gear.getPopulationSelectivity(pop);
                          Equation eq = sel.getEquation();                
                          eq.setContent(selectivityLigneemb);
                    }else  if ("Chalut".equals(gear.getNam())) {
                          Selectivity sel = gear.getPopulationSelectivity(pop);
                          Equation eq = sel.getEquation();                
                          eq.setContent(selectivityChalut);
                    }else  if ("Harpon".equals(gear.getNam())) {
                          Selectivity sel = gear.getPopulationSelectivity(pop); 
                          Equation eq = sel.getEquation();                
                          eq.setContent(selectivityHarpon);
                    }  
                    tx.commitTransaction();
                    return true;

              }
              else {
                  return false;
              }
      }



    /**
    * Call before each simulation
    * @param context plan context
    * @param nextSimulation storage used for next simulation
    * @return true if we must do next simulation, false to stop plan
    * @throws Exception
    */
        
        public boolean afterSimulation(AnalysePlanContext context, SimulationStorage lastSimulation) throws Exception {
        return true;
    }

}



      



Plus d'informations sur la liste de diffusion Isis-fish-users