/** * Makes service calls to rebuild the report control and sub-fund or object code select lists if * needed. * * @param principalName - current user requesting the report * @param buildHelper - contains the current and requested build states * @param reportSelectMode - indicates whether the report takes a sub-fund or object code select * list */ protected void buildControlLists( String principalName, Integer universityFiscalYear, ReportControlListBuildHelper buildHelper, ReportSelectMode reportSelectMode) { BudgetReportsControlListService budgetReportsControlListService = SpringContext.getBean(BudgetReportsControlListService.class); if (buildHelper.isBuildNeeded()) { String[] pointOfViewFields = buildHelper.getRequestedState().getPointOfView().split("[-]"); budgetReportsControlListService.updateReportsControlList( principalName, universityFiscalYear, pointOfViewFields[0], pointOfViewFields[1], buildHelper.getRequestedState().getBuildMode()); if (ReportSelectMode.SUBFUND.equals(reportSelectMode)) { budgetReportsControlListService.updateReportSubFundGroupSelectList(principalName); } else if (ReportSelectMode.OBJECT_CODE.equals(reportSelectMode) || ReportSelectMode.REASON.equals(reportSelectMode)) { budgetReportsControlListService.updateReportObjectCodeSelectList(principalName); } buildHelper.requestBuildComplete(); GlobalVariables.getUserSession() .addObject(BCConstants.Report.CONTROL_BUILD_HELPER_SESSION_NAME, buildHelper); } }
/** * Checks and stores sub-fund, object code, or reason code list depenending on the report mode and * which screen we are on. * * @param organizationReportSelectionForm - OrganizationReportSelectionForm containing the select * lists * @param reportMode - BudgetConstructionReportMode for the report being ran * @return - true if a selection was found and the list was stored or if we need to show reason * code select screen, false otherwise */ protected boolean storeCodeSelections( OrganizationReportSelectionForm organizationReportSelectionForm, BudgetConstructionReportMode reportMode, String principalName) { boolean codeSelected = true; if (ReportSelectMode.SUBFUND.equals(reportMode.reportSelectMode)) { // came from sub fund select screen so need to store sub fund selection settings if (!storedSelectedSubFunds(organizationReportSelectionForm.getSubFundPickList())) { codeSelected = false; } } else if (organizationReportSelectionForm .getOperatingModeTitle() .equals(BCConstants.Report.OBJECT_CODE_SELECTION_TITLE)) { // came from object code select screen so need to store object code selection settings if (!storedSelectedObjectCodes(organizationReportSelectionForm.getObjectCodePickList())) { codeSelected = false; } // determine if we need to setup reason code select if (ReportSelectMode.REASON.equals(reportMode.reportSelectMode) && !organizationReportSelectionForm .getBudgetConstructionReportThresholdSettings() .isUseThreshold()) { BudgetReportsControlListService budgetReportsControlListService = SpringContext.getBean(BudgetReportsControlListService.class); // rebuild reason code control list budgetReportsControlListService.updateReportReasonCodeSelectList(principalName); // setup form organizationReportSelectionForm.setReasonCodePickList( (List) budgetReportsControlListService.retrieveReasonCodeList(principalName)); organizationReportSelectionForm.setOperatingModeTitle( BCConstants.Report.REASON_CODE_SELECTION_TITLE); codeSelected = false; } } else if (organizationReportSelectionForm .getOperatingModeTitle() .equals(BCConstants.Report.REASON_CODE_SELECTION_TITLE)) { // came from reason code select screen so need to store reason code selection settings if (!storedSelectedReasonCodes(organizationReportSelectionForm.getReasonCodePickList())) { codeSelected = false; } } return codeSelected; }
/** * Called from org select or account listing. Checks for needed control list build, makes call to * build control list if necessary, and forwards to subfund or object code select page. */ public ActionForward start( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { OrganizationReportSelectionForm organizationReportSelectionForm = (OrganizationReportSelectionForm) form; String principalName = GlobalVariables.getUserSession().getPerson().getPrincipalId(); // retrieve report mode to determine how control list should be built and what select screen // should be rendered BudgetConstructionReportMode reportMode = BudgetConstructionReportMode.getBudgetConstructionReportModeByName( organizationReportSelectionForm.getReportMode()); if (reportMode == null) { LOG.error( "Invalid report mode passed to report select action: " + organizationReportSelectionForm.getReportMode()); throw new RuntimeException( "Invalid report mode passed to report select action: " + organizationReportSelectionForm.getReportMode()); } // retrieve build helper to determine if a control list rebuild is needed ReportControlListBuildHelper buildHelper = (ReportControlListBuildHelper) GlobalVariables.getUserSession() .retrieveObject(BCConstants.Report.CONTROL_BUILD_HELPER_SESSION_NAME); if (buildHelper == null) { // session timeout, need to rebuild build request buildHelper = new ReportControlListBuildHelper(); Collection<BudgetConstructionPullup> selectedOrganizations = SpringContext.getBean(BudgetReportsControlListService.class) .retrieveSelectedOrganziations(principalName); buildHelper.addBuildRequest( organizationReportSelectionForm.getCurrentPointOfViewKeyCode(), selectedOrganizations, reportMode.reportBuildMode); GlobalVariables.getUserSession() .addObject(BCConstants.Report.CONTROL_BUILD_HELPER_SESSION_NAME, buildHelper); } // do list builds buildControlLists( principalName, organizationReportSelectionForm.getUniversityFiscalYear(), buildHelper, reportMode.reportSelectMode); // a few reports go just against the account control table, therefore we are ready to run the // report if (ReportSelectMode.ACCOUNT.equals(reportMode.reportSelectMode)) { // fixed null point exception of operationgModeTitle. organizationReportSelectionForm.setOperatingModeTitle( BCConstants.Report.NONE_SELECTION_TITLE); return performReport(mapping, form, request, response); } // setup action form if (ReportSelectMode.SUBFUND.equals(reportMode.reportSelectMode)) { organizationReportSelectionForm.setSubFundPickList( (List) SpringContext.getBean(BudgetReportsControlListService.class) .retrieveSubFundList(principalName)); organizationReportSelectionForm.setOperatingModeTitle( BCConstants.Report.SUB_FUND_SELECTION_TITLE); } else if (ReportSelectMode.OBJECT_CODE.equals(reportMode.reportSelectMode) || ReportSelectMode.REASON.equals(reportMode.reportSelectMode)) { organizationReportSelectionForm.setObjectCodePickList( (List) SpringContext.getBean(BudgetReportsControlListService.class) .retrieveObjectCodeList(principalName)); organizationReportSelectionForm.setOperatingModeTitle( BCConstants.Report.OBJECT_CODE_SELECTION_TITLE); organizationReportSelectionForm .getBudgetConstructionReportThresholdSettings() .setLockThreshold(reportMode.lockThreshold); } return mapping.findForward(KFSConstants.MAPPING_BASIC); }