mschaefer@9035: /** Copyright (C) 2017 by Bundesanstalt für Gewässerkunde mschaefer@9035: * Software engineering by mschaefer@9035: * Björnsen Beratende Ingenieure GmbH mschaefer@9035: * Dr. Schumacher Ingenieurbüro für Wasser und Umwelt mschaefer@9035: * mschaefer@9035: * This file is Free Software under the GNU AGPL (>=v3) mschaefer@9035: * and comes with ABSOLUTELY NO WARRANTY! Check out the mschaefer@9035: * documentation coming with Dive4Elements River for details. mschaefer@9035: */ mschaefer@9035: mschaefer@9035: package org.dive4elements.river.artifacts.sinfo.predefinedflowdepth; mschaefer@9035: mschaefer@9035: import java.util.ArrayList; mschaefer@9035: import java.util.Collection; mschaefer@9035: import java.util.List; mschaefer@9035: mschaefer@9035: import org.dive4elements.artifacts.Artifact; mschaefer@9035: import org.dive4elements.artifacts.CallContext; mschaefer@9035: import org.dive4elements.river.artifacts.D4EArtifact; gernotbelger@9195: import org.dive4elements.river.artifacts.common.DefaultCalculationResult; mschaefer@9035: import org.dive4elements.river.artifacts.common.GeneralResultType; mschaefer@9035: import org.dive4elements.river.artifacts.common.ResultRow; mschaefer@9035: import org.dive4elements.river.artifacts.model.BlackboardDataFacet; mschaefer@9035: import org.dive4elements.river.artifacts.model.FacetTypes; mschaefer@9035: import org.dive4elements.river.artifacts.sinfo.common.SInfoResultType; mschaefer@9035: import org.dive4elements.river.model.sinfo.FlowDepthColumn; mschaefer@9035: import org.dive4elements.river.model.sinfo.FlowDepthValue; mschaefer@9035: mschaefer@9035: /** mschaefer@9035: * Facet for a flow depth value series loaded from the database mschaefer@9035: * mschaefer@9035: * @author Matthias Schäfer mschaefer@9035: */ mschaefer@9035: public class PredefinedFlowDepthFacet extends BlackboardDataFacet implements FacetTypes { mschaefer@9035: mschaefer@9035: private static final long serialVersionUID = -5314814229001970855L; mschaefer@9035: mschaefer@9035: public PredefinedFlowDepthFacet(final String name, final String description) { mschaefer@9035: super(0, name, description); mschaefer@9035: mschaefer@9035: this.metaData.put("X", "chart.longitudinal.section.xaxis.label"); mschaefer@9035: this.metaData.put("Y", "chart.flow_depth.section.yaxis.label"); mschaefer@9035: } mschaefer@9035: mschaefer@9035: /** mschaefer@9035: * Returns the data this facet requires. mschaefer@9035: * mschaefer@9035: * @param artifact mschaefer@9035: * the owner artifact. mschaefer@9035: * @param context mschaefer@9035: * the CallContext (ignored). mschaefer@9035: * mschaefer@9035: * @return mschaefer@9035: * the data as PredefinedFlowDepthQueryCalculationResult mschaefer@9035: */ mschaefer@9035: @Override mschaefer@9035: public Object getData(final Artifact artifact, final CallContext context) { mschaefer@9035: mschaefer@9035: final PredefinedFlowDepthColumnAccess access = new PredefinedFlowDepthColumnAccess((D4EArtifact) artifact); mschaefer@9035: final FlowDepthColumn series = FlowDepthColumn.getColumnById(access.getColumnId()); mschaefer@9035: final List values = FlowDepthValue.getValues(series, access.getFrom(true), access.getTo(true)); mschaefer@9035: final Collection rows = new ArrayList<>(); mschaefer@9035: for (final FlowDepthValue value : values) { mschaefer@9035: rows.add(ResultRow.create().putValue(GeneralResultType.station, value.getStation()) // mschaefer@9035: .putValue(SInfoResultType.flowdepth, value.getDepth())); mschaefer@9035: } gernotbelger@9195: return new DefaultCalculationResult(series.getName(), rows); mschaefer@9035: } mschaefer@9035: mschaefer@9035: /** mschaefer@9035: * Create a deep copy of this Facet. mschaefer@9035: * mschaefer@9035: * @return a deep copy. mschaefer@9035: */ mschaefer@9035: @Override mschaefer@9035: public PredefinedFlowDepthFacet deepCopy() { mschaefer@9035: final PredefinedFlowDepthFacet copy = new PredefinedFlowDepthFacet(this.name, this.description); mschaefer@9035: copy.set(this); mschaefer@9035: return copy; mschaefer@9035: } mschaefer@9035: }