001 /** 002 * ======================================== 003 * JFreeReport : a free Java report library 004 * ======================================== 005 * 006 * Project Info: http://reporting.pentaho.org/ 007 * 008 * (C) Copyright 2000-2007, by Object Refinery Limited, Pentaho Corporation and Contributors. 009 * 010 * This library is free software; you can redistribute it and/or modify it under the terms 011 * of the GNU Lesser General Public License as published by the Free Software Foundation; 012 * either version 2.1 of the License, or (at your option) any later version. 013 * 014 * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; 015 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 016 * See the GNU Lesser General Public License for more details. 017 * 018 * You should have received a copy of the GNU Lesser General Public License along with this 019 * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, 020 * Boston, MA 02111-1307, USA. 021 * 022 * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 023 * in the United States and other countries.] 024 * 025 * ------------ 026 * $Id: ImportedVariablesDataRow.java 3525 2007-10-16 11:43:48Z tmorgner $ 027 * ------------ 028 * (C) Copyright 2000-2005, by Object Refinery Limited. 029 * (C) Copyright 2005-2007, by Pentaho Corporation. 030 */ 031 package org.jfree.report.data; 032 033 import org.jfree.report.DataRow; 034 import org.jfree.report.DataSourceException; 035 import org.jfree.report.flow.ParameterMapping; 036 037 /** 038 * Creation-Date: 06.03.2006, 18:15:06 039 * 040 * @author Thomas Morgner 041 */ 042 public class ImportedVariablesDataRow extends StaticDataRow 043 { 044 private String[] outerNames; 045 private String[] innerNames; 046 047 public ImportedVariablesDataRow(final GlobalMasterRow innerRow) 048 throws DataSourceException 049 { 050 final DataRow globalView = innerRow.getGlobalView(); 051 final int cols = globalView.getColumnCount(); 052 this.outerNames = new String[cols]; 053 this.innerNames = outerNames; 054 final Object[] values = new Object[outerNames.length]; 055 for (int i = 0; i < outerNames.length; i++) 056 { 057 outerNames[i] = globalView.getColumnName(i); 058 values[i] = globalView.get(i); 059 } 060 setData(outerNames, values); 061 } 062 063 /** 064 * Maps the inner-row into the outer data row. The parameter mapping's name 065 * represents the *outer* name and the innernames. 066 * 067 * @param innerRow 068 * @param parameterMappings 069 * @throws DataSourceException 070 */ 071 public ImportedVariablesDataRow(final GlobalMasterRow innerRow, 072 final ParameterMapping[] parameterMappings) 073 throws DataSourceException 074 { 075 this.outerNames = new String[parameterMappings.length]; 076 this.innerNames = new String[parameterMappings.length]; 077 final Object[] values = new Object[parameterMappings.length]; 078 final DataRow globalView = innerRow.getGlobalView(); 079 for (int i = 0; i < parameterMappings.length; i++) 080 { 081 final ParameterMapping mapping = parameterMappings[i]; 082 final String name = mapping.getAlias(); 083 values[i] = globalView.get(name); 084 innerNames[i] = name; 085 outerNames[i] = mapping.getName(); 086 } 087 setData(outerNames, values); 088 } 089 090 protected ImportedVariablesDataRow(final ImportedVariablesDataRow dataRow) 091 { 092 super(dataRow); 093 outerNames = dataRow.outerNames; 094 innerNames = dataRow.innerNames; 095 } 096 097 public ImportedVariablesDataRow advance (final GlobalMasterRow innerRow) 098 throws DataSourceException 099 { 100 final DataRow globalView = innerRow.getGlobalView(); 101 final Object[] values = new Object[outerNames.length]; 102 for (int i = 0; i < innerNames.length; i++) 103 { 104 final String name = innerNames[i]; 105 values[i] = globalView.get(name); 106 } 107 final ImportedVariablesDataRow idr = new ImportedVariablesDataRow(this); 108 idr.setData(outerNames, values); 109 return idr; 110 } 111 }