Mercurial > dive4elements > gnv-client
comparison 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 |
comparison
equal
deleted
inserted
replaced
799:feeaf5aec552 | 800:db5b04ecb426 |
---|---|
1 package de.intevation.gnv.exports; | 1 package de.intevation.gnv.exports; |
2 | |
3 import au.com.bytecode.opencsv.CSVWriter; | |
4 | |
5 import de.intevation.gnv.geobackend.base.Result; | |
6 | |
7 import de.intevation.gnv.state.describedata.KeyValueDescibeData; | |
8 | |
9 import de.intevation.gnv.state.exception.StateException; | |
10 | 2 |
11 import java.util.ArrayList; | 3 import java.util.ArrayList; |
12 import java.util.Collection; | 4 import java.util.Collection; |
13 import java.util.HashMap; | 5 import java.util.HashMap; |
14 import java.util.Iterator; | 6 import java.util.Iterator; |
15 import java.util.Map; | 7 import java.util.Map; |
16 | 8 |
17 import org.apache.log4j.Logger; | 9 import org.apache.log4j.Logger; |
10 | |
11 import au.com.bytecode.opencsv.CSVWriter; | |
12 import de.intevation.gnv.geobackend.base.Result; | |
13 import de.intevation.gnv.state.describedata.KeyValueDescibeData; | |
14 import de.intevation.gnv.state.exception.StateException; | |
18 | 15 |
19 /** | 16 /** |
20 * This class is used to create a specific export document which is similar to | 17 * This class is used to create a specific export document which is similar to |
21 * an CSV document. | 18 * an CSV document. |
22 * | 19 * |
59 for (int i= 0; i < header.length; i++){ | 56 for (int i= 0; i < header.length; i++){ |
60 headerList.add(header[i]); | 57 headerList.add(header[i]); |
61 } | 58 } |
62 ArrayList<String> paramids = new ArrayList<String>(); | 59 ArrayList<String> paramids = new ArrayList<String>(); |
63 | 60 |
64 Map<String[], Map<String,String>> aggregatedRows = new HashMap<String[], Map<String,String>>(); | 61 Map<StringArrayKey, Map<String,String>> aggregatedRows = new HashMap<StringArrayKey, Map<String,String>>(); |
65 | 62 |
66 String currentParameterID = "N/N"; | 63 String currentParameterID = "N/N"; |
67 | 64 |
68 while (it.hasNext()) { | 65 while (it.hasNext()) { |
69 Result res = it.next(); | 66 Result res = it.next(); |
70 | 67 |
71 String[] key = collector.getData(res); | 68 String[] value = collector.getData(res); |
69 StringArrayKey key = new StringArrayKey(value); | |
72 String parameterValue = res.getString("DATAVALUE"); | 70 String parameterValue = res.getString("DATAVALUE"); |
73 String parameterID = res.getString("PARAMETER"); | 71 String parameterID = res.getString("PARAMETER"); |
74 | 72 |
75 if (!currentParameterID.equals(parameterID)){ | 73 if (!currentParameterID.equals(parameterID)){ |
76 paramids.add(parameterID); | 74 paramids.add(parameterID); |
91 | 89 |
92 if (header != null){ | 90 if (header != null){ |
93 writer.writeNext(headerList.toArray(header)); | 91 writer.writeNext(headerList.toArray(header)); |
94 } | 92 } |
95 | 93 |
96 Iterator<String[]> rows = aggregatedRows.keySet().iterator(); | 94 Iterator<StringArrayKey> rows = aggregatedRows.keySet().iterator(); |
97 while (rows.hasNext()){ | 95 while (rows.hasNext()){ |
98 String[] row = rows.next(); | 96 StringArrayKey row = rows.next(); |
99 Map<String,String> params = aggregatedRows.get(row); | 97 Map<String,String> params = aggregatedRows.get(row); |
100 ArrayList<String> rowList = new ArrayList<String>(); | 98 ArrayList<String> rowList = new ArrayList<String>(); |
101 for (int i= 0; i < row.length; i++){ | 99 String[] rowArray = row.getValue(); |
102 rowList.add(row[i]); | 100 for (int i= 0; i < rowArray.length; i++){ |
101 rowList.add(rowArray[i]); | |
103 } | 102 } |
104 for (int i = 0; i < paramids.size();i++){ | 103 for (int i = 0; i < paramids.size();i++){ |
105 String key = paramids.get(i); | 104 String key = paramids.get(i); |
106 String value = params.get(key); | 105 String value = params.get(key); |
107 if (value == null){ | 106 if (value == null){ |
108 value = ""; | 107 value = ""; |
109 } | 108 } |
110 rowList.add(value); | 109 rowList.add(value); |
111 rowList.add("1"); | 110 rowList.add("1"); |
112 } | 111 } |
113 writer.writeNext(rowList.toArray(row)); | 112 writer.writeNext(rowList.toArray(rowArray)); |
114 } | 113 } |
115 } | 114 } |
116 | 115 |
117 /** | 116 /** |
118 * This method is used to search specific value coresponding to its key | 117 * This method is used to search specific value coresponding to its key |