teichmann@5863: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde teichmann@5863: * Software engineering by Intevation GmbH teichmann@5863: * teichmann@5994: * This file is Free Software under the GNU AGPL (>=v3) teichmann@5863: * and comes with ABSOLUTELY NO WARRANTY! Check out the teichmann@5994: * documentation coming with Dive4Elements River for details. teichmann@5863: */ teichmann@5863: teichmann@5831: package org.dive4elements.river.artifacts.access; raimund@3887: raimund@3898: import java.util.Arrays; raimund@3898: raimund@3898: import org.apache.log4j.Logger; raimund@3898: teichmann@5831: import org.dive4elements.artifacts.CallContext; teichmann@5867: import org.dive4elements.river.artifacts.D4EArtifact; teichmann@5865: import org.dive4elements.river.utils.RiverUtils; teichmann@8186: import org.dive4elements.river.backend.utils.StringUtil; raimund@3887: raimund@3887: raimund@3887: public class BedDifferencesAccess andre@8544: extends RangeAccess raimund@3887: { teichmann@8202: private static Logger log = Logger.getLogger(BedDifferencesAccess.class); raimund@3887: teichmann@6148: private String yearEpoch; teichmann@6148: private String [] diffs; raimund@3887: teichmann@6148: private String [][] differenceArtifactIds; teichmann@6148: teichmann@6148: public BedDifferencesAccess(D4EArtifact artifact) { raimund@3887: super(artifact); raimund@3887: } raimund@3887: raimund@3887: public String getYearEpoch() { raimund@3898: yearEpoch = getString("ye_select"); raimund@3887: return yearEpoch; raimund@3887: } raimund@3887: teichmann@6148: public String [] getDiffs() { teichmann@6148: if (diffs == null) { teichmann@6148: diffs = getString("diffids").split("#"); teichmann@8202: if (log.isDebugEnabled()) { teichmann@8202: log.debug("diffs: " + Arrays.toString(diffs)); teichmann@6148: } raimund@3887: } teichmann@6148: return diffs; teichmann@6148: } teichmann@6148: teichmann@6148: public String[][] getDifferenceArtifactIds() { teichmann@6148: teichmann@6148: if (differenceArtifactIds == null) { teichmann@6148: String [] diffs = getDiffs(); teichmann@6148: differenceArtifactIds = new String[diffs.length/2][2]; rrenkert@6210: for (int i = 0; i < diffs.length/2; i++) { teichmann@6148: String diff1 = StringUtil.unbracket(diffs[0 + 2*i]); teichmann@6148: String diff2 = StringUtil.unbracket(diffs[1 + 2*i]); teichmann@6148: String[] diff1parts = diff1.split(";"); teichmann@6148: String[] diff2parts = diff2.split(";"); teichmann@8202: if (log.isDebugEnabled()) { tom@8856: log.debug("creating 2 artifacts." tom@8856: + diff1parts[0] + "; " + diff2parts[0]); teichmann@6148: } teichmann@6148: differenceArtifactIds[i][0] = diff1parts[0]; rrenkert@6210: differenceArtifactIds[i][1] = diff2parts[0]; teichmann@6148: } teichmann@6148: } teichmann@6148: teichmann@6148: return differenceArtifactIds; teichmann@6148: } teichmann@6148: aheinecke@6241: public String[] getDifferenceArtifactNamePairs() { aheinecke@6241: aheinecke@6241: String [] diffs = getDiffs(); aheinecke@6241: String [] result = new String[diffs.length/2]; aheinecke@6241: for (int i = 0; i < diffs.length/2; i++) { aheinecke@6241: String diff1 = StringUtil.unbracket(diffs[0 + 2*i]); aheinecke@6241: String diff2 = StringUtil.unbracket(diffs[1 + 2*i]); aheinecke@6241: String[] diff1parts = diff1.split(";"); aheinecke@6241: String[] diff2parts = diff2.split(";"); aheinecke@6241: result[i] = diff1parts[3] + " - " + diff2parts[3]; aheinecke@6241: } aheinecke@6241: aheinecke@6241: return result; aheinecke@6241: } aheinecke@6241: teichmann@6148: public int [][] extractHeightIds(CallContext context) { teichmann@6148: String [][] artifactsIds = getDifferenceArtifactIds(); teichmann@6148: int [][] ids = new int[artifactsIds.length][2]; teichmann@6148: for (int i = 0; i < artifactsIds.length; ++i) { tom@8856: D4EArtifact a1 = RiverUtils.getArtifact( tom@8856: artifactsIds[i][0], context); tom@8856: D4EArtifact a2 = RiverUtils.getArtifact( tom@8856: artifactsIds[i][1], context); teichmann@6148: ids[i][0] = getHeightId(a1); teichmann@6148: ids[i][1] = getHeightId(a2); teichmann@6148: } teichmann@6148: return ids; raimund@3887: } raimund@3887: teichmann@5867: public static int getHeightId(D4EArtifact artifact) { raimund@3887: Access a = new Access(artifact); raimund@3887: return a.getInteger("height_id"); raimund@3887: } raimund@3887: } felix@4528: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :