Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/model/CrossSectionFacet.java @ 4187:21f4e4b79121
Refactor GaugeDischargeCurveFacet to be able to set a facet name
For adding another output of the GaugeDischargeCurveArtifact it is necessary to
provide to facet instances with different names. Therefore the
GaugeDischargeCurveFacet is extended to set the facet name in the constructor.
author | Björn Ricks <bjoern.ricks@intevation.de> |
---|---|
date | Fri, 19 Oct 2012 13:25:49 +0200 |
parents | 31168ac9c7e7 |
children |
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"; public static String BLACKBOARD_CS_PREV_KM = "crosssection.masterprofile.km.prev"; public static String BLACKBOARD_CS_NEXT_KM = "crosssection.masterprofile.km.next"; 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(BLACKBOARD_CS_PREV_KM); keys.add(BLACKBOARD_CS_NEXT_KM); } 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 if (key.equals(BLACKBOARD_CS_NEXT_KM)) { return crossSection.getNextKm(); } else if (key.equals(BLACKBOARD_CS_PREV_KM)) { return crossSection.getPrevKm(); } 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 :