diff gnv-artifacts/src/main/java/de/intevation/gnv/transition/TransitionBase.java @ 61:5f47881f7c97

Implementation of the MIN- / MAX-Value Representation gnv-artifacts/trunk@44 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Wed, 09 Sep 2009 09:29:39 +0000
parents 2c5d8f5bced1
children 6ae2d4134da3
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/transition/TransitionBase.java	Tue Sep 08 16:24:34 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/transition/TransitionBase.java	Wed Sep 09 09:29:39 2009 +0000
@@ -5,6 +5,8 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Date;
+import java.util.GregorianCalendar;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
@@ -21,6 +23,8 @@
 import de.intevation.gnv.geobackend.base.query.QueryExecutor;
 import de.intevation.gnv.geobackend.base.query.QueryExecutorFactory;
 import de.intevation.gnv.geobackend.base.query.exception.QueryException;
+import de.intevation.gnv.geobackend.util.DateUtils;
+import de.intevation.gnv.transition.describedata.MinMaxDescribeData;
 import de.intevation.gnv.transition.exception.TransitionException;
 
 /**
@@ -54,7 +58,8 @@
     
     private Map<String,InputData> inputData = null;
     
-    private Collection<Object> descibeData = null;
+    protected Collection<Object> descibeData = null;
+    
     /**
      * Constructor
      */
@@ -200,15 +205,22 @@
             }
             QueryExecutor queryExecutor = QueryExecutorFactory.getInstance().getQueryExecutor();
             Collection<Result> result = queryExecutor.executeQuery(this.queryID, filterValues);
-            if (this.descibeData == null){
-                this.descibeData = new ArrayList<Object>();
-            }
-            this.descibeData.add(result);
+            this.purifyResult(result);
         } catch (QueryException e) {
             log.error(e,e);
             throw new TransitionException(e);
         }
     }
+
+    /**
+     * @param result
+     */
+    protected void purifyResult(Collection<Result> result) {
+        if (this.descibeData == null){
+            this.descibeData = new ArrayList<Object>();
+        }
+        this.descibeData.add(result);
+    }
     
     /**
      * @see de.intevation.gnv.transition.Transition#describe(org.w3c.dom.Document, org.w3c.dom.Node)
@@ -218,43 +230,79 @@
         if(this.descibeData != null){
             Iterator<Object> it = this.descibeData.iterator();
             while (it.hasNext()){
-                Element selectNode = this.createXFormElement(document,"select");
-                // TODO: HACK:
-                // BESSERE LÖSUNG FINDEN
-                Object[] names = this.inputValueNames.toArray();
-                String name = names[names.length-1].toString();
-                
-                selectNode.setAttribute("ref", name);
-                
-                Element lableNode = this.createXFormElement(document, "label");
-                lableNode.setTextContent(name);
-                Element choiceNode = this.createXFormElement(document, "choices");
-                
-                
                 Object o = it.next();
                 if (o instanceof Collection<?>){
+                    Element selectNode = this.createXFormElement(document,"select");
+                    // TODO: HACK:
+                    // BESSERE LÖSUNG FINDEN
+                    Object[] names = this.inputValueNames.toArray();
+                    String name = names[names.length-1].toString();
+                    
+                    selectNode.setAttribute("ref", name);
+                    
+                    Element lableNode = this.createXFormElement(document, "label");
+                    lableNode.setTextContent(name);
+                    Element choiceNode = this.createXFormElement(document, "choices");
+                    
                     Collection<Result> values = (Collection)o;
                     Iterator<Result> resultIt = values.iterator();
                     while (resultIt.hasNext()){
                         Result result = resultIt.next();
                         Element itemNode = this.createXFormElement(document, "item");
-                        String lableName = result.getResultDescriptor().getColumnName(1);
-                        String valueName = result.getResultDescriptor().getColumnName(0);
+                        
                         
                         Element choiceLableNode = this.createXFormElement(document, "label");
-                        choiceLableNode.setTextContent(result.getString(lableName));
+                        choiceLableNode.setTextContent(result.getString("VALUE"));
                         itemNode.appendChild(choiceLableNode);
                         
                         Element choicValueNode = this.createXFormElement(document, "value");
-                        choicValueNode.setTextContent(result.getString(valueName));
+                        choicValueNode.setTextContent(result.getString("KEY"));
                         itemNode.appendChild(choicValueNode);
                         
                         choiceNode.appendChild(itemNode);
                     }
+                    selectNode.appendChild(lableNode);
+                    selectNode.appendChild(choiceNode);
+                    rootNode.appendChild(selectNode);
+                }else if (o instanceof MinMaxDescribeData){
+                    MinMaxDescribeData descibeData = (MinMaxDescribeData)o;
+                    Object min = descibeData.getMinValue();
+                    Object max = descibeData.getMaxValue();
+                    if (min instanceof GregorianCalendar){
+                        Date d = ((GregorianCalendar)min).getTime();
+                        min = DateUtils.getPatternedDateGerm(d);
+                    }
+                    
+                    if (max instanceof GregorianCalendar){
+                        Date d = ((GregorianCalendar)max).getTime();
+                        max = DateUtils.getPatternedDateGerm(d);
+                    }
+                    
+                    Element inputMinNode = this.createXFormElement(document, "input");
+                    inputMinNode.setAttribute("ref", "minvalue");
+                    Element inputMinLableNode = this.createXFormElement(document, "label");
+                    inputMinLableNode.setTextContent("minvalue");
+                    inputMinNode.appendChild(inputMinLableNode);
+                    
+                    Element inputMinValueNode = this.createXFormElement(document, "value");
+                    inputMinValueNode.setTextContent(min.toString());
+                    inputMinNode.appendChild(inputMinValueNode);
+                    
+                    Element inputMaxNode = this.createXFormElement(document, "input");
+                    inputMaxNode.setAttribute("ref", "maxvalue");
+                    Element inputMaxLableNode = this.createXFormElement(document, "label");
+                    inputMaxLableNode.setTextContent("maxvalue");
+                    inputMaxNode.appendChild(inputMaxLableNode);
+                    
+                    Element inputMaxValueNode = this.createXFormElement(document, "value");
+                    inputMaxValueNode.setTextContent(max.toString());
+                    inputMaxNode.appendChild(inputMaxValueNode);
+                    
+                    rootNode.appendChild(inputMinNode);
+                    rootNode.appendChild(inputMaxNode);
+                    
                 }
-                selectNode.appendChild(lableNode);
-                selectNode.appendChild(choiceNode);
-                rootNode.appendChild(selectNode);
+
             }
         }
        

http://dive4elements.wald.intevation.org