diff artifacts/src/main/java/org/dive4elements/river/exports/fixings/FixWQCurveGenerator.java @ 9360:ddcd52d239cd

Outliers in fixation calculation are now shown within the other 'B' event themes and get a separate symbol (triangle). Removed old outliers theme. Also consider showpoints property. Also consider pointsize property.
author gernotbelger
date Wed, 01 Aug 2018 17:13:52 +0200
parents 13bbc75ed0bc
children 9b8e8fc1f408
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/exports/fixings/FixWQCurveGenerator.java	Wed Aug 01 13:21:34 2018 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/exports/fixings/FixWQCurveGenerator.java	Wed Aug 01 17:13:52 2018 +0200
@@ -30,6 +30,7 @@
 import org.dive4elements.artifactdatabase.state.ArtifactAndFacet;
 import org.dive4elements.artifactdatabase.state.Facet;
 import org.dive4elements.artifacts.CallContext;
+import org.dive4elements.artifacts.CallMeta;
 import org.dive4elements.river.artifacts.D4EArtifact;
 import org.dive4elements.river.artifacts.StaticWKmsArtifact;
 import org.dive4elements.river.artifacts.WINFOArtifact;
@@ -58,7 +59,7 @@
 import org.dive4elements.river.themes.ThemeDocument;
 import org.dive4elements.river.utils.RiverUtils;
 import org.dive4elements.river.java2d.ShapeUtils;
-
+import org.dive4elements.river.java2d.ShapeUtils.ShapeType;
 import org.dive4elements.river.jfree.Bounds;
 import org.dive4elements.river.jfree.DoubleBounds;
 
@@ -227,9 +228,6 @@
         else if(FIX_WQ_CURVE.equals(name)) {
             doWQCurveOut(aaf, doc, visible);
         }
-        else if(FIX_OUTLIER.equals(name)) {
-            doOutlierOut(aaf, doc, visible);
-        }
         else if(QSECTOR.equals(name)) {
             doQSectorOut(aaf, doc, visible);
         }
@@ -302,7 +300,7 @@
     }
 
     /** Add analysis event points to chart. */
