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