Source for org.jfree.report.TableReportData

   1: /**
   2:  * ========================================
   3:  * JFreeReport : a free Java report library
   4:  * ========================================
   5:  *
   6:  * Project Info:  http://reporting.pentaho.org/
   7:  *
   8:  * (C) Copyright 2000-2007, by Object Refinery Limited, Pentaho Corporation and Contributors.
   9:  *
  10:  * This library is free software; you can redistribute it and/or modify it under the terms
  11:  * of the GNU Lesser General Public License as published by the Free Software Foundation;
  12:  * either version 2.1 of the License, or (at your option) any later version.
  13:  *
  14:  * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
  15:  * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  16:  * See the GNU Lesser General Public License for more details.
  17:  *
  18:  * You should have received a copy of the GNU Lesser General Public License along with this
  19:  * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
  20:  * Boston, MA 02111-1307, USA.
  21:  *
  22:  * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
  23:  * in the United States and other countries.]
  24:  *
  25:  * ------------
  26:  * $Id: TableReportData.java 2890 2007-06-10 15:54:22Z taqua $
  27:  * ------------
  28:  * (C) Copyright 2000-2005, by Object Refinery Limited.
  29:  * (C) Copyright 2005-2007, by Pentaho Corporation.
  30:  */
  31: package org.jfree.report;
  32: 
  33: import javax.swing.table.TableModel;
  34: 
  35: /**
  36:  * Creation-Date: 19.02.2006, 17:00:10
  37:  *
  38:  * @author Thomas Morgner
  39:  */
  40: public class TableReportData implements ReportData
  41: {
  42:   private TableModel tableModel;
  43:   private int cursor;
  44:   private int rowMax;
  45:   private int rowMin;
  46:   private int cursorMaxPosition;
  47: 
  48:   public TableReportData(final TableModel tableModel)
  49:   {
  50:     this(tableModel, 0, tableModel.getRowCount());
  51:   }
  52: 
  53:   public TableReportData(final TableModel tableModel, final int start, final int length)
  54:   {
  55:     this.tableModel = tableModel;
  56:     this.rowMax = start + length;
  57:     this.rowMin = start;
  58:     this.cursorMaxPosition = length;
  59:   }
  60: 
  61:   public int getColumnCount() throws DataSourceException
  62:   {
  63:     return tableModel.getColumnCount();
  64:   }
  65: 
  66:   public boolean isReadable() throws DataSourceException
  67:   {
  68:     return cursor > 0 && cursor <= cursorMaxPosition ;
  69:   }
  70: 
  71:   public boolean setCursorPosition(final int row) throws DataSourceException
  72:   {
  73:     if (row > cursorMaxPosition)
  74:     {
  75:       return false;
  76:     }
  77:     else if (row < 0)
  78:     {
  79:       return false;
  80:     }
  81:     cursor = row;
  82:     return true;
  83:   }
  84: 
  85:   /**
  86:    * This operation checks, whether a call to next will be likely to succeed. If
  87:    * there is a next data row, this should return true.
  88:    *
  89:    * @return
  90:    * @throws org.jfree.report.DataSourceException
  91:    *
  92:    */
  93:   public boolean isAdvanceable() throws DataSourceException
  94:   {
  95:     return cursor < cursorMaxPosition;
  96:   }
  97: 
  98:   public String getColumnName(final int column) throws DataSourceException
  99:   {
 100:     return tableModel.getColumnName(column);
 101:   }
 102: 
 103:   public Object get(final int column) throws DataSourceException
 104:   {
 105:     if (isReadable() == false)
 106:     {
 107:       throw new DataSourceException("Unable to read from datasource");
 108:     }
 109:     return tableModel.getValueAt(cursor - 1, column);
 110:   }
 111: 
 112:   public boolean next() throws DataSourceException
 113:   {
 114:     if (cursor >= cursorMaxPosition)
 115:     {
 116:       return false;
 117:     }
 118: 
 119:     cursor += 1;
 120:     return true;
 121:   }
 122: 
 123:   public void close() throws DataSourceException
 124:   {
 125:     // does nothing ...
 126:   }
 127: 
 128:   public int getCursorPosition() throws DataSourceException
 129:   {
 130:     return cursor;
 131:   }
 132: }