Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/QRangeTree.java @ 633:d08f77e7f7e8
WST value table: Qs are now stored in ranges for each column.
flys-artifacts/trunk@2006 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Wed, 25 May 2011 15:31:25 +0000 |
parents | 07640ab913fd |
children | a776afdf1ec5 |
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/QRangeTree.java Tue May 24 14:46:45 2011 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/QRangeTree.java Wed May 25 15:31:25 2011 +0000 @@ -2,16 +2,15 @@ import java.io.Serializable; -import java.math.BigDecimal; - import java.util.List; -import de.intevation.flys.model.WstQRange; -import de.intevation.flys.model.Range; +import org.apache.log4j.Logger; public class QRangeTree implements Serializable { + private static Logger log = Logger.getLogger(QRangeTree.class); + public static class Node implements Serializable { @@ -75,6 +74,7 @@ } public double findQ(double pos) { + Node current = this; for (;;) { if (pos < current.a) { @@ -82,7 +82,7 @@ current = current.left; continue; } - return current.left != null + return current.prev != null ? current.interpolatePrev(pos) : Double.NaN; } @@ -91,7 +91,7 @@ current = current.right; continue; } - return current.right != null + return current.next != null ? current.interpolateNext(pos) : Double.NaN; } @@ -106,27 +106,6 @@ } /** wstQRanges need to be sorted by range.a */ - public QRangeTree(List<WstQRange> wstQRanges) { - - if (wstQRanges.isEmpty()) { - return; - } - - Node [] nodes = new Node[wstQRanges.size()]; - for (int i = 0; i < nodes.length; ++i) { - WstQRange wstQRange = wstQRanges.get(i); - Range range = wstQRange.getRange(); - BigDecimal a = range.getA(); - BigDecimal b = range.getB(); - nodes[i] = new Node( - a != null ? a.doubleValue() : -Double.MAX_VALUE, - b != null ? b.doubleValue() : Double.MAX_VALUE, - wstQRange.getQ().doubleValue()); - } - - root = wireTree(nodes); - } - public QRangeTree(List<Object []> qRanges, int start, int stop) { if (stop <= start) {