rrenkert@7987: /* Copyright (C) 2011, 2012, 2013 by Bundesanstalt für Gewässerkunde rrenkert@7987: * Software engineering by Intevation GmbH rrenkert@7987: * rrenkert@7987: * This file is Free Software under the GNU AGPL (>=v3) rrenkert@7987: * and comes with ABSOLUTELY NO WARRANTY! Check out the rrenkert@7987: * documentation coming with Dive4Elements River for details. rrenkert@7987: */ rrenkert@7987: rrenkert@7987: package org.dive4elements.river.artifacts.model.minfo; rrenkert@7987: rrenkert@7987: import org.apache.log4j.Logger; rrenkert@7987: rrenkert@7987: import org.dive4elements.artifactdatabase.state.Facet; rrenkert@7987: import org.dive4elements.artifacts.Artifact; rrenkert@7987: import org.dive4elements.artifacts.CallContext; rrenkert@7987: import org.dive4elements.river.artifacts.D4EArtifact; rrenkert@7987: import org.dive4elements.river.artifacts.model.CalculationResult; rrenkert@7987: import org.dive4elements.river.artifacts.model.DataFacet; rrenkert@7987: import org.dive4elements.river.artifacts.states.DefaultState.ComputeType; rrenkert@7987: rrenkert@7987: rrenkert@7987: /** rrenkert@7987: * Facet for serving bed diameter data. rrenkert@7987: * rrenkert@7987: * @author Ingo Weinzierl rrenkert@7987: */ rrenkert@7987: public class BedDiameterTopFacet extends DataFacet { rrenkert@7987: rrenkert@7987: private static final long serialVersionUID = 1L; rrenkert@7987: teichmann@8202: private static Logger log = Logger.getLogger(BedDiameterTopFacet.class); rrenkert@7987: rrenkert@7987: public BedDiameterTopFacet() { rrenkert@7987: } rrenkert@7987: rrenkert@7987: public BedDiameterTopFacet(int idx, String name, String description, rrenkert@7987: ComputeType type, String stateId, String hash) { rrenkert@7987: super(idx, name, description, type, hash, stateId); rrenkert@7987: this.metaData.put("X", "chart.longitudinal.section.xaxis.label"); tom@8260: this.metaData.put("Y", "chart.bedquality.yaxis.label.diameter"); rrenkert@7987: } rrenkert@7987: rrenkert@7987: public Object getData(Artifact artifact, CallContext context) { teichmann@8202: log.debug("Get data for bed diameter at index: " + index); rrenkert@7987: rrenkert@7987: D4EArtifact flys = (D4EArtifact) artifact; rrenkert@7987: rrenkert@7987: CalculationResult res = (CalculationResult) flys.compute(context, hash, rrenkert@7987: stateId, type, false); rrenkert@7987: rrenkert@7987: int ndx = index >> 8; rrenkert@7987: Object[] raw = ((BedQualityResult[]) res.getData())[ndx].getBedResults(); // TODO CAST TO SPECIFIC CLASS rrenkert@7987: rrenkert@7987: int ndy = index & 255; rrenkert@7987: if (raw != null && raw.length > ndy) { rrenkert@7987: BedDiameterResult data = (BedDiameterResult)raw[ndy]; rrenkert@7987: return data.getDiameterCapData(); rrenkert@7987: } rrenkert@7987: return null; rrenkert@7987: } rrenkert@7987: rrenkert@7987: /** Copy deeply. */ rrenkert@7987: @Override rrenkert@7987: public Facet deepCopy() { rrenkert@7987: BedDiameterTopFacet copy = new BedDiameterTopFacet(); rrenkert@7987: copy.set(this); rrenkert@7987: copy.type = type; rrenkert@7987: copy.hash = hash; rrenkert@7987: copy.stateId = stateId; rrenkert@7987: return copy; rrenkert@7987: } rrenkert@7987: } rrenkert@7987: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :