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));

http://dive4elements.wald.intevation.org