/*
* Copyright (C) 2002 Erik Swenson - erik@oreports.com
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* 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 General Public License for
* more details.
*
* You should have reserved a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc., 59 Temple
* Place - Suite 330, Boston, MA 02111-1307, USA.
*
*/
package org.efs.openreports.actions.admin;
import java.util.*;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.log4j.Logger;
import org.efs.openreports.engine.ReportEngine;
import org.efs.openreports.engine.ReportEngineHelper;
import org.efs.openreports.objects.*;
import org.efs.openreports.providers.*;
public class EditReportParameterMapAction extends ActionSupport
{
private static final long serialVersionUID = -5228104770995110195L;
protected static Logger log = Logger.getLogger(EditReportParameterMapAction.class);
private int id;
private int reportParameterId;
private int sortOrder;
private int step;
private boolean required;
private String submitAdd;
private String submitUpdate;
private String submitDelete;
private String submitLoad;
private String submitLoadAndCreate;
private String command;
private Report report;
private ReportProvider reportProvider;
private ParameterProvider parameterProvider;
private DirectoryProvider directoryProvider;
private DataSourceProvider dataSourceProvider;
private PropertiesProvider propertiesProvider;
@Override
public String execute()
{
try
{
report = reportProvider.getReport(new Integer(id));
if (submitAdd != null)
{
ReportParameter param =
parameterProvider.getReportParameter(
new Integer(reportParameterId));
ReportParameterMap rpMap = new ReportParameterMap();
rpMap.setReport(report);
rpMap.setReportParameter(param);
rpMap.setRequired(param.isRequired());
rpMap.setSortOrder(0);
rpMap.setStep(0);
report.getParameters().add(rpMap);
reportProvider.updateReport(report);
}
if (submitUpdate != null)
{
ReportParameterMap rpMap =
report.getReportParameterMap(
new Integer(reportParameterId));
rpMap.setRequired(required);
rpMap.setSortOrder(sortOrder);
rpMap.setStep(step);
reportProvider.updateReport(report);
}
if (submitDelete != null)
{
ReportParameterMap rpMap =
report.getReportParameterMap(
new Integer(reportParameterId));
report.getParameters().remove(rpMap);
reportProvider.updateReport(report);
}
if (submitLoad != null || submitLoadAndCreate != null)
{
ReportEngine engine = ReportEngineHelper.getReportEngine(report,
dataSourceProvider, directoryProvider, propertiesProvider);
List<ReportParameter> parameters = engine.buildParameterList(report);
for (int i=0; i < parameters.size(); i++)
{
ReportParameter designParameter = parameters.get(i);
ReportParameter param =
parameterProvider.getReportParameter(designParameter.getName());
// if null, create and assign a new parameter
if (param == null && submitLoadAndCreate != null)
{
param = parameterProvider.insertReportParameter(designParameter);
log.info("Parameter Created: " + param.getName());
}
if (param != null)
{
ReportParameterMap rpMap = new ReportParameterMap();
rpMap.setReport(report);
rpMap.setReportParameter(param);
rpMap.setRequired(param.isRequired());
rpMap.setSortOrder(0);
rpMap.setStep(0);
report.getParameters().add(rpMap);
}
}
reportProvider.updateReport(report);
}
return INPUT;
}
catch (Exception e)
{
e.printStackTrace();
addActionError(e.toString());
return INPUT;
}
}
public int getId()
{
return id;
}
public void setId(int id)
{
this.id = id;
}
public List<ReportParameter> getReportParameters()
{
try
{
return parameterProvider.getAvailableParameters(report);
}
catch (Exception e)
{
addActionError(e.toString());
return null;
}
}
public List<ReportParameterMap> getParametersInReport()
{
List<ReportParameterMap> list = report.getParameters();
Collections.sort(list);
return list;
}
public void setReportProvider(ReportProvider reportProvider)
{
this.reportProvider = reportProvider;
}
public void setParameterProvider(ParameterProvider parameterProvider)
{
this.parameterProvider = parameterProvider;
}
public Report getReport()
{
return report;
}
public void setReport(Report report)
{
this.report = report;
}
public int getReportParameterId()
{
return reportParameterId;
}
public void setReportParameterId(int reportParameterId)
{
this.reportParameterId = reportParameterId;
}
public String getCommand()
{
return command;
}
public void setCommand(String command)
{
this.command = command;
}
public String getSubmitAdd()
{
return submitAdd;
}
public void setSubmitAdd(String submitAdd)
{
this.submitAdd = submitAdd;
}
public String getSubmitUpdate()
{
return submitUpdate;
}
public void setSubmitUpdate(String submitUpdate)
{
this.submitUpdate = submitUpdate;
}
public String getSubmitDelete()
{
return submitDelete;
}
public void setSubmitDelete(String submitDelete)
{
this.submitDelete = submitDelete;
}
public String getSubmitLoad()
{
return submitLoad;
}
public void setSubmitLoad(String submitLoad)
{
this.submitLoad = submitLoad;
}
public String getSubmitLoadAndCreate()
{
return submitLoadAndCreate;
}
public void setSubmitLoadAndCreate(String submitLoadAndCreate)
{
this.submitLoadAndCreate = submitLoadAndCreate;
}
public boolean isRequired()
{
return required;
}
public void setRequired(boolean required)
{
this.required = required;
}
public int getSortOrder()
{
return sortOrder;
}
public void setSortOrder(int sortOrder)
{
this.sortOrder = sortOrder;
}
public int getStep()
{
return step;
}
public void setStep(int step)
{
this.step = step;
}
public void setDirectoryProvider(DirectoryProvider directoryProvider)
{
this.directoryProvider = directoryProvider;
}
public void setDataSourceProvider(DataSourceProvider dataSourceProvider)
{
this.dataSourceProvider = dataSourceProvider;
}
public void setPropertiesProvider(PropertiesProvider propertiesProvider)
{
this.propertiesProvider = propertiesProvider;
}
}