changeset 1818:e3eb1ea885a7

Simplified code in Datacage builder by using the new pair. flys-artifacts/trunk@3147 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 03 Nov 2011 09:58:04 +0000
parents 595c404523a6
children dabd2ac83159
files flys-artifacts/ChangeLog flys-artifacts/src/main/java/de/intevation/flys/artifacts/datacage/templating/Builder.java
diffstat 2 files changed, 21 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/flys-artifacts/ChangeLog	Thu Nov 03 09:47:52 2011 +0000
+++ b/flys-artifacts/ChangeLog	Thu Nov 03 09:58:04 2011 +0000
@@ -1,3 +1,10 @@
+2011-11-03  Sascha L. Teichmann <sascha.teichmann@intevation.de>
+
+	* src/main/java/de/intevation/flys/artifacts/datacage/templating/Builder.java:
+	  Use new pair in stack of results and connections because they are
+	  always used in pairs. Maintaining two separate stacks is not
+	  needed any longer.
+
 2011-11-03  Sascha L. Teichmann <sascha.teichmann@intevation.de>
 	
 	* src/main/java/de/intevation/flys/utils/Pair.java: New. A generic pair.
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/datacage/templating/Builder.java	Thu Nov 03 09:47:52 2011 +0000
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/datacage/templating/Builder.java	Thu Nov 03 09:58:04 2011 +0000
@@ -26,6 +26,8 @@
 
 import de.intevation.artifacts.common.utils.XMLUtils;
 
+import de.intevation.flys.utils.Pair;
+
 import org.apache.log4j.Logger;
 
 public class Builder
@@ -82,13 +84,12 @@
 
     public class BuildHelper
     {
-        protected Node                                    output;
-        protected Document                                owner;
-        protected StackFrames                             frames;
-        protected List<NamedConnection>                   connections;
-        protected Map<String, CompiledStatement.Instance> statements;
-        protected Deque<NamedConnection>                  connectionsStack;
-        protected Deque<ResultData>                       resultsStack;
+        protected Node                                     output;
+        protected Document                                 owner;
+        protected StackFrames                              frames;
+        protected List<NamedConnection>                    connections;
+        protected Map<String, CompiledStatement.Instance>  statements;
+        protected Deque<Pair<NamedConnection, ResultData>> connectionsStack;
 
         public BuildHelper(
             Node                  output,
@@ -100,8 +101,8 @@
             }
 
             this.connections = connections;
-            connectionsStack = new ArrayDeque<NamedConnection>();
-            resultsStack     = new ArrayDeque<ResultData>();
+            connectionsStack =
+                new ArrayDeque<Pair<NamedConnection, ResultData>>();
             this.output      = output;
             frames           = new StackFrames(parameters);
             owner            = getOwnerDocument(output);
@@ -172,7 +173,7 @@
 
             NamedConnection connection = connectionsStack.isEmpty()
                 ? connections.get(0)
-                : connectionsStack.peek();
+                : connectionsStack.peek().getA();
 
             if (con.length() > 0) {
                 for (NamedConnection nc: connections) {
@@ -190,8 +191,7 @@
 
             // only descent if there are results
             if (!rd.isEmpty()) {
-                resultsStack.push(rd);
-                connectionsStack.push(connection);
+                connectionsStack.push(new Pair(connection, rd));
                 try {
                     for (int i = 0; i < S; ++i) {
                         build(parent, subs.item(i));
@@ -199,7 +199,6 @@
                 }
                 finally {
                     connectionsStack.pop();
-                    resultsStack.pop();
                 }
             }
         }
@@ -209,7 +208,7 @@
         {
             log.debug("dc:elements");
 
-            if (resultsStack.isEmpty()) {
+            if (connectionsStack.isEmpty()) {
                 log.warn("dc:elements without having results");
                 return;
             }
@@ -222,7 +221,7 @@
                 return;
             }
 
-            ResultData rd = resultsStack.peek();
+            ResultData rd = connectionsStack.peek().getB();
 
             String [] columns = rd.getColumnLabels();
 

http://dive4elements.wald.intevation.org