-    protected void doAnalysisEventsOut(
+    private void doAnalysisEventsOut(
         ArtifactAndFacet aaf,
         ThemeDocument    doc,
         boolean          visible
@@ -324,7 +322,7 @@
         double w = factor*(qwd.getW()-gaugeDatum);
 
         final ThemeDocument theme = configureThemeInterpolated(doc, qwd);
-        final XYSeries series = createQWDSeries(aaf, theme, qwd, qwd.getQ(), qwd.getQ());
+        final XYSeries series = createQWDSeries(getContext().getMeta(), aaf, theme, qwd, qwd.getQ(), qwd.getQ());
 
         addAxisSeries(series, atGauge ? YAXIS.WCm.idx : YAXIS.W.idx, visible);
 
@@ -347,7 +345,7 @@
 
 
     /** Add reference event points to chart. */
-    protected void doReferenceEventsOut(
+    private void doReferenceEventsOut(
         ArtifactAndFacet aaf,
         ThemeDocument doc,
         boolean visible
@@ -368,7 +366,7 @@
         double w = factor*(qwd.getW()-gaugeDatum);
         
         final ThemeDocument theme = configureThemeInterpolated(doc, qwd);
-        final XYSeries series = createQWDSeries(aaf, theme, qwd, qwd.getQ(), w);
+        final XYSeries series = createQWDSeries(getContext().getMeta(), aaf, theme, qwd, qwd.getQ(), w);
         series.add(qwd.getQ(), w, false);
 
         if (visible && theme.parseShowPointLabel()) {
@@ -392,31 +390,34 @@
     }
 
         
-    public static XYSeries createQWDSeries(final ArtifactAndFacet bundle, final ThemeDocument theme, final QWI qwd) {
-        return createQWDSeries(bundle, theme, qwd, qwd.getQ(), qwd.getW());
+    public static XYSeries createQWDSeries(final CallMeta meta, final ArtifactAndFacet bundle, final ThemeDocument theme, final QWI qwd) {
+        return createQWDSeries(meta, bundle, theme, qwd, qwd.getQ(), qwd.getW());
     }
     
-    public static XYSeries createQWDSeries(final ArtifactAndFacet bundle, final ThemeDocument theme, final QWI qwd, double q, double w) {
+    public static XYSeries createQWDSeries(final CallMeta meta, final ArtifactAndFacet bundle, final ThemeDocument theme, final QWI qwd, double q, double w) {
         
-        final String description = buildQWDSeriesLabel(qwd, bundle.getFacetDescription());
+        final String description = buildQWDSeriesLabel(meta, qwd, bundle.getFacetDescription());
         
-        final XYSeries series = new StyledXYSeries( description, theme, FixWQCurveGenerator.getWQDShape(qwd) );
+        final int size = theme.parsePointWidth();
+        final Shape shape = FixWQCurveGenerator.getWQDShape(qwd, size);
+        
+        final XYSeries series = new StyledXYSeries( description, theme, shape );
 
         series.add(q, w, false);
 
         return series;
     }
 
-    public static Shape getWQDShape(final QWI qwd) {
+    public static Shape getWQDShape(final QWI qwd, final float size) {
         final boolean isOutlier = qwd instanceof QWD ? ((QWD) qwd).isOutlier() : false;
 
-//        if( isOutlier)
-//            return ShapeUtils.DIGITIZED_SHAPE;
-        
+        if( isOutlier)
+            return ShapeUtils.getScaledShape(ShapeType.outlier, size );
+
         if (qwd.getInterpolated())
-            return ShapeUtils.INTERPOLATED_SHAPE;
+            return ShapeUtils.getScaledShape(ShapeType.interpolated, size);
 
-        return ShapeUtils.MEASURED_SHAPE;
+        return ShapeUtils.getScaledShape(ShapeType.measured, size);
     }
 
     public static final ThemeDocument configureThemeInterpolated(ThemeDocument theme, QWI qwd) {
@@ -424,26 +425,20 @@
         // prevent potential side effects by copying original theme
         final ThemeDocument newTheme = new ThemeDocument(theme);
         
-        // FIXME: it was like this before: points were always shown, flag had no effekt on this kind of theme, although the option is visible in the style editor
-        final boolean showPoints = true;
-//        final boolean showPoints = theme.parseShowPoints();
+        final boolean showPoints = theme.parseShowPoints();
         
         final boolean doFill = showPoints && !qwd.getInterpolated(); 
         final boolean doOutline = showPoints && qwd.getInterpolated(); 
 
-        final boolean isOutlier = qwd instanceof QWD ? ((QWD) qwd).isOutlier() : false;
-        if( isOutlier )
-            newTheme.setValue(ThemeDocument.POINT_COLOR, "255, 0, 0");
-
         newTheme.setValue(ThemeDocument.SHOW_POINTS, Boolean.toString(doFill));
         newTheme.setValue(ThemeDocument.SHOW_POINTS_OUTLINE, Boolean.toString(doOutline));
 
         return newTheme;
     }    
     
-    public static String buildQWDSeriesLabel(final QWI qwd, final String facetDescription) {
+    public static String buildQWDSeriesLabel(final CallMeta meta, final QWI qwd, final String facetDescription) {
 
-        StringBuilder buffer = new StringBuilder( facetDescription );
+        final StringBuilder buffer = new StringBuilder( facetDescription );
         
         final boolean isOutlier = qwd instanceof QWD ? ((QWD) qwd).isOutlier() : false;
         boolean isInterpolated = qwd.getInterpolated();
@@ -452,15 +447,15 @@
             return buffer.toString();
 
         buffer.append(" (");
-        if( isInterpolated )
+        if( isOutlier )
         {
-            buffer.append("interpoliert");
-            if( isOutlier )
+            buffer.append( Resources.getMsg(meta, "fix.outlier") );
+            if( isInterpolated )
                 buffer.append(", ");
         }
 
-        if( isOutlier )
-            buffer.append("Ausreißer");
+        if( isInterpolated )
+            buffer.append( Resources.getMsg(meta, "fix.interpolated") );
         
         buffer.append(")");
         
@@ -572,18 +567,6 @@
         }
     }
 
-    protected void doOutlierOut(
-        ArtifactAndFacet aaf,
-        ThemeDocument doc,
-        boolean visible
-    ) {
-        log.debug("doOutlierOut");
-
-        QWI[] qws = (QWI[])aaf.getData(getContext());
-        addQWSeries(qws, aaf, doc, visible);
-    }
-
-
     /** Add markers for q sectors. */
     protected void doQSectorOut(
         ArtifactAndFacet aaf,

http://dive4elements.wald.intevation.org