[PATCH] Sediment load access: Cache values

Wald Commits scm-commit at wald.intevation.org
Fri Jul 18 11:05:40 CEST 2014


# HG changeset patch
# User Sascha L. Teichmann <teichmann at intevation.de>
# Date 1405674334 -7200
# Node ID 9dce39cffab3d64c11e7d00653a9b79fbee88577
# Parent  9e79e384aa8b1871ce829ad5f73e1c559f711846
Sediment load access: Cache values.

diff -r 9e79e384aa8b -r 9dce39cffab3 artifacts/src/main/java/org/dive4elements/river/artifacts/access/SedimentLoadAccess.java
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/access/SedimentLoadAccess.java	Thu Jul 17 18:22:16 2014 +0200
+++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/access/SedimentLoadAccess.java	Fri Jul 18 11:05:34 2014 +0200
@@ -23,6 +23,10 @@
     private String time;
     private String unit;
 
+    private int [][] epochs;
+
+    private int [] period;
+
     public SedimentLoadAccess(D4EArtifact artifact) {
         super(artifact);
     }
@@ -46,6 +50,9 @@
 
     /** [startyear, endyear] if its about years. */
     public int[] getPeriod() {
+        if (period != null) {
+            return period;
+        }
         if (getYearEpoch().equals("year") ) {
             Integer start = getInteger("start");
             Integer end = getInteger("end");
@@ -54,12 +61,17 @@
                 return null;
             }
 
-            return new int[]{start.intValue(), end.intValue()};
+            period = new int[]{start.intValue(), end.intValue()};
         }
         return null;
     }
 
     public int[][] getEpochs() {
+
+        if (epochs != null) {
+            return epochs;
+        }
+
         if (!getYearEpoch().equals("epoch") &&
             !getYearEpoch().equals("off_epoch")) {
             return null;
@@ -74,7 +86,7 @@
 
         String[] parts = data.split(";");
 
-        int[][] list = new int[parts.length][];
+        epochs = new int[parts.length][];
 
         for (int i = 0; i < parts.length; i++) {
             String[] values = parts[i].split(",");
@@ -82,13 +94,13 @@
             try {
                 ints.add(Integer.parseInt(values[0]));
                 ints.add(Integer.parseInt(values[1]));
-                list[i] = ints.toNativeArray();
+                epochs[i] = ints.toNativeArray();
             }
             catch (NumberFormatException nfe) {
                 logger.warn("Cannot parse int from string: '" + values + "'");
             }
         }
-        return list;
+        return epochs;
     }
 
     /** Returns the selected unit (t/a or m3/a). */


More information about the Dive4Elements-commits mailing list