Mercurial > dive4elements > river
view flys-artifacts/src/main/java/de/intevation/flys/artifacts/CollectionMonitor.java @ 989:f3be883325ce
Add artifacts into datacage db at initial scan.
flys-artifacts/trunk@2421 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 29 Jul 2011 07:56:28 +0000 |
parents | 79251b1d47da |
children | b81626b10cb7 |
line wrap: on
line source
package de.intevation.flys.artifacts; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.xml.xpath.XPathConstants; import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import de.intevation.artifacts.Artifact; import de.intevation.artifacts.ArtifactNamespaceContext; import de.intevation.artifacts.CallContext; import de.intevation.artifacts.Hook; import de.intevation.artifacts.common.utils.XMLUtils; import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator; import de.intevation.artifactdatabase.state.Output; import de.intevation.flys.artifacts.services.meta.DataCage; public class CollectionMonitor implements Hook { public static final String XPATH_RESULT = "/art:result"; private static final Logger logger = Logger.getLogger(CollectionMonitor.class); @Override public void setup(Node cfg) { } @Override public void execute(Artifact artifact, CallContext context, Document doc) { FLYSArtifact flys = (FLYSArtifact) artifact; Element result = (Element) XMLUtils.xpath( doc, XPATH_RESULT, XPathConstants.NODE, ArtifactNamespaceContext.INSTANCE); ElementCreator creator = new ElementCreator( doc, ArtifactNamespaceContext.NAMESPACE_URI, ArtifactNamespaceContext.NAMESPACE_PREFIX); Element recommended = creator.create("recommended-artifacts"); result.appendChild(recommended); String[] outs = extractOutputNames(flys, context); Map<String, Object> params = getDataCageParameters(flys, context); DataCage dc = DataCage.getInstance(); dc.recommend(flys, outs, params, recommended); } public static String[] extractOutputNames( FLYSArtifact flys, CallContext context) { List<Output> outs = flys.getCurrentOutputs(context); String[] names = new String[outs.size()]; for (int i = 0, num = outs != null ? outs.size() : 0; i < num; i++) { names[i] = outs.get(i).getName(); } return names; } protected Map<String, Object> getDataCageParameters( FLYSArtifact flys, CallContext context) { Map<String, Object> params = new HashMap<String, Object>(1); params.put("recommended", "true"); return params; } } // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :