Mercurial > dive4elements > river
view artifacts/src/main/java/org/dive4elements/river/artifacts/access/BedHeightAccess.java @ 6356:4c791a458305
Artifacts: Scan the official lines associated with a main value if it applies for the current river.
author | Sascha L. Teichmann <teichmann@intevation.de> |
---|---|
date | Mon, 17 Jun 2013 21:51:04 +0200 |
parents | 29dc6b6e7199 |
children | 534850c9fabc |
line wrap: on
line source
/* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde * Software engineering by Intevation GmbH * * This file is Free Software under the GNU AGPL (>=v3) * and comes with ABSOLUTELY NO WARRANTY! Check out the * documentation coming with Dive4Elements River for details. */ package org.dive4elements.river.artifacts.access; import java.util.List; import org.dive4elements.river.artifacts.D4EArtifact; import org.dive4elements.river.artifacts.model.minfo.BedHeight; import org.dive4elements.river.artifacts.model.minfo.BedHeightFactory; import org.dive4elements.river.artifacts.states.SoundingsSelect; import org.dive4elements.river.model.BedHeightSingle; import org.dive4elements.river.model.BedHeightSingleValue; import gnu.trove.TIntArrayList; import org.apache.log4j.Logger; public class BedHeightAccess extends RangeAccess { private static final Logger logger = Logger.getLogger(BedHeightAccess.class); private int[] singleIDs; private int[] epochIDs; private String time; public BedHeightAccess(D4EArtifact artifact) { super(artifact); } public Double getLowerKM() { // TODO update callers return getFrom(); } public Double getUpperKM() { // TODO update callers return getTo(); } public int[] getBedHeightSingleIDs() { if (singleIDs == null) { String data = getString("soundings"); if (data == null) { logger.warn("No 'soundings' parameter specified!"); return null; } else { logger.debug("getBedHeightSingleIDs(): data=" + data); } String[] parts = data.split(";"); TIntArrayList ids = new TIntArrayList(); for (String part: parts) { if (part.indexOf(SoundingsSelect.PREFIX_SINGLE) >= 0) { String tmp = part.replace(SoundingsSelect.PREFIX_SINGLE, ""); try { int i = Integer.parseInt(tmp); if (!ids.contains(i)) { ids.add(i); } } catch (NumberFormatException nfe) { logger.warn("Cannot parse int from string: '" + tmp + "'"); } } } singleIDs = ids.toNativeArray(); } return singleIDs; } public String getYearEpoch() { if (time == null) { time = getString("ye_select"); } return time; } public int[] getBedHeightEpochIDs() { if (epochIDs == null) { String data = getString("soundings"); if (data == null) { logger.warn("No 'soundings' parameter specified!"); return null; } String[] parts = data.split(";"); TIntArrayList ids = new TIntArrayList(); for (String part: parts) { if (part.indexOf(SoundingsSelect.PREFIX_EPOCH) >= 0) { String tmp = part.replace(SoundingsSelect.PREFIX_EPOCH, ""); try { ids.add(Integer.parseInt(tmp)); } catch (NumberFormatException nfe) { logger.warn("Cannot parse int from string: '" + tmp + "'"); } } } epochIDs = ids.toNativeArray(); } return epochIDs; } /** * Return the {@link BedHeight} at the height_id and time of the artifact * @return {@link BedHeight} */ public BedHeight getHeight() { logger.debug("getHeight"); return BedHeightFactory.getHeight( artifact.getDataAsString("type"), Integer.parseInt(artifact.getDataAsString("height_id")), Integer.parseInt(artifact.getDataAsString("time"))); } /** * Return a {@link List} of {@link BedHeightSingleValue}s * at the range of the artifact * @return List of {@link BedHeightSingleValue}s */ public List<BedHeightSingleValue> getSingleValues() { logger.debug("getSingleValues"); BedHeightSingle single = BedHeightSingle.getBedHeightSingleById( artifact.getDataAsInteger("height_id")); return BedHeightSingleValue.getBedHeightSingleValues(single, getFrom(), getTo()); } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :