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@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<Facet> fs = new ArrayList<Facet>();
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@1771:             facets.put(getCurrentStateId(), 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@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 :