Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixAnalysisResult.java @ 6999:3e93f29281bc
Fix for flys/issue1479: The indices of the dates of the analysis periods where re-mapped wrong.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Thu, 12 Sep 2013 16:35:07 +0200 |
parents | 8efef772a488 |
children | a3f318347707 0a5239a1e46e |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixAnalysisResult.java Thu Sep 12 11:50:39 2013 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixAnalysisResult.java Thu Sep 12 16:35:07 2013 +0200 @@ -8,6 +8,8 @@ package org.dive4elements.river.artifacts.model.fixings; +import gnu.trove.TIntObjectHashMap; + import java.util.Collection; import java.util.Date; import java.util.TreeMap; @@ -56,17 +58,22 @@ public void makeAnalysisEventsUnique() { - // Actually it would be enough to make dates - // unique in one analysis period but to simplify things - // we make them unique in all periods. - DateUniqueMaker dum = new DateUniqueMaker(); + TIntObjectHashMap dums = new TIntObjectHashMap(); + for (KMIndex.Entry<AnalysisPeriod []> entry: analysisPeriods) { - for (AnalysisPeriod ap: entry.getValue()) { + AnalysisPeriod [] aps = entry.getValue(); + for (int i = 0; i < aps.length; ++i) { + AnalysisPeriod ap = aps[i]; QWD [] qwds = ap.getQWDs(); - if (qwds != null) { - for (QWD qwd: qwds) { - dum.makeUnique(qwd); - } + if (qwds == null) { + continue; + } + DateUniqueMaker dum = (DateUniqueMaker)dums.get(i); + if (dum == null) { + dums.put(i, dum = new DateUniqueMaker()); + } + for (QWD qwd: qwds) { + dum.makeUnique(qwd); } } }