1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.qedeq.kernel.xml.handler.module;
17
18 import org.qedeq.kernel.se.base.module.InitialPredicateDefinition;
19 import org.qedeq.kernel.se.dto.module.InitialPredicateDefinitionVo;
20 import org.qedeq.kernel.xml.common.XmlSyntaxException;
21 import org.qedeq.kernel.xml.handler.common.AbstractSimpleHandler;
22 import org.qedeq.kernel.xml.handler.common.SimpleAttributes;
23 import org.qedeq.kernel.xml.handler.list.ElementHandler;
24
25
26
27
28
29
30
31 public class InitialPredicateDefinitionHandler extends AbstractSimpleHandler {
32
33
34 private final ElementHandler elementHandler;
35
36
37 private final LatexListHandler descriptionHandler;
38
39
40 private InitialPredicateDefinitionVo definition;
41
42
43 private String latexPattern;
44
45
46
47
48
49
50
51 public InitialPredicateDefinitionHandler(final AbstractSimpleHandler handler) {
52 super(handler, "DEFINITION_PREDICATE_INITIAL");
53 elementHandler = new ElementHandler(this);
54 descriptionHandler = new LatexListHandler(this, "DESCRIPTION");
55 }
56
57 public final void init() {
58 definition = null;
59 latexPattern = null;
60 }
61
62
63
64
65
66
67 public final InitialPredicateDefinition getInitialDefinition() {
68 return definition;
69 }
70
71 public final void startElement(final String name, final SimpleAttributes attributes)
72 throws XmlSyntaxException {
73 if (getStartTag().equals(name)) {
74 definition = new InitialPredicateDefinitionVo();
75 definition.setArgumentNumber(attributes.getString("arguments"));
76 definition.setName(attributes.getString("name"));
77 } else if ("LATEXPATTERN".equals(name)) {
78
79 } else if ("PREDCON".equals(name)) {
80 changeHandler(elementHandler, name, attributes);
81 } else if (descriptionHandler.getStartTag().equals(name)) {
82 changeHandler(descriptionHandler, name, attributes);
83 } else {
84 throw XmlSyntaxException.createUnexpectedTagException(name);
85 }
86 }
87
88 public final void endElement(final String name) throws XmlSyntaxException {
89 if (getStartTag().equals(name)) {
90
91 } else if ("LATEXPATTERN".equals(name)) {
92 definition.setLatexPattern(latexPattern);
93 } else if ("PREDCON".equals(name)) {
94 definition.setPredCon(elementHandler.getElement());
95 } else if (descriptionHandler.getStartTag().equals(name)) {
96 definition.setDescription(descriptionHandler.getLatexList());
97 } else {
98 throw XmlSyntaxException.createUnexpectedTagException(name);
99 }
100 }
101
102 public final void characters(final String name, final String data) {
103 if ("LATEXPATTERN".equals(name)) {
104 latexPattern = data;
105 } else {
106 throw new RuntimeException("Unexpected character data in tag: " + name);
107 }
108 }
109
110
111 }