changeset 418:6eae1efb5fc3

Horizontales Schnittprofil: Added some code to prevent needless null inserts if interpolating over large gaps. gnv-artifacts/trunk@466 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 21 Dec 2009 14:41:18 +0000
parents 9697675ede21
children 1e192ea34e80
files gnv-artifacts/ChangeLog gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontal/HorizontalProfileMeshCrossOutputState.java
diffstat 2 files changed, 24 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/gnv-artifacts/ChangeLog	Mon Dec 21 13:55:42 2009 +0000
+++ b/gnv-artifacts/ChangeLog	Mon Dec 21 14:41:18 2009 +0000
@@ -1,3 +1,9 @@
+2009-12-21	Sascha L. Teichmann	<sascha.teichmann@intevation.de>
+
+	* src/main/java/de/intevation/gnv/state/profile/horizontal/HorizontalProfileMeshCrossOutputState.java:
+	  Added some code to prevent needless null inserts if interpolating 
+	  over large gaps.
+
 2009-12-21  Ingo Weinzierl <ingo.weinzierl@intevation.de>
 
 	* src/main/java/de/intevation/gnv/chart/HorizontalCrossProfileChart.java:
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontal/HorizontalProfileMeshCrossOutputState.java	Mon Dec 21 13:55:42 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontal/HorizontalProfileMeshCrossOutputState.java	Mon Dec 21 14:41:18 2009 +0000
@@ -319,8 +319,10 @@
             }
 
             if (!oa.equals(ob)) {
-                log.debug("+++++++++++++++ differs ++++++++++++++");
-                log.debug("   " + oa + " != " + ob);
+                if (log.isDebugEnabled()) {
+                    log.debug("+++++++++++++++ differs ++++++++++++++");
+                    log.debug("   " + oa + " != " + ob);
+                }
                 return true;
             }
         }
@@ -341,6 +343,7 @@
         private Collection<Result> output;
         private Result             prototyp;
         private ResultDescriptor   descriptor;
+        private boolean            lastWasSuccess;
 
         public SectionHandler() {
         }
@@ -353,7 +356,8 @@
             this.path       = path;
             this.output     = output;
             this.descriptor = descriptor;
-            points = new ArrayList<Point2d>();
+            points          = new ArrayList<Point2d>();
+            lastWasSuccess  = true;
         }
 
         public void finish() {
@@ -375,6 +379,7 @@
 
                 points.clear();
             }
+            lastWasSuccess = true;
         }
 
         public void setPrototyp(Result prototyp) {
@@ -409,9 +414,15 @@
                     result.addColumnValue(j, toWKT(coordinate));
                 }
                 else if (colname.equals("YORDINATE")) {
-                    result.addColumnValue(j, success 
-                        ? Double.valueOf(coordinate.z)
-                        : null);
+                    if (success) {
+                        result.addColumnValue(j, Double.valueOf(coordinate.z));
+                    }
+                    else if (lastWasSuccess) {
+                        // only insert null if last was valid.
+                        // This prevents flooding the result set with nulls
+                        // if interpolating over a large gap.
+                        result.addColumnValue(j, null);
+                    }
                 }
                 else {
                     result.addColumnValue(j, prototyp.getObject(i));
@@ -419,6 +430,7 @@
                 ++j;
             }
             output.add(result);
+            lastWasSuccess = success;
         }
     } // class SectionHandler
 

http://dive4elements.wald.intevation.org