diff gnv-artifacts/src/main/java/de/intevation/gnv/exports/ODVExport.java @ 800:db5b04ecb426

ISSUE215: Improved ODV-Export. now all Columns which have identical values but different Parameters will be merged to one row. gnv-artifacts/trunk@882 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Tue, 06 Apr 2010 13:07:11 +0000
parents d0967fdee36f
children 41a7c49b5cb4
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/exports/ODVExport.java	Tue Apr 06 11:56:53 2010 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/exports/ODVExport.java	Tue Apr 06 13:07:11 2010 +0000
@@ -1,13 +1,5 @@
 package de.intevation.gnv.exports;
 
-import au.com.bytecode.opencsv.CSVWriter;
-
-import de.intevation.gnv.geobackend.base.Result;
-
-import de.intevation.gnv.state.describedata.KeyValueDescibeData;
-
-import de.intevation.gnv.state.exception.StateException;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -16,6 +8,11 @@
 
 import org.apache.log4j.Logger;
 
+import au.com.bytecode.opencsv.CSVWriter;
+import de.intevation.gnv.geobackend.base.Result;
+import de.intevation.gnv.state.describedata.KeyValueDescibeData;
+import de.intevation.gnv.state.exception.StateException;
+
 /**
  * This class is used to create a specific export document which is similar to
  * an CSV document.
@@ -61,14 +58,15 @@
         }
         ArrayList<String> paramids = new ArrayList<String>();
 
-        Map<String[], Map<String,String>> aggregatedRows = new HashMap<String[],  Map<String,String>>();
+        Map<StringArrayKey, Map<String,String>> aggregatedRows = new HashMap<StringArrayKey, Map<String,String>>();
 
         String currentParameterID = "N/N";
 
         while (it.hasNext()) {
             Result res = it.next();
 
-            String[] key = collector.getData(res);
+            String[] value = collector.getData(res);
+            StringArrayKey key = new StringArrayKey(value);
             String parameterValue = res.getString("DATAVALUE");
             String parameterID = res.getString("PARAMETER");
 
@@ -93,13 +91,14 @@
             writer.writeNext(headerList.toArray(header));
         }
 
-        Iterator<String[]> rows = aggregatedRows.keySet().iterator();
+        Iterator<StringArrayKey> rows = aggregatedRows.keySet().iterator();
         while (rows.hasNext()){
-            String[] row = rows.next();
+            StringArrayKey row = rows.next();
             Map<String,String> params = aggregatedRows.get(row);
             ArrayList<String> rowList = new ArrayList<String>();
-            for (int i= 0; i < row.length; i++){
-                rowList.add(row[i]);
+            String[] rowArray = row.getValue();
+            for (int i= 0; i < rowArray.length; i++){
+                rowList.add(rowArray[i]);
             }
             for (int i = 0; i < paramids.size();i++){
                 String key = paramids.get(i);
@@ -110,7 +109,7 @@
                 rowList.add(value);
                 rowList.add("1");
             }
-            writer.writeNext(rowList.toArray(row));
+            writer.writeNext(rowList.toArray(rowArray));
         }
     }
 

http://dive4elements.wald.intevation.org