{
String nextURL = "editStandard";
ActionForward forward = null;
try
{
HttpSession session = request.getSession();
UserObject userobject = (UserObject)session.getAttribute("userobject");
String timeZone = userobject.getUserPref().getTimeZone();
int userId = userobject.getIndividualID();
int reportId = getTheId("reportId", request);
int moduleId = getModuleId(request);
DynaActionForm reportForm = (DynaActionForm)actionForm;
String createNew = (String)reportForm.get("createNew");
if (createNew.equals("true"))
{
reportForm.initialize(actionMapping);
reportForm.set("moduleId", new Integer(moduleId));
}
ReportVO reportVO = null;
ReportFacade remote = getReportFacade();
String action = request.getParameter("action");
String showFields = (String)((DynaActionForm)actionForm).get("showFields");
if (action == null) // means we are probably coming here from the list view.
// or have resubmitted to manipulate search criteria.
{
reportVO = remote.getStandardReport(userId, reportId);
moduleId = reportVO.getModuleId();
// See if we should add a row.
SearchCriteriaVO[] searchCriteria = (SearchCriteriaVO[])reportForm.get("searchCriteria");
String addRow = (String)reportForm.get("addRow");
String removeRow = (String)reportForm.get("removeRow");
if (addRow.equals("true"))
{
searchCriteria = AdvancedSearchUtil.addRow(searchCriteria);
reportForm.set("addRow", "false");
reportForm.set("searchCriteria", searchCriteria);
} else if (!removeRow.equals("false")) {
searchCriteria = AdvancedSearchUtil.removeRow(searchCriteria, removeRow);
reportForm.set("removeRow", "false");
reportForm.set("searchCriteria", searchCriteria);
} else if (!showFields.equals("true")) {
// showfield probably means we have changed some fields on the form, and we need to parse
// the form and update the VO that we got from the database to reflect those changes.
reportForm = (DynaActionForm)getStandardReportFormFromReportVO(reportVO, actionForm, request);
}
moduleId = reportVO.getModuleId();
request.setAttribute("pagedata", reportVO);
} else if (action.equals("save")) {
reportVO = getStandardReportVOFromForm(timeZone, actionForm);
remote.updateStandardReport(userId, reportVO, false);
// save is save and close (although there is nothing we can update)
nextURL = "showstandardreportlist";
} else if (action.equals("run") || action.equals("export") || action.equals("print")) {
if (action.equals("run"))
{
reportVO = getStandardReportVOFromForm(timeZone, actionForm);
remote.updateStandardReport(userId, reportVO, false);
reportForm.set("createNew", "true");
nextURL = "showstandardreportresult";
} else if (action.equals("export")) {
reportForm.set("createNew", "true");
nextURL = "csvstandardreportresult";
} else if (action.equals("print")) {
reportForm.set("createNew", "true");
nextURL = "printstandardreportresult";
}
// Extract the SearchVO from the form
SearchVO search = this.getSearchVOFromForm(actionForm, request);
if (action.equals("run")){
session.removeAttribute("searchVO");
session.setAttribute("searchVO",search);
}
// Run the report and get the results.
if (action.equals("export") || action.equals("print")){
search = (SearchVO)session.getAttribute("searchVO");
}
ReportResultVO reportResultVO = remote.getStandardReportResult(userId, reportId, search);
moduleId = reportResultVO.getModuleId();
request.setAttribute("pagedata", reportResultVO);
}
request.setAttribute("reportId", String.valueOf(reportId));
request.setAttribute("moduleId", String.valueOf(moduleId));
session.setAttribute("moduleId", String.valueOf(moduleId));
request.setAttribute("reportType", String.valueOf(ReportConstants.STANDARD_REPORT_CODE));
// based on the module ID pick the forward name this name is used to set the selections on the left nav.
String forwardName = "";
switch (moduleId) {
case 14: forwardName = ".view.reports.contacts.standard"; break;