Mercurial > dive4elements > river
comparison flys-client/src/main/java/de/intevation/flys/client/server/meta/Converter.java @ 812:70b728a9f4e8
Meta data service: Create correct request document now.
flys-client/trunk@2468 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 08 Aug 2011 14:49:14 +0000 |
parents | 2e02db03e576 |
children | 57ea5af8a967 |
comparison
equal
deleted
inserted
replaced
811:8fa303586f14 | 812:70b728a9f4e8 |
---|---|
9 import de.intevation.flys.client.shared.model.DataCageNode; | 9 import de.intevation.flys.client.shared.model.DataCageNode; |
10 | 10 |
11 import java.util.ArrayList; | 11 import java.util.ArrayList; |
12 import java.util.Map; | 12 import java.util.Map; |
13 import java.util.HashMap; | 13 import java.util.HashMap; |
14 | |
15 import de.intevation.artifacts.common.utils.XMLUtils; | |
14 | 16 |
15 public class Converter | 17 public class Converter |
16 { | 18 { |
17 public interface NodeConverter | 19 public interface NodeConverter |
18 { | 20 { |
47 for (int i = 0, N = children.getLength(); i < N; ++i) { | 49 for (int i = 0, N = children.getLength(); i < N; ++i) { |
48 Node child = children.item(i); | 50 Node child = children.item(i); |
49 if (child.getNodeType() == Node.ELEMENT_NODE) { | 51 if (child.getNodeType() == Node.ELEMENT_NODE) { |
50 String name = child.getLocalName(); | 52 String name = child.getLocalName(); |
51 NodeConverter converter = converters.get(name); | 53 NodeConverter converter = converters.get(name); |
52 if (converter != null) { | 54 if (converter == null) { |
53 DataCageNode son = converter.convert( | 55 converter = I18N_CONVERTER; |
54 (Element)child, this); | |
55 parent.addChild(son); | |
56 } | 56 } |
57 DataCageNode son = converter.convert( | |
58 (Element)child, this); | |
59 parent.addChild(son); | |
57 } | 60 } |
58 } // for all children | 61 } // for all children |
59 } | 62 } |
60 | 63 |
61 public Converter() { | 64 public Converter() { |
62 converters = new HashMap<String, NodeConverter>(); | 65 converters = new HashMap<String, NodeConverter>(); |
63 registerConverters(); | 66 registerConverters(); |
64 } | 67 } |
65 | 68 |
69 public static final NodeConverter NAME_CONVERTER = new NameConverter(); | |
70 public static final NodeConverter I18N_CONVERTER = new I18NConverter(); | |
71 | |
66 protected void registerConverters() { | 72 protected void registerConverters() { |
67 System.err.println("register converters called"); | 73 System.err.println("register converters called"); |
68 converters.put("datacage", new NameConverter()); | 74 converters.put("datacage", NAME_CONVERTER); |
69 converters.put("river", new NameConverter()); | 75 converters.put("river", NAME_CONVERTER); |
70 converters.put("gauge", new NameConverter()); | 76 converters.put("gauge", NAME_CONVERTER); |
71 converters.put("historical", new NameConverter()); | 77 converters.put("historical", NAME_CONVERTER); |
72 converters.put("discharge-table-nn", new I18NConverter()); | 78 converters.put("column", NAME_CONVERTER); |
73 converters.put("discharge-table-gauge", new I18NConverter()); | |
74 converters.put("fixations", new I18NConverter()); | |
75 converters.put("fixation", new I18NConverter()); | |
76 converters.put("columns", new I18NConverter()); | |
77 converters.put("column", new NameConverter()); | |
78 converters.put("flood-protections", new I18NConverter()); | |
79 converters.put("flood-protection", new I18NConverter()); | |
80 converters.put("flood-water-marks", new I18NConverter()); | |
81 converters.put("flood-water-mark", new I18NConverter()); | |
82 converters.put("water-levels", new I18NConverter()); | |
83 converters.put("water-level", new I18NConverter()); | |
84 converters.put("extra-longitudinal-sections", new I18NConverter()); | |
85 converters.put("extra-longitudinal-section", new I18NConverter()); | |
86 converters.put("longitudinal-section", new I18NConverter()); | |
87 } | 79 } |
88 | 80 |
89 public DataCageTree convert(Document document) { | 81 public DataCageTree convert(Document document) { |
90 System.err.println("convert called"); | 82 System.err.println("convert called"); |
83 //System.err.println(XMLUtils.toString(document)); | |
91 | 84 |
92 ArrayList<DataCageNode> roots = new ArrayList<DataCageNode>(); | 85 ArrayList<DataCageNode> roots = new ArrayList<DataCageNode>(); |
93 NodeList nodes = document.getChildNodes(); | 86 NodeList nodes = document.getChildNodes(); |
94 for (int i = 0, N = nodes.getLength(); i < N; ++i) { | 87 for (int i = 0, N = nodes.getLength(); i < N; ++i) { |
95 Node node = nodes.item(i); | 88 Node node = nodes.item(i); |
96 if (node.getNodeType() == Node.ELEMENT_NODE) { | 89 if (node.getNodeType() == Node.ELEMENT_NODE) { |
97 System.err.println("search for name: " + node.getLocalName()); | 90 System.err.println("search for name: " + node.getLocalName()); |
98 NodeConverter converter = converters.get(node.getLocalName()); | 91 NodeConverter converter = converters.get(node.getLocalName()); |
99 if (converter != null) { | 92 if (converter == null) { |
100 roots.add(converter.convert((Element)node, this)); | 93 converter = I18N_CONVERTER; |
101 } | 94 } |
95 roots.add(converter.convert((Element)node, this)); | |
102 } | 96 } |
103 } | 97 } |
104 return roots.isEmpty() | 98 return roots.isEmpty() |
105 ? new DataCageTree() | 99 ? new DataCageTree() |
106 : new DataCageTree(roots.get(0)); | 100 : new DataCageTree(roots.get(0)); |