felix@1629: package de.intevation.flys.artifacts; felix@1629: felix@3111: import de.intevation.artifactdatabase.state.DefaultFacet; 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@3113: * w_differences output, too. Also, for w_differences, add respective q- felix@3113: * filter facets. 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@3113: // For w_differences, also allow q-facets. felix@1765: if(filterFacets != null) { felix@3111: List list = new ArrayList(); felix@3111: List wlist = filterFacets.get("longitudinal_section"); felix@3111: for (Facet f: wlist) { felix@3111: if (!f.getName().equals("longitudinal_section.q")) { felix@3111: DefaultFacet df = new DefaultFacet(f.getIndex(), sascha@3152: "longitudinal_section.q", ""); felix@3113: list.add(df); felix@3111: } felix@3111: } felix@3111: felix@3111: list.addAll(wlist); felix@3111: felix@3111: filterFacets.put("w_differences", list); felix@1765: } felix@1703: } felix@1703: felix@2017: 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); sascha@3076: if (!fs.isEmpty()) { sascha@3076: logger.debug("Facets to add in WaterlevelArtifact.initialize ."); sascha@3076: facets.put(getCurrentStateId(), fs); sascha@3076: } sascha@3076: 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@2017: 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@1809: public int getInitialFacetActivity( felix@1809: String outputName, felix@1809: String facetName, felix@1809: int index) felix@1809: { felix@1709: return 0; felix@1709: } felix@1629: } felix@1629: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :