règle faisant appel à des formules
Eric, on souhaite faire une regle qui dans le init va remplacer une equation de reproduction par une formule enregistree dans formules/Reproductions (type pre-simu) dans la regle on importe les formules de Reproduction import formules.Reproduction; //to get a saved equation on donne en parametre le nom du modele public String param_nommodel = "reproModel.java"; mais ensuite 1. comment recuperer le modele de reproduction reproModel.java ? 2. comment ecraser l'ancienne equation? merci Stephanie -- ...................................................................... Stephanie MAHEVAS (Stephanie.Mahevas@ifremer.fr) IFREMER/EMH (Ecologie et Modèles pour l'Halieutique) Tel: (33) 2 40 37 41 81 Fax: (33) 2 40 37 40 75 o \ o / _ o __| \ / |__ o _ \ o / o /|\ | /\ ___\o \o | o/ o/__ /\ | /|\ / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \ ......................................................................
Le 15/04/2015 13:37, Stephanie MAHEVAS a écrit :
Eric,
on souhaite faire une regle qui dans le init va remplacer une equation de reproduction par une formule enregistree dans formules/Reproductions (type pre-simu)
dans la regle on importe les formules de Reproduction import formules.Reproduction; //to get a saved equation on donne en parametre le nom du modele public String param_nommodel = "reproModel.java";
mais ensuite 1. comment recuperer le modele de reproduction reproModel.java ? 2. comment ecraser l'ancienne equation? Voilà le code :
FormuleStorage fs = FormuleStorage.getFormule("Reproduction", "Test.java"); String content = fs.getContent(); Population population = null; // XXX set as param PopulationImpl populationImpl = (PopulationImpl)population; ((PopulationImpl)population).setReproductionEquationContent(content); Pour l'instant, setReproductionEquationContent n'est pas une methode publique sur une population, c'est pourquoi il faut faire un cast. Il faudra peut être la rendre publique si c'est une pratique qui se généralise. @Sigrid: Je pense que tu modifiais aussi le contenu des equations, tu faisais comme ca ? -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
Merci
Voilà le code :
FormuleStorage fs = FormuleStorage.getFormule("Reproduction", "Test.java");
String content = fs.getContent();
Population population = null; // XXX set as param PopulationImpl populationImpl = (PopulationImpl)population; ((PopulationImpl)population).setReproductionEquationContent(content);
comment recupere t-on FormuleStorage à partir de simulationContext? pourquoi ne pas mettre populationImpl.setReproductionEquationContent(content);
Pour l'instant, setReproductionEquationContent n'est pas une methode publique sur une population, c'est pourquoi il faut faire un cast. Il faudra peut être la rendre publique si c'est une pratique qui se généralise.
@Sigrid: Je pense que tu modifiais aussi le contenu des equations, tu faisais comme ca ?
-- ...................................................................... Stephanie MAHEVAS (Stephanie.Mahevas@ifremer.fr) IFREMER/EMH (Ecologie et Modèles pour l'Halieutique) Tel: (33) 2 40 37 41 81 Fax: (33) 2 40 37 40 75 o \ o / _ o __| \ / |__ o _ \ o / o /|\ | /\ ___\o \o | o/ o/__ /\ | /|\ / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \ ......................................................................
Le 15/04/2015 15:42, Stephanie MAHEVAS a écrit :
FormuleStorage fs = FormuleStorage.getFormule("Reproduction", "Test.java");
comment recupere t-on FormuleStorage à partir de simulationContext?
C'est une méthode statique qui lit un fichier, ca ne dépend pas de la région. Ce qui est important, c'est que ensuite la population dépende de la base de données.
String content = fs.getContent();
Population population = null; // XXX set as param PopulationImpl populationImpl = (PopulationImpl)population; ((PopulationImpl)population).setReproductionEquationContent(content); pourquoi ne pas mettre
populationImpl.setReproductionEquationContent(content); Oui, c'est le bon code. (j'ai pas terminé la simplication que j'avais commencé).
-- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
voivi l'erreur de compil ---------- 1. ERROR in E:\ISISFish\isis-fish-4\isis-community-database\rules\ChangementSR_VBaHS.java (at line 92) FormuleStorage formuleModel = FormuleStorage.getFormule("Reproduction",param_nommodel); ^^^^^^^^^^^^^^ FormuleStorage cannot be resolved to a type ---------- 2. ERROR in E:\ISISFish\isis-fish-4\isis-community-database\rules\ChangementSR_VBaHS.java (at line 92) FormuleStorage formuleModel = FormuleStorage.getFormule("Reproduction",param_nommodel); ^^^^^^^^^^^^^^ FormuleStorage cannot be resolved ---------- 2 problems (2 errors) Le 15/04/2015 15:46, Eric Chatellier a écrit :
Le 15/04/2015 15:42, Stephanie MAHEVAS a écrit :
FormuleStorage fs = FormuleStorage.getFormule("Reproduction", "Test.java"); comment recupere t-on FormuleStorage à partir de simulationContext? C'est une méthode statique qui lit un fichier, ca ne dépend pas de la région. Ce qui est important, c'est que ensuite la population dépende de la base de données. String content = fs.getContent();
Population population = null; // XXX set as param PopulationImpl populationImpl = (PopulationImpl)population; ((PopulationImpl)population).setReproductionEquationContent(content); pourquoi ne pas mettre
populationImpl.setReproductionEquationContent(content); Oui, c'est le bon code. (j'ai pas terminé la simplication que j'avais commencé).
-- ...................................................................... Stephanie MAHEVAS (Stephanie.Mahevas@ifremer.fr) IFREMER/EMH (Ecologie et Modèles pour l'Halieutique) Tel: (33) 2 40 37 41 81 Fax: (33) 2 40 37 40 75 o \ o / _ o __| \ / |__ o _ \ o / o /|\ | /\ ___\o \o | o/ o/__ /\ | /|\ / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \ ......................................................................
Le 15/04/2015 15:46, Stephanie MAHEVAS a écrit :
voivi l'erreur de compil ---------- 1. ERROR in E:\ISISFish\isis-fish-4\isis-community-database\rules\ChangementSR_VBaHS.java (at line 92) FormuleStorage formuleModel = FormuleStorage.getFormule("Reproduction",param_nommodel); ^^^^^^^^^^^^^^ FormuleStorage cannot be resolved to a type ---------- 2. ERROR in E:\ISISFish\isis-fish-4\isis-community-database\rules\ChangementSR_VBaHS.java (at line 92) FormuleStorage formuleModel = FormuleStorage.getFormule("Reproduction",param_nommodel); ^^^^^^^^^^^^^^ FormuleStorage cannot be resolved ---------- 2 problems (2 errors) Il manque l'import en haut du fichier: import fr.ifremer.isisfish.datastore.FormuleStorage;
Autre remarque, il y a deux methodes pour avoir les formules: FormuleStorage.getFormule FormuleStorage.getCommunityFormule Chacune va chercher dans le dépot associé. Il faudrait peut etre revoir ce fonctionnement pour aller correctement chercher une formule là où il faut. -- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
il manquait import fr.ifremer.isisfish.datastore.FormuleStorage; c'est bon Le 15/04/2015 15:46, Eric Chatellier a écrit :
Le 15/04/2015 15:42, Stephanie MAHEVAS a écrit :
FormuleStorage fs = FormuleStorage.getFormule("Reproduction", "Test.java"); comment recupere t-on FormuleStorage à partir de simulationContext? C'est une méthode statique qui lit un fichier, ca ne dépend pas de la région. Ce qui est important, c'est que ensuite la population dépende de la base de données. String content = fs.getContent();
Population population = null; // XXX set as param PopulationImpl populationImpl = (PopulationImpl)population; ((PopulationImpl)population).setReproductionEquationContent(content); pourquoi ne pas mettre
populationImpl.setReproductionEquationContent(content); Oui, c'est le bon code. (j'ai pas terminé la simplication que j'avais commencé).
-- ...................................................................... Stephanie MAHEVAS (Stephanie.Mahevas@ifremer.fr) IFREMER/EMH (Ecologie et Modèles pour l'Halieutique) Tel: (33) 2 40 37 41 81 Fax: (33) 2 40 37 40 75 o \ o / _ o __| \ / |__ o _ \ o / o /|\ | /\ ___\o \o | o/ o/__ /\ | /|\ / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \ ......................................................................
Oui en effet je modifiais les equations mais dans des plans d'analyse : pour ca j utilisais des objetsDAO (un exemple en dessous) Quelle difference entre populationImpl et populationDAO ? qd doit on utiliser le topia context ? exemple TopiaContext tx = nextSimulation.getStorage().beginTransaction(); String selectivityEquation = getString(SELECTIVITY, simNum); GearDAO gearDAO = IsisFishDAOHelper.getGearDAO(tx); List<Gear> gears = gearDAO.findAll(); for (Gear gear : gears) { Selectivity selectivity = gear.getPopulationSelectivity(pop); Equation eq = selectivity.getEquation(); eq.setContent(selectivityEquation); } } tx.commitTransaction(); Le 15 avril 2015 15:42, Stephanie MAHEVAS <Stephanie.Mahevas@ifremer.fr> a écrit :
Merci
Voilà le code :
FormuleStorage fs = FormuleStorage.getFormule("Reproduction",
"Test.java");
comment recupere t-on FormuleStorage à partir de simulationContext?
String content = fs.getContent();
Population population = null; // XXX set as param PopulationImpl populationImpl = (PopulationImpl)population; ((PopulationImpl)population).setReproductionEquationContent(content);
pourquoi ne pas mettre
populationImpl.setReproductionEquationContent(content);
Pour l'instant, setReproductionEquationContent n'est pas une methode publique sur une population, c'est pourquoi il faut faire un cast. Il faudra peut être la rendre publique si c'est une pratique qui se généralise.
@Sigrid: Je pense que tu modifiais aussi le contenu des equations, tu faisais comme ca ?
-- ...................................................................... Stephanie MAHEVAS (Stephanie.Mahevas@ifremer.fr) IFREMER/EMH (Ecologie et Modèles pour l'Halieutique) Tel: (33) 2 40 37 41 81 Fax: (33) 2 40 37 40 75
o \ o / _ o __| \ / |__ o _ \ o / o /|\ | /\ ___\o \o | o/ o/__ /\ | /|\ / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \ ......................................................................
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org http://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users
Le 15/04/2015 15:49, Sigrid Lehuta a écrit :
Oui en effet je modifiais les equations mais dans des plans d'analyse : pour ca j utilisais des objetsDAO (un exemple en dessous) Quelle difference entre populationImpl et populationDAO ? qd doit on utiliser le topia context ? Population et PopulationImpl c'est presque la même chose. C'est juste que Population est une interface d'utilisation qui devrait tout le temps être utilisé. (normalement, on n'utilise jamais l'implementation specifique PopulationImpl).
PopulationDAO c'est une classe qui permet de manipulation des Population dans la base de données (recherche, lecture, modification, suppression).
exemple TopiaContext tx = nextSimulation.getStorage().beginTransaction(); String selectivityEquation = getString(SELECTIVITY, simNum); GearDAO gearDAO = IsisFishDAOHelper.getGearDAO(tx); List<Gear> gears = gearDAO.findAll(); for (Gear gear : gears) { Selectivity selectivity = gear.getPopulationSelectivity(pop); Equation eq = selectivity.getEquation(); eq.setContent(selectivityEquation); } }
tx.commitTransaction();
-- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
participants (3)
-
Eric Chatellier -
Sigrid Lehuta -
Stephanie MAHEVAS