1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.qedeq.kernel.xml.handler.list;
17
18 import java.util.ArrayList;
19 import java.util.List;
20
21 import org.qedeq.kernel.se.base.list.Element;
22 import org.qedeq.kernel.se.base.list.ElementList;
23 import org.qedeq.kernel.se.dto.list.DefaultAtom;
24 import org.qedeq.kernel.se.dto.list.DefaultElementList;
25 import org.qedeq.kernel.xml.handler.common.AbstractSimpleHandler;
26 import org.qedeq.kernel.xml.handler.common.SaxDefaultHandler;
27 import org.qedeq.kernel.xml.handler.common.SimpleAttributes;
28
29
30
31
32
33
34
35
36
37
38
39
40 public class ElementHandler extends AbstractSimpleHandler {
41
42
43 private Element result;
44
45
46 private final List elements;
47
48
49
50
51
52
53
54 public ElementHandler(final AbstractSimpleHandler handler) {
55 super(handler);
56 elements = new ArrayList(20);
57 }
58
59
60
61
62
63
64 public ElementHandler(final SaxDefaultHandler handler) {
65 super(handler);
66 elements = new ArrayList(20);
67 }
68
69 public final void init() {
70 result = null;
71 elements.clear();
72 }
73
74
75
76
77
78
79 public final Element getElement() {
80 return result;
81 }
82
83 public final void startElement(final String name, final SimpleAttributes attributes) {
84 final String[] values = attributes.getKeySortedStringValues();
85 final ElementList element = new DefaultElementList(name);
86 for (int i = 0; i < values.length; i++) {
87 element.add(new DefaultAtom(values[i]));
88 }
89 elements.add(element);
90 }
91
92 public final void endElement(final String name) {
93 ElementList last = (ElementList) elements.get(elements.size() - 1);
94 elements.remove(elements.size() - 1);
95 if (elements.size() > 0) {
96 ((ElementList) elements.get(elements.size() - 1)).add(last);
97 } else {
98 result = last;
99 }
100 }
101
102 public final void characters(final String name, final String data) {
103 ElementList last = (ElementList) elements.get(elements.size() - 1);
104 last.add(new DefaultAtom(data));
105 }
106
107 }