01 /* This file is part of the project "Hilbert II" - http://www.qedeq.org
02 *
03 * Copyright 2000-2011, Michael Meyling <mime@qedeq.org>.
04 *
05 * "Hilbert II" is free software; you can redistribute
06 * it and/or modify it under the terms of the GNU General Public
07 * License as published by the Free Software Foundation; either
08 * version 2 of the License, or (at your option) any later version.
09 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15
16 package org.qedeq.kernel.xml.handler.module;
17
18 import org.qedeq.kernel.se.base.module.Axiom;
19 import org.qedeq.kernel.se.dto.module.AxiomVo;
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 * Parse an axiom.
27 *
28 * @version $Revision: 1.1 $
29 * @author Michael Meyling
30 */
31 public class AxiomHandler extends AbstractSimpleHandler {
32
33 /** Handler for axiom formula. */
34 private final FormulaHandler formulaHandler;
35
36 /** Handler for rule description. */
37 private final LatexListHandler descriptionHandler;
38
39 /** Axiom value object. */
40 private AxiomVo axiom;
41
42 /**
43 * Deals with axioms.
44 *
45 * @param handler Parent handler.
46 */
47 public AxiomHandler(final AbstractSimpleHandler handler) {
48 super(handler, "AXIOM");
49 formulaHandler = new FormulaHandler(this);
50 descriptionHandler = new LatexListHandler(this, "DESCRIPTION");
51 }
52
53 public final void init() {
54 axiom = null;
55 }
56
57 /**
58 * Get axiom.
59 *
60 * @return Axiom.
61 */
62 public final Axiom getAxiom() {
63 return axiom;
64 }
65
66 public final void startElement(final String name, final SimpleAttributes attributes)
67 throws XmlSyntaxException {
68 if (getStartTag().equals(name)) {
69 axiom = new AxiomVo();
70 axiom.setDefinedOperator(attributes.getString("definedOperator"));
71 } else if (formulaHandler.getStartTag().equals(name)) {
72 changeHandler(formulaHandler, name, attributes);
73 } else if (descriptionHandler.getStartTag().equals(name)) {
74 changeHandler(descriptionHandler, name, attributes);
75 } else {
76 throw XmlSyntaxException.createUnexpectedTagException(name);
77 }
78 }
79
80 public final void endElement(final String name) throws XmlSyntaxException {
81 if (getStartTag().equals(name)) {
82 // nothing to do
83 } else if (formulaHandler.getStartTag().equals(name)) {
84 axiom.setFormula(formulaHandler.getFormula());
85 } else if (descriptionHandler.getStartTag().equals(name)) {
86 axiom.setDescription(descriptionHandler.getLatexList());
87 } else {
88 throw XmlSyntaxException.createUnexpectedTagException(name);
89 }
90 }
91
92 }
|