Clover Coverage Report
Coverage timestamp: Fri May 24 2013 13:47:27 UTC
../../../../../../img/srcFileCovDistChart7.png 74% of files have more coverage
15   162   11   1.67
2   49   0.73   9
9     1.22  
1    
 
  AbstractSimpleHandler       Line # 29 15 11 65.4% 0.65384614
 
  (489)
 
1    /* This file is part of the project "Hilbert II" - http://www.qedeq.org
2    *
3    * Copyright 2000-2013, 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.common;
17   
18    import org.qedeq.kernel.se.common.Plugin;
19    import org.qedeq.kernel.xml.common.XmlSyntaxException;
20   
21   
22    /**
23    * Simple handler that gets SAX parser events. These events were received by the
24    * {@link org.qedeq.kernel.xml.handler.common.SaxDefaultHandler} and are delegated to the
25    * current {@link AbstractSimpleHandler}.
26    *
27    * @author Michael Meyling
28    */
 
29    public abstract class AbstractSimpleHandler {
30   
31    /** This handler gets the original SAX events. */
32    private final SaxDefaultHandler defaultHandler;
33   
34    /** Start tag for this handler .*/
35    private final String startTag;
36   
37    /**
38    * Constructor.
39    *
40    * @param defaultHandler Original SAX event handler.
41    * @param startTag Start tag for this handler.
42    */
 
43  1162 toggle public AbstractSimpleHandler(final SaxDefaultHandler defaultHandler, final String startTag) {
44  1162 this.defaultHandler = defaultHandler;
45  1162 this.startTag = startTag;
46    }
47   
48    /**
49    * Constructor.
50    *
51    * @param defaultHandler Original SAX event handler.
52    */
 
53  0 toggle public AbstractSimpleHandler(final SaxDefaultHandler defaultHandler) {
54  0 this.defaultHandler = defaultHandler;
55  0 this.startTag = null;
56    }
57   
58    /**
59    * Constructor, should be used for creating handlers within handlers.
60    *
61    * @param handler Already existing simple handler.
62    * @param startTag Start tag for this handler.
63    */
 
64  48010 toggle public AbstractSimpleHandler(final AbstractSimpleHandler handler, final String startTag) {
65  48010 this.defaultHandler = handler.defaultHandler;
66  48010 this.startTag = startTag;
67    }
68   
69    /**
70    * Constructor, should be used for creating handlers within handlers.
71    *
72    * @param handler Already existing simple handler.
73    */
 
74  15057 toggle public AbstractSimpleHandler(final AbstractSimpleHandler handler) {
75  15057 this.defaultHandler = handler.defaultHandler;
76  15057 this.startTag = null;
77    }
78   
79    /**
80    * Must be called before a handler should parse a new section.
81    */
82    public abstract void init();
83   
84    /**
85    * Called at begin of element <code>elementName</code>. Must be overwritten.
86    *
87    * @param elementName Tag name.
88    * @param attributes Tag attributes.
89    * @throws XmlSyntaxException There is a semantic error in this event occurrence.
90    */
91    public abstract void startElement(final String elementName, final SimpleAttributes attributes)
92    throws XmlSyntaxException;
93   
94    /**
95    * Called at end of element <code>elementName</code>. Must be overwritten.
96    *
97    * @param elementName Tag name.
98    * @throws XmlSyntaxException There is a semantic error in this event occurrence.
99    */
100    public abstract void endElement(final String elementName) throws XmlSyntaxException;
101   
102    /**
103    * Called at end of element <code>elementName</code>. Must be overwritten if you expect
104    * character data.
105    *
106    * @param elementName Tag name.
107    * @param value String value.
108    * @throws XmlSyntaxException There is a semantic error in this event occurrence.
109    */
 
110  0 toggle public void characters(final String elementName, final String value) throws XmlSyntaxException {
111    // default implementation
112  0 throw XmlSyntaxException.createUnexpectedTextDataException(elementName, value);
113    }
114   
115    /**
116    * Change current handler to new one. The new handler gets automatically a
117    * <code>beginElement</code> event.
118    *
119    * @param newHandler Handler that gets all the events now.
120    * @param elementName Current element name.
121    * @param attributes Current element attributes.
122    * @throws XmlSyntaxException New handler detected semantical problems.
123    */
 
124  183088 toggle public final void changeHandler(final AbstractSimpleHandler newHandler,
125    final String elementName, final SimpleAttributes attributes)
126    throws XmlSyntaxException {
127  183088 if (newHandler.getStartTag() != null && !newHandler.getStartTag().equals(elementName)) {
128  0 throw new RuntimeException(newHandler.getClass().getName() + " has start tag \""
129    + newHandler.getStartTag() + "\", but should start with tag \""
130    + elementName + "\"");
131    }
132  183088 defaultHandler.changeHandler(newHandler, elementName, attributes);
133    }
134   
135    /**
136    * Get current plugin we work for.
137    *
138    * @return Plugin in use.
139    */
 
140  0 toggle public final Plugin getPlugin() {
141  0 return defaultHandler.getPlugin();
142    }
143   
144    /**
145    * Get current tag level.
146    *
147    * @return Current level.
148    */
 
149  52124 toggle public final int getLevel() {
150  52124 return defaultHandler.getLevel();
151    }
152   
153    /**
154    * Get start tag for this handler. Could be <code>null</code> if there is no specific start tag.
155    *
156    * @return Start tag.
157    */
 
158  2064933 toggle public final String getStartTag() {
159  2064933 return startTag;
160    }
161   
162    }