comparison flys-artifacts/src/main/java/de/intevation/flys/artifacts/CollectionMonitor.java @ 2793:6310b1582f2d

merged flys-artifacts/2.7
author Thomas Arendsen Hein <thomas@intevation.de>
date Fri, 28 Sep 2012 12:14:30 +0200
parents e8fc770d2f8c
children 0f7abd95c6e2
comparison
equal deleted inserted replaced
2548:ada02bbd3b7f 2793:6310b1582f2d
1 package de.intevation.flys.artifacts;
2
3 import java.util.HashMap;
4 import java.util.List;
5 import java.util.Map;
6
7 import javax.xml.xpath.XPathConstants;
8
9 import org.apache.log4j.Logger;
10
11 import org.w3c.dom.Document;
12 import org.w3c.dom.Element;
13 import org.w3c.dom.Node;
14
15 import de.intevation.artifacts.Artifact;
16 import de.intevation.artifacts.ArtifactNamespaceContext;
17 import de.intevation.artifacts.CallContext;
18 import de.intevation.artifacts.Hook;
19
20 import de.intevation.artifacts.common.utils.XMLUtils;
21 import de.intevation.artifacts.common.utils.XMLUtils.ElementCreator;
22
23 import de.intevation.artifactdatabase.state.Output;
24
25 import de.intevation.flys.artifacts.datacage.Recommendations;
26 import de.intevation.flys.artifacts.ChartArtifact;
27
28 public class CollectionMonitor implements Hook {
29
30 public static final String XPATH_RESULT = "/art:result";
31
32
33 private static final Logger logger =
34 Logger.getLogger(CollectionMonitor.class);
35
36
37 @Override
38 public void setup(Node cfg) {
39 }
40
41
42 @Override
43 public void execute(Artifact artifact, CallContext context, Document doc) {
44 FLYSArtifact flys = (FLYSArtifact) artifact;
45
46 Element result = (Element) XMLUtils.xpath(
47 doc,
48 XPATH_RESULT,
49 XPathConstants.NODE,
50 ArtifactNamespaceContext.INSTANCE);
51
52 ElementCreator creator = new ElementCreator(
53 doc,
54 ArtifactNamespaceContext.NAMESPACE_URI,
55 ArtifactNamespaceContext.NAMESPACE_PREFIX);
56
57 Element recommended = creator.create("recommended-artifacts");
58 result.appendChild(recommended);
59
60 String[] outs = extractOutputNames(flys, context);
61 Map<String, Object> params = getNoneUserSpecificParameters(flys, context);
62
63 Recommendations rec = Recommendations.getInstance();
64 rec.recommend(flys, null, outs, params, recommended);
65 }
66
67
68 /**
69 * Get outputnames from current state (only the ones for which
70 * facets exist).
71 */
72 public static String[] extractOutputNames(
73 FLYSArtifact flys,
74 CallContext context)
75 {
76 if (flys instanceof ChartArtifact) {
77 return new String[0];
78 }
79
80 List<Output> outs = flys.getCurrentOutputs(context);
81
82 int num = outs == null ? 0 : outs.size();
83
84 String[] names = new String[num];
85
86 for (int i = 0; i < num; i++) {
87 names[i] = outs.get(i).getName();
88 }
89
90 return names;
91 }
92
93
94 protected Map<String, Object> getNoneUserSpecificParameters(
95 FLYSArtifact flys,
96 CallContext context)
97 {
98 Map<String, Object> params = new HashMap<String, Object>(1);
99 params.put("recommended", "true");
100
101 return params;
102 }
103 }
104 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org