diff gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontal/HorizontalProfileMeshCrossOutputState.java @ 443:da21c256a0ba

"horizontale Schnittprofile" are now configured via conf.xml gnv-artifacts/trunk@491 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 29 Dec 2009 14:54:17 +0000
parents eb2ac62e853a
children 4e347624ee7c
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontal/HorizontalProfileMeshCrossOutputState.java	Tue Dec 29 10:09:26 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/state/profile/horizontal/HorizontalProfileMeshCrossOutputState.java	Tue Dec 29 14:54:17 2009 +0000
@@ -36,6 +36,8 @@
 import de.intevation.gnv.utils.WKTUtils;
 import de.intevation.gnv.utils.StringUtils;
 
+import de.intevation.gnv.artifacts.context.GNVArtifactContext;
+
 import de.intevation.artifacts.CallContext;
 
 import org.jfree.chart.ChartTheme;
@@ -43,8 +45,9 @@
 import com.vividsolutions.jts.geom.Coordinate;
 
 /**
- * @author Tim Englich <tim.englich@intevation.de>
- *
+ * @author Tim Englich         (tim.englich@intevation.de)
+ * @author Ingo Weinzierl      (iweinzierl@intevation.de)
+ * @author Sascha L. Teichmann (sascha.teichmann@intevation.de)
  */
 public class HorizontalProfileMeshCrossOutputState extends
                                                   HorizontalProfileOutputState {
@@ -127,6 +130,16 @@
         return chart;
     }
 
+	private static int numSamples(CallContext callContext) {
+		GNVArtifactContext context =
+            (GNVArtifactContext)callContext.globalContext();
+		Integer samples = (Integer)context.get(
+			GNVArtifactContext.HORIZONTAL_CROSS_SECTION_PROFILE_SAMPLES_KEY);
+		return samples != null
+			? samples.intValue()
+			: GNVArtifactContext.DEFAULT_HORIZONTAL_CROSS_SECTION_PROFILE_SAMPLES;
+	}
+
     @Override
     protected Object getChartResult(String uuid, CallContext callContext) {
         log.debug("HorizontalProfileMeshCrossOutputState.getChartResult");
@@ -177,6 +190,7 @@
 
                     result = process(
                         Arrays.asList(coords),
+						numSamples(callContext),
                         queryExecutor.executeQuery(
                         queryID,
                         addedFilterValues));
@@ -206,9 +220,16 @@
 
     public static Collection<Result> process(
         List<Coordinate>   path,
+		int                numSamples,
         Collection<Result> input
     ) {
-        log.debug("------  number of points before processing: " + input.size());
+		boolean debug = log.isDebugEnabled();
+
+		if (debug) {
+			log.debug("--- number of points before processing: " + input.size());
+			log.debug("    number samples: " + numSamples);
+		}
+
         ArrayList<Result> output = new ArrayList<Result>();
 
         Result last = null;
@@ -239,6 +260,7 @@
 
                 sectionHandler = new SectionHandler(
                     path,
+					numSamples,
                     output,
                     resultDescriptor);
 
@@ -259,7 +281,9 @@
             sectionHandler.finish();
         }
 
-        log.debug("------  number of points after processing: " + output.size());
+		if (debug) {
+			log.debug("--- number of points after processing: " + output.size());
+		}
 
         return output;
     }
@@ -278,9 +302,6 @@
 
     public static final double EPSILON = 1e-5d;
 
-    public static final int    INTERPOLATION_STEPS =
-        Integer.getInteger("interpolation.steps", 500).intValue();
-
     public static final class SectionHandler
     implements                Interpolation2D.Consumer
     {
@@ -290,16 +311,19 @@
         private Result             prototyp;
         private ResultDescriptor   descriptor;
         private boolean            lastWasSuccess;
+		private int                numSamples;
 
         public SectionHandler() {
         }
 
         public SectionHandler(
             List<Coordinate>   path,
+			int                numSamples,
             Collection<Result> output,
             ResultDescriptor   descriptor
         ) {
             this.path       = path;
+			this.numSamples = numSamples;
             this.output     = output;
             this.descriptor = descriptor;
             points          = new ArrayList<Point2d>();
@@ -318,7 +342,7 @@
                         points,
                         0d,
                         distance,
-                        INTERPOLATION_STEPS,
+                        numSamples,
                         LinearMetrics.INSTANCE,
                         this);
                 }

http://dive4elements.wald.intevation.org