Clover Coverage Report
Coverage timestamp: Sa Aug 2 2008 13:56:27 CEST
../../../../../../img/srcFileCovDistChart9.png 30% of files have more coverage
19   110   9   2,71
4   50   0,47   7
7     1,29  
1    
 
  ElementHandler       Line # 43 19 9 90% 0.9
 
  (41)
 
1    /* $Id: ElementHandler.java,v 1.1 2008/07/26 08:00:51 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.list;
19   
20    import java.util.ArrayList;
21    import java.util.List;
22   
23    import org.qedeq.kernel.base.list.Element;
24    import org.qedeq.kernel.base.list.ElementList;
25    import org.qedeq.kernel.dto.list.DefaultAtom;
26    import org.qedeq.kernel.dto.list.DefaultElementList;
27    import org.qedeq.kernel.xml.parser.AbstractSimpleHandler;
28    import org.qedeq.kernel.xml.parser.SaxDefaultHandler;
29    import org.qedeq.kernel.xml.parser.SimpleAttributes;
30   
31   
32    /**
33    * Parse elements. For example formulas and terms are build of
34    * {@link org.qedeq.kernel.base.list.Element}s.
35    * <P>
36    * This handler knows nothing about special forms. It doesn't do any
37    * validating. It simply puts all attributes into string atoms and
38    * adds all sub elements. The element name is taken for the operator name.
39    *
40    * @version $Revision: 1.1 $
41    * @author Michael Meyling
42    */
 
43    public class ElementHandler extends AbstractSimpleHandler {
44   
45    /** Value object element. */
46    private Element result;
47   
48    /** Element stack. */
49    private final List elements;
50   
51   
52    /**
53    * Deals with elements.
54    *
55    * @param handler Parent handler.
56    */
 
57  840 toggle public ElementHandler(final AbstractSimpleHandler handler) {
58  840 super(handler);
59  840 elements = new ArrayList(20);
60    }
61   
62    /**
63    * Deals with elements.
64    *
65    * @param handler Parent handler.
66    */
 
67  137 toggle public ElementHandler(final SaxDefaultHandler handler) {
68  137 super(handler);
69  137 elements = new ArrayList(20);
70    }
71   
 
72  1651 toggle public final void init() {
73  1651 result = null;
74  1651 elements.clear();
75    }
76   
77    /**
78    * Get parsed element.
79    *
80    * @return Parsed element.
81    */
 
82  1651 toggle public final Element getElement() {
83  1651 return result;
84    }
85   
 
86  19820 toggle public final void startElement(final String name, final SimpleAttributes attributes) {
87  19820 final String[] values = attributes.getKeySortedStringValues();
88  19820 final ElementList element = new DefaultElementList(name, new Element[0]);
89  34871 for (int i = 0; i < values.length; i++) {
90  15051 element.add(new DefaultAtom(values[i]));
91    }
92  19820 elements.add(element);
93    }
94   
 
95  19820 toggle public final void endElement(final String name) {
96  19820 ElementList last = (ElementList) elements.get(elements.size() - 1);
97  19820 elements.remove(elements.size() - 1);
98  19820 if (elements.size() > 0) {
99  18169 ((ElementList) elements.get(elements.size() - 1)).add(last);
100    } else {
101  1651 result = last;
102    }
103    }
104   
 
105  0 toggle public final void characters(final String name, final String data) {
106  0 ElementList last = (ElementList) elements.get(elements.size() - 1);
107  0 last.add(new DefaultAtom(data));
108    }
109   
110    }