Mercurial > dive4elements > river
comparison artifacts/src/main/java/org/dive4elements/river/exports/minfo/BedQualityExporter.java @ 7625:e999a920f0e5
Refactoring: extracted method
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Mon, 02 Dec 2013 10:42:43 +0100 |
parents | 505737373ba4 |
children | 182f78d5f3eb |
comparison
equal
deleted
inserted
replaced
7624:3dd505477fcc | 7625:e999a920f0e5 |
---|---|
57 | 57 |
58 public BedQualityExporter() { | 58 public BedQualityExporter() { |
59 results = new BedQualityResult[0]; | 59 results = new BedQualityResult[0]; |
60 } | 60 } |
61 | 61 |
62 /** Populate param kms with kms from param beds and loads, return it. */ | |
63 private TDoubleArrayList populateKmList(BedDiameterResult[] beds, | |
64 BedloadDiameterResult[] loads, | |
65 TDoubleArrayList kms) { | |
66 for (int j = 0; j < beds.length; j++) { | |
67 TDoubleArrayList bkms = beds[j].getKms(); | |
68 for (int k = 0, K = bkms.size(); k < K; k++) { | |
69 double km = bkms.get(k); | |
70 if (!kms.contains(km)) { // XXX: O(N^2) | |
71 kms.add(km); | |
72 } | |
73 } | |
74 } | |
75 for (int j = 0; j < loads.length; j++) { | |
76 TDoubleArrayList lkms = loads[j].getKms(); | |
77 for (int k = 0, L = lkms.size(); k < L; k++) { | |
78 double km = lkms.get(k); | |
79 if (!kms.contains(km)) { // XXX: O(N^2) | |
80 kms.add(km); | |
81 } | |
82 } | |
83 } | |
84 return kms; | |
85 } | |
62 | 86 |
63 private List<double[]> createDataRows() { | 87 private List<double[]> createDataRows() { |
88 // Calculate how many columns and rows we need. | |
64 TDoubleArrayList kms = new TDoubleArrayList(); | 89 TDoubleArrayList kms = new TDoubleArrayList(); |
90 | |
65 int cols = 1; | 91 int cols = 1; |
66 for (BedQualityResult result : results) { | 92 for (BedQualityResult result : results) { |
67 BedDiameterResult[] beds = result.getBedResults(); | 93 BedDiameterResult[] beds = result.getBedResults(); |
68 for (int j = 0; j < beds.length; j++) { | |
69 TDoubleArrayList bkms = beds[j].getKms(); | |
70 for (int k = 0, K = bkms.size(); k < K; k++) { | |
71 double km = bkms.get(k); | |
72 if (!kms.contains(km)) { // XXX: O(N^2) | |
73 kms.add(km); | |
74 } | |
75 } | |
76 } | |
77 BedloadDiameterResult[] loads = result.getBedloadResults(); | 94 BedloadDiameterResult[] loads = result.getBedloadResults(); |
78 for (int j = 0; j < loads.length; j++) { | 95 |
79 TDoubleArrayList lkms = loads[j].getKms(); | 96 kms = populateKmList(beds, loads, kms); |
80 for (int k = 0, L = lkms.size(); k < L; k++) { | 97 |
81 double km = lkms.get(k); | |
82 if (!kms.contains(km)) { // XXX: O(N^2) | |
83 kms.add(km); | |
84 } | |
85 } | |
86 } | |
87 cols += beds.length * 2; | 98 cols += beds.length * 2; |
88 cols += loads.length; | |
89 if (beds.length > 0) { | 99 if (beds.length > 0) { |
90 cols += 4; | 100 cols += 4; |
91 } | 101 } |
102 cols += loads.length; | |
92 } | 103 } |
93 | 104 |
94 kms.sort(); | 105 kms.sort(); |
106 | |
95 List<double[]> rows = new ArrayList<double[]>(kms.size()); | 107 List<double[]> rows = new ArrayList<double[]>(kms.size()); |
96 for (int i = 0, K = kms.size(); i < K; i++) { | 108 for (int i = 0, K = kms.size(); i < K; i++) { |
97 double[] row = new double[cols]; | 109 double[] row = new double[cols]; |
98 double km = kms.get(i); | 110 double km = kms.get(i); |
99 row[0] = km; | 111 row[0] = km; |