Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/access/BedDifferencesAccess.java @ 6148:b12ec9f240bc
Bed height differences: DO NOT STORE ARTIFACTS IN CALCULATION RESULTS!!! This would lead to caching them which is _really_ wrong.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Sat, 01 Jun 2013 20:08:21 +0200 |
parents | af13ceeba52a |
children | 165086b1e66d |
line wrap: on
line diff
--- a/artifacts/src/main/java/org/dive4elements/river/artifacts/access/BedDifferencesAccess.java Sat Jun 01 18:59:52 2013 +0200 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/access/BedDifferencesAccess.java Sat Jun 01 20:08:21 2013 +0200 @@ -22,14 +22,14 @@ extends RiverAccess { private static Logger logger = Logger.getLogger(BedDifferencesAccess.class); - private String yearEpoch; - private String[] diffs; - private CallContext context; + private String yearEpoch; + private String [] diffs; - public BedDifferencesAccess(D4EArtifact artifact, CallContext context) { + private String [][] differenceArtifactIds; + + public BedDifferencesAccess(D4EArtifact artifact) { super(artifact); - this.context = context; } public String getYearEpoch() { @@ -37,20 +37,47 @@ return yearEpoch; } - public D4EArtifact[][] getDifferenceArtifacts() { - diffs = getString("diffids").split("#"); - logger.debug("diffs: " + Arrays.toString(diffs)); - D4EArtifact[][] artifacts = new D4EArtifact[diffs.length/2][2]; - for (int i = 0; i < diffs.length; i += 2) { - String diff1 = StringUtil.unbracket(diffs[0 + 2*i]); - String diff2 = StringUtil.unbracket(diffs[1 + 2*i]); - String[] diff1parts = diff1.split(";"); - String[] diff2parts = diff2.split(";"); - logger.debug("creating 2 artifacts." + diff1parts[0] + "; " + diff2parts[0]); - artifacts[i][0] = RiverUtils.getArtifact(diff1parts[0], context); - artifacts[i][1] = RiverUtils.getArtifact(diff2parts[0], context); + public String [] getDiffs() { + if (diffs == null) { + diffs = getString("diffids").split("#"); + if (logger.isDebugEnabled()) { + logger.debug("diffs: " + Arrays.toString(diffs)); + } } - return artifacts; + return diffs; + } + + public String[][] getDifferenceArtifactIds() { + + if (differenceArtifactIds == null) { + String [] diffs = getDiffs(); + differenceArtifactIds = new String[diffs.length/2][2]; + for (int i = 0; i < diffs.length; i += 2) { + String diff1 = StringUtil.unbracket(diffs[0 + 2*i]); + String diff2 = StringUtil.unbracket(diffs[1 + 2*i]); + String[] diff1parts = diff1.split(";"); + String[] diff2parts = diff2.split(";"); + if (logger.isDebugEnabled()) { + logger.debug("creating 2 artifacts." + diff1parts[0] + "; " + diff2parts[0]); + } + differenceArtifactIds[i][0] = diff1parts[0]; + differenceArtifactIds[i][1] = diff1parts[1]; + } + } + + return differenceArtifactIds; + } + + public int [][] extractHeightIds(CallContext context) { + String [][] artifactsIds = getDifferenceArtifactIds(); + int [][] ids = new int[artifactsIds.length][2]; + for (int i = 0; i < artifactsIds.length; ++i) { + D4EArtifact a1 = RiverUtils.getArtifact(artifactsIds[i][0], context); + D4EArtifact a2 = RiverUtils.getArtifact(artifactsIds[i][1], context); + ids[i][0] = getHeightId(a1); + ids[i][1] = getHeightId(a2); + } + return ids; } public static int getHeightId(D4EArtifact artifact) {