diff artifacts/src/main/java/org/dive4elements/river/artifacts/states/fixation/FixAnalysisCompute.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 2b83d3a96703
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/states/fixation/FixAnalysisCompute.java	Thu Aug 16 15:47:10 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/states/fixation/FixAnalysisCompute.java	Thu Aug 16 16:27:53 2018 +0200
@@ -13,6 +13,7 @@
 import java.util.Date;
 import java.util.List;
 
+import org.apache.commons.lang.math.DoubleRange;
 import org.apache.log4j.Logger;
 import org.dive4elements.artifactdatabase.state.Facet;
 import org.dive4elements.artifactdatabase.state.FacetActivity;
@@ -25,6 +26,7 @@
 import org.dive4elements.river.artifacts.model.DateRange;
 import org.dive4elements.river.artifacts.model.FacetTypes;
 import org.dive4elements.river.artifacts.model.ReportFacet;
+import org.dive4elements.river.artifacts.model.fixings.AnalysisPeriodEventResults;
 import org.dive4elements.river.artifacts.model.fixings.FixAnalysisCalculation;
 import org.dive4elements.river.artifacts.model.fixings.FixAnalysisEventsFacet;
 import org.dive4elements.river.artifacts.model.fixings.FixAnalysisPeriodsFacet;
@@ -37,17 +39,21 @@
 import org.dive4elements.river.artifacts.model.fixings.FixLongitudinalDeviationFacet;
 import org.dive4elements.river.artifacts.model.fixings.FixLongitudinalReferenceFacet;
 import org.dive4elements.river.artifacts.model.fixings.FixReferenceEventsFacet;
+import org.dive4elements.river.artifacts.model.fixings.FixResultColumn;
+import org.dive4elements.river.artifacts.model.fixings.FixResultColumns;
 import org.dive4elements.river.artifacts.model.fixings.FixWQCurveFacet;
 import org.dive4elements.river.artifacts.resources.Resources;
 import org.dive4elements.river.artifacts.states.DefaultState;
 import org.dive4elements.river.utils.Formatter;
 import org.dive4elements.river.utils.IdGenerator;
