Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/CrossSectionFacet.java @ 2784:156214e3ca55
FixA: Call computing when reaching the compute state.
flys-artifacts/trunk@4523 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Sat, 26 May 2012 16:55:15 +0000 |
parents | f008c3335a77 |
children | 5642a83420f2 |
line wrap: on
line source
package de.intevation.flys.artifacts.model; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import de.intevation.artifacts.Artifact; import de.intevation.artifacts.CallContext; import de.intevation.artifactdatabase.state.Facet; import de.intevation.flys.artifacts.CrossSectionArtifact; import de.intevation.flys.artifacts.states.DefaultState.ComputeType; /** * Trival Facet for Cross Sections (profiles). */ public class CrossSectionFacet extends BlackboardDataFacet implements FacetTypes { public static String BLACKBOARD_CS_MASTER_DATA = "crosssection.masterprofile.data"; private static Logger logger = Logger.getLogger(CrossSectionFacet.class); protected ComputeType type; /** Trivial constructor, set (maybe localized) description. */ public CrossSectionFacet(int idx, String description) { super(idx, CROSS_SECTION, description); type = ComputeType.ADVANCE; } /** Tell world we know about crosssection masters data and its index. */ public List getStaticDataProviderKeys(Artifact art) { CrossSectionArtifact artifact = (CrossSectionArtifact) art; List keys = new ArrayList(); if (artifact.isMaster()) { keys.add(BLACKBOARD_CS_MASTER_DATA); } keys.add(artifact.identifier() + getIndex()); keys.addAll(super.getStaticDataProviderKeys(art)); return keys; } /** * Can provide the master cross section lines or its index. * @param artifact crosssection-artifact * @param key will respond on BLACKBOARD_CS_MASTER_DATA * @param param ignored * @param context ignored * @return data from artifact (cross section master track). */ public Object provideBlackboardData(Artifact artifact, Object key, Object param, CallContext context ) { CrossSectionArtifact crossSection = (CrossSectionArtifact) artifact; if (key.equals(BLACKBOARD_CS_MASTER_DATA)) { return crossSection.searchCrossSectionLine(); } else if (key.equals(artifact.identifier() + getIndex())) { return getData(artifact, context); } else { Object obj = super.provideBlackboardData(artifact, key, param, context); if (obj == null) { logger.warn("Cannot provide data for key: " + key); } return obj; } } /** * Gets Cross Section (profile). * @param art artifact to get data from. * @param context ignored */ public Object getData(Artifact art, CallContext context) { logger.debug("Get data for cross section"); CrossSectionArtifact artifact = (CrossSectionArtifact)art; return artifact.getCrossSectionData(); } /** Do a deep copy. */ @Override public Facet deepCopy() { CrossSectionFacet copy = new CrossSectionFacet(this.index, this.description); copy.set(this); return copy; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :