comparison artifacts/src/main/java/org/dive4elements/river/exports/minfo/BedQualityExporter.java @ 7254:fe32a7f9655e

Reduce usage of careless 'for (int i = 0; i < x.size(); i++)' pattern.
author Sascha L. Teichmann <teichmann@intevation.de>
date Sat, 05 Oct 2013 17:52:16 +0200
parents 41567bf1e131
children d72459b90397
comparison
equal deleted inserted replaced
7253:90a3bcd8060a 7254:fe32a7f9655e
13 import java.io.IOException; 13 import java.io.IOException;
14 import java.io.OutputStream; 14 import java.io.OutputStream;
15 import java.text.DateFormat; 15 import java.text.DateFormat;
16 import java.text.NumberFormat; 16 import java.text.NumberFormat;
17 import java.util.Arrays; 17 import java.util.Arrays;
18 import java.util.LinkedList; 18 import java.util.ArrayList;
19 import java.util.List; 19 import java.util.List;
20 20
21 import org.apache.log4j.Logger; 21 import org.apache.log4j.Logger;
22 22
23 import au.com.bytecode.opencsv.CSVWriter; 23 import au.com.bytecode.opencsv.CSVWriter;
69 int cols = 1; 69 int cols = 1;
70 for (int i = 0; i < results.length; i++) { 70 for (int i = 0; i < results.length; i++) {
71 BedDiameterResult[] beds = results[i].getBedResults(); 71 BedDiameterResult[] beds = results[i].getBedResults();
72 for (int j = 0; j < beds.length; j++) { 72 for (int j = 0; j < beds.length; j++) {
73 TDoubleArrayList bkms = beds[j].getKms(); 73 TDoubleArrayList bkms = beds[j].getKms();
74 for (int k = 0; k < bkms.size(); k++) { 74 for (int k = 0, K = bkms.size(); k < K; k++) {
75 if (!kms.contains(bkms.get(k))) { 75 double km = bkms.get(k);
76 kms.add(bkms.get(k)); 76 if (!kms.contains(km)) { // XXX: O(N^2)
77 kms.add(km);
77 } 78 }
78 } 79 }
79 } 80 }
80 BedloadDiameterResult[] loads = results[i].getBedloadResults(); 81 BedloadDiameterResult[] loads = results[i].getBedloadResults();
81 for (int j = 0; j < loads.length; j++) { 82 for (int j = 0; j < loads.length; j++) {
82 TDoubleArrayList lkms = loads[i].getKms(); 83 TDoubleArrayList lkms = loads[i].getKms();
83 for (int k = 0; k < lkms.size(); k++) { 84 for (int k = 0, L = lkms.size(); k < L; k++) {
84 if (!kms.contains(lkms.get(k))) { 85 double km = lkms.get(k);
85 kms.add(lkms.get(k)); 86 if (!kms.contains(km)) { // XXX: O(N^2)
87 kms.add(km);
86 } 88 }
87 } 89 }
88 } 90 }
89 cols += beds.length * 2; 91 cols += beds.length * 2;
90 cols += loads.length; 92 cols += loads.length;
92 cols += 4; 94 cols += 4;
93 } 95 }
94 } 96 }
95 97
96 kms.sort(); 98 kms.sort();
97 List<double[]> rows = new LinkedList<double[]>(); 99 List<double[]> rows = new ArrayList<double[]>(kms.size());
98 for (int i = 0; i < kms.size(); i++) { 100 for (int i = 0, K = kms.size(); i < K; i++) {
99 double[] row = new double[cols]; 101 double[] row = new double[cols];
100 double km = kms.get(i); 102 double km = kms.get(i);
101 row[0] = km; 103 row[0] = km;
102 for (int j = 0; j < results.length; j++) { 104 for (int j = 0; j < results.length; j++) {
103 BedloadDiameterResult[] loads = results[j].getBedloadResults(); 105 BedloadDiameterResult[] loads = results[j].getBedloadResults();
132 } 134 }
133 rows.add(row); 135 rows.add(row);
134 } 136 }
135 for (double[] d : rows) { 137 for (double[] d : rows) {
136 logger.debug(Arrays.toString(d)); 138 logger.debug(Arrays.toString(d));
137 List<String> cells = new LinkedList<String>(); 139 List<String> cells = new ArrayList<String>(d.length);
138 for (int i = 0; i < d.length; i++) { 140 for (int i = 0; i < d.length; i++) {
139 if (!Double.isNaN(d[i])) { 141 if (!Double.isNaN(d[i])) {
140 NumberFormat nf = Formatter.getFormatter(context, 1, 3); 142 NumberFormat nf = Formatter.getFormatter(context, 1, 3);
141 cells.add(nf.format(d[i])); 143 cells.add(nf.format(d[i]));
142 } 144 }
172 } 174 }
173 175
174 protected void writeCSVHeader(CSVWriter writer) { 176 protected void writeCSVHeader(CSVWriter writer) {
175 logger.debug("writeCSVHeader()"); 177 logger.debug("writeCSVHeader()");
176 178
177 List<String> header = new LinkedList<String>(); 179 List<String> header = new ArrayList<String>();
178 if (results != null) { 180 if (results != null) {
179 header.add(msg(CSV_HEADER_KM, "km")); 181 header.add(msg(CSV_HEADER_KM, "km"));
180 for (int i = 0; i < results.length; i++) { 182 for (int i = 0; i < results.length; i++) {
181 DateFormat df = Formatter.getDateFormatter(context.getMeta(), "dd.MM.yyyy"); 183 DateFormat df = Formatter.getDateFormatter(context.getMeta(), "dd.MM.yyyy");
182 String d1 = df.format(results[i].getDateRange().getFrom()); 184 String d1 = df.format(results[i].getDateRange().getFrom());

http://dive4elements.wald.intevation.org