-import org.dive4elements.river.utils.UniqueDateFormatter;
 
 /**
  * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
  */
 public class FixAnalysisCompute extends DefaultState implements FacetTypes {
+
+    private static final long serialVersionUID = 1L;
+
     /** The log used in this class. */
     private static Logger log = Logger.getLogger(FixAnalysisCompute.class);
 
@@ -138,10 +144,14 @@
         final int qsE = access.getQSectorEnd();
 
         final DateFormat df = Formatter.getDateFormatter(context.getMeta(), "dd.MM.yyyy");
-        final DateFormat lf = Formatter.getDateFormatter(context.getMeta(), "dd.MM.yyyy'T'HH:mm");
+        final UniqueDateFormatter cf = new UniqueDateFormatter(df);
+
+        final AnalysisPeriodEventResults analysisEventResults = fr.getAnalysisEventResults();
 
         final DateRange[] periods = access.getAnalysisPeriods();
 
+        int facetIndex = 0;
+
         for (int i = 0; i < periods.length; i++) {
             final DateRange period = periods[i];
             final String startDate = df.format(period.getFrom());
@@ -172,22 +182,24 @@
                 final String dev = "Abweichung: " + description;
                 facets.add(new FixLongitudinalAvSectorFacet(facetNdx, FIX_SECTOR_AVERAGE_LS_DEVIATION + "_" + sectorNdx, dev));
                 facets.add(new FixAvSectorFacet(facetNdx, FIX_SECTOR_AVERAGE_WQ + "_" + sectorNdx, description));
-
             }
 
             final String eventDesc = Resources.getMsg(context.getMeta(), I18N_ANALYSIS, I18N_ANALYSIS);
 
-            final Collection<Date> aeds = fr.getAnalysisEventsDates(i);
-            final UniqueDateFormatter cf = new UniqueDateFormatter(df, lf, aeds);
+            final FixResultColumns analysisEventResult = analysisEventResults.getEventResults(i);
+            final Collection<FixResultColumn> columns = analysisEventResult.getSortedColumns();
 
-            int k = 0;
-            for (final Date d : aeds) {
-                int anaNdx = i << 8;
-                anaNdx = anaNdx | k;
-                facets.add(new FixAnalysisEventsFacet(anaNdx, FIX_ANALYSIS_EVENTS_DWT, eventDesc + (i + 1) + " - " + cf.format(d)));
-                facets.add(new FixLongitudinalAnalysisFacet(anaNdx, FIX_ANALYSIS_EVENTS_LS, eventDesc + (i + 1) + " - " + cf.format(d)));
-                facets.add(new FixAnalysisEventsFacet(anaNdx, FIX_ANALYSIS_EVENTS_WQ, eventDesc + (i + 1) + " - " + cf.format(d)));
-                k++;
+            for (final FixResultColumn analysisEventColumn : columns) {
+
+                final int columnId = analysisEventColumn.getColumnId();
+                final Date d = analysisEventColumn.getDate();
+                final DoubleRange stationRange = analysisEventColumn.getStationRange();
+
+                final String facetDescription = eventDesc + (i + 1) + " - " + cf.format(d);
+
+                facets.add(new FixAnalysisEventsFacet(facetIndex++, i, columnId, FIX_ANALYSIS_EVENTS_DWT, facetDescription, stationRange));
+                facets.add(new FixLongitudinalAnalysisFacet(facetIndex++, i, columnId, FIX_ANALYSIS_EVENTS_LS, facetDescription));
+                facets.add(new FixAnalysisEventsFacet(facetIndex++, i, columnId, FIX_ANALYSIS_EVENTS_WQ, facetDescription, stationRange));
             }
         }
 
@@ -196,21 +208,21 @@
         final String i18n_ref = Resources.getMsg(context.getMeta(), I18N_REFERENCEPERIOD_SHORT, I18N_REFERENCEPERIOD_SHORT);
         final String i18n_dev = Resources.getMsg(context.getMeta(), I18N_REFERENCEDEVIATION, I18N_REFERENCEDEVIATION);
 
-        final Collection<Date> reds = fr.getReferenceEventsDates();
-        final UniqueDateFormatter cf = new UniqueDateFormatter(df, lf, reds);
+        final FixResultColumns columns = fr.getFixResultColumns();
 
-        int i = 0;
-        for (final Date d : reds) {
-            int refNdx = idg.next() << 8;
-            refNdx |= i;
-            facets.add(new FixReferenceEventsFacet(refNdx, FIX_REFERENCE_EVENTS_DWT, i18n_ref + " - " + cf.format(d)));
-            refNdx = idg.next() << 8;
-            refNdx = refNdx | i;
-            facets.add(new FixLongitudinalReferenceFacet(refNdx, FIX_REFERENCE_EVENTS_LS, i18n_ref + " - " + cf.format(d)));
-            refNdx = idg.next() << 8;
-            refNdx |= i;
-            facets.add(new FixReferenceEventsFacet(refNdx, FIX_REFERENCE_EVENTS_WQ, i18n_ref + " - " + cf.format(d)));
-            i++;
+        final Collection<FixResultColumn> fixEvents = columns.getSortedColumns();
+        for (final FixResultColumn event : fixEvents) {
+
+            final int columnId = event.getColumnId();
+            final DoubleRange stationRange = event.getStationRange();
+
+            final Date date = event.getDate();
+            final String dateText = cf.format(date);
+            final String facetDescription = i18n_ref + " - " + dateText;
+
+            facets.add(new FixReferenceEventsFacet(facetIndex++, columnId, FIX_REFERENCE_EVENTS_DWT, facetDescription, stationRange));
+            facets.add(new FixLongitudinalReferenceFacet(facetIndex++, columnId, FIX_REFERENCE_EVENTS_LS, facetDescription));
+            facets.add(new FixReferenceEventsFacet(facetIndex++, columnId, FIX_REFERENCE_EVENTS_WQ, facetDescription, stationRange));
         }
 
         facets.add(new FixLongitudinalDeviationFacet(idg.next(), FIX_DEVIATION_LS, i18n_dev));
@@ -222,12 +234,10 @@
 
         final String i18n_refp = Resources.getMsg(context.getMeta(), I18N_REFERENCEPERIOD, I18N_REFERENCEPERIOD);
         facets.add(new DataFacet(idg.next(), FIX_REFERENCE_PERIOD_DWT, i18n_refp, ComputeType.ADVANCE, null, null));
-
         facets.add(new FixWQCurveFacet(idg.next(), "W/Q"));
+        facets.add(new FixDerivateFacet(idg.next(), FIX_DERIVATE_CURVE, Resources.getMsg(context.getMeta(), I18N_DERIVATIVE, I18N_DERIVATIVE)));
+        facets.add(new FixDeviationFacet(idg.next(), FIX_DEVIATION_DWT, Resources.getMsg(context.getMeta(), I18N_DEVIATION, I18N_DEVIATION)));
 
-        facets.add(new FixDerivateFacet(idg.next(), FIX_DERIVATE_CURVE, Resources.getMsg(context.getMeta(), I18N_DERIVATIVE, I18N_DERIVATIVE)));
-
-        facets.add(new FixDeviationFacet(idg.next(), FIX_DEVIATION_DWT, Resources.getMsg(context.getMeta(), I18N_DEVIATION, I18N_DEVIATION)));
         return res;
     }
 }
\ No newline at end of file

http://dive4elements.wald.intevation.org