gernotbelger@9067: /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde gernotbelger@9067: * Software engineering by gernotbelger@9067: * Björnsen Beratende Ingenieure GmbH gernotbelger@9067: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt gernotbelger@9067: * gernotbelger@9067: * This file is Free Software under the GNU AGPL (>=v3) gernotbelger@9067: * and comes with ABSOLUTELY NO WARRANTY! Check out the gernotbelger@9067: * documentation coming with Dive4Elements River for details. gernotbelger@9067: */ gernotbelger@9067: package org.dive4elements.river.artifacts.common; gernotbelger@9067: gernotbelger@9067: import org.apache.log4j.Logger; gernotbelger@9067: import org.dive4elements.artifacts.Artifact; gernotbelger@9067: import org.dive4elements.river.artifacts.D4EArtifact; gernotbelger@9067: import org.dive4elements.river.artifacts.access.Access; gernotbelger@9067: gernotbelger@9067: import gnu.trove.TIntArrayList; gernotbelger@9067: gernotbelger@9067: /** gernotbelger@9067: * @author Domenico Nardi Tironi gernotbelger@9067: * gernotbelger@9067: */ gernotbelger@9067: public class AccessHelper extends Access { gernotbelger@9067: gernotbelger@9067: private static Logger log = Logger.getLogger(AccessHelper.class); gernotbelger@9067: gernotbelger@9067: // private final Artifact artifact; gernotbelger@9067: gernotbelger@9067: public AccessHelper(final Artifact artifact) { gernotbelger@9067: this.artifact = (D4EArtifact) artifact; gernotbelger@9067: } gernotbelger@9067: gernotbelger@9067: public String getYearEpoch() { gernotbelger@9067: gernotbelger@9067: return getString("ye_select"); // ACHTUNG, Ergebniswerte wurden geändert in state.sinfo.epoch und state.sinfo.year gernotbelger@9067: gernotbelger@9067: } gernotbelger@9067: gernotbelger@9067: /** [year1, years2,..] if its about years. */ gernotbelger@9067: public int[] getYears(final String yearSelectedValue) { gernotbelger@9067: int[] years = null; gernotbelger@9067: // if (years != null) { gernotbelger@9067: // return years; gernotbelger@9067: // } gernotbelger@9067: if (getYearEpoch().equals(yearSelectedValue)) { gernotbelger@9067: final TIntArrayList ints = new TIntArrayList(); gernotbelger@9067: final String yearsData = getString("years"); gernotbelger@9067: if (yearsData == null || yearsData.isEmpty()) { gernotbelger@9067: log.warn("No years provided"); gernotbelger@9067: return null; gernotbelger@9067: } gernotbelger@9067: for (final String sValue : yearsData.split(" ")) { gernotbelger@9067: try { gernotbelger@9067: ints.add(Integer.parseInt(sValue)); gernotbelger@9067: } gernotbelger@9067: catch (final NumberFormatException e) { gernotbelger@9067: /* Client should prevent this */ gernotbelger@9067: log.warn("Invalid year value: " + sValue); gernotbelger@9067: continue; gernotbelger@9067: } gernotbelger@9067: } gernotbelger@9067: gernotbelger@9067: if (!ints.isEmpty()) { gernotbelger@9067: ints.sort(); gernotbelger@9067: years = ints.toNativeArray(); gernotbelger@9067: } gernotbelger@9067: return years; gernotbelger@9067: } gernotbelger@9067: return null; gernotbelger@9067: } gernotbelger@9067: gernotbelger@9067: public int[][] getEpochs(final String epochSelectedValue) { gernotbelger@9067: int epochs[][] = null; gernotbelger@9067: // if (epochs != null) { gernotbelger@9067: // return epochs; gernotbelger@9067: // } gernotbelger@9067: gernotbelger@9067: if (!getYearEpoch().equals(epochSelectedValue)) { gernotbelger@9067: return null; gernotbelger@9067: } gernotbelger@9067: gernotbelger@9067: final String data = getString("epochs"); gernotbelger@9067: gernotbelger@9067: if (data == null) { gernotbelger@9067: log.warn("No 'epochs' parameter specified!"); gernotbelger@9067: return null; gernotbelger@9067: } gernotbelger@9067: gernotbelger@9067: final String[] parts = data.split(";"); gernotbelger@9067: gernotbelger@9067: epochs = new int[parts.length][]; gernotbelger@9067: gernotbelger@9067: for (int i = 0; i < parts.length; i++) { gernotbelger@9067: final String[] values = parts[i].split(","); gernotbelger@9067: final TIntArrayList ints = new TIntArrayList(); gernotbelger@9067: try { gernotbelger@9067: ints.add(Integer.parseInt(values[0])); gernotbelger@9067: ints.add(Integer.parseInt(values[1])); gernotbelger@9067: epochs[i] = ints.toNativeArray(); gernotbelger@9067: } gernotbelger@9067: catch (final NumberFormatException nfe) { gernotbelger@9067: log.warn("Cannot parse int from string: '" + values + "'"); gernotbelger@9067: } gernotbelger@9067: } gernotbelger@9067: return epochs; gernotbelger@9067: } gernotbelger@9067: gernotbelger@9067: }