annotate gwt-client/src/main/java/org/dive4elements/river/client/shared/DoubleUtils.java @ 8871:78cd6572778d

Introduced groups for modules. Modules marked with the same group-id, will be put together in the ui. Also using now the localization info from the server instead of localizing the modules again on the client side.
author gernotbelger
date Wed, 07 Feb 2018 12:02:58 +0100
parents ea9eef426962
children
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 *
5993
ea9eef426962 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5861
diff changeset
4 * This file is Free Software under the GNU AGPL (>=v3)
5861
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
5993
ea9eef426962 Removed trailing whitespace.
Sascha L. Teichmann <teichmann@intevation.de>
parents: 5861
diff changeset
6 * documentation coming with Dive4Elements River for details.
5861
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