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: */package org.jfree.report.data;
031:
032: import org.jfree.report.DataRow;
033: import org.jfree.report.DataSourceException;
034: import org.jfree.report.flow.ParameterMapping;
035:
036: /**
037: * Creation-Date: 06.03.2006, 18:15:06
038: *
039: * @author Thomas Morgner
040: */
041: public class ImportedVariablesDataRow extends StaticDataRow {
042: private String[] outerNames;
043: private String[] innerNames;
044:
045: public ImportedVariablesDataRow(final GlobalMasterRow innerRow)
046: throws DataSourceException {
047: final DataRow globalView = innerRow.getGlobalView();
048: final int cols = globalView.getColumnCount();
049: this .outerNames = new String[cols];
050: this .innerNames = outerNames;
051: final Object[] values = new Object[outerNames.length];
052: for (int i = 0; i < outerNames.length; i++) {
053: outerNames[i] = globalView.getColumnName(i);
054: values[i] = globalView.get(i);
055: }
056: setData(outerNames, values);
057: }
058:
059: /**
060: * Maps the inner-row into the outer data row. The parameter mapping's name
061: * represents the *outer* name and the innernames.
062: *
063: * @param innerRow
064: * @param parameterMappings
065: * @throws DataSourceException
066: */
067: public ImportedVariablesDataRow(final GlobalMasterRow innerRow,
068: final ParameterMapping[] parameterMappings)
069: throws DataSourceException {
070: this .outerNames = new String[parameterMappings.length];
071: this .innerNames = new String[parameterMappings.length];
072: final Object[] values = new Object[parameterMappings.length];
073: final DataRow globalView = innerRow.getGlobalView();
074: for (int i = 0; i < parameterMappings.length; i++) {
075: final ParameterMapping mapping = parameterMappings[i];
076: final String name = mapping.getAlias();
077: values[i] = globalView.get(name);
078: innerNames[i] = name;
079: outerNames[i] = mapping.getName();
080: }
081: setData(outerNames, values);
082: }
083:
084: protected ImportedVariablesDataRow(
085: final ImportedVariablesDataRow dataRow) {
086: super (dataRow);
087: outerNames = dataRow.outerNames;
088: innerNames = dataRow.innerNames;
089: }
090:
091: public ImportedVariablesDataRow advance(
092: final GlobalMasterRow innerRow) throws DataSourceException {
093: final DataRow globalView = innerRow.getGlobalView();
094: final Object[] values = new Object[outerNames.length];
095: for (int i = 0; i < innerNames.length; i++) {
096: final String name = innerNames[i];
097: values[i] = globalView.get(name);
098: }
099: final ImportedVariablesDataRow idr = new ImportedVariablesDataRow(
100: this);
101: idr.setData(outerNames, values);
102: return idr;
103: }
104: }
|