* @return ActionForward
*/
public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws ServletException
{
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;
case 3: forwardName = ".view.reports.activities.standard"; break;
case 30: forwardName = ".view.reports.sales.standard"; break;
case 33: forwardName = ".view.reports.marketing.standard"; break;
case 36: forwardName = ".view.reports.project.standard"; break;
case 39: forwardName = ".view.reports.support.standard"; break;
case 42: forwardName = ".view.reports.accounting.standard"; break;
case 52: forwardName = ".view.reports.hr.standard"; break;
default: forwardName = ".view.reports.contacts.standard"; break;
}
String path = actionMapping.findForward(nextURL).getPath();
forward = new ActionForward(forwardName, path, false);
request.setAttribute("hideListDropDown", new Boolean(true));
} catch (Exception e) {
logger.error("[execute] Exception thrown.", e);
throw new ServletException(e);
}