Clover coverage report - Maven Clover report
Coverage timestamp: Tue Aug 1 2006 15:09:51 CEST
file stats: LOC: 164   Methods: 4
NCLOC: 56   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
DOMNodeListByTagNameImpl.java 0% 0% 0% 0%
coverage
 1    /*
 2    * Java HTML Tidy - JTidy
 3    * HTML parser and pretty printer
 4    *
 5    * Copyright (c) 1998-2000 World Wide Web Consortium (Massachusetts
 6    * Institute of Technology, Institut National de Recherche en
 7    * Informatique et en Automatique, Keio University). All Rights
 8    * Reserved.
 9    *
 10    * Contributing Author(s):
 11    *
 12    * Dave Raggett <dsr@w3.org>
 13    * Andy Quick <ac.quick@sympatico.ca> (translation to Java)
 14    * Gary L Peskin <garyp@firstech.com> (Java development)
 15    * Sami Lempinen <sami@lempinen.net> (release management)
 16    * Fabrizio Giustina <fgiust at users.sourceforge.net>
 17    *
 18    * The contributing author(s) would like to thank all those who
 19    * helped with testing, bug fixes, and patience. This wouldn't
 20    * have been possible without all of you.
 21    *
 22    * COPYRIGHT NOTICE:
 23    *
 24    * This software and documentation is provided "as is," and
 25    * the copyright holders and contributing author(s) make no
 26    * representations or warranties, express or implied, including
 27    * but not limited to, warranties of merchantability or fitness
 28    * for any particular purpose or that the use of the software or
 29    * documentation will not infringe any third party patents,
 30    * copyrights, trademarks or other rights.
 31    *
 32    * The copyright holders and contributing author(s) will not be
 33    * liable for any direct, indirect, special or consequential damages
 34    * arising out of any use of the software or documentation, even if
 35    * advised of the possibility of such damage.
 36    *
 37    * Permission is hereby granted to use, copy, modify, and distribute
 38    * this source code, or portions hereof, documentation and executables,
 39    * for any purpose, without fee, subject to the following restrictions:
 40    *
 41    * 1. The origin of this source code must not be misrepresented.
 42    * 2. Altered versions must be plainly marked as such and must
 43    * not be misrepresented as being the original source.
 44    * 3. This Copyright notice may not be removed or altered from any
 45    * source or altered source distribution.
 46    *
 47    * The copyright holders and contributing author(s) specifically
 48    * permit, without fee, and encourage the use of this source code
 49    * as a component for supporting the Hypertext Markup Language in
 50    * commercial products. If you use this source code in a product,
 51    * acknowledgment is not required but would be appreciated.
 52    *
 53    */
 54   
 55    package org.w3c.tidy;
 56   
 57    /**
 58    * DOMNodeListByTagNameImpl. The items in the <code>NodeList</code> are accessible via an integral index, starting
 59    * from 0.
 60    * @author Dave Raggett <a href="mailto:dsr@w3.org">dsr@w3.org </a>
 61    * @author Andy Quick <a href="mailto:ac.quick@sympatico.ca">ac.quick@sympatico.ca </a> (translation to Java)
 62    * @author Fabrizio Giustina
 63    * @version $Revision: 779 $ ($Author: fgiust $)
 64    */
 65    public class DOMNodeListByTagNameImpl implements org.w3c.dom.NodeList
 66    {
 67   
 68    /**
 69    * First node.
 70    */
 71    private Node first;
 72   
 73    /**
 74    * Tag name.
 75    */
 76    private String tagName;
 77   
 78    /**
 79    * Current index.
 80    */
 81    private int currIndex;
 82   
 83    /**
 84    * Max index (number of nodes).
 85    */
 86    private int maxIndex;
 87   
 88    /**
 89    * Current node.
 90    */
 91    private Node currNode;
 92   
 93    /**
 94    * Instantiates a new DOMNodeListByTagName.
 95    * @param first first node.
 96    * @param tagName tag name
 97    */
 98  0 protected DOMNodeListByTagNameImpl(Node first, String tagName)
 99    {
 100  0 this.first = first;
 101  0 this.tagName = tagName;
 102    }
 103   
 104    /**
 105    * @see org.w3c.dom.NodeList#item
 106    */
 107  0 public org.w3c.dom.Node item(int index)
 108    {
 109  0 currIndex = 0;
 110  0 maxIndex = index;
 111  0 preTraverse(first);
 112   
 113  0 if (currIndex > maxIndex && currNode != null)
 114    {
 115  0 return currNode.getAdapter();
 116    }
 117   
 118  0 return null;
 119    }
 120   
 121    /**
 122    * @see org.w3c.dom.NodeList#getLength
 123    */
 124  0 public int getLength()
 125    {
 126  0 currIndex = 0;
 127  0 maxIndex = Integer.MAX_VALUE;
 128  0 preTraverse(first);
 129  0 return currIndex;
 130    }
 131   
 132    /**
 133    * Traverse the node list.
 134    * @param node Node
 135    */
 136  0 protected void preTraverse(Node node)
 137    {
 138  0 if (node == null)
 139    {
 140  0 return;
 141    }
 142   
 143  0 if (node.type == Node.START_TAG || node.type == Node.START_END_TAG)
 144    {
 145  0 if (currIndex <= maxIndex && (tagName.equals("*") || tagName.equals(node.element)))
 146    {
 147  0 currIndex += 1;
 148  0 currNode = node;
 149    }
 150    }
 151  0 if (currIndex > maxIndex)
 152    {
 153  0 return;
 154    }
 155   
 156  0 node = node.content;
 157  0 while (node != null)
 158    {
 159  0 preTraverse(node);
 160  0 node = node.next;
 161    }
 162    }
 163   
 164    }