Salut, je sais pas si y a eu de réponses à ce mail. Dans le doute Je vais essayer de répondre avec mes souvenirs de codage v2 (je te parle d'un temps que les moins de 20ans...) 1) si c'est comme ce que j'avais fait en v2, c'est à la charge de l'utilisateur quand il fait son report d'effort de vérifier qu'il ne reporte pas vers un métier interdit et d'ajouter dans la table tous les metiers devenant interdit. Dans les règles existantes, ça doit déjà être le cas. 2) forbiddenmétiers concerne les métiers interdits quelque soit la règle alors qu'aimedmétiers ne concerne que les métiers interdits par le tac. Cela tu n'ajoutes les metiers interdits par le tac dans forbiddenmetiers que 1 par 1 (au fur et à mesure de la boucle sur les metiers qui appelle preAction) il faut bien aussi vérifier dans aimedmetiers 3)si c'est pas dans le manuel, faut engueuler Youen :-) ! Pour le "nonActiviy" et "nonActivie", hormis une panne de la touche t du clavier de Benjamin, je vois pas de raisons particulières. Cela dit, ces deux métiers ne servent plus à grand chose 4) a) je crois pas: dans taillemin, tu n'effaces pas mais tu crées des rejets que s'il n'y en a pas déjà avant (donc à priori si un tac est pas passé avant or si le tac était avant, tout est déjà dans les rejets). C'est pas parfait mais j'avais la flemme de chercher mieux et y avait pas d'autres règles générant des rejets :-( ... b) Pour le premier point: discard est une copie de la matrice capture et est donc (normalement) strategie x metier x group x zone Pour le second point: tu n'effaces que si l'affectation n'a pas déjà été faite ' if (!affectation) ', donc tu le fais une fois pour le premier métier et après c'est plus refait (puisque t'as matrice discard contient déjà tous les métiers). Pour le message il doit falloir ajouter un espace entre le guillement et le where ligne 148 A+ Hilaire Sigrid LEHUTA a écrit :
Salut Benjamin, (Prends ton courage a deux mains,) je reviens sur l erreur que j ai eu ya quelques semaines pour la regle TACpoids le message d erreur suit
une nouvelle erreur arrive : Caused by: java.lang.NullPointerException at rules.TACpoids.postAction(TACpoids.java:276) qui concerne cette ligne de commande discard = popMon.getCatch(pop).copy();
Sinon on a des questions :
1) est ce que forbiddenMetier est testé dans chaque regle implicitement ou faut il le tester dans chaque regle ?
Maintenant si on rentre en detail dans la regle saurais tu nous dire
2) a quoi sert aimedMetiers ? cela ne suffit il pas d avoir "forbiddenMetier" ?
3)En preAction quand on reporte l effort, on teste si le metier n est pas non activité (!metier.getName().equalsIgnoreCase("nonActiviy")) qu est ce qui se passe si l utilisateur l a appelé "au port" ou "farniente" ?? il faudrait le mettre dans le manuel... d ailleurs la c est ecrit "nonActiviy" et "nonActivie", est ce volontaire ???
4) En post action, on efface la matrice discard a)il y a donc un ordre a respecter dans les regle de gestion : taille min avant TAC (puisqu on ne vide pas discards dans taille min) Mais les survies sont affectées 2 fois ??!!! b)peux tu me confirmer que getCatch contient les captures pour le mois de tous les metiers et donc on ne peut pas avoir les rejets par metiers... - si oui c est dommage... - si non alors a chaque nouvelle boucle on efface les rejets du metier precedant et finallement discard ne contient que le dernier metier et la variable "affectation" ne sert a rien !
on a vu d autres erreurs je t enverrai la nouvelle regle pour la mettre sur le serveur
Merci d avance Sigrid
premiere erreur :
Exception: org.codelutin.topia.TopiaException: Error during query execution: select distinct(metierSeasonInfo.metier) from fr.ifremer.isisfish.entities.TargetSpecieswhere species=? and primaryCatch=true at org.codelutin.topia.framework.TopiaContextImpl.find(TopiaContextImpl.java:819)
at rules.TACpoids.preAction(TACpoids.java:146) at simulators.DefaultSimulator.simulate(DefaultSimulator.java:180) at fr.ifremer.isisfish.simulator.SimulationHelper.localSimulateSameThread(SimulationHelper.java:464)
at fr.ifremer.isisfish.simulator.SimulationHelper$SimThread.run(SimulationHelper.java:369)
Caused by: org.hibernate.hql.ast.QuerySyntaxException: unexpected token: = near line 1, column 102 [select distinct(metierSeasonInfo.metier) from fr.ifremer.isisfish.entities.TargetSpecieswhere species=? and primaryCatch=true] at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:31)
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:24)
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:253)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:156)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:110)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77) at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56) at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1612) at org.codelutin.topia.framework.TopiaContextImpl.find(TopiaContextImpl.java:810)
... 4 more
-- Hilaire Drouineau IFREMER, département EMH Centre de Nantes - BP 21105 - 44311 Nantes Cedex 3 tel : +33 (0)2 40 37 42 12 - fax : +33 (0)2 40 37 40 75 email : hilaire.drouineau@ifremer.fr - web : http://www.ifremer.fr/emh **********************************************************************