Clover coverage report - Maven Clover report
Coverage timestamp: Sun Jan 3 2010 19:08:46 CET
file stats: LOC: 127   Methods: 5
NCLOC: 49   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
RowIterator.java 75% 100% 100% 96%
coverage coverage
 1    /**
 2    * Licensed under the Artistic License; you may not use this file
 3    * except in compliance with the License.
 4    * You may obtain a copy of the License at
 5    *
 6    * http://displaytag.sourceforge.net/license.html
 7    *
 8    * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
 9    * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
 10    * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 11    */
 12    package org.displaytag.model;
 13   
 14    import java.util.Iterator;
 15    import java.util.List;
 16   
 17    import org.apache.commons.logging.Log;
 18    import org.apache.commons.logging.LogFactory;
 19    import org.displaytag.decorator.TableDecorator;
 20   
 21   
 22    /**
 23    * Iterator on table rows.
 24    * @author Fabrizio Giustina
 25    * @version $Revision: 1081 $ ($Author: fgiust $)
 26    */
 27    public class RowIterator
 28    {
 29   
 30    /**
 31    * logger.
 32    */
 33    private static Log log = LogFactory.getLog(RowIterator.class);
 34   
 35    /**
 36    * internal iterator for Rows.
 37    */
 38    private Iterator iterator;
 39   
 40    /**
 41    * row number counter.
 42    */
 43    private int rowNumber;
 44   
 45    /**
 46    * reference to the table TableDecorator.
 47    */
 48    private TableDecorator decorator;
 49   
 50    /**
 51    * id inherited from the TableTag (needed only for logging).
 52    */
 53    private String id;
 54   
 55    /**
 56    * Starting offset for items n the current page. Needed to calculare the index in the original list
 57    */
 58    private int pageOffset;
 59   
 60    /**
 61    * Constructor for RowIterator.
 62    * @param rowList List containing Row objects
 63    * @param columnList List containing CellHeader objects
 64    * @param tableDecorator TableDecorator
 65    * @param offset Starting offset for items n the current page
 66    */
 67  394 protected RowIterator(List rowList, List columnList, TableDecorator tableDecorator, int offset)
 68    {
 69  394 this.iterator = rowList.iterator();
 70  394 this.rowNumber = 0;
 71  394 this.decorator = tableDecorator;
 72  394 this.pageOffset = offset;
 73    }
 74   
 75    /**
 76    * Setter for the tablemodel id.
 77    * @param tableId same id of table tag, needed for logging
 78    */
 79  394 public void setId(String tableId)
 80    {
 81  394 this.id = tableId;
 82    }
 83   
 84    /**
 85    * Check if a next row exist.
 86    * @return boolean true if a new row
 87    */
 88  1408 public boolean hasNext()
 89    {
 90  1408 return this.iterator.hasNext();
 91    }
 92   
 93  94 public int getPageOffset()
 94    {
 95  94 return this.pageOffset;
 96    }
 97   
 98    /**
 99    * Returns the next row object.
 100    * @return Row
 101    */
 102  662 public Row next()
 103    {
 104   
 105  662 int currentRowNumber = this.rowNumber++;
 106   
 107  662 if (log.isDebugEnabled())
 108    {
 109  662 log.debug("[" + this.id + "] rowIterator.next() row number=" + currentRowNumber);
 110    }
 111   
 112  662 Object object = this.iterator.next();
 113   
 114  662 Row row = (Row) object;
 115   
 116  662 row.setRowNumber(currentRowNumber);
 117   
 118  662 if (this.decorator != null)
 119    {
 120  50 this.decorator.initRow(row.getObject(), currentRowNumber, currentRowNumber + getPageOffset());
 121    }
 122   
 123  662 return row;
 124   
 125    }
 126   
 127    }