/* * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software * Foundation. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This program 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. * * Copyright 2006 - 2009 Pentaho Corporation. All rights reserved. * */ package org.pentaho.platform.plugin.action.jfreereport.components; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.dom4j.Node; import org.pentaho.commons.connection.IPentahoMetaData; import org.pentaho.commons.connection.IPentahoResultSet; import org.pentaho.platform.plugin.action.jfreereport.AbstractJFreeReportComponent; import org.pentaho.platform.plugin.action.messages.Messages; import org.pentaho.platform.util.xml.dom4j.XmlDom4JHelper; import org.pentaho.reporting.engine.classic.core.MasterReport; import org.pentaho.reporting.libraries.base.config.ModifiableConfiguration; /** * @deprecated */ @Deprecated public class JFreeReportConfigParameterComponent extends AbstractJFreeReportComponent { private static final long serialVersionUID = 6599442849458920502L; private static final String REPORT_CONFIG_INPUT_PARAM = "config_parameters"; //$NON-NLS-1$ private static final String REPORT_CONFIG_COMPDEFN = "report_configuration_parameters"; //$NON-NLS-1$ public JFreeReportConfigParameterComponent() { // TODO Auto-generated constructor stub super(); } @Override public void done() { // Nothing to do here... } private boolean initReportConfigParameters() { boolean result = true; if (isDefinedInput(AbstractJFreeReportComponent.DATACOMPONENT_REPORTTEMP_OBJINPUT)) { Object maybeReport = getInputValue(AbstractJFreeReportComponent.DATACOMPONENT_REPORTTEMP_OBJINPUT); if (maybeReport instanceof MasterReport) { MasterReport report = (MasterReport) maybeReport; // We should have our report object at this point. if (isDefinedInput(JFreeReportConfigParameterComponent.REPORT_CONFIG_INPUT_PARAM)) { // It's coming in as an input parameter Object reportConfigParams = this.getInputValue(JFreeReportConfigParameterComponent.REPORT_CONFIG_INPUT_PARAM); if (reportConfigParams instanceof IPentahoResultSet) { setReportConfigParameters(report, (IPentahoResultSet) reportConfigParams); } else if (reportConfigParams instanceof Map) { setReportConfigParameters(report, (Map) reportConfigParams); } else { error(Messages.getInstance().getErrorString("JFreeReport.ERROR_0026_UNKNOWN_REPORT_CONFIGURATION_PARAMETERS")); //$NON-NLS-1$ result = false; ; } } else { Node compDef = getComponentDefinition(); List configNodes = compDef.selectNodes(JFreeReportConfigParameterComponent.REPORT_CONFIG_COMPDEFN + "/*"); //$NON-NLS-1$ if ((configNodes != null) && (configNodes.size() > 0)) { setReportConfigParameters(report, configNodes); } } } } return result; } @Override protected boolean executeAction() throws Throwable { return initReportConfigParameters(); } @Override public boolean init() { return true; } private void setReportConfigParameters(final MasterReport report, final List configNodes) { // We have some configuration parameters in the component definition String parmName = null; String parmValue = null; for (int i = 0; i < configNodes.size(); i++) { Node aNode = (Node) configNodes.get(i); parmName = XmlDom4JHelper.getNodeText("@name", aNode, null); //$NON-NLS-1$ if ((parmName == null) || (parmName.length() == 0)) { // Ignore configuration settings without name= error(Messages.getInstance().getErrorString("JFreeReport.ERROR_0027_REPORT_CONFIGURATION_PARAMETER_IGNORED")); //$NON-NLS-1$ continue; } parmValue = aNode.getText(); if (parmValue != null) { parmValue = parmValue.trim(); if (parmValue.length() > 0) { report.getReportConfiguration().setConfigProperty(parmName, applyInputsToFormat(parmValue)); } else { error(Messages.getInstance().getErrorString("JFreeReport.ERROR_0027_REPORT_CONFIGURATION_PARAMETER_IGNORED")); //$NON-NLS-1$ } } else { error(Messages.getInstance().getErrorString("JFreeReport.ERROR_0027_REPORT_CONFIGURATION_PARAMETER_IGNORED")); //$NON-NLS-1$ } } } private void setReportConfigParameters(final MasterReport report, final Map values) { Map.Entry ent; ModifiableConfiguration config = report.getReportConfiguration(); Iterator it = values.entrySet().iterator(); while (it.hasNext()) { ent = (Map.Entry) it.next(); if ((ent.getKey() != null) && (ent.getValue() != null)) { config.setConfigProperty(ent.getKey().toString(), applyInputsToFormat(ent.getValue().toString())); } } } private void setReportConfigParameters(final MasterReport report, final IPentahoResultSet values) { int rowCount = values.getRowCount(); int colCount = values.getColumnCount(); ModifiableConfiguration config = report.getReportConfiguration(); if (colCount >= 2) { IPentahoMetaData md = values.getMetaData(); int nameIdx = md.getColumnIndex("name");//$NON-NLS-1$ int valIdx = md.getColumnIndex("value");//$NON-NLS-1$ if (nameIdx < 0) { nameIdx = 0; } if (valIdx < 0) { valIdx = 1; } for (int i = 0; i < rowCount; i++) { Object[] aRow = values.getDataRow(i); if ((aRow[nameIdx] != null) && (aRow[valIdx] != null)) { config.setConfigProperty(aRow[nameIdx].toString(), applyInputsToFormat(aRow[valIdx].toString())); } } } else { error(Messages.getInstance().getErrorString("JFreeReport.ERROR_0025_INVALID_REPORT_CONFIGURATION_PARAMETERS")); //$NON-NLS-1$ } } @Override protected boolean validateAction() { return true; } @Override protected boolean validateSystemSettings() { return true; } @Override public Log getLogger() { return LogFactory.getLog(JFreeReportConfigParameterComponent.class); } }