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; rrenkert@4371: rrenkert@4371: import gnu.trove.TIntArrayList; rrenkert@4371: rrenkert@4371: import org.apache.log4j.Logger; rrenkert@4371: teichmann@5867: import org.dive4elements.river.artifacts.D4EArtifact; rrenkert@4371: rrenkert@4371: rrenkert@4371: public class SedimentLoadAccess felix@4826: extends RangeAccess rrenkert@4371: { felix@7528: private static final Logger logger = Logger.getLogger(SedimentLoadAccess.class); rrenkert@4371: rrenkert@4371: private String time; rrenkert@4371: private String unit; rrenkert@4371: teichmann@6101: public SedimentLoadAccess(D4EArtifact artifact) { teichmann@6101: super(artifact); rrenkert@4371: } rrenkert@4371: rrenkert@4371: public Double getLowerKM() { felix@4826: // TODO update callers felix@4826: return getFrom(); rrenkert@4371: } rrenkert@4371: rrenkert@4371: public Double getUpperKM() { felix@4826: // TODO update callers felix@4826: return getTo(); rrenkert@4371: } rrenkert@4371: rrenkert@4371: public String getYearEpoch() { rrenkert@4371: if (time == null) { rrenkert@4371: time = getString("ye_select"); rrenkert@4371: } rrenkert@4371: return time; rrenkert@4371: } rrenkert@4371: felix@7528: /** [startyear, endyear] if its about years. */ rrenkert@4371: public int[] getPeriod() { rrenkert@4371: if (getYearEpoch().equals("year") ) { rrenkert@4371: Integer start = getInteger("start"); rrenkert@4371: Integer end = getInteger("end"); rrenkert@4371: if (start == null || end == null) { rrenkert@4371: logger.warn("No 'start' or 'end' parameter specified!"); rrenkert@4371: return null; rrenkert@4371: } rrenkert@4371: rrenkert@4371: return new int[]{start.intValue(), end.intValue()}; rrenkert@4371: } rrenkert@4371: return null; rrenkert@4371: } rrenkert@4371: rrenkert@4371: public int[][] getEpochs() { felix@7530: if (!getYearEpoch().equals("epoch") && felix@7530: !getYearEpoch().equals("off_epoch")) { felix@7530: return null; rrenkert@4371: } rrenkert@4371: felix@7530: String data = getString("epochs"); felix@7530: felix@7530: if (data == null) { felix@7530: logger.warn("No 'epochs' parameter specified!"); felix@7530: return null; felix@7530: } felix@7530: felix@7530: String[] parts = data.split(";"); felix@7530: felix@7530: int[][] list = new int[parts.length][]; felix@7530: felix@7530: for (int i = 0; i < parts.length; i++) { felix@7530: String[] values = parts[i].split(","); felix@7530: TIntArrayList ints = new TIntArrayList(); felix@7530: try { felix@7530: ints.add(Integer.parseInt(values[0])); felix@7530: ints.add(Integer.parseInt(values[1])); felix@7530: list[i] = ints.toNativeArray(); felix@7530: } felix@7530: catch (NumberFormatException nfe) { felix@7530: logger.warn("Cannot parse int from string: '" + values + "'"); felix@7530: } felix@7530: } felix@7530: return list; rrenkert@4371: } rrenkert@4371: felix@6677: /** Returns the selected unit (t/a or m3/a). */ rrenkert@4371: public String getUnit () { rrenkert@4371: if (unit == null) { rrenkert@4371: unit = getString("unit"); rrenkert@4371: } rrenkert@4371: return unit; rrenkert@4371: } rrenkert@4371: } rrenkert@4371: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :