diff artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixAnalysisResult.java @ 9415:9744ce3c3853

Rework of fixanalysis computation and dWt and WQ facets. Got rid of strange remapping and bitshifting code by explicitely saving the column information and using it in the facets. The facets also put the valid station range into their xml-metadata
author gernotbelger
date Thu, 16 Aug 2018 16:27:53 +0200
parents ddcd52d239cd
children
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixAnalysisResult.java	Thu Aug 16 15:47:10 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixAnalysisResult.java	Thu Aug 16 16:27:53 2018 +0200
@@ -8,46 +8,31 @@
 
 package org.dive4elements.river.artifacts.model.fixings;
 
-import gnu.trove.TIntObjectHashMap;
-
-import java.util.Collection;
-import java.util.Date;
-import java.util.TreeMap;
-import java.util.TreeSet;
-
-import org.apache.log4j.Logger;
 import org.dive4elements.river.artifacts.model.Parameters;
-
 import org.dive4elements.river.utils.KMIndex;
 
-public class FixAnalysisResult
-extends      FixResult
-{
-    private static Logger log =
-        Logger.getLogger(FixAnalysisResult.class);
+public class FixAnalysisResult extends FixResult {
 
-    protected KMIndex<AnalysisPeriod []> analysisPeriods;
+    private static final long serialVersionUID = 1L;
 
-    public FixAnalysisResult() {
+    private final KMIndex<AnalysisPeriod[]> analysisKmPeriods;
+
+    private final AnalysisPeriodEventResults analysisEventResults;
+
+    public FixAnalysisResult(final Parameters parameters, final FixResultColumns fixResultColumns, final KMIndex<AnalysisPeriod[]> analysisKmPeriods,
+            final AnalysisPeriodEventResults analysisEventResults) {
+        super(parameters, fixResultColumns);
+
+        this.analysisKmPeriods = analysisKmPeriods;
+        this.analysisEventResults = analysisEventResults;
     }
 
-    public FixAnalysisResult(
-        Parameters                 parameters,
-        KMIndex<QWD []>            fixings,
-        KMIndex<AnalysisPeriod []> analysisPeriods
-    ) {
-        super(parameters, fixings);
-        this.analysisPeriods = analysisPeriods;
-    }
-
-    public int getUsedSectorsInAnalysisPeriods() {
+    public final int getUsedSectorsInAnalysisPeriods() {
         int result = 0;
-        for (KMIndex.Entry<AnalysisPeriod []> entry: analysisPeriods) {
-            for (AnalysisPeriod period: entry.getValue()) {
+        for (final KMIndex.Entry<AnalysisPeriod[]> entry : this.analysisKmPeriods) {
+            for (final AnalysisPeriod period : entry.getValue()) {
                 for (int i = 0; i < 4; ++i) {
-                    result |= period.getQSectorAverage(i) != null
-                        ? (1 << i)
-                        : 0;
+                    result |= period.getQSectorAverage(i) != null ? (1 << i) : 0;
                 }
                 // XXX: Stop early on result == ~(~0 << 4)) ?
             }
@@ -55,76 +40,11 @@
         return result;
     }
 
-
-    public void makeAnalysisEventsUnique() {
-        TIntObjectHashMap dums = new TIntObjectHashMap();
-
-        for (KMIndex.Entry<AnalysisPeriod []> entry: analysisPeriods) {
-            AnalysisPeriod [] aps = entry.getValue();
-            for (int i = 0; i < aps.length; ++i) {
-                AnalysisPeriod ap = aps[i];
-                QWD [] qwds = ap.getQWDs();
-                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);
-                }
-            }
-        }
-    }
-
-    public Collection<Date> getAnalysisEventsDates(int analysisPeriod) {
-        TreeSet<Date> dates = new TreeSet<Date>();
-        for (KMIndex.Entry<AnalysisPeriod []> entry: analysisPeriods) {
-            QWD [] qwds = entry.getValue()[analysisPeriod].getQWDs();
-            if (qwds != null) {
-                for (QWD qwd: qwds) {
-                    dates.add(qwd.date);
-                }
-            }
-        }
-        return dates;
+    public final KMIndex<AnalysisPeriod[]> getAnalysisPeriods() {
+        return this.analysisKmPeriods;
     }
 
-    public Collection<Integer> getAnalysisEventsIndices(int analysisPeriod) {
-        TreeMap<Date, Integer> dates = new TreeMap<Date, Integer>();
-        for (KMIndex.Entry<AnalysisPeriod []> entry: analysisPeriods) {
-            QWD [] qwds = entry.getValue()[analysisPeriod].getQWDs();
-            if (qwds != null) {
-                for (QWD qwd: qwds) {
-                    dates.put(qwd.date, qwd.index);
-                }
-            }
-        }
-        return dates.values();
+    public AnalysisPeriodEventResults getAnalysisEventResults() {
+        return this.analysisEventResults;
     }
-
-    public void remapAnalysisEventsIndicesToRank(int analysisPeriod) {
-        RankRemapper remapper = new RankRemapper();
-        for (Integer index: getAnalysisEventsIndices(analysisPeriod)) {
-            remapper.toMap(index);
-        }
-        for (KMIndex.Entry<AnalysisPeriod []> entry: analysisPeriods) {
-            QWD [] qwds = entry.getValue()[analysisPeriod].getQWDs();
-            if (qwds != null) {
-                for (QWD qwd: qwds) {
-                    remapper.remap(qwd);
-                }
-            }
-        }
-    }
-
-    public KMIndex<AnalysisPeriod []> getAnalysisPeriods() {
-        return analysisPeriods;
-    }
-
-    public void setAnalysisPeriods(KMIndex<AnalysisPeriod []> analysisPeriods) {
-        this.analysisPeriods = analysisPeriods;
-    }
-}
-// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
+}
\ No newline at end of file

http://dive4elements.wald.intevation.org