Salut, Apres quelques tests voici une petite liste de corrections a faire: Script ====== - probleme avec l'evaluation d'un script, car il appelle check avant l'evaluation pour que le script soit compile. Et ne fait l'execution que si check renvoie null, or, il renvoie "ok" si tout est bon, donc il ne fait jamais l'evaluation. Le mieux est d'avoir une vrai methode check qui retour null si tout est bon, et le message d'erreur de compilation sinon. Utilisee pour faire le check qui affiche "ok" et le check pre evaluation. (j'ai fait une petite modif pour que ca marche pour l'instant) Sensitivity =========== - mise en facteur migration, meme modele pour tous les facteurs :(, lorsqu'on modifie 1 ca modifie tout - probleme de mise en facteur des matrices, lorsqu'on selectionne discret, et qu'on modifie une valeur, cela modifie la matrice dans toutes les autres onglets - probleme de rechargement d'ancienne simulation (pas de chargement de la region dans l'onglet facteur) - probleme de factorisation des equations, il doit y avoir 1 facteur par parametre de l'equation et on doit pouvoir le reediter (et savoir ce que l'on reedite)(il faut sans doute pouvoir aussi reediter l'equation (par contre est-ce global ou local ?) - dans l'onglet facteur, les cartes ne devrait pas etre modifiable (ex: zone) - dans l'editeur de zone de la factorisation, il manque un JScrollPane - le facteur Age/longueur de MetaPopulation est un seul facteur (mutuellement exclusif) et non pas deux facteurs - dans la boite de dialogue de saisie des facteurs, le composant 'commentaires' prend beaucoup trop de placement par rapport au composant d'edition (problematique pour les composants d'edition important ex: pop->zone), et il y a beaucoup trop de place perdu entre le nom du facteur et le reste (espace vide) - lors de la factorisation d'une matrice, si on choisit continu, il y a un composant valeur qui reste vde (a quoi sert-il ?) - dans metier 'range of values' doit etre modifiable; par contre paramatre controlable de l'engin n'est pas modifiable mais est utilise pour savoir comment est gere 'range of values' - les saisons (pop et metier) ne sont pas utilisable en facteur - strategie->caracteristique: utiliser equation d'inactivite n'est pas factorisable Saisie ====== - Dans la saisie classique pop->zone, il ne faut pas afficher toutes les zones dans les 2 dernieres listes, mais seulement les zones selectionnees de la premiere liste - certaine zone commentaire doivent manquer de JScollPane (ex: metier->Saison/zones) Simulation ========== - une simulation avec la meme base sur 2 ans an subprocess prend 3 min. Une simulation en inprocess sur seulement 1an prend 4 min :( et mange la memoire et ne semble pas la liberer - si on utilise les stats on a une exception et pas de stat :( (division par 0) INFO [Thread-211] (SubProcessSimulationLauncher.java:251) run - dans un sous processus> INFO [SimThread sim_TestRendu_2009-03-23-08-27] (SimulationControl.java:174) setText - Simulation terminée INFO [Thread-211] (SubProcessSimulationLauncher.java:251) run - dans un sous processus> INFO [SimThread sim_TestRendu_2009-03-23-08-27] (InProcessSimulatorLauncher.java:444) localSimulateSameThread - Simulation time: 126.561 INFO [Thread-211] (SubProcessSimulationLauncher.java:251) run - dans un sous processus>Exception in thread "SimThread sim_TestRendu_2009-03-23-08-27" java.lang.ArithmeticException: / by zero INFO [Thread-211] (SubProcessSimulationLauncher.java:251) run - dans un sous processus> at fr.ifremer.isisfish.util.Trace.printStatisticAndClear(Trace.java:168) INFO [Thread-211] (SubProcessSimulationLauncher.java:251) run - dans un sous processus> at fr.ifremer.isisfish.aspect.Trace.printStatistiqueAndClear(Trace.java:105) INFO [Thread-211] (SubProcessSimulationLauncher.java:251) run - dans un sous processus> at fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher.localSimulateSameThread(InProcessSimulatorLauncher.java:449) INFO [Thread-211] (SubProcessSimulationLauncher.java:251) run - dans un sous processus> at fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher$SimThread.run(InProcessSimulatorLauncher.java:237) Rendu des resultats =================== - Impossible d'ouvrir un rendu de resultat des simulations recuperes sur le labs ou d'une simulation faite localement, voici l'exception: DEBUG [AWT-EventQueue-0] (SimulationStorage.java:307) getParameter - Loading properties from : /usr/local/src/PROJET/lutin/isis-fish-data-trunk/simulations/as_Complet_simple_2009-03-20-14-58_0/parameters.properties DEBUG [AWT-EventQueue-0] (SimulationParameter.java:527) getRegion - La région Golfe de Gascogne a déjà été initialisée 03-23 08:21:38 jdbc[3]: Connection not closed DEBUG [AWT-EventQueue-0] (SimulationParameter.java:527) getRegion - La région Golfe de Gascogne a déjà été initialisée INFO [AWT-EventQueue-0] (ExportHelper.java:142) populateExport - DEBUG: set export param: export.0.parameter.pop = nephrops(fr.ifremer.isisfish.entities.Population#1223471368770#0.3058878391043739) DEBUG [AWT-EventQueue-0] (SimulationParameter.java:527) getRegion - La région Golfe de Gascogne a déjà été initialisée 03-23 08:21:39 jdbc[4]: SQLException ERROR [AWT-EventQueue-0] (JDBCExceptionReporter.java:101) logExceptions - Hexadecimal string contains non-hex character: matrixCatchRatePerStrategyMet nephrops; SQL statement: select distinct resultimpl0_.name as col_0_0_ from result resultimpl0_ order by resultimpl0_.name [90004-109] WARN [AWT-EventQueue-0] (ResultStorage.java:371) getResultName - Can't get result name org.codelutin.topia.TopiaException: Error during query execution: Select distinct name from fr.ifremer.isisfish.entities.Result order by name at org.codelutin.topia.framework.TopiaContextImpl.find(TopiaContextImpl.java:859) at fr.ifremer.isisfish.datastore.ResultStorage.getResultName(ResultStorage.java:364) at fr.ifremer.isisfish.ui.result.ResultEdit.loadResume(ResultEdit.java:258) at fr.ifremer.isisfish.ui.result.ResultEdit.setSimulation(ResultEdit.java:225) at fr.ifremer.isisfish.ui.result.ResultEdit.<init>(ResultEdit.java:90) at fr.ifremer.isisfish.ui.result.ResultView.on_openWindowButton_clicked(ResultView.java:139) at fr.ifremer.isisfish.ui.result.ResultViewUI$3.mouseClicked(ResultViewUI.java:320) at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253) at java.awt.Component.processMouseEvent(Component.java:6137) at javax.swing.JComponent.processMouseEvent(JComponent.java:3265) at java.awt.Component.processEvent(Component.java:5899) at java.awt.Container.processEvent(Container.java:2030) at java.awt.Component.dispatchEventImpl(Component.java:4501) at java.awt.Container.dispatchEventImpl(Container.java:2088) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4303) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3976) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3897) at java.awt.Container.dispatchEventImpl(Container.java:2074) at java.awt.Window.dispatchEventImpl(Window.java:2458) at java.awt.Component.dispatchEvent(Component.java:4331) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:284) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) Caused by: org.hibernate.exception.GenericJDBCException: could not execute query at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.loader.Loader.doList(Loader.java:2231) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125) at org.hibernate.loader.Loader.list(Loader.java:2120) at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401) at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:361) at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1148) at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102) at org.codelutin.topia.framework.TopiaContextImpl.find(TopiaContextImpl.java:855) ... 27 more Caused by: org.h2.jdbc.JdbcSQLException: Hexadecimal string contains non-hex character: matrixCatchRatePerStrategyMet nephrops; SQL statement: select distinct resultimpl0_.name as col_0_0_ from result resultimpl0_ order by resultimpl0_.name [90004-109] at org.h2.message.Message.getSQLException(Message.java:107) at org.h2.message.Message.getSQLException(Message.java:118) at org.h2.message.Message.getSQLException(Message.java:77) at org.h2.util.ByteUtils.getHexDigit(ByteUtils.java:99) at org.h2.util.ByteUtils.convertStringToBytes(ByteUtils.java:85) at org.h2.value.Value.convertTo(Value.java:754) at org.h2.value.ValueLob.convertTo(ValueLob.java:441) at org.h2.value.Value.getBytes(Value.java:386) at org.h2.value.ValueLob.getBytes(ValueLob.java:574) at org.h2.value.ValueLob.hashCode(ValueLob.java:603) at org.h2.value.ValueArray.hashCode(ValueArray.java:43) at org.h2.util.ValueHashMap.getIndex(ValueHashMap.java:54) at org.h2.util.ValueHashMap.put(ValueHashMap.java:65) at org.h2.result.LocalResult.addRow(LocalResult.java:262) at org.h2.command.dml.Select.queryFlat(Select.java:501) at org.h2.command.dml.Select.queryWithoutCache(Select.java:560) at org.h2.command.dml.Query.query(Query.java:233) at org.h2.command.CommandContainer.query(CommandContainer.java:81) at org.h2.command.Command.executeQueryLocal(Command.java:141) at org.h2.command.Command.executeQuery(Command.java:122) at org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:98) at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208) at org.hibernate.loader.Loader.getResultSet(Loader.java:1808) at org.hibernate.loader.Loader.doQuery(Loader.java:697) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) at org.hibernate.loader.Loader.doList(Loader.java:2228) ... 35 more -- Benjamin -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com () campagne du ruban ascii http://www.codelutin.com /\ pour les mails en ascii
Benjamin POUSSIN a écrit :
- si on utilise les stats on a une exception et pas de stat :( (division par 0)
INFO [Thread-211] (SubProcessSimulationLauncher.java:251) run - dans un sous processus> INFO [SimThread sim_TestRendu_2009-03-23-08-27] (SimulationControl.java:174) setText - Simulation terminée INFO [Thread-211] (SubProcessSimulationLauncher.java:251) run - dans un sous processus> INFO [SimThread sim_TestRendu_2009-03-23-08-27] (InProcessSimulatorLauncher.java:444) localSimulateSameThread - Simulation time: 126.561 INFO [Thread-211] (SubProcessSimulationLauncher.java:251) run - dans un sous processus>Exception in thread "SimThread sim_TestRendu_2009-03-23-08-27" java.lang.ArithmeticException: / by zero INFO [Thread-211] (SubProcessSimulationLauncher.java:251) run - dans un sous processus> at fr.ifremer.isisfish.util.Trace.printStatisticAndClear(Trace.java:168) INFO [Thread-211] (SubProcessSimulationLauncher.java:251) run - dans un sous processus> at fr.ifremer.isisfish.aspect.Trace.printStatistiqueAndClear(Trace.java:105) INFO [Thread-211] (SubProcessSimulationLauncher.java:251) run - dans un sous processus> at fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher.localSimulateSameThread(InProcessSimulatorLauncher.java:449) INFO [Thread-211] (SubProcessSimulationLauncher.java:251) run - dans un sous processus> at fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher$SimThread.run(InProcessSimulatorLauncher.java:237)
J'y ai jeter un coup d'oeil, mais je ne suis pas bien sûr que le code actuel ai déjà fonctionné. Suite a un refactoring, on effectue un division par zéro parce que la variable n'est jamais utilisée. On a 2 aspect : public void traceAfterCall (Object e) { traceAfter(e, false); } appelé par : @After("executeMethod") public void traceAfterExecute (JoinPoint jp) { Method method = ((MethodSignature)jp.getSignature()).getMethod(); trace.traceAfterCall(method); } et public void traceAfterComputation (Object e) { traceAfter(e, true); } jamais appelé. Il y a un commentaire concernant la "computation", mais je ne vois pas trop dans quel cas il doit être incrémenté : if (computation) { stat[STAT_COMPUTATION]++; // add +1 to computation number else { // on incremente pas tout le temps STAT_CALL, car le plus // souvent lors de l'utilisation de l'objet Trace dans un cache // on a deja compte l'appel et reappelle lui meme computation // ce qui ferait 2 appel alors qu'il n'y en a qu'un en realite stat[STAT_CALL]++; // add +1 to call number } -- Éric <chatellier@codelutin.com> Tel: 02 40 50 29 28 http://www.codelutin.com
Éric Chatellier a écrit :
J'y ai jeter un coup d'oeil, mais je ne suis pas bien sûr que le code actuel ai déjà fonctionné. Suite a un refactoring, on effectue un division par zéro parce que la variable n'est jamais utilisée.
On a 2 aspect :
public void traceAfterCall (Object e) { traceAfter(e, false); } appelé par : @After("executeMethod") public void traceAfterExecute (JoinPoint jp) { Method method = ((MethodSignature)jp.getSignature()).getMethod(); trace.traceAfterCall(method); }
et public void traceAfterComputation (Object e) { traceAfter(e, true); } jamais appelé.
Il y a un commentaire concernant la "computation", mais je ne vois pas trop dans quel cas il doit être incrémenté :
if (computation) { stat[STAT_COMPUTATION]++; // add +1 to computation number else { // on incremente pas tout le temps STAT_CALL, car le plus // souvent lors de l'utilisation de l'objet Trace dans un cache // on a deja compte l'appel et reappelle lui meme computation // ce qui ferait 2 appel alors qu'il n'y en a qu'un en realite stat[STAT_CALL]++; // add +1 to call number }
J'ai essayé de corrigé l'erreur. On avait dit qu'on passerait l'instance de Trace(Util) aux deux aspects. Cependant la ne fonctionne pas, car les deux aspects sont instanciés pas aspectwerkz :(. Tu aurais une autre solution pour qu'ils utilisent la même instance ? -- Éric <chatellier@codelutin.com> Tel: 02 40 50 29 28 http://www.codelutin.com
Benjamin POUSSIN a écrit :
Salut,
Apres quelques tests voici une petite liste de corrections a faire:
Script ====== - probleme avec l'evaluation d'un script, car il appelle check avant l'evaluation pour que le script soit compile. Et ne fait l'execution que si check renvoie null, or, il renvoie "ok" si tout est bon, donc il ne fait jamais l'evaluation. Le mieux est d'avoir une vrai methode check qui retour null si tout est bon, et le message d'erreur de compilation sinon. Utilisee pour faire le check qui affiche "ok" et le check pre evaluation. (j'ai fait une petite modif pour que ca marche pour l'instant Ok,
Sinon, c'est sensé faire quoi "évaluer", appeler une méthode "main" s'il y en a une ? Actuellement ya une grosse trace s'il n'y a pas de main... -- Éric <chatellier@codelutin.com> Tel: 02 40 50 29 28 http://www.codelutin.com
On Wed, 25 Mar 2009 14:59:43 +0100 Éric Chatellier <chatellier@codelutin.com> wrote:
Script ====== - probleme avec l'evaluation d'un script, car il appelle check avant l'evaluation pour que le script soit compile. Et ne fait l'execution que si check renvoie null, or, il renvoie "ok" si tout est bon, donc il ne fait jamais l'evaluation. Le mieux est d'avoir une vrai methode check qui retour null si tout est bon, et le message d'erreur de compilation sinon. Utilisee pour faire le check qui affiche "ok" et le check pre evaluation. (j'ai fait une petite modif pour que ca marche pour l'instant Ok,
Sinon, c'est sensé faire quoi "évaluer", appeler une méthode "main" s'il y en a une ? Actuellement ya une grosse trace s'il n'y a pas de main...
oui, c ca, appeler le main -- Benjamin -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com () campagne du ruban ascii http://www.codelutin.com /\ pour les mails en ascii
participants (2)
-
Benjamin POUSSIN -
Éric Chatellier