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.PredicateDefinition;
19 import org.qedeq.kernel.se.dto.module.PredicateDefinitionVo;
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
24
25
26
27
28
29
30 public class PredicateDefinitionHandler extends AbstractSimpleHandler {
31
32
33 private final FormulaHandler formulaHandler;
34
35
36 private final LatexListHandler descriptionHandler;
37
38
39 private PredicateDefinitionVo definition;
40
41
42 private String latexPattern;
43
44
45
46
47
48
49
50 public PredicateDefinitionHandler(final AbstractSimpleHandler handler) {
51 super(handler, "DEFINITION_PREDICATE");
52 formulaHandler = new FormulaHandler(this);
53 descriptionHandler = new LatexListHandler(this, "DESCRIPTION");
54 }
55
56 public final void init() {
57 definition = null;
58 latexPattern = null;
59 }
60
61
62
63
64
65
66 public final PredicateDefinition getDefinition() {
67 return definition;
68 }
69
70 public final void startElement(final String name, final SimpleAttributes attributes)
71 throws XmlSyntaxException {
72 if (getStartTag().equals(name)) {
73 definition = new PredicateDefinitionVo();
74 definition.setArgumentNumber(attributes.getString("arguments"));
75 definition.setName(attributes.getString("name"));
76 } else if ("LATEXPATTERN".equals(name)) {
77
78 } else if (formulaHandler.getStartTag().equals(name)) {
79 changeHandler(formulaHandler, name, attributes);
80 } else if (descriptionHandler.getStartTag().equals(name)) {
81 changeHandler(descriptionHandler, name, attributes);
82 } else {
83 throw XmlSyntaxException.createUnexpectedTagException(name);
84 }
85 }
86
87 public final void endElement(final String name) throws XmlSyntaxException {
88 if (getStartTag().equals(name)) {
89
90 } else if ("LATEXPATTERN".equals(name)) {
91 definition.setLatexPattern(latexPattern);
92 } else if (formulaHandler.getStartTag().equals(name)) {
93 definition.setFormula(formulaHandler.getFormula());
94 } else if (descriptionHandler.getStartTag().equals(name)) {
95 definition.setDescription(descriptionHandler.getLatexList());
96 } else {
97 throw XmlSyntaxException.createUnexpectedTagException(name);
98 }
99 }
100
101 public final void characters(final String name, final String data) {
102 if ("LATEXPATTERN".equals(name)) {
103 latexPattern = data;
104 } else {
105 throw new RuntimeException("Unexpected character data in tag: " + name);
106 }
107 }
108
109
110 }