teichmann@5831: package org.dive4elements.river.artifacts; felix@1629: teichmann@5831: import org.dive4elements.artifactdatabase.state.DefaultFacet; teichmann@5831: import org.dive4elements.artifactdatabase.state.Facet; teichmann@5831: import org.dive4elements.artifactdatabase.state.FacetActivity; felix@1629: teichmann@5831: import org.dive4elements.artifacts.Artifact; teichmann@5831: import org.dive4elements.artifacts.ArtifactFactory; teichmann@5831: import org.dive4elements.artifacts.CallMeta; felix@1629: teichmann@5831: import org.dive4elements.river.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: sascha@3556: static { sascha@3556: // TODO: Move to configuration. sascha@3556: FacetActivity.Registry.getInstance() sascha@3556: .register(ARTIFACT_NAME, FacetActivity.INACTIVE); sascha@3556: } 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@4240: List wlist = filterFacets.get(ChartType.LS); felix@4613: if (wlist == null) { felix@4613: logger.warn("No matching filterfacets found"); felix@4613: dumpFilterFacets(); felix@4613: } else { felix@4613: for (Facet f: wlist) { felix@4613: if (!f.getName().equals(LONGITUDINAL_Q)) { felix@4613: DefaultFacet df = new DefaultFacet(f.getIndex(), felix@4613: "longitudinal_section.q", ""); felix@4613: list.add(df); felix@4613: } felix@3111: } felix@3111: felix@4613: list.addAll(wlist); felix@3111: felix@4613: filterFacets.put("w_differences", list); felix@4613: } 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; bjoern@3920: setData(winfo.cloneData()); sascha@3258: 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 ."); bjoern@4497: addFacets(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@1629: } felix@1629: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :