comparison backend/src/main/java/org/dive4elements/river/importer/ImportWstColumn.java @ 7193:7fabae60428b double-precision

Merged changes from default into double-precision branch.
author Tom Gottfried <tom@intevation.de>
date Fri, 27 Sep 2013 17:36:50 +0200
parents 3d83a4cf33ba 0fe00824bd96
children 2ce7bacc940f
comparison
equal deleted inserted replaced
7016:28748bb1b676 7193:7fabae60428b
16 import org.hibernate.Session; 16 import org.hibernate.Session;
17 import org.hibernate.Query; 17 import org.hibernate.Query;
18 18
19 import java.util.List; 19 import java.util.List;
20 import java.util.ArrayList; 20 import java.util.ArrayList;
21 import java.util.Random;
21 22
22 import java.math.BigDecimal; 23 import java.math.BigDecimal;
23 24
24 import org.apache.log4j.Logger; 25 import org.apache.log4j.Logger;
25 26
127 } 128 }
128 129
129 130
130 public void storeDependencies(River river) { 131 public void storeDependencies(River river) {
131 log.info("store column '" + name + "'"); 132 log.info("store column '" + name + "'");
132 WstColumn column = getPeer(river); 133 getPeer(river);
133 134
134 for (ImportWstColumnQRange columnQRange: columnQRanges) { 135 for (ImportWstColumnQRange columnQRange: columnQRanges) {
135 columnQRange.getPeer(river); 136 columnQRange.getPeer(river);
136 } 137 }
137 138
144 return timeInterval; 145 return timeInterval;
145 } 146 }
146 147
147 public void setTimeInterval(ImportTimeInterval timeInterval) { 148 public void setTimeInterval(ImportTimeInterval timeInterval) {
148 this.timeInterval = timeInterval; 149 this.timeInterval = timeInterval;
150 }
151
152 public boolean guessWaterLevelIncreasing() {
153
154 int N = columnValues.size();
155
156 if (N < 2) {
157 return true;
158 }
159
160 Random r = new Random();
161 int up = 0;
162
163 int S = N < 50 ? N : (int)(0.1f * N)+1;
164 for (int s = 0; s < S; ++s) {
165 int i1, i2;
166 do {
167 i1 = r.nextInt(N-1);
168 i2 = r.nextInt(N-1);
169 } while (i1 == i2);
170 ImportWstColumnValue b = columnValues.get(i1);
171 ImportWstColumnValue a = columnValues.get(i2);
172 if (b.getPosition().compareTo(a.getPosition()) < 0) {
173 ImportWstColumnValue t = a; a = b; b = t;
174 }
175
176 if (a.getW().compareTo(b.getW()) < 0) ++up;
177 }
178
179 return up > S - up;
149 } 180 }
150 181
151 /** Get corresponding mapped wst-column (from database). */ 182 /** Get corresponding mapped wst-column (from database). */
152 public WstColumn getPeer(River river) { 183 public WstColumn getPeer(River river) {
153 if (peer == null) { 184 if (peer == null) {
167 ? timeInterval.getPeer() 198 ? timeInterval.getPeer()
168 : null; 199 : null;
169 200
170 List<WstColumn> columns = query.list(); 201 List<WstColumn> columns = query.list();
171 if (columns.isEmpty()) { 202 if (columns.isEmpty()) {
172 log.debug("source: " + source); 203 log.debug("source: " + source);
173 peer = new WstColumn( 204 peer = new WstColumn(
174 w, name, description, source, position, ti); 205 w, name, description, source, position, ti);
175 session.save(peer); 206 session.save(peer);
176 } 207 }
177 else { 208 else {

http://dive4elements.wald.intevation.org