Clover Coverage Report
Coverage timestamp: Sat Sep 18 2010 04:09:52 UTC
../../../../../../img/srcFileCovDistChart9.png 34% of files have more coverage
19   108   9   2.71
4   50   0.47   7
7     1.29  
1    
 
  ElementHandler       Line # 41 19 9 90% 0.9
 
  (55)
 
1    /* This file is part of the project "Hilbert II" - http://www.qedeq.org
2    *
3    * Copyright 2000-2010, Michael Meyling <mime@qedeq.org>.
4    *
5    * "Hilbert II" is free software; you can redistribute
6    * it and/or modify it under the terms of the GNU General Public
7    * License as published by the Free Software Foundation; either
8    * version 2 of the License, or (at your option) any later version.
9    *
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.list;
17   
18    import java.util.ArrayList;
19    import java.util.List;
20   
21    import org.qedeq.kernel.base.list.Element;
22    import org.qedeq.kernel.base.list.ElementList;
23    import org.qedeq.kernel.dto.list.DefaultAtom;
24    import org.qedeq.kernel.dto.list.DefaultElementList;
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    * Parse elements. For example formulas and terms are build of
32    * {@link org.qedeq.kernel.base.list.Element}s.
33    * <P>
34    * This handler knows nothing about special forms. It doesn't do any
35    * validating. It simply puts all attributes into string atoms and
36    * adds all sub elements. The element name is taken for the operator name.
37    *
38    * @version $Revision: 1.1 $
39    * @author Michael Meyling
40    */
 
41    public class ElementHandler extends AbstractSimpleHandler {
42   
43    /** Value object element. */
44    private Element result;
45   
46    /** Element stack. */
47    private final List elements;
48   
49   
50    /**
51    * Deals with elements.
52    *
53    * @param handler Parent handler.
54    */
 
55  1062 toggle public ElementHandler(final AbstractSimpleHandler handler) {
56  1062 super(handler);
57  1062 elements = new ArrayList(20);
58    }
59   
60    /**
61    * Deals with elements.
62    *
63    * @param handler Parent handler.
64    */
 
65  137 toggle public ElementHandler(final SaxDefaultHandler handler) {
66  137 super(handler);
67  137 elements = new ArrayList(20);
68    }
69   
 
70  1851 toggle public final void init() {
71  1851 result = null;
72  1851 elements.clear();
73    }
74   
75    /**
76    * Get parsed element.
77    *
78    * @return Parsed element.
79    */
 
80  1851 toggle public final Element getElement() {
81  1851 return result;
82    }
83   
 
84  21233 toggle public final void startElement(final String name, final SimpleAttributes attributes) {
85  21233 final String[] values = attributes.getKeySortedStringValues();
86  21233 final ElementList element = new DefaultElementList(name, new Element[0]);
87  37322 for (int i = 0; i < values.length; i++) {
88  16089 element.add(new DefaultAtom(values[i]));
89    }
90  21233 elements.add(element);
91    }
92   
 
93  21233 toggle public final void endElement(final String name) {
94  21233 ElementList last = (ElementList) elements.get(elements.size() - 1);
95  21233 elements.remove(elements.size() - 1);
96  21233 if (elements.size() > 0) {
97  19382 ((ElementList) elements.get(elements.size() - 1)).add(last);
98    } else {
99  1851 result = last;
100    }
101    }
102   
 
103  0 toggle public final void characters(final String name, final String data) {
104  0 ElementList last = (ElementList) elements.get(elements.size() - 1);
105  0 last.add(new DefaultAtom(data));
106    }
107   
108    }