ingo@3757: package de.intevation.flys.artifacts.model.minfo; ingo@3757: ingo@3757: import org.apache.log4j.Logger; ingo@3757: ingo@3757: import de.intevation.artifactdatabase.state.Facet; ingo@3757: import de.intevation.artifacts.Artifact; ingo@3757: import de.intevation.artifacts.CallContext; ingo@3757: import de.intevation.flys.artifacts.FLYSArtifact; ingo@3757: import de.intevation.flys.artifacts.model.CalculationResult; ingo@3757: import de.intevation.flys.artifacts.model.DataFacet; ingo@3757: import de.intevation.flys.artifacts.states.DefaultState.ComputeType; ingo@3757: ingo@3757: ingo@3757: /** ingo@3757: * Facet for serving bed porosity data. sascha@3772: * ingo@3757: * @author Ingo Weinzierl ingo@3757: */ ingo@3757: public class BedPorosityFacet extends DataFacet { ingo@3757: ingo@3757: private static final long serialVersionUID = 1L; ingo@3757: ingo@3757: private static Logger logger = Logger.getLogger(BedPorosityFacet.class); ingo@3757: ingo@3757: public BedPorosityFacet() { ingo@3757: } ingo@3757: ingo@3757: public BedPorosityFacet(int idx, String name, String description, ingo@3757: ComputeType type, String stateId, String hash) { ingo@3757: super(idx, name, description, type, hash, stateId); ingo@3757: } ingo@3757: ingo@3757: public Object getData(Artifact artifact, CallContext context) { ingo@3757: logger.debug("Get data for bed porosity at index: " + index); ingo@3757: ingo@3757: FLYSArtifact flys = (FLYSArtifact) artifact; ingo@3757: ingo@3757: CalculationResult res = (CalculationResult) flys.compute(context, hash, ingo@3757: stateId, type, false); ingo@3757: raimund@3867: int ndx = index >> 8; raimund@3867: Object[] data = ((BedQualityResult[]) res.getData())[ndx].getParameters(); // TODO CAST TO SPECIFIC CLASS ingo@3757: raimund@3867: int ndy = index & 255; raimund@3867: return data != null && data.length > ndy ? data[ndy] : null; ingo@3757: } ingo@3757: ingo@3757: /** Copy deeply. */ ingo@3757: @Override ingo@3757: public Facet deepCopy() { ingo@3757: BedPorosityFacet copy = new BedPorosityFacet(); ingo@3757: copy.set(this); ingo@3757: copy.type = type; ingo@3757: copy.hash = hash; ingo@3757: copy.stateId = stateId; ingo@3757: return copy; ingo@3757: } ingo@3757: } ingo@3757: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :