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 }

http://dive4elements.wald.intevation.org