changeset 4850:c9a27912840d

RangeAccess: Add accidentally omitted implementation of getLocations from FLYSUtils.
author Felix Wolfsteller <felix.wolfsteller@intevation.de>
date Wed, 23 Jan 2013 12:10:47 +0100
parents f86c8d75fd85
children a1ce76091ade
files flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/RangeAccess.java
diffstat 1 files changed, 44 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/RangeAccess.java	Wed Jan 23 10:43:27 2013 +0100
+++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/access/RangeAccess.java	Wed Jan 23 12:10:47 2013 +0100
@@ -2,10 +2,15 @@
 
 import org.apache.log4j.Logger;
 
+import gnu.trove.TDoubleArrayList;
+
 import de.intevation.artifacts.CallContext;
 import de.intevation.flys.artifacts.FLYSArtifact;
+import de.intevation.flys.artifacts.WINFOArtifact;
+
 import de.intevation.flys.utils.FLYSUtils;
 
+
 /** For the moment, light-weight wrapper around FLYSUtils. */
 // TODO employ 'Caching' like other Accesses, remove usage of FLYSUtils.
 public class RangeAccess
@@ -28,6 +33,45 @@
     }
 
 
+    /**
+     * Return sorted array of locations at which stuff was calculated
+     * (from ld_locations data), null if not parameterized this way.
+     */
+    public double[] getLocations() {
+        String locationStr = getString("ld_locations");
+
+        if (locationStr == null || locationStr.length() == 0) {
+            if (getArtifact() instanceof WINFOArtifact) {
+                WINFOArtifact winfo = (WINFOArtifact) getArtifact();
+                if (winfo.getReferenceStartKm() != null && winfo.getReferenceEndKms() != null) {
+                    return new double[]
+                        {
+                            winfo.getReferenceStartKm().doubleValue(),
+                            winfo.getReferenceEndKms()[0]
+                        };
+                }
+            }
+            return null;
+        }
+
+        String[] tmp               = locationStr.split(" ");
+        TDoubleArrayList locations = new TDoubleArrayList();
+
+        for (String l: tmp) {
+            try {
+                locations.add(Double.parseDouble(l));
+            }
+            catch (NumberFormatException nfe) {
+                logger.debug(nfe.getLocalizedMessage(), nfe);
+            }
+        }
+
+        locations.sort();
+
+        return locations.toNativeArray();
+    }
+
+
     /** Return ld_from data (in km). */
     public double getFrom() {
         if (from == null) {
@@ -83,14 +127,5 @@
     public double[] getKmFromTo() {
          return FLYSUtils.getKmFromTo(this.getArtifact());
     }
-
-
-    /**
-     * Return sorted array of locations at which stuff was calculated
-     * (from ld_locations data), null if not parameterized this way.
-     */
-    public double[] getLocations() {
-        return FLYSUtils.getLocations(this.getArtifact());
-    }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf-8 :

http://dive4elements.wald.intevation.org