Clover coverage report - QedeqKernelSe Coverage Report
Coverage timestamp: Do Jan 11 2007 09:03:50 CET
file stats: LOC: 110   Methods: 7
NCLOC: 50   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
ElementHandler.java 100% 89,5% 85,7% 90%
coverage coverage
 1    /* $Id: ElementHandler.java,v 1.5 2006/10/20 20:23:08 m31 Exp $
 2    *
 3    * This file is part of the project "Hilbert II" - http://www.qedeq.org
 4    *
 5    * Copyright 2000-2006, 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.AtomImpl;
 26    import org.qedeq.kernel.dto.list.ElementListImpl;
 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.5 $
 41    * @author Michael Meyling
 42    */
 43    public final 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  162 public ElementHandler(final AbstractSimpleHandler handler) {
 58  162 super(handler);
 59  162 elements = new ArrayList(20);
 60    }
 61   
 62    /**
 63    * Deals with elements.
 64    *
 65    * @param handler Parent handler.
 66    */
 67  140 public ElementHandler(final SaxDefaultHandler handler) {
 68  140 super(handler);
 69  140 elements = new ArrayList(20);
 70    }
 71   
 72  611 public final void init() {
 73  611 result = null;
 74  611 elements.clear();
 75    }
 76   
 77    /**
 78    * Get parsed element.
 79    *
 80    * @return Parsed element.
 81    */
 82  611 public final Element getElement() {
 83  611 return result;
 84    }
 85   
 86  5846 public final void startElement(final String name, final SimpleAttributes attributes) {
 87  5846 final String[] values = attributes.getKeySortedStringValues();
 88  5846 final ElementList element = new ElementListImpl(name, new Element[0]);
 89  5846 for (int i = 0; i < values.length; i++) {
 90  4730 element.add(new AtomImpl(values[i]));
 91    }
 92  5846 elements.add(element);
 93    }
 94   
 95  5846 public final void endElement(final String name) {
 96  5846 ElementList last = (ElementList) elements.get(elements.size() - 1);
 97  5846 elements.remove(elements.size() - 1);
 98  5846 if (elements.size() > 0) {
 99  5235 ((ElementList) elements.get(elements.size() - 1)).add(last);
 100    } else {
 101  611 result = last;
 102    }
 103    }
 104   
 105  0 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 AtomImpl(data));
 108    }
 109   
 110    }