diff artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixReferenceEventsFacet.java @ 9348:a3f318347707

Show wq outliers within same thems with different symbol: not ready yet
author gernotbelger
date Tue, 31 Jul 2018 11:25:38 +0200
parents e4606eae8ea5
children ddcd52d239cd
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixReferenceEventsFacet.java	Mon Jul 30 16:43:44 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/fixings/FixReferenceEventsFacet.java	Tue Jul 31 11:25:38 2018 +0200
@@ -9,7 +9,6 @@
 package org.dive4elements.river.artifacts.model.fixings;
 
 import org.apache.log4j.Logger;
-
 import org.dive4elements.artifacts.Artifact;
 import org.dive4elements.artifacts.CallContext;
 import org.dive4elements.river.artifacts.D4EArtifact;
@@ -18,15 +17,12 @@
 import org.dive4elements.river.artifacts.states.DefaultState.ComputeType;
 import org.dive4elements.river.utils.KMIndex;
 
-
 /**
  * Facet to show W values for Q values at km for a date.
  *
  * @author <a href="mailto:raimund.renkert@intevation.de">Raimund Renkert</a>
  */
-public class FixReferenceEventsFacet
-extends      FixingsFacet
-implements   FacetTypes {
+public class FixReferenceEventsFacet extends FixingsFacet implements FacetTypes {
 
     /** House log. */
     private static Logger log = Logger.getLogger(FixReferenceEventsFacet.class);
@@ -35,30 +31,22 @@
     public FixReferenceEventsFacet() {
     }
 
-
-    /**
-     * @param name
-     */
-    public FixReferenceEventsFacet(int index, String name, String description) {
-        super(index,
-             name,
-             description,
-             ComputeType.ADVANCE,
-             null,
-             null);
+    public FixReferenceEventsFacet(final int index, final String name, final String description) {
+        super(index, name, description, ComputeType.ADVANCE, null, null);
     }
 
-
     /**
      * Returns the data this facet requires.
      *
-     * @param artifact the owner artifact.
-     * @param context  the CallContext (ignored).
+     * @param artifact
+     *            the owner artifact.
+     * @param context
+     *            the CallContext (ignored).
      *
      * @return the data.
      */
     @Override
-    public Object getData(Artifact artifact, CallContext context) {
+    public Object getData(final Artifact artifact, final CallContext context) {
         log.debug("FixReferenceEventsFacet.getData");
 
         if (!(artifact instanceof D4EArtifact)) {
@@ -66,43 +54,56 @@
             return null;
         }
 
-        D4EArtifact flys = (D4EArtifact)artifact;
+        final D4EArtifact flys = (D4EArtifact) artifact;
 
-        CalculationResult res =
-            (CalculationResult) flys.compute(context,
-                                             ComputeType.ADVANCE,
-                                             false);
+        final CalculationResult res = (CalculationResult) flys.compute(context, ComputeType.ADVANCE, false);
 
-        FixResult result = (FixResult) res.getData();
-        double currentKm = getCurrentKm(context);
+        final FixResult result = (FixResult) res.getData();
+        final double currentKm = getCurrentKm(context);
 
         if (log.isDebugEnabled()) {
             log.debug("current km in FRE: " + currentKm);
         }
 
-        KMIndex<QWD []> kmQWs = result.getReferenced();
-        KMIndex.Entry<QWD []> kmQWsEntry = kmQWs.binarySearch(currentKm);
-        if (kmQWsEntry != null) {
-            int ndx = index & 255;
-            for (QWD qwd: kmQWsEntry.getValue()) {
-                if (qwd.getIndex() == ndx) {
-                    return qwd;
-                }
-            }
-        }
+        /* first search in referenced */
+        final KMIndex<QWD[]> referenced = result.getReferenced();
+        final QWD foundReferenced = find(referenced, currentKm);
+        if (foundReferenced != null)
+            return foundReferenced;
+
+        // FIXME
+//        /* also search in outliers, should be mutually exclusive, because outliers got removed from referenced */
+//        final KMIndex<QWD[]> outliers = result.getOutliers();
+//        final QWD foundOutlier = find(outliers, currentKm);
+//        if (foundOutlier != null)
+//            return foundOutlier;
+
         return null;
     }
 
+    private QWD find(final KMIndex<QWD[]> kmQWs, final double currentKm) {
+
+        final KMIndex.Entry<QWD[]> kmQWsEntry = kmQWs.binarySearch(currentKm);
+        if (kmQWsEntry != null) {
+            final int ndx = this.index & 255;
+            for (final QWD qwd : kmQWsEntry.getValue()) {
+                if (qwd.getIndex() == ndx)
+                    return qwd;
+            }
+        }
+
+        return null;
+    }
 
     /**
      * Create a deep copy of this Facet.
+     *
      * @return a deep copy.
      */
     @Override
     public FixReferenceEventsFacet deepCopy() {
-        FixReferenceEventsFacet copy = new FixReferenceEventsFacet();
+        final FixReferenceEventsFacet copy = new FixReferenceEventsFacet();
         copy.set(this);
         return copy;
     }
-}
-// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :
+}
\ No newline at end of file

http://dive4elements.wald.intevation.org