ingo@942: package de.intevation.flys.artifacts.states; ingo@942: ingo@1063: import java.util.HashMap; ingo@942: import java.util.List; ingo@1063: import java.util.Map; ingo@1063: ingo@1063: import javax.xml.xpath.XPathConstants; ingo@942: ingo@942: import org.apache.log4j.Logger; ingo@942: ingo@1063: import org.w3c.dom.Document; ingo@956: import org.w3c.dom.Node; ingo@956: ingo@942: import de.intevation.artifacts.CallMeta; ingo@942: ingo@956: import de.intevation.artifacts.common.utils.Config; ingo@1063: import de.intevation.artifacts.common.utils.XMLUtils; ingo@956: ingo@942: import de.intevation.artifactdatabase.state.Facet; ingo@942: ingo@942: import de.intevation.flys.artifacts.FLYSArtifact; ingo@942: import de.intevation.flys.artifacts.model.WMSLayerFacet; ingo@954: import de.intevation.flys.artifacts.resources.Resources; ingo@942: import de.intevation.flys.artifacts.states.DefaultState.ComputeType; ingo@942: ingo@942: ingo@942: public class WMSBackgroundState extends OutputState { ingo@942: ingo@954: public static final String I18N_DESCRIPTION = "floodmap.wmsbackground"; ingo@954: ingo@956: public static final String XPATH_WMS_URL = ingo@1063: "/artifact-database/floodmap/river[@name=$name]/background-wms/@url"; ingo@956: ingo@956: public static final String XPATH_WMS_LAYER = ingo@1063: "/artifact-database/floodmap/river[@name=$name]/background-wms/@layers"; ingo@956: ingo@956: ingo@956: protected String url; ingo@956: protected String layer; ingo@956: ingo@954: ingo@942: private static final Logger logger = Logger.getLogger(WMSBackgroundState.class); ingo@942: ingo@956: ingo@956: @Override ingo@956: public void setup(Node config) { ingo@956: super.setup(config); ingo@956: ingo@956: logger.debug("WMSBackgroundState.setup()"); ingo@956: } ingo@956: ingo@956: ingo@942: @Override ingo@942: public Object computeInit( ingo@942: FLYSArtifact artifact, ingo@942: String hash, ingo@958: Object context, ingo@942: CallMeta meta, ingo@942: List facets ingo@942: ) { ingo@942: logger.debug("WMSBackgroundState.computeInit()"); ingo@942: ingo@956: if (url == null || layer == null) { ingo@1063: Document cfg = Config.getConfig(); ingo@1063: ingo@1063: String river = artifact.getDataAsString("river"); ingo@1063: ingo@1063: Map variables = new HashMap(); ingo@1063: variables.put("name", river); ingo@1063: ingo@1063: url = (String) XMLUtils.xpath( ingo@1063: cfg, ingo@1063: XPATH_WMS_URL, ingo@1063: XPathConstants.STRING, ingo@1063: null, ingo@1063: variables); ingo@1063: ingo@1063: layer = (String) XMLUtils.xpath( ingo@1063: cfg, ingo@1063: XPATH_WMS_LAYER, ingo@1063: XPathConstants.STRING, ingo@1063: null, ingo@1063: variables); ingo@1063: } ingo@1063: ingo@1063: if (url == null || layer == null) { ingo@956: logger.warn("No background layers currently configured:"); ingo@956: logger.warn("... add config for WMS url: " + XPATH_WMS_URL); ingo@956: logger.warn("... add config for WMS layer: " + XPATH_WMS_LAYER); ingo@956: return null; ingo@956: } ingo@956: ingo@942: WMSLayerFacet facet = new WMSLayerFacet( ingo@942: 0, ingo@942: FLOODMAP_WMSBACKGROUND, ingo@954: Resources.getMsg(meta, I18N_DESCRIPTION, I18N_DESCRIPTION), ingo@942: ComputeType.INIT, ingo@942: getID(), hash, ingo@956: url); ingo@942: ingo@956: facet.addLayer(layer); ingo@942: ingo@942: facets.add(facet); ingo@942: ingo@942: return null; ingo@942: } ingo@942: } ingo@942: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :