Mercurial > dive4elements > river
view artifacts/src/main/java/org/dive4elements/river/artifacts/uinfo/inundationduration/AbstractYearEpochUrlState.java @ 9559:ba0561906f81
Uinfo inundation duration workflow (vegetation zones, scenario), wms-config changed
author | gernotbelger |
---|---|
date | Wed, 24 Oct 2018 18:40:38 +0200 |
parents | 6dd539efebb1 |
children |
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.uinfo.inundationduration; import java.io.IOException; import java.util.Collection; import java.util.HashMap; import java.util.Map; import org.dive4elements.artifactdatabase.data.StateData; import org.dive4elements.artifacts.Artifact; import org.dive4elements.artifacts.CallContext; import org.dive4elements.artifacts.common.utils.XMLUtils; import org.dive4elements.artifacts.common.utils.XMLUtils.ElementCreator; import org.dive4elements.river.artifacts.sinfo.tkhstate.TsvHelper.TsvReaderException; import org.dive4elements.river.artifacts.states.AddTableDataHelper; import org.dive4elements.river.artifacts.states.DefaultState; import org.dive4elements.river.artifacts.uinfo.UINFOArtifact; import org.dive4elements.river.artifacts.uinfo.inundationduration.UedauernConfiguration.YearType; import org.dive4elements.river.artifacts.uinfo.salix.ScenarioTypeState; import org.w3c.dom.Element; /** State in which to fetch years for sedminent load calculation. */ public abstract class AbstractYearEpochUrlState extends DefaultState { private static final long serialVersionUID = 1L; private final YearType type; /** * The default constructor that initializes an empty State object. * * @param jahre */ public AbstractYearEpochUrlState(final YearType type) { this.type = type; } protected abstract String getDatakey(); @Override protected void appendItems(final Artifact artifact, final ElementCreator creator, final String name, final CallContext context, final Element select) { final String dataKey = getDatakey(); try { if (dataKey.equals(name)) { final InundationDurationAccess access = new InundationDurationAccess((UINFOArtifact) artifact); final UedauernConfiguration properties = UedauernConfiguration.getInstance(access.getRiverName(), this.type); final Collection<String> items = properties.getLabels(); final String columnType = "TEXT"; final AddTableDataHelper helper = new AddTableDataHelper(creator, select, "select_key", context.getMeta()); // pinKeycolum; nicht zu helper.addColumn(0, "pinfrom", "60", "common.client.ui.selection", "ICON", "CENTER", "from"); helper.addColumn(1, "select_key", "240", getColumnHeader(), columnType, "LEFT", null); for (final String year : items) { final Map<String, String> row = new HashMap<>(); row.put("select_key", year); helper.addRow(row); } helper.submitMapToXml(); } } catch (final IllegalArgumentException iae) { iae.printStackTrace(); } catch (final IOException e) { e.printStackTrace(); } catch (final TsvReaderException e) { e.printStackTrace(); } } private String getColumnHeader() { switch (this.type) { case szenario: return "state.uinfo.inundation.scenario.table_header"; default: return getTypeString(); } } private String getTypeString() { switch (this.type) { case jahre: return "year"; case mittel: return "state.uinfo.epoch"; case szenario: return "state.uinfo.inundation.scenario"; default: throw new IllegalStateException(); } } @Override protected Element createData(final XMLUtils.ElementCreator cr, final Artifact artifact, final StateData data, final CallContext context) { return ScenarioTypeState.changeHeaderForCurrentState(getTypeString(), data.getName(), cr, context); } }