AxiomHandler.java
01 /* This file is part of the project "Hilbert II" - http://www.qedeq.org
02  *
03  * Copyright 2000-2013,  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 namethrows 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 }