/* * JasperReports - Free Java Reporting Library. * Copyright (C) 2001 - 2009 Jaspersoft Corporation. All rights reserved. * http://www.jaspersoft.com * * Unless you have purchased a commercial license agreement from Jaspersoft, * the following license terms apply: * * This program is part of JasperReports. * * JasperReports is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * JasperReports is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with JasperReports. If not, see <http://www.gnu.org/licenses/>. */ package net.sf.jasperreports.components.table.fill; import java.util.ArrayList; import java.util.Collections; import java.util.List; import net.sf.jasperreports.engine.JRAbstractScriptlet; import net.sf.jasperreports.engine.JRDataset; import net.sf.jasperreports.engine.JRExpression; import net.sf.jasperreports.engine.JRField; import net.sf.jasperreports.engine.JRGroup; import net.sf.jasperreports.engine.JRParameter; import net.sf.jasperreports.engine.JRPropertiesHolder; import net.sf.jasperreports.engine.JRPropertiesMap; import net.sf.jasperreports.engine.JRQuery; import net.sf.jasperreports.engine.JRScriptlet; import net.sf.jasperreports.engine.JRSortField; import net.sf.jasperreports.engine.JRVariable; import net.sf.jasperreports.engine.design.JRDesignParameter; import net.sf.jasperreports.engine.design.JRDesignScriptlet; import net.sf.jasperreports.engine.type.WhenResourceMissingTypeEnum; /** * * * @author Lucian Chirita (lucianc@users.sourceforge.net) * @version $Id: TableReportDataset.java 3735 2010-04-12 15:45:13Z lucianc $ */ public class TableReportDataset implements JRDataset { private final JRDataset tableSubdataset; private final String name; private final TableReportGroup[] tableGroups; private final List<JRGroup> groups; private final JRPropertiesMap properties; private final List<JRScriptlet> scriptlets; private final List<JRParameter> parameters; public TableReportDataset(JRDataset tableSubdataset, String name) { this.tableSubdataset = tableSubdataset; this.name = name; JRGroup[] datasetGroups = tableSubdataset.getGroups(); groups = new ArrayList<JRGroup>(); if (datasetGroups == null) { tableGroups = null; } else { tableGroups = new TableReportGroup[datasetGroups.length]; for (int i = 0; i < datasetGroups.length; i++) { tableGroups[i] = new TableReportGroup(datasetGroups[i]); groups.add(tableGroups[i]); } } properties = tableSubdataset.getPropertiesMap().cloneProperties(); scriptlets = new ArrayList<JRScriptlet>(); JRScriptlet[] datasetScriptlets = tableSubdataset.getScriptlets(); if (datasetScriptlets != null) { Collections.addAll(scriptlets, datasetScriptlets); } JRParameter[] datasetParameters = tableSubdataset.getParameters(); parameters = new ArrayList<JRParameter>(); if (datasetParameters != null) { Collections.addAll(parameters, datasetParameters); } } public JRField[] getFields() { return tableSubdataset.getFields(); } public JRExpression getFilterExpression() { return tableSubdataset.getFilterExpression(); } public TableReportGroup[] getTableGroups() { return tableGroups; } public JRGroup[] getGroups() { return groups.toArray(new JRGroup[groups.size()]); } public void addFirstGroup(JRGroup group) { groups.add(0, group); } public String getName() { return name; } public JRParameter[] getParameters() { return parameters.toArray(new JRParameter[parameters.size()]); } public JRQuery getQuery() { return tableSubdataset.getQuery(); } public String getResourceBundle() { return tableSubdataset.getResourceBundle(); } public String getScriptletClass() { return tableSubdataset.getScriptletClass(); } public JRScriptlet[] getScriptlets() { return scriptlets.toArray(new JRScriptlet[scriptlets.size()]); } public JRSortField[] getSortFields() { return tableSubdataset.getSortFields(); } public JRVariable[] getVariables() { return tableSubdataset.getVariables(); } @Deprecated public byte getWhenResourceMissingType() { return tableSubdataset.getWhenResourceMissingType(); } public WhenResourceMissingTypeEnum getWhenResourceMissingTypeValue() { return tableSubdataset.getWhenResourceMissingTypeValue(); } public boolean isMainDataset() { // used as main dataset return true; } @Deprecated public void setWhenResourceMissingType(byte whenResourceMissingType) { throw new UnsupportedOperationException(); } public void setWhenResourceMissingType( WhenResourceMissingTypeEnum whenResourceMissingType) { throw new UnsupportedOperationException(); } public JRPropertiesHolder getParentProperties() { return tableSubdataset.getParentProperties(); } public JRPropertiesMap getPropertiesMap() { return properties; } public boolean hasProperties() { return properties.hasProperties(); } public Object clone() { throw new UnsupportedOperationException(); } public void addScriptlet(String name, Class<? extends JRAbstractScriptlet> type) { JRDesignScriptlet scriptlet = new JRDesignScriptlet(); scriptlet.setName(name); scriptlet.setValueClass(type); JRDesignParameter parameter = new JRDesignParameter(); parameter.setName(name + JRScriptlet.SCRIPTLET_PARAMETER_NAME_SUFFIX); parameter.setValueClass(scriptlet.getValueClass()); parameter.setSystemDefined(true); parameter.setForPrompting(false); scriptlets.add(scriptlet); parameters.add(parameter); } }