Mercurial > dive4elements > river
diff artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedQualityInterpolFacet.java @ 8592:36faef4f8acb
(issue1755) Add interpolated facets and update themes accordingly
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Thu, 19 Mar 2015 13:36:38 +0100 |
parents | artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedQualityDataFacet.java@07c9ac22f611 |
children | 4b00ee858964 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/artifacts/src/main/java/org/dive4elements/river/artifacts/model/minfo/BedQualityInterpolFacet.java Thu Mar 19 13:36:38 2015 +0100 @@ -0,0 +1,82 @@ +/* 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.model.minfo; + +import org.apache.log4j.Logger; + +import org.dive4elements.artifactdatabase.state.Facet; +import org.dive4elements.artifacts.Artifact; +import org.dive4elements.artifacts.CallContext; +import org.dive4elements.river.artifacts.D4EArtifact; +import org.dive4elements.river.artifacts.model.CalculationResult; +import org.dive4elements.river.artifacts.model.DataFacet; +import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; +import org.dive4elements.river.artifacts.access.RangeAccess; + + +/** + * Facet for serving interpolated BedQualityResults + */ +public class BedQualityInterpolFacet extends DataFacet { + + private static final long serialVersionUID = 1L; + + private static Logger log = Logger.getLogger(BedQualityInterpolFacet.class); + + private String valueName; /* Name of the ResultValue underlying this facet */ + private String valueType; /* Type of the ResultValue underlying this facet */ + + public BedQualityInterpolFacet() { + // required for clone operation deepCopy() + } + + public BedQualityInterpolFacet(int idx, String name, String description, + ComputeType type, String stateId, String hash, String valueName, String valueType) { + super(idx, name, description, type, hash, stateId); + this.valueName = valueName; + this.valueType = valueType; + this.metaData.put("X", "chart.longitudinal.section.xaxis.label"); + this.metaData.put("Y", ""); /* check if those <^ be removed? */ + } + + @Override + public Object getData(Artifact artifact, CallContext context) { + log.debug("Get bedquality data: " + valueName + " - " + valueType); + + D4EArtifact flys = (D4EArtifact) artifact; + double[] kms = new RangeAccess(flys).getKmSteps(); + + CalculationResult res = (CalculationResult) flys.compute(context, hash, + stateId, type, false); + + int ndx = index >> 8; + + BedQualityResultValue value = + ((BedQualityResult[]) res.getData())[ndx].getValue(valueName, valueType); + + if (value == null) { + /* Other facets check this so we do too */ + return null; + } + return value.getDataInterpolated(kms); + } + + /** Copy deeply. */ + @Override + public Facet deepCopy() { + BedQualityInterpolFacet copy = new BedQualityInterpolFacet(); + copy.set(this); + copy.type = type; + copy.hash = hash; + copy.stateId = stateId; + copy.valueName = valueName; + copy.valueType = valueType; + return copy; + } +}