Mercurial > dive4elements > river
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 { |