felix@1629: package de.intevation.flys.artifacts; felix@1629: felix@1629: import de.intevation.artifactdatabase.state.Facet; felix@1629: felix@1629: import de.intevation.artifacts.Artifact; felix@1703: import de.intevation.artifacts.ArtifactFactory; felix@1629: import de.intevation.artifacts.CallMeta; felix@1629: felix@1629: import de.intevation.flys.artifacts.states.DefaultState; felix@1629: felix@1629: import java.util.ArrayList; felix@1629: import java.util.List; felix@1629: felix@1629: import org.apache.log4j.Logger; felix@1629: felix@1703: import org.w3c.dom.Document; felix@1703: felix@1629: felix@1629: /** felix@1703: * Clone of an WINFOArtifact to expose exactly one waterlevel only. felix@1703: * All Facets of the "longitudinal_section" output will be added to the felix@1703: * "w_differences" output and filterFacets adjusted accordingly. felix@1703: * felix@1629: * @TODO Straighten inheritance-line (waterlevel-WINFO or vice versa). felix@1629: */ felix@1629: public class WaterlevelArtifact extends WINFOArtifact { felix@1629: felix@1629: /** The logger for this class. */ felix@1629: private static Logger logger = Logger.getLogger(WaterlevelArtifact.class); felix@1629: felix@1629: /** The name of the artifact. */ felix@1629: public static final String ARTIFACT_NAME = "waterlevel"; felix@1629: felix@1629: felix@1629: /** felix@1629: * The default constructor. felix@1629: */ felix@1629: public WaterlevelArtifact() { felix@1629: } felix@1629: felix@1629: felix@1629: /** felix@1703: * Setup and restate longitudinal_section filterfacets to apply to the felix@1703: * w_differences output, too. felix@1629: */ felix@1703: public void setup( felix@1703: String identifier, felix@1703: ArtifactFactory factory, felix@1703: Object context, felix@1703: CallMeta callMeta, felix@1703: Document data) felix@1703: { felix@1703: super.setup(identifier, factory, context, callMeta, data); felix@1765: if(filterFacets != null) { felix@1765: filterFacets.put( felix@1765: "w_differences", felix@1765: filterFacets.get("longitudinal_section")); felix@1765: } felix@1703: } felix@1703: felix@1703: /** felix@1703: * Clone important stuff of an WINFOArtifact. felix@1703: * @param artifact the WINFOArtifact to clone stuff from. felix@1703: */ felix@1703: protected void initialize( felix@1703: Artifact artifact, felix@1703: Object context, felix@1703: CallMeta meta) felix@1703: { felix@1629: WINFOArtifact winfo = (WINFOArtifact) artifact; felix@1629: this.data = winfo.cloneData(); felix@1629: logger.debug("Cloned data of winfo artifact."); felix@1629: // Statically add Facets. felix@1629: List fs = new ArrayList(); felix@1629: DefaultState state = (DefaultState) getCurrentState(context); felix@1629: state.computeInit(this, hash(), context, meta, fs); felix@1629: if (!fs.isEmpty()) { felix@1629: logger.debug("Facets to add in WaterlevelArtifact.initialize ."); felix@1765: facets.addAll(fs); felix@1629: } felix@1629: else { felix@1703: logger.debug("No facets to add in WaterlevelArtifact.initialize (" felix@1703: + state.getID() + ")."); felix@1629: } felix@1629: } felix@1629: felix@1629: felix@1629: /** felix@1629: * Returns the name of the concrete artifact. felix@1629: * felix@1629: * @return the name of the concrete artifact. felix@1629: */ felix@1629: public String getName() { felix@1629: return ARTIFACT_NAME; felix@1629: } felix@1709: felix@1709: /** felix@1709: * Determines Facets initial disposition regarding activity (think of felix@1709: * selection in Client ThemeList GUI). felix@1709: * WaterlevelArtifact Facets should come to live "inactive" (always felix@1709: * return 0). felix@1709: * felix@1709: * @param facetName name of the facet. felix@1709: * @param index index of the facet. felix@1709: * felix@1709: * @return Always 0 to have Facets initial predisposition to "inactive". felix@1709: */ felix@1709: @Override felix@1709: public int getInitialFacetActivity(String facetName, int index) { felix@1709: return 0; felix@1709: } felix@1629: } felix@1629: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :