annotate gwt-client/src/main/java/org/dive4elements/river/client/shared/DoubleUtils.java @ 5861:172338b1407f

GWT client: Added copyright header.
author Sascha L. Teichmann <teichmann@intevation.de>
date Sun, 28 Apr 2013 14:30:15 +0200
parents 5aa05a7a34b7
children ea9eef426962
rev   line source
5861
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
1 /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
2 * Software engineering by Intevation GmbH
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
3 *
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
5 * and comes with ABSOLUTELY NO WARRANTY! Check out the
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
6 * documentation coming with Dive4Elements River for details.
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
7 */
172338b1407f GWT client: Added copyright header.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5838
diff changeset
8
5835
821a02bbfb4e Fixed internal java dependencies
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5834
diff changeset
9 package org.dive4elements.river.client.shared;
1279
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
10
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
11
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
12 public final class DoubleUtils {
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
13
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
14 public static final String DEFAULT_DELIM = " ";
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
15
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
16
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
17 private DoubleUtils() {
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
18 }
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
19
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
20
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
21 public static Double getDouble(String value) {
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
22 try {
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
23 return Double.valueOf(value);
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
24 }
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
25 catch (NumberFormatException nfe) {
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
26 // do nothing
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
27 }
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
28
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
29 return null;
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
30 }
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
31
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
32
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
33 public static double[] getMinMax(String value) {
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
34 return getMinMax(value, DEFAULT_DELIM);
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
35 }
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
36
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
37
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
38 public static double[] getMinMax(String value, String delim) {
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
39 if (value == null) {
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
40 return null;
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
41 }
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
42
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
43 String[] values = value.split(delim);
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
44
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
45 int len = values != null ? values.length : 0;
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
46 double[] mm = new double[] { Double.MAX_VALUE, -Double.MAX_VALUE };
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
47
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
48 for (int i = 0; i < len; i++) {
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
49 Double d = getDouble(values[i]);
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
50
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
51 if (d != null) {
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
52 mm[0] = mm[0] < d ? mm[0] : d;
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
53 mm[1] = mm[1] > d ? mm[1] : d;
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
54 }
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
55 }
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
56
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
57 return mm[0] != Double.MAX_VALUE && mm[1] != -Double.MAX_VALUE
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
58 ? mm
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
59 : null;
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
60 }
1616
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
61
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
62 /** toIndex is not inclusive, fromIndex is. */
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
63 static void fill(double[] array, int fromIndex, int toIndex, double val) {
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
64 for (int i = fromIndex; i < toIndex; i++) {
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
65 array[i] = val;
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
66 }
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
67 }
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
68
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
69 /** @see java.util.Arrays.copyOf */
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
70 public static double[] copyOf(double[] toCopy, int newLen) {
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
71 double[] nArray = new double[newLen];
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
72
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
73 if (toCopy == null) {
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
74 fill(nArray, 0, nArray.length, 0d);
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
75 return nArray;
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
76 }
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
77
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
78 int goTo = (newLen < toCopy.length)
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
79 ? newLen
2905
51ed89b754ae FLYS client: Removed trailing whitespace.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 1616
diff changeset
80 : toCopy.length;
1616
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
81
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
82 for (int i = 0; i < goTo; i++) {
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
83 nArray[i] = toCopy[i];
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
84 }
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
85 fill (nArray, goTo, nArray.length, 0d);
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
86 return nArray;
ff8312688cd5 Added utility functions for double arrays.
Felix Wolfsteller <felix.wolfsteller@intevation.de>
parents: 1279
diff changeset
87 }
1279
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
88 }
af6ad7522351 Bugfix: #336 Improved determination of min/max KM values - code moved to ArtifactDescription.
Ingo Weinzierl <ingo.weinzierl@intevation.de>
parents:
diff changeset
89 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org