Author: bpoussin Date: 2014-07-01 17:33:08 +0200 (Tue, 01 Jul 2014) New Revision: 4029 Url: http://forge.codelutin.com/projects/isis-fish/repository/revisions/4029 Log: bug fix with semantics ducarated and undecorated mixed Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageAbstract.java trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageCSV.java Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageAbstract.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageAbstract.java 2014-07-01 07:55:11 UTC (rev 4028) +++ trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageAbstract.java 2014-07-01 15:33:08 UTC (rev 4029) @@ -166,7 +166,8 @@ // on retrouve souvent les memes semantiques dans les matrices // pour minimiser les chaines en memoire, on prend la representation // interne avant de l'utiliser comme cle. - cache.put(result.intern(), decoratedValue); + result = result.intern(); + cache.put(result, decoratedValue); } return result; } @@ -277,11 +278,15 @@ protected List<String> undecorate(List l) { ArrayList<String> result = new ArrayList<String>(l.size()); for (Object o : l) { - result.add(decorator.undecorate(o)); + result.add(undecorate(o)); } return result; } + protected String undecorate(Object o) { + return decorator.undecorate(o); + } + @Override public void delete() { close(); @@ -562,7 +567,7 @@ // collect des semantics. +1 pour les dates List[] sem = new List[1 + sample.getDimCount()]; - sem[0] = steps; + sem[0] = undecorate(steps); for (int i = 1; i < sem.length; i++) { sem[i] = new HashList(); @@ -582,16 +587,17 @@ // recuperation du resultat pour chaque date de la simulation, de Date(0) à lastDate for (Map.Entry<TimeStep, MatrixND> result : results.entrySet()) { - TimeStep d = result.getKey(); + TimeStep s = result.getKey(); + String stepString = undecorate(s); MatrixND m = result.getValue(); // on recupere dans la matrice resultat l'endroit on il faut // mettre la matrice - MatrixND submat = resultMat.getSubMatrix(0, d, 1); + MatrixND submat = resultMat.getSubMatrix(0, stepString, 1); // on met les valeur de mat dans la sous matrice extraite - for (MatrixIterator mi = m.iterator(); mi.next();) { + for (MatrixIterator mi = m.iteratorNotZero(); mi.next();) { submat.setValue( - ArrayUtil.concat(new Object[] { d }, + ArrayUtil.concat(new Object[] { stepString }, mi.getSemanticsCoordinates()), mi.getValue()); } } Modified: trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageCSV.java =================================================================== --- trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageCSV.java 2014-07-01 07:55:11 UTC (rev 4028) +++ trunk/src/main/java/fr/ifremer/isisfish/datastore/ResultStorageCSV.java 2014-07-01 15:33:08 UTC (rev 4029) @@ -4,6 +4,7 @@ import fr.ifremer.isisfish.IsisFish; import fr.ifremer.isisfish.IsisFishRuntimeException; import fr.ifremer.isisfish.simulator.SimulationContext; +import fr.ifremer.isisfish.simulator.SimulationControl; import fr.ifremer.isisfish.types.TimeStep; import fr.ifremer.isisfish.util.SimpleParser; import java.io.BufferedWriter; @@ -233,11 +234,14 @@ @Override protected MatrixND readResult(TimeStep step, String name) { - // un peu de statistique - TimeStep currentStep = SimulationContext.get().getSimulationControl().getStep(); - if (!step.equals(currentStep)) { - numberOfPastResultAsked++; - maxGapWithCurrentStep = Math.max(maxGapWithCurrentStep, currentStep.gap(step)); + // un peu de statistique (seulement en simulation + SimulationControl sc = SimulationContext.get().getSimulationControl(); + if (sc != null) { + TimeStep currentStep = sc.getStep(); + if (!step.equals(currentStep)) { + numberOfPastResultAsked++; + maxGapWithCurrentStep = Math.max(maxGapWithCurrentStep, currentStep.gap(step)); + } } MatrixND result = null;