Mercurial > dive4elements > river
diff flys-artifacts/src/main/java/de/intevation/flys/artifacts/WaterlevelArtifact.java @ 3318:dbe2f85bf160
merged flys-artifacts/2.8
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Fri, 28 Sep 2012 12:14:35 +0200 |
parents | 3c006a53e551 |
children | afc7bfb4800b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/flys-artifacts/src/main/java/de/intevation/flys/artifacts/WaterlevelArtifact.java Fri Sep 28 12:14:35 2012 +0200 @@ -0,0 +1,132 @@ +package de.intevation.flys.artifacts; + +import de.intevation.artifactdatabase.state.DefaultFacet; +import de.intevation.artifactdatabase.state.Facet; + +import de.intevation.artifacts.Artifact; +import de.intevation.artifacts.ArtifactFactory; +import de.intevation.artifacts.CallMeta; + +import de.intevation.flys.artifacts.states.DefaultState; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.log4j.Logger; + +import org.w3c.dom.Document; + + +/** + * Clone of an WINFOArtifact to expose exactly one waterlevel only. + * All Facets of the "longitudinal_section" output will be added to the + * "w_differences" output and filterFacets adjusted accordingly. + * + * @TODO Straighten inheritance-line (waterlevel-WINFO or vice versa). + */ +public class WaterlevelArtifact extends WINFOArtifact { + + /** The logger for this class. */ + private static Logger logger = Logger.getLogger(WaterlevelArtifact.class); + + /** The name of the artifact. */ + public static final String ARTIFACT_NAME = "waterlevel"; + + + /** + * The default constructor. + */ + public WaterlevelArtifact() { + } + + + /** + * Setup and restate longitudinal_section filterfacets to apply to the + * w_differences output, too. Also, for w_differences, add respective q- + * filter facets. + */ + public void setup( + String identifier, + ArtifactFactory factory, + Object context, + CallMeta callMeta, + Document data) + { + super.setup(identifier, factory, context, callMeta, data); + // For w_differences, also allow q-facets. + if(filterFacets != null) { + List<Facet> list = new ArrayList<Facet>(); + List<Facet> wlist = filterFacets.get("longitudinal_section"); + for (Facet f: wlist) { + if (!f.getName().equals("longitudinal_section.q")) { + DefaultFacet df = new DefaultFacet(f.getIndex(), + "longitudinal_section.q", ""); + list.add(df); + } + } + + list.addAll(wlist); + + filterFacets.put("w_differences", list); + } + } + + + /** + * Clone important stuff of an WINFOArtifact. + * @param artifact the WINFOArtifact to clone stuff from. + */ + protected void initialize( + Artifact artifact, + Object context, + CallMeta meta) + { + WINFOArtifact winfo = (WINFOArtifact) artifact; + this.data = winfo.cloneData(); + logger.debug("Cloned data of winfo artifact."); + // Statically add Facets. + List<Facet> fs = new ArrayList<Facet>(); + DefaultState state = (DefaultState) getCurrentState(context); + state.computeInit(this, hash(), context, meta, fs); + if (!fs.isEmpty()) { + logger.debug("Facets to add in WaterlevelArtifact.initialize ."); + facets.put(getCurrentStateId(), fs); + } + else { + logger.debug("No facets to add in WaterlevelArtifact.initialize (" + + state.getID() + ")."); + } + } + + + /** + * Returns the name of the concrete artifact. + * + * @return the name of the concrete artifact. + */ + public String getName() { + return ARTIFACT_NAME; + } + + + /** + * Determines Facets initial disposition regarding activity (think of + * selection in Client ThemeList GUI). + * WaterlevelArtifact Facets should come to live "inactive" (always + * return 0). + * + * @param facetName name of the facet. + * @param index index of the facet. + * + * @return Always 0 to have Facets initial predisposition to "inactive". + */ + @Override + public int getInitialFacetActivity( + String outputName, + String facetName, + int index) + { + return 0; + } +} +// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :