StringResourceLoader.java revision 684ccc2fc5a1c79aa45af22b95c37f7c509a00c1
1684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williamspackage com.xtremelabs.droidsugar.view;
2684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams
3684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williamsimport org.w3c.dom.Document;
4684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williamsimport org.w3c.dom.Node;
5684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williamsimport org.w3c.dom.NodeList;
6684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams
7684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williamsimport javax.xml.xpath.XPathConstants;
8684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williamsimport javax.xml.xpath.XPathExpression;
9684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williamsimport javax.xml.xpath.XPathFactory;
10684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williamsimport java.io.File;
11684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williamsimport java.util.HashMap;
12684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williamsimport java.util.Map;
13684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams
14684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williamspublic class StringResourceLoader extends XmlLoader {
15684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams    Map<String, String> values = new HashMap<String, String>();
16684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams
17684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams    public StringResourceLoader(ResourceExtractor resourceExtractor) {
18684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams        super(resourceExtractor);
19684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams    }
20684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams
21684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams    @Override
22684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams    protected void processResourceXml(File xmlFile, Document document) throws Exception {
23684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams        XPathExpression stringsXPath = XPathFactory.newInstance().newXPath().compile("/resources/string");
24684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams        NodeList stringNodes = (NodeList) stringsXPath.evaluate(document, XPathConstants.NODESET);
25684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams        for (int i = 0; i < stringNodes.getLength(); i++) {
26684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams            Node node = stringNodes.item(i);
27684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams            String name = node.getAttributes().getNamedItem("name").getNodeValue();
28684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams            String value = node.getTextContent();
29684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams            values.put("string/" + name, value);
30684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams        }
31684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams    }
32684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams
33684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams    public String getValue(int resourceId) {
34684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams        String resourceName = resourceExtractor.getResourceName(resourceId);
35684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams        return values.get(resourceName);
36684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams    }
37684ccc2fc5a1c79aa45af22b95c37f7c509a00c1Christian Williams}
38