Mercurial > dive4elements > river
view artifacts/src/main/java/org/dive4elements/river/artifacts/sinfo/predefinedtkh/PredefinedTkhFacet.java @ 9033:384eee4b4135
Added datacage select and chart display for flow depth evolution series loaded from database, and a correction for the tkh data
author | mschaefer |
---|---|
date | Fri, 27 Apr 2018 17:41:59 +0200 |
parents | 6e5ff436febe |
children | a4121ec450d6 |
line wrap: on
line source
/** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde * Software engineering by * Björnsen Beratende Ingenieure GmbH * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt * * 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.sinfo.predefinedtkh; import java.util.ArrayList; import java.util.Collection; import java.util.List; import org.dive4elements.artifacts.Artifact; import org.dive4elements.artifacts.CallContext; import org.dive4elements.river.artifacts.D4EArtifact; import org.dive4elements.river.artifacts.common.GeneralResultType; import org.dive4elements.river.artifacts.common.ResultRow; import org.dive4elements.river.artifacts.model.BlackboardDataFacet; import org.dive4elements.river.artifacts.model.Calculation; import org.dive4elements.river.artifacts.model.FacetTypes; import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType; import org.dive4elements.river.artifacts.sinfo.tkhcalculation.SoilKind; import org.dive4elements.river.artifacts.sinfo.tkhcalculation.SoilKindKmValueFinder; import org.dive4elements.river.model.sinfo.TkhColumn; import org.dive4elements.river.model.sinfo.TkhValue; /** * Facet for a tkh value series loaded from the database * * @author Matthias Schäfer */ public class PredefinedTkhFacet extends BlackboardDataFacet implements FacetTypes { private static final long serialVersionUID = 5508868967789155306L; public PredefinedTkhFacet(final String name, final String description) { super(0, name, description); this.metaData.put("X", "chart.longitudinal.section.xaxis.label"); this.metaData.put("Y", "chart.tkh.section.yaxis.label"); } /** * Returns the data this facet requires. * * @param artifact * the owner artifact. * @param context * the CallContext (ignored). * * @return * the data as PredefinedTkhQueryCalculationResult */ @Override public Object getData(final Artifact artifact, final CallContext context) { final PredefinedTkhColumnAccess access = new PredefinedTkhColumnAccess((D4EArtifact) artifact); final TkhColumn series = TkhColumn.getTkhColumnById(access.getColumnId()); final List<TkhValue> tkhValues = TkhValue.getTkhValues(series, access.getFrom(true), access.getTo(true)); final Calculation problems = new Calculation(); final SoilKindKmValueFinder soilKindFinder = SoilKindKmValueFinder.loadValues(problems, access.getRiver(), access.getRange()); final Collection<ResultRow> rows = new ArrayList<>(); SoilKind bedMobility = SoilKind.mobil; for (final TkhValue tkhValue : tkhValues) { final ResultRow row = ResultRow.create(); row.putValue(GeneralResultType.station, tkhValue.getStation()); if (soilKindFinder != null) { bedMobility = soilKindFinder.findSoilKind(tkhValue.getStation().doubleValue()); row.putValue(SInfoResultType.soilkind, bedMobility); } else row.putValue(SInfoResultType.soilkind, null); row.putValue(SInfoResultType.tkh, tkhValue.getTkhCm()); row.putValue(SInfoResultType.tkhup, tkhValue.getTkhUpCm(bedMobility == SoilKind.mobil)); row.putValue(SInfoResultType.tkhdown, tkhValue.getTkhDownCm(bedMobility == SoilKind.mobil)); rows.add(row); } return new PredefinedTkhQueryCalculationResult(series.getName(), rows); } /** * Create a deep copy of this Facet. * * @return a deep copy. */ @Override public PredefinedTkhFacet deepCopy() { final PredefinedTkhFacet copy = new PredefinedTkhFacet(this.name, this.description); copy.set(this); return copy; } }