Mercurial > dive4elements > river
comparison flys-client/src/main/java/de/intevation/flys/client/server/features/XMLFileFeatures.java @ 3484:83845aa322ea
XMLFileFeatures: Cosmetics.
flys-client/trunk@5181 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 09 Aug 2012 08:22:04 +0000 |
parents | c64cad8dc772 |
children | 3dfe7bbab70f |
comparison
equal
deleted
inserted
replaced
3483:b21840188264 | 3484:83845aa322ea |
---|---|
2 | 2 |
3 import java.io.FileInputStream; | 3 import java.io.FileInputStream; |
4 import java.io.IOException; | 4 import java.io.IOException; |
5 | 5 |
6 import java.util.ArrayList; | 6 import java.util.ArrayList; |
7 import java.util.Hashtable; | 7 import java.util.HashMap; |
8 import java.util.LinkedList; | |
8 import java.util.List; | 9 import java.util.List; |
9 import java.util.LinkedList; | 10 import java.util.Map; |
10 | 11 |
11 import javax.xml.xpath.XPathConstants; | 12 import javax.xml.xpath.XPathConstants; |
12 | 13 |
13 import org.apache.log4j.Logger; | 14 import org.apache.log4j.Logger; |
14 | 15 |
19 | 20 |
20 import de.intevation.artifacts.common.utils.XMLUtils; | 21 import de.intevation.artifacts.common.utils.XMLUtils; |
21 | 22 |
22 public class XMLFileFeatures implements Features { | 23 public class XMLFileFeatures implements Features { |
23 | 24 |
24 private static final Logger logger = Logger.getLogger(XMLFileFeatures.class); | 25 private static final Logger logger = |
26 Logger.getLogger(XMLFileFeatures.class); | |
25 | 27 |
26 private Hashtable<String, List<String>> featuremap = new Hashtable<String, List<String>>(); | 28 private Map<String, List<String>> featuremap = |
29 new HashMap<String, List<String>>(); | |
27 | 30 |
28 private final static String XPATH_FEATURES = "ftr:feature/child::text()"; | 31 private final static String XPATH_FEATURES = "ftr:feature/child::text()"; |
29 private final static String XPATH_ROLES = "/ftr:features/ftr:role"; | 32 private final static String XPATH_ROLES = "/ftr:features/ftr:role"; |
30 | 33 |
31 public XMLFileFeatures(String filename) throws IOException { | 34 public XMLFileFeatures(String filename) throws IOException { |
38 doc, | 41 doc, |
39 XPATH_ROLES, | 42 XPATH_ROLES, |
40 XPathConstants.NODESET, | 43 XPathConstants.NODESET, |
41 FeaturesNamespaceContext.INSTANCE); | 44 FeaturesNamespaceContext.INSTANCE); |
42 | 45 |
43 for(int i=0, m = roles.getLength(); i < m; i++) { | 46 for(int i = 0, m = roles.getLength(); i < m; i++) { |
44 Element rolenode = (Element)roles.item(i); | 47 Element rolenode = (Element)roles.item(i); |
45 | 48 |
46 String name = rolenode.getAttributeNS( | 49 String name = rolenode.getAttributeNS( |
47 FeaturesNamespaceContext.NAMESPACE_URI, "name"); | 50 FeaturesNamespaceContext.NAMESPACE_URI, "name"); |
48 | 51 |
49 logger.debug("Found role: " + name); | 52 logger.debug("Found role: " + name); |
50 | 53 |
51 NodeList features = (NodeList) XMLUtils.xpath( | 54 NodeList features = (NodeList) XMLUtils.xpath( |
52 rolenode, | 55 rolenode, |
53 XPATH_FEATURES, | 56 XPATH_FEATURES, |
54 XPathConstants.NODESET, | 57 XPathConstants.NODESET, |
55 FeaturesNamespaceContext.INSTANCE); | 58 FeaturesNamespaceContext.INSTANCE); |
56 | 59 |
57 if (features.getLength() > 0) { | 60 if (features == null) { |
58 List<String> allowed = new ArrayList<String>(features.getLength()); | 61 continue; |
59 for (int j=0, l = features.getLength(); j < l; j++) { | 62 } |
63 | |
64 int N = features.getLength(); | |
65 | |
66 if (N > 0) { | |
67 List<String> allowed = new ArrayList<String>(N); | |
68 for (int j = 0; j < N; j++) { | |
60 Node featurenode = features.item(j); | 69 Node featurenode = features.item(j); |
61 String featurename = featurenode.getNodeValue(); | 70 String featurename = featurenode.getNodeValue(); |
62 | 71 |
63 logger.debug("Found feature: " + featurename); | 72 logger.debug("Found feature: " + featurename); |
64 | 73 |
74 } | 83 } |
75 } | 84 } |
76 | 85 |
77 @Override | 86 @Override |
78 public List<String> getFeatures(List<String> roles) { | 87 public List<String> getFeatures(List<String> roles) { |
79 List<String> features = new LinkedList<String>(); | 88 List<String> features = new ArrayList<String>(); |
80 | 89 |
81 for (String role: roles) { | 90 for (String role: roles) { |
82 List<String> allowed = this.featuremap.get(role); | 91 List<String> allowed = this.featuremap.get(role); |
83 if (!allowed.isEmpty()) { | 92 if (allowed != null) { |
84 features.addAll(allowed); | 93 features.addAll(allowed); |
85 } | 94 } |
86 } | 95 } |
87 return features; | 96 return features; |
88 } | 97 } |