Clover Coverage Report
Coverage timestamp: Sa Aug 2 2008 13:56:27 CEST
../../../../../../img/srcFileCovDistChart8.png 47% of files have more coverage
56   177   30   8
44   111   0,54   7
7     4,29  
1    
 
  ParserHandler       Line # 36 56 30 77,6% 0.7757009
 
  (92)
 
1    /* $Id: ParserHandler.java,v 1.1 2008/07/26 08:00:52 m31 Exp $
2    *
3    * This file is part of the project "Hilbert II" - http://www.qedeq.org
4    *
5    * Copyright 2000-2008, Michael Meyling <mime@qedeq.org>.
6    *
7    * "Hilbert II" is free software; you can redistribute
8    * it and/or modify it under the terms of the GNU General Public
9    * License as published by the Free Software Foundation; either
10    * version 2 of the License, or (at your option) any later version.
11    *
12    * This program is distributed in the hope that it will be useful,
13    * but WITHOUT ANY WARRANTY; without even the implied warranty of
14    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15    * GNU General Public License for more details.
16    */
17   
18    package org.qedeq.kernel.xml.handler.parser;
19   
20    import java.util.ArrayList;
21    import java.util.List;
22   
23    import org.qedeq.kernel.bo.parser.Operator;
24    import org.qedeq.kernel.xml.common.XmlSyntaxException;
25    import org.qedeq.kernel.xml.parser.AbstractSimpleHandler;
26    import org.qedeq.kernel.xml.parser.SaxDefaultHandler;
27    import org.qedeq.kernel.xml.parser.SimpleAttributes;
28   
29   
30    /**
31    * Parses list of operators. Result is a list of all parsed operators.
32    *
33    * @version $Revision: 1.1 $
34    * @author Michael Meyling
35    */
 
36    public final class ParserHandler extends AbstractSimpleHandler {
37   
38    /** List of all Operators. */
39    private List operators = new ArrayList();
40   
41    /** Operator start symbol. */
42    private String startSymbol;
43   
44    /** QEDEQ representation. E.g. "PREDCON". */
45    private String qedeq;
46   
47    /** QEDEQ argument. E.g. "equal". */
48    private String qedeqArgument;
49   
50    /** Operator priority. */
51    private Integer priority;
52   
53    /** Minimum argument number. */
54    private Integer min;
55   
56    /** Maximum argument number. */
57    private Integer max;
58   
59   
60    /**
61    * Handle a parser XML file.
62    *
63    * @param defaultHandler Startup handler.
64    */
 
65  92 toggle public ParserHandler(final SaxDefaultHandler defaultHandler) {
66  92 super(defaultHandler, "parser");
67    }
68   
 
69  92 toggle public final void init() {
70  92 operators.clear();
71    }
72   
73    /**
74    * Get list of operators.
75    *
76    * @return Operator list.
77    */
 
78  92 toggle public final List getOperators() {
79  92 return operators;
80    }
81   
 
82  1614 toggle public final void startElement(final String name, final SimpleAttributes attributes)
83    throws XmlSyntaxException {
84  1614 if (getStartTag().equals(name)) {
85    // nothing todo
86  1522 } else if ("prefixOperator".equals(name)) {
87  503 setBasisAttributes(name, attributes);
88  503 addOperator(Operator.SIMPLE_PREFIX);
89  1019 } else if ("infixOperator".equals(name)) {
90  747 setBasisAttributes(name, attributes);
91  747 addOperator(Operator.INFIX);
92  272 } else if ("functionOperator".equals(name)) {
93  88 setBasisAttributes(name, attributes);
94  88 addOperator(Operator.FUNCTION);
95  184 } else if ("complexOperator".equals(name)) {
96  184 setBasisAttributes(name, attributes);
97  184 final String separatorSymbol = attributes.getString("separatorSymbol");
98  184 if (separatorSymbol == null) {
99  0 throw XmlSyntaxException.createEmptyAttributeException(name, "separatorSymbol");
100    }
101  184 if (separatorSymbol.length() == 0) {
102  0 throw XmlSyntaxException.createMissingAttributeException(name, "separatorSymbol");
103    }
104  184 final String endSymbol = attributes.getString("endSymbol");
105  184 if (endSymbol == null) {
106  0 throw XmlSyntaxException.createEmptyAttributeException(name, "endSymbol");
107    }
108  184 if (endSymbol.length() == 0) {
109  0 throw XmlSyntaxException.createMissingAttributeException(name, "endSymbol");
110    }
111  184 if (max == null) {
112  92 operators.add(new Operator(startSymbol, separatorSymbol, endSymbol, qedeq,
113    qedeqArgument, priority.intValue(), min.intValue()));
114    } else {
115  92 operators.add(new Operator(startSymbol, separatorSymbol, endSymbol, qedeq,
116    qedeqArgument, priority.intValue(), min.intValue(), max.intValue()));
117    }
118    } else {
119  0 throw XmlSyntaxException.createUnexpectedTagException(name);
120    }
121    }
122   
 
123  1338 toggle private void addOperator(final int type) {
124  1338 if (max == null) {
125  544 operators.add(new Operator(startSymbol, qedeq, qedeqArgument, priority.intValue(),
126    type, min.intValue()));
127    } else {
128  794 operators.add(new Operator(startSymbol, qedeq, qedeqArgument, priority.intValue(),
129    type, min.intValue(), max.intValue()));
130    }
131    }
132   
 
133  1522 toggle private void setBasisAttributes(final String element, final SimpleAttributes attributes)
134    throws XmlSyntaxException {
135  1522 startSymbol = attributes.getString("startSymbol");
136  1522 if (startSymbol == null) {
137  0 throw XmlSyntaxException.createMissingAttributeException(element, "startSymbol");
138    }
139  1522 if (startSymbol.length() == 0) {
140  0 throw XmlSyntaxException.createEmptyAttributeException(element, "startSymbol");
141    }
142  1522 qedeq = attributes.getString("qedeq");
143  1522 if (qedeq == null) {
144  0 throw XmlSyntaxException.createMissingAttributeException(element, "qedeq");
145    }
146  1522 if (qedeq.length() == 0) {
147  0 throw XmlSyntaxException.createEmptyAttributeException(element, "qedeq");
148    }
149  1522 qedeqArgument = attributes.getString("qedeqArgument");
150  1522 priority = attributes.getInteger("priority");
151  1522 if (priority == null || priority.intValue() < 0) {
152  0 throw XmlSyntaxException.createMissingAttributeException(element, "priority");
153    }
154  1522 min = attributes.getInteger("min");
155  1522 if (min == null) {
156  0 min = new Integer(0);
157    }
158  1522 max = attributes.getInteger("max");
159    }
160   
 
161  1614 toggle public final void endElement(final String name) throws XmlSyntaxException {
162  1614 if (getStartTag().equals(name)) {
163    // nothing to do
164  1522 } else if ("prefixOperator".equals(name)) {
165    // nothing to do
166  1019 } else if ("infixOperator".equals(name)) {
167    // nothing to do
168  272 } else if ("functionOperator".equals(name)) {
169    // nothing to do
170  184 } else if ("complexOperator".equals(name)) {
171    // nothing to do
172    } else {
173  0 throw XmlSyntaxException.createUnexpectedTagException(name);
174    }
175    }
176   
177    }