summaryrefslogtreecommitdiffstats
path: root/ecomp-sdk/epsdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/controller/WizardProcessor.java
diff options
context:
space:
mode:
Diffstat (limited to 'ecomp-sdk/epsdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/controller/WizardProcessor.java')
-rw-r--r--ecomp-sdk/epsdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/controller/WizardProcessor.java2356
1 files changed, 2356 insertions, 0 deletions
diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/controller/WizardProcessor.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/controller/WizardProcessor.java
new file mode 100644
index 00000000..b193ec4b
--- /dev/null
+++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/controller/WizardProcessor.java
@@ -0,0 +1,2356 @@
+/*-
+ * ================================================================================
+ * eCOMP Portal SDK
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ================================================================================
+ */
+package org.openecomp.portalsdk.analytics.controller;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeFactory;
+
+import org.openecomp.portalsdk.analytics.error.RaptorException;
+import org.openecomp.portalsdk.analytics.error.ValidationException;
+import org.openecomp.portalsdk.analytics.model.ReportHandler;
+import org.openecomp.portalsdk.analytics.model.ReportLoader;
+import org.openecomp.portalsdk.analytics.model.base.IdNameValue;
+import org.openecomp.portalsdk.analytics.model.base.OrderBySeqComparator;
+import org.openecomp.portalsdk.analytics.model.base.OrderSeqComparator;
+import org.openecomp.portalsdk.analytics.model.definition.ReportDefinition;
+import org.openecomp.portalsdk.analytics.model.definition.ReportSchedule;
+import org.openecomp.portalsdk.analytics.model.runtime.FormField;
+import org.openecomp.portalsdk.analytics.model.runtime.ReportRuntime;
+import org.openecomp.portalsdk.analytics.system.AppUtils;
+import org.openecomp.portalsdk.analytics.system.DbUtils;
+import org.openecomp.portalsdk.analytics.system.Globals;
+import org.openecomp.portalsdk.analytics.util.AppConstants;
+import org.openecomp.portalsdk.analytics.util.DataSet;
+import org.openecomp.portalsdk.analytics.util.XSSFilter;
+import org.openecomp.portalsdk.analytics.xmlobj.ChartDrillFormfield;
+import org.openecomp.portalsdk.analytics.xmlobj.ColFilterType;
+import org.openecomp.portalsdk.analytics.xmlobj.DataColumnType;
+import org.openecomp.portalsdk.analytics.xmlobj.DataSourceType;
+import org.openecomp.portalsdk.analytics.xmlobj.FormFieldType;
+import org.openecomp.portalsdk.analytics.xmlobj.FormatType;
+import org.openecomp.portalsdk.analytics.xmlobj.JavascriptItemType;
+import org.openecomp.portalsdk.analytics.xmlobj.Marker;
+import org.openecomp.portalsdk.analytics.xmlobj.ObjectFactory;
+import org.openecomp.portalsdk.analytics.xmlobj.SemaphoreType;
+import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
+
+/**<HR/>
+ * This class is part of <B><I>RAPTOR (Rapid Application Programming Tool for OLAP Reporting)</I></B><BR/>
+ * <HR/>
+ *
+ * --------------------------------------------------------------------------------------------------<BR/>
+ * <B>WizardProcessor.java</B> - This class is used to process the user input provided in the wizard.<BR/>
+ * It is called in creation as well as updation process. It builds report xml via JAXB using user<BR/>
+ * input. This is vital one, to store meta information of each report<BR/>
+ * ---------------------------------------------------------------------------------------------------<BR/>
+ *
+ *
+ * <U>Change Log</U><BR/><BR/>
+ *
+ * 31-Aug-2009 : Version 8.5.1 (Sundar);<UL><LI> For Time Series multi series property is exposed. </LI></UL>
+ * 28-Aug-2009 : Version 8.5.1 (Sundar);<UL><LI> If user login id is null, it would display user name when user is added for schedule. </LI></UL>
+ * 18-Aug-2009 : Version 8.5.1 (Sundar);<UL><LI> request Object is passed to prevent caching user/roles - Datamining/Hosting. </LI></UL>
+ * 12-Aug-2009 : Version 8.5 (Sundar); <UL><LI> For Line Charts too options are captured and rendering is customized. </LI></UL>
+ * 29-Jul-2009 : Version 8.4 (Sundar); <UL><LI> Maximum Excel Download size would be persisted if changed. </LI></UL>
+ * 14-Jul-2009 : Version 8.4 (Sundar); <UL><LI> Schedule feature is added to Dashboard Reports. </LI></UL>
+ * 29-Jun-2009 : Version 8.4 (Sundar); <UL><LI> Options for <I>Compare to Previous year Chart</I> are processed.</LI>
+ * <LI> In the Bar chart Last Occuring Series/Category can be plotted as Bar or Line Renderer. </LI>
+ * </UL>
+ * 22-Jun-2009 : Version 8.4 (Sundar); <UL><LI> processChart method is modified to accommodate creating
+ * Bar Charts, Time Difference Charts and adding generic chart options.</LI></UL>
+ *
+ */
+
+public class WizardProcessor extends org.openecomp.portalsdk.analytics.RaptorObject {
+
+ EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(WizardProcessor.class);
+
+ public WizardProcessor() {
+ }
+
+ private String adjustDataType(String oracleDataType) {
+ return oracleDataType.equals("VARCHAR2") ? AppConstants.CT_CHAR : oracleDataType;
+ // Probably should be expanded to convert any CHAR or VARCHAR type to
+ // CT_CHAR, number type to CT_NUMBER and date to CT_DATE
+ } // adjustDataType
+
+ public void persistReportDefinition(HttpServletRequest request, ReportDefinition rdef)
+ throws RaptorException {
+ ReportRuntime rr = (ReportRuntime) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_RUNTIME);
+ if (rr != null && rr.getReportID().equals(rdef.getReportID()))
+ request.getSession().removeAttribute(AppConstants.SI_REPORT_RUNTIME);
+ rdef.persistReport(request);
+ } // persistReportDefinition
+
+ public void processWizardStep(HttpServletRequest request) throws Exception {
+ String action = nvl(request.getParameter(AppConstants.RI_WIZARD_ACTION),
+ AppConstants.WA_BACK);
+
+ String reportID = AppUtils.getRequestValue(request, AppConstants.RI_REPORT_ID);
+ ReportDefinition rdef = (new ReportHandler()).loadReportDefinition(request, reportID);
+ request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
+
+ String curStep = rdef.getWizardSequence().getCurrentStep();
+ String curSubStep = rdef.getWizardSequence().getCurrentSubStep();
+ if (AppUtils.getRequestNvlValue(request, "showDashboardOptions").length()<=0)
+ request.setAttribute("showDashboardOptions", "F");
+ logger.debug(EELFLoggerDelegate.debugLogger, ("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^curStep " + curStep + " " + curSubStep + " " + action));
+ boolean reportUpdated = false;
+ if (!action.equals(AppConstants.WA_BACK)) {
+ if (curStep.equals(AppConstants.WS_DEFINITION)) {
+ reportUpdated = processDefinition(request);
+ } else if (curStep.equals(AppConstants.WS_SQL)) {
+ if (action.equals(AppConstants.WA_VALIDATE))
+ reportUpdated = processValidateSQL(request);
+ } else if (curStep.equals(AppConstants.WS_TABLES)) {
+ if (curSubStep.equals(AppConstants.WSS_ADD))
+ reportUpdated = processTableAdd(request);
+ else if (curSubStep.equals(AppConstants.WSS_EDIT))
+ reportUpdated = processTableEdit(request);
+ else if (action.equals(AppConstants.WA_DELETE))
+ reportUpdated = processTableDelete(request);
+ } else if (curStep.equals(AppConstants.WS_COLUMNS)) {
+ if (curSubStep.equals(AppConstants.WSS_ADD)
+ || curSubStep.equals(AppConstants.WSS_EDIT) || action.equals(AppConstants.WA_SAVE) || action.equals(AppConstants.WA_NEXT)) {
+ reportUpdated = processColumnAddEdit(request, curSubStep
+ .equals(AppConstants.WSS_EDIT) || curSubStep
+ .equals(AppConstants.WA_MODIFY));
+ //reportUpdated = processColumnAddEdit(request, true);
+ }
+ else if (curSubStep.equals(AppConstants.WSS_ADD_MULTI))
+ reportUpdated = processColumnAddMulti(request);
+ else if (curSubStep.equals(AppConstants.WSS_ORDER_ALL))
+ reportUpdated = processColumnOrderAll(request);
+ else if (action.equals(AppConstants.WA_DELETE))
+ reportUpdated = processColumnDelete(request);
+ else if (action.equals(AppConstants.WA_MOVE_UP))
+ reportUpdated = processColumnMoveUp(request);
+ else if (action.equals(AppConstants.WA_MOVE_DOWN))
+ reportUpdated = processColumnMoveDown(request);
+ } else if (curStep.equals(AppConstants.WS_FORM_FIELDS)) {
+ if (curSubStep.equals(AppConstants.WSS_ADD)
+ || curSubStep.equals(AppConstants.WSS_EDIT))
+ reportUpdated = processFormFieldAddEdit(request, curSubStep
+ .equals(AppConstants.WSS_EDIT), action);
+ else if (action.equals(AppConstants.WA_DELETE))
+ reportUpdated = processFormFieldDelete(request);
+ else if (action.equals(AppConstants.WA_MOVE_UP))
+ reportUpdated = processFormFieldMoveUp(request);
+ else if (action.equals(AppConstants.WA_MOVE_DOWN))
+ reportUpdated = processFormFieldMoveDown(request);
+ else if (action.equals(AppConstants.WSS_ADD_BLANK))
+ reportUpdated = processFormFieldBlank(request);
+ else if (action.equals(AppConstants.WSS_INFO_BAR))
+ reportUpdated = processFormFieldInfoBar(request);
+ } else if (curStep.equals(AppConstants.WS_FILTERS)) {
+ if (curSubStep.equals(AppConstants.WSS_ADD)
+ || curSubStep.equals(AppConstants.WSS_EDIT))
+ reportUpdated = processFilterAddEdit(request, curSubStep
+ .equals(AppConstants.WSS_EDIT));
+ else if (action.equals(AppConstants.WA_DELETE))
+ reportUpdated = processFilterDelete(request);
+ } else if (curStep.equals(AppConstants.WS_SORTING)) {
+ if (curSubStep.equals(AppConstants.WSS_ADD)
+ || curSubStep.equals(AppConstants.WSS_EDIT))
+ reportUpdated = processSortAddEdit(request, curSubStep
+ .equals(AppConstants.WSS_EDIT));
+ else if (curSubStep.equals(AppConstants.WSS_ORDER_ALL))
+ reportUpdated = processSortOrderAll(request);
+ else if (action.equals(AppConstants.WA_DELETE))
+ reportUpdated = processSortDelete(request);
+ else if (action.equals(AppConstants.WA_MOVE_UP))
+ reportUpdated = processSortMoveUp(request);
+ else if (action.equals(AppConstants.WA_MOVE_DOWN))
+ reportUpdated = processSortMoveDown(request);
+ } else if (curStep.equals(AppConstants.WS_JAVASCRIPT)) {
+ if (action.equals(AppConstants.WSS_ADD))
+ reportUpdated = processAddJavascriptElement(request);
+ else if (action.equals(AppConstants.WA_SAVE))
+ reportUpdated = processSaveJavascriptElement(request);
+ else if (action.equals(AppConstants.WA_DELETE))
+ reportUpdated = processDeleteJavascriptElement(request);
+ else
+ reportUpdated = processJavascript(request);
+ } else if (curStep.equals(AppConstants.WS_CHART)) {
+ reportUpdated = processChart(request, action);
+ } else if (curStep.equals(AppConstants.WS_USER_ACCESS)) {
+ reportUpdated = processUserAccess(request, action);
+ } else if (curStep.equals(AppConstants.WS_REPORT_LOG)) {
+ if (action.equals(AppConstants.WA_DELETE_USER))
+ reportUpdated = processClearLog(request);
+ } else if (curStep.equals(AppConstants.WS_SCHEDULE)) {
+ reportUpdated = processSchedule(request, action);
+ } else if(curStep.equals(AppConstants.WS_DATA_FORECASTING)) {
+ reportUpdated = processForecasting(request, action);
+ }
+ /****For Report Maps - Start*****/
+ else if (curStep.equals(AppConstants.WS_MAP)) {
+ reportUpdated = processMap(request, action);
+ }
+ /****For Report Maps - End*****/
+
+ // else
+ }
+ if (reportUpdated)
+ persistReportDefinition(request, rdef);
+ } // processWizardStep
+
+ public void processImportSemaphorePopup(HttpServletRequest request) throws RaptorException {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+
+ String importReportId = AppUtils
+ .getRequestNvlValue(request, AppConstants.RI_REPORT_ID);
+ ReportRuntime rr = (new ReportHandler()).loadReportRuntime(request, importReportId,
+ false);
+
+ ArrayList importedList = new ArrayList();
+ if (rr.getSemaphoreList() != null)
+ for (Iterator iter = rr.getSemaphoreList().getSemaphore().iterator(); iter
+ .hasNext();) {
+ SemaphoreType sem = rdef.addSemaphore(new ObjectFactory(),
+ (SemaphoreType) iter.next());
+ importedList
+ .add(new IdNameValue(sem.getSemaphoreId(), sem.getSemaphoreName()));
+ } // for
+
+ if (importedList.size() > 0) {
+ request.setAttribute(AppConstants.RI_DATA_SET, importedList);
+ persistReportDefinition(request, rdef);
+ } // if
+ } // processImportSemaphorePopup
+
+ public void processSemaphorePopup(HttpServletRequest request) throws RaptorException {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+
+ String semaphoreId = AppUtils.getRequestNvlValue(request, "semaphoreId");
+ String semaphoreName = AppUtils.getRequestNvlValue(request, "semaphoreName");
+ String semaphoreType = AppUtils.getRequestNvlValue(request, "semaphoreType");
+
+ SemaphoreType semaphore = rdef.getSemaphoreById(semaphoreId);
+ if (semaphore == null) {
+ semaphore = rdef.addSemaphoreType(new ObjectFactory(), semaphoreName,
+ semaphoreType, null);
+ semaphoreId = semaphore.getSemaphoreId();
+ request.setAttribute("semaphoreId", semaphoreId);
+ } else {
+ rdef.deleteSemaphore(semaphore);
+ semaphore.setSemaphoreName(semaphoreName);
+ semaphore.setSemaphoreType(semaphoreType);
+
+ rdef.setSemaphore(semaphore);
+ }
+
+ String[] formatId = request.getParameterValues("formatId");
+ String[] lessThanValue = request.getParameterValues("lessThanValue");
+ String[] expression = request.getParameterValues("expression");
+ String[] bold = request.getParameterValues("bold");
+ String[] italic = request.getParameterValues("italic");
+ String[] underline = request.getParameterValues("underline");
+ String[] bgColor = request.getParameterValues("bgColor");
+ String[] fontColor = request.getParameterValues("fontColor");
+ String[] fontFace = request.getParameterValues("fontFace");
+ String[] fontSize = request.getParameterValues("fontSize");
+ //String[] anyFmt = request.getParameterValues("anyFmt");
+
+ // String[] alignment = request.getParameterValues("alignment");
+
+ for (int i = 0; i < lessThanValue.length; i++)
+ if (i == 0 || nvl(lessThanValue[i]).length() > 0) {
+ FormatType fmt = null;
+ if (i == 0 || nvl(formatId[i]).length() > 0)
+ fmt = rdef.getSemaphoreFormatById(semaphore, nvl(formatId[i]));
+ if (fmt == null)
+ fmt = rdef.addEmptyFormatType(new ObjectFactory(), semaphore);
+
+ fmt.setLessThanValue(nvl(lessThanValue[i]));
+ fmt.setExpression(nvl(expression[i]));
+ fmt.setBold(bold[i].equals("Y"));
+ fmt.setItalic(italic[i].equals("Y"));
+ fmt.setUnderline(underline[i].equals("Y"));
+ fmt.setBgColor(bgColor[i]);
+ fmt.setFontColor(fontColor[i]);
+ fmt.setFontFace(fontFace[i]);
+ fmt.setFontSize(fontSize[i]);
+ //fmt.setAnyFmt((anyFmt[i]!=null)?anyFmt[i].startsWith("Y"):false);
+ // fmt.setAlignment(alignment[i]);
+ } else if (nvl(formatId[i]).length() > 0)
+ rdef.deleteFormatType(semaphore, formatId[i]);
+
+ persistReportDefinition(request, rdef);
+ } // processSemaphorePopup
+
+ private boolean processDefinition(HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+
+ String reportName = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportName"));
+ String reportDescr = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportDescr"));
+ String folderId = AppUtils.getRequestNvlValue(request, "folder_id");
+ boolean isAllowSchedule = (AppUtils.getRequestNvlValue(request, "allowSchedule").length()<=0?"N":AppUtils.getRequestNvlValue(request, "allowSchedule")).startsWith("Y");
+ boolean isColumnGroup = (AppUtils.getRequestNvlValue(request, "multiGroupColumn").length()<=0?"N":AppUtils.getRequestNvlValue(request, "multiGroupColumn")).startsWith("Y");
+ boolean isTopDown = (AppUtils.getRequestNvlValue(request, "topDown").length()<=0?"N":AppUtils.getRequestNvlValue(request, "topDown")).startsWith("Y");
+ boolean isSizedByContent= (AppUtils.getRequestNvlValue(request, "sizedByContent").length()<=0?"N":AppUtils.getRequestNvlValue(request, "sizedByContent")).startsWith("Y");
+ boolean reportsInNewWindow = false;
+ boolean hideFormFieldAfterRun = false;
+
+ /*recurrance in schedule tab - Start*/
+ String isOneTimeScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isOneTimeScheduleAllowed"),"N");
+ String isHourlyScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isHourlyScheduleAllowed"),"N");
+ String isDailyScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isDailyScheduleAllowed"),"N");
+ String isDailyMFScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isDailyMFScheduleAllowed"),"N");
+ String isWeeklyScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isWeeklyScheduleAllowed"),"N");
+ String isMonthlyScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isMonthlyScheduleAllowed"),"N");
+ //System.out.println("//////////// + isOneTimeScheduleAllowed : " + isOneTimeScheduleAllowed);
+ /*recurrance in schedule tab - End*/
+
+
+ if (reportDescr.length() > 1000)
+ reportDescr = reportDescr.substring(0, 1000);
+ boolean reportUpdated;
+
+ String reportType = AppUtils.getRequestNvlValue(request, "reportType");
+
+
+
+ //rdef.setReportName(reportName);
+ //rdef.setReportDescr(reportDescr);
+ //rdef.setReportType(reportType);
+ rdef.setFolderId(folderId);
+// debugLogger.debug("setting folder ID = " + folderId);
+ if(reportType.equals(AppConstants.RT_DASHBOARD)) {
+ rdef.setReportName(reportName);
+ rdef.setReportDescr(reportDescr);
+ rdef.setReportType(reportType);
+ String dashboardLayoutHTML = AppUtils.getRequestNvlValue(request, "dashboardLayoutHTML");
+ rdef.setDashboardLayoutHTML(dashboardLayoutHTML);
+ String dataContainerHeight = nvl(AppUtils.getRequestValue(request, "heightContainer"), "auto");
+ String dataContainerWidth = nvl(AppUtils.getRequestValue(request, "widthContainer"), "auto");
+ rdef.setDataContainerHeight(dataContainerHeight);
+ rdef.setDataContainerWidth(dataContainerWidth);
+ rdef.setAllowSchedule(isAllowSchedule?"Y":"N");
+
+
+ /*
+ String numDashCols = AppUtils.getRequestNvlValue(request, "numDashCols");
+ String reports1 = AppUtils.getRequestNvlValue(request, "reports1");
+ String reports2 = AppUtils.getRequestNvlValue(request, "reports2");
+ String reports3 = AppUtils.getRequestNvlValue(request, "reports3");
+ String reports4 = AppUtils.getRequestNvlValue(request, "reports4");
+ String repBgColor1 = AppUtils.getRequestNvlValue(request, "repBgColor1");
+ String repBgColor2 = AppUtils.getRequestNvlValue(request, "repBgColor2");
+ String repBgColor3 = AppUtils.getRequestNvlValue(request, "repBgColor3");
+ String repBgColor4 = AppUtils.getRequestNvlValue(request, "repBgColor4");
+
+ //List reports = rdef.getDashBoardReports();
+ rdef.setNumDashCols(numDashCols);
+ DashboardReports reportsList = new DashboardReportsImpl();
+
+ String reports[] = new String[]{reports1, reports2, reports3, reports4};
+ String repBgColors[] = new String[]{repBgColor1, repBgColor2, repBgColor3, repBgColor4};
+ for (int i = 0; i < reports.length; i++) {
+ Reports report = new ReportsImpl();
+ report.setReportId(reports[i]);
+ report.setBgcolor(repBgColors[i]);
+ reportsList.getReportsList().add(report);
+ }
+
+
+
+ rdef.setDashBoardReports(reportsList);
+ */
+ reportUpdated = true;
+
+// reportUpdated = (!(reportName.equals(nvl(rdef.getReportName()))
+// && reportDescr.equals(nvl(rdef.getReportDescr()))
+// && reportType.equals(nvl(rdef.getReportType()))
+// && numDashCols.equals(nvl(rdef.getNumDashCols()))));
+//// && rdef.getR
+
+ if (rdef.getWizardSequence() instanceof WizardSequence)
+ rdef.generateWizardSequence(request);
+
+ } else {
+
+ if (AppUtils.getRequestNvlValue(request, "reportType").equals(AppConstants.RT_CROSSTAB) || rdef.getReportType().equals(AppConstants.RT_CROSSTAB)) {
+
+ String widthNo = AppUtils.getRequestNvlValue(request, "widthNo");
+ if(nvl(widthNo).endsWith("px"))
+ rdef.setWidthNoColumn(widthNo);
+ else
+ rdef.setWidthNoColumn(widthNo+"px");
+ }
+
+ String dataGridAlign = AppUtils.getRequestNvlValue(request, "dataGridAlign");
+ if(nvl(dataGridAlign).length()>0) {
+ rdef.setDataGridAlign(dataGridAlign);
+ } else {
+ rdef.setDataGridAlign("left");
+ }
+
+ String pdfImgLogo = AppUtils.getRequestNvlValue(request, "pdfImg");
+ if(nvl(pdfImgLogo).length()>0)
+ rdef.setPdfImg(pdfImgLogo);
+ else
+ rdef.setPdfImg(null);
+ String emptyMessage = AppUtils.getRequestNvlValue(request, "emptyMessage");
+ if(nvl(emptyMessage).length()>0)
+ rdef.setEmptyMessage(emptyMessage);
+ else
+ rdef.setEmptyMessage("");
+ String formHelp = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "formHelp"));
+ //String rDashboardType = nvl(AppUtils.getRequestValue(request, "showDashboardOptions"), "N");
+ //rdef.setDashboardType(rDashboardType.equals("Y"));
+ int excelDownloadSize = 500;
+ try {
+ excelDownloadSize = Integer.parseInt(AppUtils.getRequestValue(request, "excelDownloadSize"));
+ } catch (NumberFormatException ex) {}
+ if(AppUtils.getRequestNvlValue(request, "excelDownloadSize").length()>0)
+ rdef.setMaxRowsInExcelDownload(Integer.parseInt(AppUtils.getRequestValue(request, "excelDownloadSize")));
+ if(AppUtils.getRequestNvlValue(request, "reportInNewWindow").length()>0)
+ reportsInNewWindow = AppUtils.getRequestNvlValue(request,"reportInNewWindow").equals("Y");
+ if(AppUtils.getRequestNvlValue(request, "hideFormFieldsAfterRun").length()>0)
+ hideFormFieldAfterRun = AppUtils.getRequestNvlValue(request,"hideFormFieldsAfterRun").equals("Y");
+
+
+ if(AppUtils.getRequestNvlValue(request, "displayFolderTree").length()>0)
+ rdef.setDisplayFolderTree(AppUtils.getRequestNvlValue(request,"displayFolderTree").equals("Y"));
+ else
+ rdef.setDisplayFolderTree(false);
+ String dataSource = AppUtils.getRequestNvlValue(request, "dataSource");
+ String dbType = Globals.getDBType();
+ String schemaSql = Globals.getRemoteDbSchemaSqlWithWhereClause();
+ schemaSql = schemaSql.replace("[schema_id]", dataSource);
+ DataSet ds = null;
+ try {
+ ds = DbUtils.executeQuery(schemaSql);
+
+ String prefix = "", desc = "";
+
+ for (int i = 0; i < ds.getRowCount(); i++) {
+ dbType = ds.getItem(i, 2);
+ }
+ }
+ catch (Exception e) {}
+
+ int pageSize = Globals.getDefaultPageSize();
+ try {
+ pageSize = Integer.parseInt(AppUtils.getRequestValue(request, "pageSize"));
+ } catch (NumberFormatException e) {
+ }
+ String rApproved = nvl(AppUtils.getRequestValue(request, "menuApproved"), "N");
+ String menuID = "";
+ String[] menuIDs = request.getParameterValues("menuID");
+ if (menuIDs != null)
+ for (int i = 0; i < menuIDs.length; i++)
+ menuID += (menuID.length() == 0 ? "" : "|") + menuIDs[i];
+ /* else
+ menuID = "";*/
+
+// boolean additionalFieldsShown = AppUtils.getRequestNvlValue(request,
+// "additionalFieldsShown").equals("Y");
+ boolean rRCSDisabled = AppUtils.getRequestNvlValue(request, "runtimeColSortDisabled").equals("Y");
+ String reportDefType = AppUtils.getRequestNvlValue(request, "reportDefType");
+ String dataContainerHeight = nvl(AppUtils.getRequestValue(request, "heightContainer"), "auto");
+ String dataContainerWidth = nvl(AppUtils.getRequestValue(request, "widthContainer"), "auto");
+
+ String displayOptions = nvl(AppUtils.getRequestValue(request, "hideForm"), "N")
+ + nvl(AppUtils.getRequestValue(request, "hideChart"), "N")
+ + nvl(AppUtils.getRequestValue(request, "hideData"), "N")
+ + nvl(AppUtils.getRequestValue(request, "hideBtns"), "N")
+ + nvl(AppUtils.getRequestValue(request, "hideMap"), "N")
+ + nvl(AppUtils.getRequestValue(request, "hideExcelIcons"), "N")
+ + nvl(AppUtils.getRequestValue(request, "hidePDFIcons"), "N");
+/* StringBuffer dashboardOptions = new StringBuffer("");
+ dashboardOptions.append((nvl(AppUtils.getRequestValue(request, "hide"),"chart").equals("chart"))?"Y":"N");
+ dashboardOptions.append((nvl(AppUtils.getRequestValue(request, "hide"),"").equals("data"))?"Y":"N");
+ dashboardOptions.append((nvl(AppUtils.getRequestValue(request, "hideBtns"),"").equals("Y"))?"Y":"N");*/
+
+ String numFormCols = nvl(AppUtils.getRequestValue(request, "numFormCols"), "1");
+ String reportTitle = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportTitle"));
+ String reportSubTitle = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportSubTitle"));
+ String reportHeader = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportHeader"));
+ String reportFooter = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportFooter"));
+
+ int frozenColumns = 0;
+ try {
+ frozenColumns = Integer.parseInt(AppUtils.getRequestValue(request, "frozenColumns"));
+ } catch (NumberFormatException ex) {
+
+ }
+
+/* reportUpdated = (!(reportName.equals(nvl(rdef.getReportName()))))
+ && (!(reportDescr.equals(nvl(rdef.getReportDescr()))))
+ && (!(formHelp.equals(nvl(rdef.getFormHelpText()))))
+ && (!(reportType.equals(nvl(rdef.getReportType()))))
+ && (pageSize != rdef.getPageSize()) &&
+ // rPublic.equals(rdef.isPublic()?"Y":"N")&&
+ (!(menuID.equals(nvl(rdef.getMenuID()))))
+ && (!(rApproved.equals(rdef.isMenuApproved()))) && (additionalFieldsShown ? ((!(rRCSDisabled
+ .equals(rdef.isRuntimeColSortDisabled())))
+ && (!(displayOptions.equals(nvl(rdef.getDisplayOptions()))))
+ && (!(dashboardOptions.equals(nvl(rdef.getDashboardOptions()))))
+ && (!(numFormCols.equals(nvl(rdef.getNumFormCols()))))
+ && (!(reportTitle.equals(nvl(rdef.getReportTitle()))))
+ && (!(reportSubTitle.equals(nvl(rdef.getReportSubTitle()))))
+ && (!(reportHeader.equals(nvl(rdef.getReportHeader())))) && (!(reportFooter
+ .equals(nvl(rdef.getReportFooter()))))&& (reportsInNewWindow != rdef.isReportInNewWindow())):true);
+*/
+/* reportUpdated = rRCSDisabled ==(rdef.isRuntimeColSortDisabled()
+ && displayOptions.equals(nvl(rdef.getDisplayOptions()))
+ //&& dashboardOptions.equals(nvl(rdef.getDashboardOptions()))
+ && numFormCols.equals(nvl(rdef.getNumFormCols()))
+ && reportTitle.equals(nvl(rdef.getReportTitle()))
+ && reportSubTitle.equals(nvl(rdef.getReportSubTitle()))
+ && reportHeader.equals(nvl(rdef.getReportHeader()))
+ && reportsInNewWindow == rdef.isReportInNewWindow()
+ && reportFooter.equals(nvl(rdef.getReportFooter())))
+ ;*/
+
+
+ /*reportUpdated = (!(reportName.equals(nvl(rdef.getReportName()))
+ && reportDescr.equals(nvl(rdef.getReportDescr()))
+ && formHelp.equals(nvl(rdef.getFormHelpText()))
+ && reportType.equals(nvl(rdef.getReportType()))
+ && (pageSize == rdef.getPageSize())
+ && excelDownloadSize == rdef.getMaxRowsInExcelDownload()
+ && reportsInNewWindow == rdef.isReportInNewWindow()
+ && displayOptions.equals(rdef.getDisplayOptions())
+ && dataContainerHeight.equals(rdef.getDataContainerHeight())
+ && dataContainerWidth.equals(rdef.getDataContainerWidth())
+ && (isAllowSchedule ==(rdef.isAllowSchedule()))
+ // rPublic.equals(rdef.isPublic()?"Y":"N")&&
+ && menuID.equals(nvl(rdef.getMenuID()))
+ && rApproved.equals(rdef.isMenuApproved() ? "Y" : "N") && (rRCSDisabled
+ == ((rdef.isRuntimeColSortDisabled())
+ && displayOptions.equals(nvl(rdef.getDisplayOptions()))
+ //&& dashboardOptions.equals(nvl(rdef.getDashboardOptions()))
+ && numFormCols.equals(nvl(rdef.getNumFormCols()))
+ && reportTitle.equals(nvl(rdef.getReportTitle()))
+ && reportSubTitle.equals(nvl(rdef.getReportSubTitle()))
+ && isOneTimeScheduleAllowed.equals(nvl(rdef.getIsOneTimeScheduleAllowed()))
+ && isHourlyScheduleAllowed.equals(nvl(rdef.getIsHourlyScheduleAllowed()))
+ && isDailyScheduleAllowed.equals(nvl(rdef.getIsDailyScheduleAllowed()))
+ && isDailyMFScheduleAllowed.equals(nvl(rdef.getIsDailyMFScheduleAllowed()))
+ && isWeeklyScheduleAllowed.equals(nvl(rdef.getIsWeeklyScheduleAllowed()))
+ && isMonthlyScheduleAllowed.equals(nvl(rdef.getIsMonthlyScheduleAllowed()))
+ && reportHeader.equals(nvl(rdef.getReportHeader())) && reportFooter
+ .equals(nvl(rdef.getReportFooter()))))
+ )); */
+ rdef.setReportName(reportName);
+ rdef.setReportDescr(reportDescr);
+ rdef.setFormHelpText(formHelp);
+ rdef.setReportType(reportType);
+ rdef.setPageSize(pageSize);
+ rdef.setDBInfo(dataSource);
+ rdef.setDBType(dbType);
+ rdef.setDisplayOptions(displayOptions);
+ rdef.setDataContainerHeight(dataContainerHeight);
+ rdef.setDataContainerWidth(dataContainerWidth);
+ rdef.setAllowSchedule(isAllowSchedule?"Y":"N");
+ rdef.setMultiGroupColumn(isColumnGroup?"Y":"N");
+ rdef.setTopDown(isTopDown?"Y":"N");
+ rdef.setSizedByContent(isSizedByContent?"Y":"N");
+ // rdef.setPublic(rPublic.equals("Y"));
+ rdef.setMenuID(menuID);
+ rdef.setMenuApproved(rApproved.equals("Y"));
+ if (reportDefType.length() > 0)
+ rdef.setReportDefType(reportDefType);
+/* if(rdef.isDashboardType()) {
+ rdef.setDashboardOptions(dashboardOptions.toString());
+ }*/
+ rdef.setHideFormFieldAfterRun(hideFormFieldAfterRun);
+ rdef.setReportInNewWindow(reportsInNewWindow);
+ rdef.setRuntimeColSortDisabled(rRCSDisabled);
+ rdef.setNumFormCols(numFormCols);
+ rdef.setReportTitle(reportTitle);
+ rdef.setReportSubTitle(reportSubTitle);
+ rdef.setReportHeader(reportHeader);
+ rdef.setReportFooter(reportFooter);
+ rdef.setIsOneTimeScheduleAllowed(isOneTimeScheduleAllowed);
+ rdef.setIsHourlyScheduleAllowed(isHourlyScheduleAllowed);
+ rdef.setIsDailyScheduleAllowed(isDailyScheduleAllowed);
+ rdef.setIsDailyMFScheduleAllowed(isDailyMFScheduleAllowed);
+ rdef.setIsWeeklyScheduleAllowed(isWeeklyScheduleAllowed);
+ rdef.setIsMonthlyScheduleAllowed(isMonthlyScheduleAllowed);
+ rdef.setFrozenColumns(frozenColumns);
+
+ } // if
+
+ if (rdef.getWizardSequence() instanceof WizardSequence)
+ rdef.generateWizardSequence(request);
+
+
+ /*
+ * if(formHelp.length()>255) formHelp = formHelp.substring(0, 255);
+ */
+
+
+ // String rPublic = nvl(AppUtils.getRequestValue(request, "public"),
+ // "N");
+ // String menuID = AppUtils.getRequestNvlValue(request, "menuID");
+
+// boolean dashboardOptionsShown = AppUtils.getRequestNvlValue(request,
+// "dashboardOptionsShown").equals("Y");
+
+ reportUpdated = true;
+
+ if (rdef.getReportID().equals("-1"))
+ // Always need to persist new report - in case it is a copy
+ reportUpdated = true;
+
+ return reportUpdated;
+ } // processDefinition
+
+ private boolean processTableAdd(HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+
+ String tableName = AppUtils.getRequestNvlValue(request, "tableName").toUpperCase();
+ String tableId = rdef.getUniqueTableId(tableName);
+
+ String joinTableExpr = null;
+ String joinTableId = null;
+
+ DataSourceType joinTable =
+ rdef.getTableById(AppUtils.getRequestValue(request, "joinTableName"));
+ if (joinTable != null) {
+ String joinTableName = joinTable.getTableName();
+ joinTableId = joinTable.getTableId();
+
+ String joinExpr = AppUtils.getRequestNvlValue(request, "joinExpr").toUpperCase();
+
+ joinTableExpr = joinExpr.replaceAll("\\["+tableName+"\\]", tableId);
+ joinTableExpr = joinTableExpr.replaceAll("\\["+joinTableName+"\\]", joinTableId);
+// debugLogger.debug("joinExpr : "+joinExpr+"\njoinTableExpr : "+ joinTableExpr);
+ }
+
+ rdef.addDataSourceType(new ObjectFactory(), tableId, tableName, AppUtils
+ .getRequestNvlValue(request, "tablePK"), AppUtils.getRequestNvlValue(request,
+ "displayName"), joinTableId, joinTableExpr, null);
+
+ rdef.setOuterJoin(rdef.getTableById(tableId), AppUtils.getRequestNvlValue(request,
+ "outerJoin"));
+ rdef.resetCache(true);
+
+ return true;
+ } // processTableAdd
+
+ private boolean processTableEdit(HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+
+ DataSourceType dst = rdef.getTableById(AppUtils.getRequestNvlValue(request,
+ AppConstants.RI_DETAIL_ID));
+
+ String displayName = XSSFilter.filterRequest(AppUtils.getRequestNvlValue(request, "displayName"));
+ String outerJoin = AppUtils.getRequestNvlValue(request, "outerJoin");
+
+ String tableName = AppUtils.getRequestNvlValue(request, "tableName").toUpperCase();
+ String joinTableId = AppUtils.getRequestNvlValue(request, "joinTableName");
+
+ String joinExpr = AppUtils.getRequestNvlValue(request, "joinExpr").toUpperCase();
+
+ String joinTableExpr = null;
+ if(joinExpr.length()!=0){
+ joinTableExpr = joinExpr.replaceAll("\\["+tableName+"\\]", rdef.getTableByDBName(tableName).getTableId());
+ joinTableExpr = joinTableExpr.replaceAll("\\["+rdef.getTableById(joinTableId).getTableName().toUpperCase()+"\\]", joinTableId);
+ dst.setRefDefinition(joinTableExpr);
+ }
+ boolean reportUpdated = (!displayName.equals(nvl(dst.getDisplayName())) ||
+ !outerJoin.equals(rdef.getOuterJoinType(dst)) ||
+ !(joinExpr.length()==0));
+
+ dst.setDisplayName(displayName);
+ rdef.setOuterJoin(dst, outerJoin);
+ if (reportUpdated)
+ rdef.resetCache(true);
+
+ return true; // reportUpdated;
+ } // processTableEdit
+
+
+ private boolean processTableDelete(HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+ rdef.deleteDataSourceType(AppUtils.getRequestNvlValue(request,
+ AppConstants.RI_DETAIL_ID));
+ return true;
+ } // processTableDelete
+
+ private boolean processColumnAddEdit(HttpServletRequest request, boolean isEdit)
+ throws Exception {
+ if(!isEdit) {
+ return true;
+ }
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+ DataColumnType currColumn = null;
+
+ String tableId = null;
+ String colName = null;
+ String dataType = null;
+ if (isEdit) {
+ currColumn = rdef.getColumnById(AppUtils.getRequestNvlValue(request,
+ AppConstants.RI_DETAIL_ID));
+
+ if(currColumn!=null) {
+ tableId = currColumn.getTableId();
+ colName = currColumn.getDbColName(); // currColumn.getColName();
+ dataType = currColumn.getDbColType();
+ }
+ } else {
+ String colData = AppUtils.getRequestNvlValue(request, "columnDetails");
+ if(nvl(colData).length()>0) {
+ tableId = colData.substring(0, colData.indexOf('|'));
+ colName = colData.substring(tableId.length() + 1,
+ colData.indexOf('|', tableId.length() + 1)).toUpperCase();
+ dataType = colData.substring(tableId.length() + colName.length() + 2);
+ }
+ } // else
+
+ String exprFormula = AppUtils.getRequestNvlValue(request, "exprFormula");
+
+ String colNameValue = null;
+ if (exprFormula.length() > 0)
+ if (exprFormula.equals("_exprText_"))
+ colNameValue = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestValue(request, "exprText"));
+ else if (exprFormula.equals("COUNT(*)"))
+ colNameValue = exprFormula;
+ else
+ colNameValue = exprFormula + " " + colName + ")";
+ else
+ colNameValue = colName;
+
+ int displayWidth = -1;
+ try {
+ displayWidth = Integer.parseInt(AppUtils.getRequestValue(request, "displayWidth"));
+ } catch (NumberFormatException e) {
+ }
+
+ String sColId = isEdit ? currColumn.getColId() : (nvl(colName).length()>0?rdef.getUniqueColumnId(colName):null);
+ String drillDownParams = AppUtils.getRequestValue(request, "drillDownParams");
+ if (drillDownParams != null) {
+ // Replacing references to [this] with [col_id]
+ while (drillDownParams.indexOf("[this]") >= 0) {
+ int startIdx = drillDownParams.indexOf("[this]");
+ StringBuffer sb = new StringBuffer();
+
+ if (startIdx > 0)
+ sb.append(drillDownParams.substring(0, startIdx));
+ sb.append("[" + sColId + "]");
+ if (startIdx + 6 < drillDownParams.length() - 1)
+ sb.append(drillDownParams.substring(startIdx + 5));
+ drillDownParams = sb.toString();
+ } // while
+ } // if
+
+ String crossTabValue = null;
+ boolean isVisible = AppUtils.getRequestFlag(request, "visible");
+ boolean isSortable = AppUtils.getRequestFlag(request, "sortable");
+ String nowrap = AppUtils.getRequestNvlValue(request, "nowrap");
+ int indentation = 0;
+ try {
+ indentation = Integer.parseInt(AppUtils.getRequestNvlValue(request, "indentation"));
+ }catch (NumberFormatException e) {
+ }
+ String dependsOnFormField = AppUtils.getRequestNvlValue(request, "dependsOnFormField");
+ boolean isGroupBreak = AppUtils.getRequestFlag(request, "groupBreak");
+ String groupByPosStr = AppUtils.nvls(AppUtils.getRequestValue(request, "groupByPos"), "0");
+ int groupByPos = Integer.parseInt(groupByPosStr);
+ currColumn.setGroupByPos(groupByPos);
+
+ if(groupByPos > 0) {
+ String subTotalCustomText = AppUtils.nvls(AppUtils.getRequestValue(request, "subTotalCustomText"), "Sub Total");
+ currColumn.setSubTotalCustomText(subTotalCustomText);
+
+ boolean hideRepeatedKey = AppUtils.getRequestFlag(request, "hideRepeatedKeys");
+ currColumn.setHideRepeatedKey(hideRepeatedKey);
+ }
+
+ String displayTotal = AppUtils.getRequestNvlValue(request, "displayTotal");
+ String widthInPxls = AppUtils.getRequestNvlValue(request, "widthInPxls");
+
+ if (rdef.getReportType().equals(AppConstants.RT_CROSSTAB)) {
+
+
+
+ crossTabValue = AppUtils.getRequestValue(request, "crossTabValue");
+ isVisible = nvl(crossTabValue).equals(AppConstants.CV_ROW)
+ || nvl(crossTabValue).equals(AppConstants.CV_COLUMN)
+ || nvl(crossTabValue).equals(AppConstants.CV_VALUE);
+ isGroupBreak = nvl(crossTabValue).equals(AppConstants.CV_ROW)
+ || nvl(crossTabValue).equals(AppConstants.CV_COLUMN);
+
+ if (nvl(crossTabValue).equals(AppConstants.CV_VALUE))
+ displayTotal += "|"
+ + AppUtils.getRequestNvlValue(request, "displayTotalPerRow");
+ else
+ displayTotal = "";
+ } // if
+
+ String displayName = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "displayName"));
+ String colType = AppUtils.getRequestNvlValue(request, "colType");
+ String displayFormat = AppUtils.getRequestNvlValue(request, "displayFormat");
+
+ //HYPERLINK
+ if(colType.equals(AppConstants.CT_HYPERLINK)) {
+ String hyperlinkURL = AppUtils.getRequestValue(request, "hyperlinkURL");
+ currColumn.setHyperlinkURL(hyperlinkURL);
+ String anchor = AppUtils.getRequestValue(request, "anchor");
+ currColumn.setHyperlinkType(anchor);
+ if(anchor.equals("IMAGE")) {
+ String actionImg = AppUtils.getRequestValue(request, "actionImg");
+ currColumn.setActionImg(actionImg);
+ }
+ }
+
+
+
+ String displayAlign = AppUtils.getRequestValue(request, "displayAlign");
+ String displayHeaderAlign = AppUtils.getRequestValue(request, "displayHeaderAlign");
+ String drillDownURL = AppUtils.getRequestValue(request, "drillDownURL");
+ String drillDownSuppress = AppUtils.getRequestValue(request, "drillDownSuppress");
+ boolean drillDownPopUp = AppUtils.getRequestFlag (request, "drillDownPopUp");
+ String semaphoreId = AppUtils.getRequestNvlValue(request, "semaphore");
+ String semaphoreType = AppUtils.getRequestNvlValue(request, "semaphoreTypeHidden");
+
+ String levelStr = AppUtils.getRequestNvlValue(request, "multiGroupColLevel");
+ String startColGroup = AppUtils.getRequestNvlValue(request, "startMultiGroup");
+ String colGroupColSpan = AppUtils.getRequestNvlValue(request, "colspan");
+ int level = 0;
+ try {
+ level = Integer.parseInt(levelStr);
+ }catch (NumberFormatException ex) {
+ level = 0;
+ }
+ int startColGroupInt = 0;
+ int colGroupColSpanInt = 0;
+ if(level > 0) {
+ try {
+ //startColGroupInt = Integer.parseInt(startColGroup);
+ colGroupColSpanInt = Integer.parseInt(colGroupColSpan);
+ } catch (NumberFormatException ex) {
+
+ }
+ }
+ currColumn.setLevel(level);
+ if(level > 0) {
+ currColumn.setStart(startColGroupInt);
+ currColumn.setColspan(colGroupColSpanInt);
+ }
+
+ String targetColumnId = (semaphoreType.indexOf("|")!= -1 ? semaphoreType.substring(semaphoreType.indexOf("|")+1):"");
+ DataColumnType targetColumn = rdef.getColumnById(targetColumnId);
+
+ SemaphoreType semaphore = rdef.getSemaphoreById(semaphoreId);
+ rdef.deleteSemaphore(semaphore);
+ if(nvl(semaphoreType).length() > 0 && semaphoreType.indexOf("|")!=-1)
+ semaphore.setSemaphoreType(semaphoreType.substring(0,semaphoreType.indexOf("|")));
+ if(semaphore!=null) {
+ semaphore.setComment(currColumn.getColId());
+ if(nvl(semaphoreType).length() > 0)
+ semaphore.setTarget(targetColumnId.length()>0? targetColumnId: "");
+ rdef.setSemaphore(semaphore);
+ }
+
+
+ if (isEdit) {
+ if(nvl(widthInPxls).length()>0) {
+ if(nvl(widthInPxls).endsWith("px"))
+ currColumn.setDisplayWidthInPxls(widthInPxls);
+ else
+ currColumn.setDisplayWidthInPxls(widthInPxls+"px");
+ } else {
+ currColumn.setDisplayWidthInPxls("");
+ }
+
+ currColumn.setCrossTabValue(crossTabValue);
+ currColumn.setDependsOnFormField(dependsOnFormField);
+ currColumn.setDisplayName(displayName);
+ //currColumn.setOriginalDisplayName(displayName);
+
+ if (displayWidth > 0)
+ currColumn.setDisplayWidth(displayWidth);
+ currColumn.setDisplayAlignment(displayAlign);
+ currColumn.setDisplayHeaderAlignment(displayHeaderAlign);
+ currColumn.setDrillDownURL(drillDownURL);
+ currColumn.setDrillDownParams(drillDownParams);
+ currColumn.setDrillDownType(drillDownSuppress);
+ currColumn.setDrillinPoPUp(drillDownPopUp);
+ //indentation
+ currColumn.setIndentation(indentation);
+ if(drillDownPopUp) {
+ rdef.setDrillDownURLInPopupPresent(true);
+ }
+ /*if(targetColumn!=null) {
+ currColumn.setSemaphoreId(null);
+ targetColumn.setSemaphoreId(semaphoreId);
+ } else */
+ currColumn.setSemaphoreId(semaphoreId);
+ currColumn.setGroupBreak(isGroupBreak);
+ logger.debug(EELFLoggerDelegate.debugLogger, (" ------------ Display Total ---------- "+ displayTotal));
+ currColumn.setDisplayTotal(displayTotal);
+ //if (currColumn.getDrillDownURL() == null || currColumn.getDrillDownURL().length() == 0)
+ currColumn.setVisible(isVisible);
+ currColumn.setIsSortable(isSortable);
+ currColumn.setNowrap(nowrap);
+ //else
+ // currColumn.setVisible(true);
+ if (rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED)) {
+ if(colType!=null)
+ currColumn.setColType(colType);
+ displayFormat = AppUtils.getRequestValue(request, "colDataFormat");
+ if (displayFormat != null){
+ currColumn.setColFormat(displayFormat);
+ }
+ if(colType!=null && colType.equals(AppConstants.CT_DATE)) {
+ boolean enhancedPagination = AppUtils.getRequestFlag(request, "enhancedPagination");
+ currColumn.setEnhancedPagination(enhancedPagination);
+ }
+ }
+ if (!rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED)) {
+ currColumn.setColName(colNameValue);
+ if (displayFormat != null)
+ currColumn.setColFormat(displayFormat);
+ //currColumn.setVisible(isVisible);
+ currColumn.setCalculated(exprFormula.length() > 0);
+
+ rdef.adjustColumnType(currColumn);
+ } // if
+
+ rdef.resetCache(true);
+ } else
+ currColumn = rdef.addDataColumnType(new ObjectFactory(), sColId, tableId, colName,
+ crossTabValue, colNameValue, displayName, displayWidth, displayAlign, rdef
+ .getAllColumns().size() + 1, isVisible,
+ (exprFormula.length() > 0), adjustDataType(dataType), displayFormat,
+ isGroupBreak, -1, null, displayTotal, null, -1, drillDownSuppress,
+ drillDownURL, drillDownParams, semaphoreId, null);
+
+ if (rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED))
+ rdef.setColumnNoParseDateFlag(currColumn, AppUtils.getRequestFlag(request,
+ "no_parse_date"));
+ if(nvl(displayName).length()>0)
+ return true;
+ else
+ return false;
+ } // processColumnAddEdit
+
+ private boolean processColumnAddMulti(HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+
+ List reportCols = rdef.getAllColumns();
+ int nCol = reportCols.size() + 1;
+
+ String[] addColumn = request.getParameterValues("addColumn");
+ String[] tableId = request.getParameterValues("tableId");
+ String[] columnName = request.getParameterValues("columnName");
+ String[] columnType = request.getParameterValues("columnType");
+ String[] displayName = request.getParameterValues("displayName");
+
+ for (int i = 0; i < addColumn.length; i++)
+ if (addColumn[i].equals("Y")) {
+ int j = 2;
+ String uniqueDisplayName = displayName[i];
+ boolean isUnique = true;
+ do {
+ isUnique = true;
+ for (Iterator iter = reportCols.iterator(); iter.hasNext();)
+ if (uniqueDisplayName.equals(((DataColumnType) iter.next())
+ .getDisplayName())) {
+ isUnique = false;
+ uniqueDisplayName = displayName[i] + (j++);
+ break;
+ } // if
+ } while (!isUnique);
+
+ rdef
+ .addDataColumnType(
+ new ObjectFactory(),
+ rdef.getUniqueColumnId(columnName[i]),
+ tableId[i],
+ columnName[i],
+ null,
+ columnName[i],
+ uniqueDisplayName,
+ 10,
+ "Left",
+ nCol++,
+ true,
+ false,
+ adjustDataType(columnType[i]),
+ (columnType[i].equals(AppConstants.CT_DATE) ? AppConstants.DEFAULT_DATE_FORMAT
+ : null), false, -1, null, null, null, -1, null, null,
+ null, null, null);
+ } // if
+
+ return true;
+ } // processColumnAddMulti
+
+ private boolean processColumnOrderAll(HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+
+ String[] colId = request.getParameterValues("colId");
+ String[] colOrder = request.getParameterValues("colOrder");
+
+ boolean reportUpdated = false;
+ for (int i = 0; i < colId.length; i++) {
+ DataColumnType dct = rdef.getColumnById(nvl(colId[i]));
+ if (dct == null)
+ continue;
+
+ int iColOrder = 0;
+ try {
+ iColOrder = Integer.parseInt(colOrder[i]);
+ } catch (NumberFormatException e) {
+ }
+
+ if (iColOrder > 0) {
+ dct.setOrderSeq(iColOrder);
+ reportUpdated = true;
+ } // if
+ } // for
+
+ if (reportUpdated) {
+ List reportCols = rdef.getAllColumns();
+ Collections.sort(reportCols, new OrderSeqComparator());
+
+ int iOrder = 1;
+ for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
+ DataColumnType dct = (DataColumnType) iter.next();
+ dct.setOrderSeq(iOrder++);
+ } // for
+
+ rdef.resetCache(false);
+ } // if
+
+ return reportUpdated;
+ } // processColumnOrderAll
+
+ private boolean processColumnDelete(HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+ rdef.deleteDataColumnType(AppUtils.getRequestNvlValue(request,
+ AppConstants.RI_DETAIL_ID));
+ return true;
+ } // processColumnDelete
+
+ private boolean processColumnMoveUp(HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+ rdef.shiftColumnOrderUp(AppUtils
+ .getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
+ return true;
+ } // processColumnMoveUp
+
+ private boolean processColumnMoveDown(HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+ rdef.shiftColumnOrderDown(AppUtils.getRequestNvlValue(request,
+ AppConstants.RI_DETAIL_ID));
+ return true;
+ } // processColumnMoveDown
+
+ private boolean processFormFieldAddEdit(HttpServletRequest request, boolean isEdit,
+ String action) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+
+ String fieldName = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "fieldName"));
+ String multiSelectSize = "0";
+ String colId = AppUtils.getRequestNvlValue(request, "fieldColId");
+ if (rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED)) {
+ String displayFormat = AppUtils.getRequestNvlValue(request, "displayFormat");
+ if (displayFormat.length() > 0)
+ colId += "|" + displayFormat;
+ } // if
+ String fieldType = AppUtils.getRequestNvlValue(request, "fieldType");
+ String validation = AppUtils.getRequestNvlValue(request, "validation");
+ String mandatory = nvl(AppUtils.getRequestValue(request, "mandatory"), "N");
+ String defaultValue = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "defaultValue"));
+ String fieldHelp = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "fieldHelp"));
+ String fieldSQL = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "fieldSQL"));
+ String fieldDefaultSQL = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "fieldDefaultSQL"));
+ String visible = nvl(AppUtils.getRequestValue(request, "visible"),"Y");
+ String dependsOn = nvl(AppUtils.getRequestValue(request, "dependsOn"),"");
+ String rangeStartDate = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "rangeStartDate"));
+ String rangeEndDate = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "rangeEndDate"));
+ String rangeStartDateSQL = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "rangeStartDateSQL"));
+ String rangeEndDateSQL = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "rangeEndDateSQL"));
+ boolean isGroupFormField = AppUtils.getRequestFlag(request,"isGroupFormField");
+
+ Calendar start = null;
+ Calendar end = null;
+ if (AppUtils.nvl(rangeStartDate).length()>0){
+ SimpleDateFormat dtf = new SimpleDateFormat("MM/dd/yyyy");
+ start = Calendar.getInstance();
+ start.setTime(dtf.parse(rangeStartDate));
+ }
+ if (AppUtils.nvl(rangeEndDate).length()>0){
+ SimpleDateFormat dtf = new SimpleDateFormat("MM/dd/yyyy");
+ end = Calendar.getInstance();
+ end.setTime(dtf.parse(rangeEndDate));
+ }/*
+ * if(fieldHelp.length()>255) fieldHelp = fieldHelp.substring(0, 255);
+ */
+
+ boolean reportUpdated = false;
+
+ FormFieldType currField = null;
+ if (isEdit) {
+ String fieldId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID);
+
+ currField = rdef.getFormFieldById(fieldId);
+ if (currField != null && nvl(fieldName).length()>0) {
+ reportUpdated = (!(fieldName.equals(nvl(currField.getFieldName()))
+ && colId.equals(nvl(currField.getColId()))
+ && fieldType.equals(nvl(currField.getFieldType()))
+ && validation.equals(nvl(currField.getValidationType()))
+ && mandatory.equals(nvl(currField.getMandatory(), "N"))
+ && defaultValue.equals(nvl(currField.getDefaultValue()))
+ && fieldSQL.equals(nvl(currField.getFieldSQL()))
+ && fieldDefaultSQL.equals(nvl(currField.getFieldDefaultSQL()))
+ && dependsOn.equals(nvl(currField.getDependsOn(), "N"))
+ && (start == null || (start != null && currField.getRangeStartDate() == null) || (start.equals(currField.getRangeStartDate())))
+ && (end == null || (end != null && currField.getRangeEndDate() == null) || (end.equals(currField.getRangeEndDate())))
+ && rangeStartDateSQL.equals(nvl(currField.getRangeStartDateSQL()))
+ && rangeEndDateSQL.equals(nvl(currField.getRangeEndDateSQL()))
+ && visible.equals(nvl(currField.getVisible(), "Y"))
+ && isGroupFormField == currField.isGroupFormField()
+ && fieldHelp.equals(nvl(currField.getComment()))));
+
+ rdef.replaceFormFieldReferences("[" + currField.getFieldName() + "]", "["
+ + fieldName + "]");
+
+ currField.setFieldName(fieldName);
+ currField.setColId(colId);
+ currField.setFieldType(fieldType);
+ currField.setValidationType(validation);
+ currField.setMandatory(mandatory);
+ currField.setDefaultValue(defaultValue);
+ currField.setFieldSQL(fieldSQL);
+ currField.setFieldDefaultSQL(fieldDefaultSQL);
+ currField.setComment(fieldHelp);
+ currField.setVisible(visible);
+ currField.setDependsOn(dependsOn);
+ try {
+ if(start!=null) {
+ currField.setRangeStartDate(DatatypeFactory.newInstance()
+ .newXMLGregorianCalendar(start.YEAR, start.MONTH, start.DAY_OF_WEEK, start.HOUR, start.MINUTE, start.SECOND, start.MILLISECOND, start.ZONE_OFFSET));
+ } else {
+ currField.setRangeStartDate(null);
+ }
+ if(end!=null) {
+ currField.setRangeEndDate(DatatypeFactory.newInstance()
+ .newXMLGregorianCalendar(end.YEAR, end.MONTH, end.DAY_OF_WEEK, end.HOUR, end.MINUTE, end.SECOND, end.MILLISECOND, end.ZONE_OFFSET));
+ } else {
+ currField.setRangeEndDate(null);
+ }
+ /*currField.setRangeEndDate(DatatypeFactory.newInstance()
+ .newXMLGregorianCalendar(end));*/
+ } catch (DatatypeConfigurationException ex) {
+
+ }
+
+ currField.setRangeStartDateSQL(rangeStartDateSQL);
+ currField.setRangeEndDateSQL(rangeEndDateSQL);
+ currField.setGroupFormField(isGroupFormField);
+ if(fieldType.equals(FormField.FFT_LIST_MULTI)) {
+ multiSelectSize = AppUtils.getRequestNvlValue(request, "multiSelectListSize");
+ currField.setMultiSelectListSize(multiSelectSize);
+ }
+
+
+ } // if
+ } else {
+ reportUpdated = true;
+
+ currField = rdef.addFormFieldType(new ObjectFactory(), fieldName, colId,
+ fieldType, validation, mandatory, defaultValue, fieldSQL, fieldHelp, start, end, rangeStartDateSQL, rangeEndDateSQL);
+
+ request.setAttribute(AppConstants.RI_DETAIL_ID, currField.getFieldId());
+ } // else
+
+ if (action.equals(AppConstants.WA_ADD_USER)) {
+ reportUpdated = true;
+ rdef.addFormFieldPredefinedValue(new ObjectFactory(), currField, XSSFilter.filterRequestOnlyScript(AppUtils
+ .getRequestNvlValue(request, "newPredefinedValue")));
+ } else if (action.equals(AppConstants.WA_DELETE_USER)) {
+ reportUpdated = true;
+ rdef.deleteFormFieldPredefinedValue(currField, AppUtils.getRequestNvlValue(
+ request, "delPredefinedValue"));
+ }
+
+ return reportUpdated;
+ } // processFormFieldAddEdit
+
+ private boolean processFormFieldDelete(HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+
+ String fieldId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID);
+ rdef.deleteFormField(fieldId);
+
+ return true;
+ } // processFormFieldDelete
+
+ private boolean processFormFieldMoveUp(HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+ rdef.shiftFormFieldUp(AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
+ return true;
+ } // processFormFieldMoveUp
+
+ private boolean processFormFieldMoveDown(HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+ rdef.shiftFormFieldDown(AppUtils
+ .getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
+ return true;
+ } // processFormFieldMoveDown
+
+ private boolean processFormFieldBlank(HttpServletRequest request) throws Exception {
+ boolean reportUpdated = false;
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+ reportUpdated = true;
+ rdef.addFormFieldBlank(new ObjectFactory());
+ return true;
+ } // processFormFieldMoveDown
+
+ //processFormFieldInfoBar
+ private boolean processFormFieldInfoBar(HttpServletRequest request) throws Exception {
+ boolean reportUpdated = false;
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+ reportUpdated = true;
+ rdef.addCustomizedTextForParameters(XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "blueBarField")));
+ return true;
+ } // processFormFieldMoveDown
+
+
+ private boolean processForecasting(HttpServletRequest request, String action) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+
+ if(rdef.getDataminingOptions()==null)
+ rdef.addDataminingOptions(new ObjectFactory());
+
+ String classifiers = AppUtils.getRequestNvlValue(request, "classifiers");
+ rdef.setClassifier(classifiers);
+ String dateAttrColId = AppUtils.getRequestNvlValue(request, "timeAttribute");
+ String timeFormat = AppUtils.getRequestNvlValue(request, "timeFormat");
+ if(timeFormat.equals("Default")) timeFormat = "yyyy-MM-dd HH:mm:ss";
+ String forecastingPeriod = AppUtils.getRequestNvlValue(request, "forecastingPeriod");
+
+ String[] forecastCols = request.getParameterValues("forecastCol");
+ List reportCols = rdef.getAllColumns();
+ DataColumnType dct = null;
+ Iterator iter = null;
+
+
+
+ if(dateAttrColId != null) {
+ for(iter=reportCols.iterator(); iter.hasNext(); ) {
+ dct = (DataColumnType) iter.next();
+ if(dct.getColId().equals(dateAttrColId)) {
+ dct.setDataMiningCol(AppConstants.DM_DATE_ATTR);
+ if(timeFormat!=null) rdef.setForecastingTimeFormat(timeFormat);
+ break;
+ }
+ }
+ }
+
+ if(forecastCols != null) {
+ for (int i = 0; i < forecastCols.length; i++) {
+ for(iter=reportCols.iterator(); iter.hasNext(); ) {
+ dct = (DataColumnType) iter.next();
+ if(dct.getColId().equals(forecastCols[i])) {
+ dct.setDataMiningCol(AppConstants.DM_FORECASTING_ATTR);
+ }
+ }
+ }
+ rdef.setForecastingPeriod(forecastingPeriod);
+ }
+ boolean reportUpdated = true;
+
+ return reportUpdated;
+ } // processForecasting
+
+
+ private boolean processFilterAddEdit(HttpServletRequest request, boolean isEdit)
+ throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+
+ String colId = AppUtils.getRequestNvlValue(request, "filterColId");
+ String filterExpr = AppUtils.getRequestNvlValue(request, "filterExpr");
+ String argType = (filterExpr.equals("IS NULL") || filterExpr.equals("IS NOT NULL")) ? null
+ : AppUtils.getRequestNvlValue(request, "argType");
+ String argValue = (filterExpr.equals("IS NULL") || filterExpr.equals("IS NOT NULL")) ? null
+ : AppUtils.getRequestNvlValue(request, "argValue");
+
+ if (nvl(argType).equals(AppConstants.AT_COLUMN)) {
+ List reportCols = rdef.getAllColumns();
+ for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
+ DataColumnType dct = (DataColumnType) iter.next();
+ if (argValue.equals("[" + dct.getDisplayName() + "]")) {
+ argValue = dct.getColId();
+ break;
+ }
+ } // for
+ } // if
+
+ if (nvl(argType).equals(AppConstants.AT_VALUE)
+ && (!nvl(argValue).equals(AppConstants.FILTER_MAX_VALUE))
+ && (!nvl(argValue).equals(AppConstants.FILTER_MIN_VALUE))) {
+ // Validating the value by type
+ DataColumnType currColumn = rdef.getColumnById(colId);
+ String currColType = currColumn.getColType();
+
+ try {
+ String s_sql = Globals.getProcessFilterAddEdit();
+ s_sql = s_sql.replace("[argValue]", argValue);
+ /*DataSet ds = DbUtils.executeQuery("SELECT "
+ + (currColType.equals(AppConstants.CT_NUMBER) ? ("TO_NUMBER('"
+ + argValue + "')")
+ : (currColType.equals(AppConstants.CT_DATE) ? ("TO_DATE('"
+ + argValue
+ + "', '"
+ + nvl(currColumn.getColFormat(),
+ AppConstants.DEFAULT_DATE_FORMAT) + "')")
+ : ("'" + argValue + "'"))) + " FROM dual");*/
+
+ DataSet ds = DbUtils.executeQuery("SELECT "
+ + (currColType.equals(AppConstants.CT_NUMBER) ? ("TO_NUMBER('"
+ + argValue + "')")
+ : (currColType.equals(AppConstants.CT_DATE) ? ("TO_DATE('"
+ + argValue
+ + "', '"
+ + nvl(currColumn.getColFormat(),
+ AppConstants.DEFAULT_DATE_FORMAT) + "')")
+ : s_sql)));
+ } catch (Exception e) {
+ throw new ValidationException(
+ ""
+ + (currColType.equals(AppConstants.CT_NUMBER) ? "Invalid number"
+ : (currColType.equals(AppConstants.CT_DATE) ? ("Invalid date<br>Expected date format " + nvl(
+ currColumn.getColFormat(),
+ AppConstants.DEFAULT_DATE_FORMAT))
+ : "Invalid value<br>Possible reason: use of single quotes"))
+ + "<!--" + e.getMessage() + "--><br>Value: " + argValue);
+ }
+ } // if
+
+ if (isEdit) {
+ int filterPos = -1;
+ try {
+ filterPos = Integer.parseInt(AppUtils.getRequestValue(request, "filterPos"));
+ } catch (NumberFormatException e) {
+ }
+
+ ColFilterType currFilter = rdef.getFilterById(colId, filterPos);
+ if (currFilter != null) {
+ currFilter.setJoinCondition(AppUtils.getRequestValue(request, "filterJoin"));
+ currFilter.setOpenBrackets(AppUtils.getRequestValue(request, "openBrackets"));
+ currFilter.setExpression(filterExpr);
+ // if(argType!=null)
+ currFilter.setArgType(argType);
+ // if(argValue!=null)
+ currFilter.setArgValue(argValue);
+ currFilter
+ .setCloseBrackets(AppUtils.getRequestValue(request, "closeBrackets"));
+ } // if
+
+ rdef.resetCache(true);
+ } else {
+ rdef.addColFilterType(new ObjectFactory(), colId, AppUtils.getRequestValue(
+ request, "filterJoin"), AppUtils.getRequestValue(request, "openBrackets"),
+ filterExpr, argType, argValue, AppUtils.getRequestValue(request,
+ "closeBrackets"), null);
+ } // else
+
+ return true;
+ } // processFilterAddEdit
+
+ private boolean processFilterDelete(HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+
+ String filterId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID);
+ String colId = filterId.substring(0, filterId.indexOf('|'));
+ int filterPos = -1;
+ try {
+ filterPos = Integer.parseInt(filterId.substring(colId.length() + 1));
+ } catch (NumberFormatException e) {
+ }
+
+ rdef.removeColumnFilter(colId, filterPos);
+
+ return true;
+ } // processFilterDelete
+
+ private boolean processSortAddEdit(HttpServletRequest request, boolean isEdit)
+ throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+
+ String sortAscDesc = AppUtils.getRequestNvlValue(request, "sortAscDesc");
+ if (isEdit) {
+ DataColumnType currColumn = rdef.getColumnById(AppUtils.getRequestNvlValue(
+ request, AppConstants.RI_DETAIL_ID));
+ if (currColumn != null)
+ currColumn.setOrderByAscDesc(sortAscDesc);
+ rdef.resetCache(true);
+ } else
+ rdef.addColumnSort(AppUtils.getRequestNvlValue(request, "sortColId"), sortAscDesc,
+ rdef.getNumSortColumns() + 1);
+
+ return true;
+ } // processSortAddEdit
+
+ private boolean processSortOrderAll(HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+
+ String[] colId = request.getParameterValues("colId");
+ String[] sortOrder = request.getParameterValues("sortOrder");
+ String[] sortAscDesc = request.getParameterValues("sortAscDesc");
+
+ boolean reportUpdated = false;
+ for (int i = 0; i < colId.length; i++) {
+ DataColumnType dct = rdef.getColumnById(nvl(colId[i]));
+ if (dct == null)
+ continue;
+
+ int iSortOrder = 0;
+ try {
+ iSortOrder = Integer.parseInt(sortOrder[i]);
+ } catch (NumberFormatException e) {
+ }
+
+ if (iSortOrder > 0) {
+ if (dct.getOrderBySeq() > 0) {
+ // Update sort
+ if (dct.getOrderBySeq() != iSortOrder) {
+ dct.setOrderBySeq(iSortOrder);
+ reportUpdated = true;
+ } // if
+ if (!nvl(dct.getOrderByAscDesc()).equals(nvl(sortAscDesc[i]))) {
+ dct.setOrderByAscDesc(sortAscDesc[i]);
+ reportUpdated = true;
+ } // if
+ } else {
+ // Add sort
+ dct.setOrderBySeq(iSortOrder);
+ dct.setOrderByAscDesc(sortAscDesc[i]);
+ reportUpdated = true;
+ } // else
+ } else {
+ if (dct.getOrderBySeq() > 0) {
+ // Remove sort
+ dct.setOrderBySeq(0);
+ dct.setOrderByAscDesc(null);
+ reportUpdated = true;
+ } // if
+ } // else
+ } // for
+
+ if (reportUpdated) {
+ List reportCols = rdef.getAllColumns();
+ Collections.sort(reportCols, new OrderBySeqComparator());
+ int iOrder = 1;
+ for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
+ DataColumnType dct = (DataColumnType) iter.next();
+ if (dct.getOrderBySeq() > 0)
+ dct.setOrderBySeq(iOrder++);
+ } // for
+ Collections.sort(reportCols, new OrderSeqComparator());
+
+ rdef.resetCache(true);
+ } // if
+
+ return reportUpdated;
+ } // processSortOrderAll
+
+ private boolean processSortDelete(HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+ rdef.removeColumnSort(AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
+ return true;
+ } // processSortDelete
+
+ private boolean processSortMoveUp(HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+ rdef
+ .shiftColumnSortUp(AppUtils.getRequestNvlValue(request,
+ AppConstants.RI_DETAIL_ID));
+ return true;
+ } // processSortMoveUp
+
+ private boolean processSortMoveDown(HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+ rdef.shiftColumnSortDown(AppUtils.getRequestNvlValue(request,
+ AppConstants.RI_DETAIL_ID));
+ return true;
+ } // processSortMoveDown
+
+ private boolean processJavascript (HttpServletRequest request) throws Exception {
+ processSaveJavascriptElement(request);
+ return true;
+ }
+
+ private boolean processSaveJavascriptElement (HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+ rdef.setJavascriptElement(AppUtils.getRequestNvlValue(request, AppConstants.RI_JAVASCRIPT));
+ String id = AppUtils.getRequestNvlValue(request, AppConstants.RI_JAVASCRIPT_ITEM_ID);
+ String fieldId = AppUtils.getRequestNvlValue(request, "javascriptFormField-"+id);
+ if( nvl(fieldId).length()>0 && !(fieldId.startsWith("-1"))) {
+
+ String callableJavascriptText = AppUtils.getRequestNvlValue(request, "callText-"+id);
+
+ logger.debug(EELFLoggerDelegate.debugLogger, ("FieldId " + fieldId + " Call Text " + callableJavascriptText+ " id " + id));
+ JavascriptItemType javaScriptType = null;
+ if(id.length()>0 && id.startsWith("-1")) {
+ javaScriptType = rdef.addJavascriptType(new ObjectFactory(), id);
+ javaScriptType.setFieldId(fieldId);
+ if(!fieldId.equals("os1") || !fieldId.equals("ol1"))
+ javaScriptType.setId(rdef.getNextIdForJavaScriptElement(new ObjectFactory(), fieldId));
+ else {
+ if(fieldId.equals("os1"))
+ javaScriptType.setId("os1|1");
+ else
+ javaScriptType.setId("ol1|1");
+ }
+ javaScriptType.setCallText(callableJavascriptText);
+ } else {
+ javaScriptType = rdef.addJavascriptType(new ObjectFactory(), id);
+ javaScriptType.setCallText(callableJavascriptText);
+ }
+ }
+ return true;
+ }
+ private boolean processAddJavascriptElement (HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+
+ JavascriptItemType javaScriptType = rdef.addJavascriptType(new ObjectFactory(), "");
+ javaScriptType.setId("");
+ javaScriptType.setFieldId("");
+ javaScriptType.setCallText("");
+
+ return true;
+ }
+
+ private boolean processDeleteJavascriptElement (HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+ String id = AppUtils.getRequestNvlValue(request, AppConstants.RI_JAVASCRIPT_ITEM_ID);
+ if(rdef.deleteJavascriptType(id))
+ return true;
+ else
+ return false;
+ }
+
+ private boolean processChart(HttpServletRequest request, String action) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+
+ int valueColsCount = rdef.getChartValueColumnsList(AppConstants.CHART_ALL_COLUMNS, null).size();
+
+ String chartType = AppUtils.getRequestNvlValue(request, "chartType");
+ String chartTypeFixed = AppUtils.getRequestValue(request, "chartTypeFixed");
+ String legendColId = AppUtils.getRequestNvlValue(request, "legendCol");
+ // String valueColId = AppUtils.getRequestNvlValue(request, "valueCol");
+ String leftAxisLabel = AppUtils.getRequestValue(request, "leftAxisLabel");
+ String rightAxisLabel = AppUtils.getRequestValue(request, "rightAxisLabel");
+ String chartWidth = XSSFilter.filterRequest(AppUtils.getRequestNvlValue(request, "chartWidth"));
+ String chartHeight = XSSFilter.filterRequest(AppUtils.getRequestNvlValue(request, "chartHeight"));
+ String chartMultiseries = AppUtils.getRequestNvlValue(request, "multiSeries");
+ String lastSeriesALineChart = AppUtils.getRequestNvlValue(request, "lastSeriesALineChart");
+ String lastSeriesABarChart = AppUtils.getRequestNvlValue(request, "lastSeriesABarChart");
+ String overLayItemLabel = "N";
+ String chartDisplay = null;
+
+ String multiplePieOrder = null;
+ String multiplePieLabelDisplay = null;
+
+ String chartOrientation = null;
+ String secondaryChartRenderer = null;
+
+ String linearRegression = null;
+
+ boolean multiplePieOrderInRunPage = false;
+ boolean multiplePieLabelDisplayInRunPage = false;
+
+ boolean chartOrientationInRunPage = false;
+ boolean secondaryChartRendererInRunPage = false;
+
+ boolean chartDisplayInRunPage = false;
+
+ String intervalFromdate = null;
+ String intervalTodate = null;
+ String intervalLabel = null;
+ boolean displayIntervalInputInRunPage = false;
+ boolean animate = false;
+
+ animate = AppUtils.getRequestNvlValue(request, "animatedOption").equals("animate");
+ if(Globals.showAnimatedChartOption())
+ rdef.setChartAnimate(animate);
+
+
+ String removeColId = "";
+ if (action.equals(AppConstants.WA_DELETE_USER)) {
+ removeColId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID);
+ if(valueColsCount == 2 && !rdef.hasSeriesColumn()) {
+ rdef.setChartLeftAxisLabel(null);
+ rdef.setChartRightAxisLabel(null);
+
+ if(chartType.equals(AppConstants.GT_TIME_SERIES) || chartType.equals(AppConstants.GT_PIE_MULTIPLE)) {
+ chartMultiseries = "N";
+ }
+ }
+ }
+
+ if(rdef.getChartAdditionalOptions()==null)
+ rdef.addChartAdditionalOptions(new ObjectFactory());
+
+ if(rdef.getChartDrillOptions()==null)
+ rdef.addChartDrillOptions(new ObjectFactory());
+
+ //clearing already added
+ if(rdef.getChartDrillOptions().getTargetFormfield()!=null)
+ rdef.getChartDrillOptions().getTargetFormfield().removeAll(rdef.getChartDrillOptions().getTargetFormfield());
+
+
+ if(chartType.equals(AppConstants.GT_PIE_MULTIPLE)) {
+ multiplePieOrder = AppUtils.getRequestNvlValue(request, "multiplePieOrder");
+ multiplePieLabelDisplay = AppUtils.getRequestNvlValue(request, "multiplePieLabelDisplay");
+ chartDisplay = AppUtils.getRequestNvlValue(request, "chartDisplay");
+ //if(AppUtils.getRequestNvlValue(request, "multiplePieOrderInRunPage").length()>0)
+ multiplePieOrderInRunPage = AppUtils.getRequestNvlValue(request,"multiplePieOrderInRunPage").equals("Y");
+ //if(AppUtils.getRequestNvlValue(request, "multiplePieLabelDisplayInRunPage").length()>0)
+ multiplePieLabelDisplayInRunPage = AppUtils.getRequestNvlValue(request,"multiplePieLabelDisplayInRunPage").equals("Y");
+ //if(AppUtils.getRequestNvlValue(request, "chartDisplayInRunPage").length()>0)
+ chartDisplayInRunPage = AppUtils.getRequestNvlValue(request,"chartDisplayInRunPage").equals("Y");
+ if(rdef.getChartAdditionalOptions()!=null) {
+ rdef.setChartMultiplePieOrder(multiplePieOrder+(multiplePieOrderInRunPage?"|Y":""));
+ rdef.setChartMultiplePieLabelDisplay(multiplePieLabelDisplay+(multiplePieLabelDisplayInRunPage?"|Y":""));
+ rdef.setChartDisplay(chartDisplay+(chartDisplayInRunPage?"|Y":""));
+ }
+
+ }
+
+ if(chartType.equals(AppConstants.GT_REGRESSION)) {
+ linearRegression = AppUtils.getRequestNvlValue(request, "regressionType");
+ rdef.setLinearRegressionColor(AppUtils.getRequestNvlValue(request, "valueLinearRegressionColor"));
+ rdef.setExponentialRegressionColor(AppUtils.getRequestNvlValue(request, "valueExponentialRegressionColor"));
+ rdef.setCustomizedRegressionPoint(AppUtils.getRequestNvlValue(request, "regressionPointCustomization"));
+
+ if(nvl(linearRegression).length()>0)
+ rdef.setLinearRegression(linearRegression);
+ else
+ rdef.setLinearRegression("Y");
+ }
+
+ if(chartType.equals(AppConstants.GT_BAR_3D)) {
+ chartOrientation = AppUtils.getRequestNvlValue(request, "chartOrientation");
+ secondaryChartRenderer = AppUtils.getRequestNvlValue(request, "secondaryChartRenderer");
+ chartDisplay = AppUtils.getRequestNvlValue(request, "chartDisplay");
+ //if(AppUtils.getRequestNvlValue(request, "chartOrientationInRunPage").length()>0)
+ chartOrientationInRunPage = AppUtils.getRequestNvlValue(request,"chartOrientationInRunPage").equals("Y");
+ //if(AppUtils.getRequestNvlValue(request, "secondaryChartRendererInRunPage").length()>0)
+ secondaryChartRendererInRunPage = AppUtils.getRequestNvlValue(request,"secondaryChartRendererInRunPage").equals("Y");
+ //if(AppUtils.getRequestNvlValue(request, "chartDisplayInRunPage").length()>0)
+ chartDisplayInRunPage = AppUtils.getRequestNvlValue(request,"chartDisplayInRunPage").equals("Y");
+ rdef.setChartOrientation(chartOrientation+(chartOrientationInRunPage?"|Y":""));
+ rdef.setSecondaryChartRenderer(secondaryChartRenderer+(secondaryChartRendererInRunPage?"|Y":""));
+ rdef.setChartDisplay(chartDisplay+(chartDisplayInRunPage?"|Y":""));
+ rdef.setLastSeriesALineChart(nvl(lastSeriesALineChart, "N"));
+ }
+
+ if(chartType.equals(AppConstants.GT_LINE)) {
+ chartOrientation = AppUtils.getRequestNvlValue(request, "chartOrientation");
+ secondaryChartRenderer = AppUtils.getRequestNvlValue(request, "secondaryChartRenderer");
+ chartDisplay = AppUtils.getRequestNvlValue(request, "chartDisplay");
+ //if(AppUtils.getRequestNvlValue(request, "chartOrientationInRunPage").length()>0)
+ chartOrientationInRunPage = AppUtils.getRequestNvlValue(request,"chartOrientationInRunPage").equals("Y");
+ //if(AppUtils.getRequestNvlValue(request, "secondaryChartRendererInRunPage").length()>0)
+ secondaryChartRendererInRunPage = AppUtils.getRequestNvlValue(request,"secondaryChartRendererInRunPage").equals("Y");
+ //if(AppUtils.getRequestNvlValue(request, "chartDisplayInRunPage").length()>0)
+ chartDisplayInRunPage = AppUtils.getRequestNvlValue(request,"chartDisplayInRunPage").equals("Y");
+ rdef.setChartOrientation(chartOrientation+(chartOrientationInRunPage?"|Y":""));
+ rdef.setSecondaryChartRenderer(secondaryChartRenderer+(secondaryChartRendererInRunPage?"|Y":""));
+ rdef.setChartDisplay(chartDisplay+(chartDisplayInRunPage?"|Y":""));
+ rdef.setLastSeriesABarChart(nvl(lastSeriesABarChart, "N"));
+ }
+ if(chartType.equals(AppConstants.GT_TIME_DIFFERENCE_CHART)) {
+ intervalFromdate = AppUtils.getRequestNvlValue(request, "intervalFromDate");
+ intervalTodate = AppUtils.getRequestNvlValue(request, "intervalToDate");
+ intervalLabel = AppUtils.getRequestNvlValue(request, "intervalLabel");
+ displayIntervalInputInRunPage = AppUtils.getRequestNvlValue(request,"intervalInputInRunPage").equals("Y");
+ rdef.setIntervalFromdate(intervalFromdate+(displayIntervalInputInRunPage?"|Y":""));
+ rdef.setIntervalTodate(intervalTodate+(displayIntervalInputInRunPage?"|Y":""));
+ rdef.setIntervalLabel(intervalLabel);
+ }
+ if(chartType.equals(AppConstants.GT_STACKED_VERT_BAR) || chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR) || chartType.equals(AppConstants.GT_STACKED_VERT_BAR_LINES)
+ || chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR_LINES)) {
+ overLayItemLabel = AppUtils.getRequestNvlValue(request, "overlayItemValue");
+ rdef.setOverlayItemValueOnStackBar(nvl(overLayItemLabel, "N"));
+ animate = AppUtils.getRequestNvlValue(request, "animatedOption").equals("animate");
+ rdef.setChartAnimate(animate);
+ }
+
+ rdef.setRangeAxisLowerLimit(AppUtils.getRequestNvlValue(request, "yAxisLowerLimit"));
+ rdef.setRangeAxisUpperLimit(AppUtils.getRequestNvlValue(request, "yAxisUpperLimit"));
+ rdef.setLegendLabelAngle(AppUtils.getRequestNvlValue(request,"labelAngle"));
+ rdef.setLegendPosition(AppUtils.getRequestNvlValue(request,"legendPosition"));
+ rdef.setMaxLabelsInDomainAxis(AppUtils.getRequestNvlValue(request,"maxLabelsInDomainAxis"));
+ String chartLegendDisplay = AppUtils.getRequestNvlValue(request,"hideLegend");
+ boolean showLegendDisplayOptionsInRunPage = false;
+ showLegendDisplayOptionsInRunPage = AppUtils.getRequestNvlValue(request,"showLegendDisplayOptionsInRunPage").equals("Y");
+ rdef.setChartLegendDisplay(chartLegendDisplay+(showLegendDisplayOptionsInRunPage?"|Y":""));
+ rdef.setChartToolTips(AppUtils.getRequestNvlValue(request,"hideTooltips"));
+ rdef.setDomainAxisValuesAsString(AppUtils.getRequestNvlValue(request,"keepAsString"));
+
+ //System.out.println("KeepAsString " + AppUtils.getRequestNvlValue(request,"keepAsString"));
+ //System.out.println("From ReportDef " + rdef.keepDomainAxisValueInChartAsString());
+ // boolean reportUpdated = (!
+ // chartType.equals(nvl(rdef.getChartType())));
+ rdef.setChartType(chartType);
+ rdef.setChartTypeFixed(nvl(chartTypeFixed, "N"));
+ if (nvl(leftAxisLabel).length()>0)
+ rdef.setChartLeftAxisLabel(leftAxisLabel);
+ else
+ rdef.setChartLeftAxisLabel(null);
+ if (nvl(rightAxisLabel).length()>0)
+ rdef.setChartRightAxisLabel(rightAxisLabel);
+ else
+ rdef.setChartRightAxisLabel(null);
+ rdef.setChartWidth(nvl(chartWidth, "" + Globals.getDefaultChartWidth()));
+ rdef.setChartHeight(nvl(chartHeight, "" + Globals.getDefaultChartHeight()));
+ if(chartType.equals(AppConstants.GT_TIME_SERIES) || chartType.equals(AppConstants.GT_PIE_MULTIPLE)) {
+ rdef.setChartMultiSeries(chartMultiseries);
+ } else {
+ rdef.setChartMultiSeries("N");
+ }
+
+ List reportCols = rdef.getAllColumns();
+ for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
+ DataColumnType dct = (DataColumnType) iter.next();
+
+ if (dct.getColId().equals(legendColId)) {
+ // reportUpdated = reportUpdated||(!
+ // nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND));
+ dct.setColOnChart(AppConstants.GC_LEGEND);
+ } else {
+ // reportUpdated =
+ // reportUpdated||nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND);
+ dct.setColOnChart(null);
+ }
+
+ /*
+ * if(dct.getColId().equals(valueColId)) { reportUpdated =
+ * reportUpdated||(dct.getChartSeq()<=0); dct.setChartSeq(1); }
+ * else { reportUpdated = reportUpdated||(dct.getChartSeq()>0);
+ */
+ dct.setChartSeq(-1);
+ /* } */
+ } // for
+
+ int idx = 1;
+ List columns = rdef.getAllColumns();
+ if(chartType.equals(AppConstants.GT_TIME_SERIES)) {
+ String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
+ String chartGroup = AppUtils.getRequestNvlValue(request, "chartGroup");
+ String yAxis = AppUtils.getRequestNvlValue(request, "yAxis");
+ for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
+ DataColumnType alldct = (DataColumnType) iterator.next();
+ //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
+ alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
+ }
+
+ String drillDownReportId = AppUtils.getRequestNvlValue(request, "drillDownReport");
+ if(!drillDownReportId.equals("-1")) {
+ ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, drillDownReportId,
+ false);
+ if (ddRr != null)
+ request.setAttribute("CHART_FORMFIELDS", ddRr.getReportFormFields());
+
+ for(ddRr.getReportFormFields().resetNext(); ddRr.getReportFormFields().hasNext(); ) {
+ FormField ff = ddRr.getReportFormFields().getNext();
+ if(!ff.getFieldType().equals(FormField.FFT_BLANK)) {
+ String value = AppUtils.getRequestNvlValue(request, "drillDown_"+ff.getFieldName());
+ ChartDrillFormfield cdf = new ObjectFactory().createChartDrillFormfield();
+ cdf.setFormfield(value);
+ rdef.getChartDrillOptions().getTargetFormfield().add(cdf);
+ }
+ }
+ }
+
+ } else {
+ if(chartType.equals(AppConstants.GT_BAR_3D)) {
+ String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
+ String chartGroup = AppUtils.getRequestNvlValue(request, "chartGroup");
+ String yAxis = AppUtils.getRequestNvlValue(request, "yAxis");
+ for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
+ DataColumnType alldct = (DataColumnType) iterator.next();
+ //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
+ alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
+ }
+ String drillDownReportId = AppUtils.getRequestNvlValue(request, "drillDownReport");
+ rdef.setDrillReportIdForChart(drillDownReportId);
+ if(drillDownReportId.equals("-1")){
+ rdef.setDrillReportIdForChart("");
+ }
+
+ if(!drillDownReportId.equals("-1")) {
+ ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, drillDownReportId,
+ false);
+ if (ddRr != null)
+ request.setAttribute("CHART_FORMFIELDS", ddRr.getReportFormFields());
+
+ for(ddRr.getReportFormFields().resetNext(); ddRr.getReportFormFields().hasNext(); ) {
+ FormField ff = ddRr.getReportFormFields().getNext();
+ if(!ff.getFieldType().equals(FormField.FFT_BLANK)) {
+ String value = AppUtils.getRequestNvlValue(request, "drillDown_"+ff.getFieldName());
+ ChartDrillFormfield cdf = new ObjectFactory().createChartDrillFormfield();
+ cdf.setFormfield(value);
+ rdef.getChartDrillOptions().getTargetFormfield().add(cdf);
+ }
+ }
+
+ String xAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownXAxisFormfield");
+ String yAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownYAxisFormfield");
+ String seriesAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownSeriesAxisFormfield");
+
+ if(!xAxisFormField.equals("-1")){
+ rdef.setDrillXAxisFormField(xAxisFormField);
+
+ if(!yAxisFormField.equals("-1"))
+ rdef.setDrillYAxisFormField(yAxisFormField);
+ if(!seriesAxisFormField.equals("-1"))
+ rdef.setDrillSeriesFormField(seriesAxisFormField);
+ } else {
+ rdef.setDrillXAxisFormField("");
+ rdef.setDrillYAxisFormField("");
+ rdef.setDrillSeriesFormField("");
+ }
+ }
+
+ } else if(chartType.equals(AppConstants.GT_SCATTER)) {
+ String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
+ for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
+ DataColumnType alldct = (DataColumnType) iterator.next();
+ //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
+ alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
+ }
+
+ }else if(chartType.equals(AppConstants.GT_REGRESSION)) {
+ String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
+ for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
+ DataColumnType alldct = (DataColumnType) iterator.next();
+ //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
+ alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
+ }
+ }else if(chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR) || chartType.equals(AppConstants.GT_STACKED_VERT_BAR)
+ || chartType.equals(AppConstants.GT_STACKED_VERT_BAR_LINES) || chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR_LINES)) {
+ String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
+ for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
+ DataColumnType alldct = (DataColumnType) iterator.next();
+ //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
+ alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
+ }
+ }else if(chartType.equals(AppConstants.GT_LINE)) {
+ String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
+ for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
+ DataColumnType alldct = (DataColumnType) iterator.next();
+ //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
+ alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
+ }
+ } else if (chartType.equals(AppConstants.GT_TIME_DIFFERENCE_CHART)) {
+ String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
+ for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
+ DataColumnType alldct = (DataColumnType) iterator.next();
+ //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
+ alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
+ }
+ } else if (chartType.equals(AppConstants.GT_COMPARE_PREVYEAR_CHART)) {
+ String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
+ for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
+ DataColumnType alldct = (DataColumnType) iterator.next();
+ //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
+ alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
+ }
+
+ } else {
+ if (rdef.hasSeriesColumn()) {
+ for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
+ DataColumnType alldct = (DataColumnType) iterator.next();
+ alldct.setChartSeries(false);
+ }
+ }
+
+ String drillDownReportId = AppUtils.getRequestNvlValue(request, "drillDownReport");
+ rdef.setDrillReportIdForChart(drillDownReportId);
+ if(drillDownReportId.equals("-1")){
+ rdef.setDrillReportIdForChart("");
+ }
+
+ if(!drillDownReportId.equals("-1")) {
+ ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, drillDownReportId,
+ false);
+ if (ddRr != null)
+ request.setAttribute("CHART_FORMFIELDS", ddRr.getReportFormFields());
+ for(ddRr.getReportFormFields().resetNext(); ddRr.getReportFormFields().hasNext(); ) {
+ FormField ff = ddRr.getReportFormFields().getNext();
+ if(!ff.getFieldType().equals(FormField.FFT_BLANK)) {
+ String value = AppUtils.getRequestNvlValue(request, "drillDown_"+ff.getFieldName());
+ ChartDrillFormfield cdf = new ObjectFactory().createChartDrillFormfield();
+ cdf.setFormfield(value);
+ rdef.getChartDrillOptions().getTargetFormfield().add(cdf);
+ }
+ }
+
+ String xAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownXAxisFormfield");
+ String yAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownYAxisFormfield");
+ String seriesAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownSeriesAxisFormfield");
+
+ if(!xAxisFormField.equals("-1")){
+ rdef.setDrillXAxisFormField(xAxisFormField);
+
+ if(!yAxisFormField.equals("-1"))
+ rdef.setDrillYAxisFormField(yAxisFormField);
+ if(!seriesAxisFormField.equals("-1"))
+ rdef.setDrillSeriesFormField(seriesAxisFormField);
+ } else {
+ rdef.setDrillXAxisFormField("");
+ rdef.setDrillYAxisFormField("");
+ rdef.setDrillSeriesFormField("");
+ }
+ }
+
+ }
+ }
+
+ for (int i = 1; i < Math.max(valueColsCount, 1) + 1; i++) {
+ //debugLogger.debug("********** " + chartSeries);
+ if(i==1) {
+ /* Range Axis is resetted before adding */
+ for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
+ DataColumnType dct = (DataColumnType) iterator.next();
+ if(!nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND)) {
+ dct.setChartSeq(-1);
+ dct.setChartColor(null);
+ dct.setColOnChart(null);
+ dct.setCreateInNewChart(false);
+ dct.setChartGroup(null);
+ dct.setYAxis(null);
+ }
+ }
+
+ }
+ String newChartColAxis = AppUtils.getRequestNvlValue(request, "newChart" + i+"Axis");
+ String valueColId = AppUtils.getRequestNvlValue(request, "valueCol" + i);
+ String valueColColor = AppUtils.getRequestNvlValue(request, "valueCol" + i
+ + "Color");
+ String valueColAxis = AppUtils
+ .getRequestNvlValue(request, "valueCol" + valueColId + "Axis");
+ String chartGroup = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "chartGroup" + valueColId + "Axis"));
+ String yAxisGroup = "";
+ yAxisGroup = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "YAxisLabel" + valueColId));
+ //debugLogger.debug("^^^^^^^^^^^^^^^^^Chart Group " + chartGroup);
+ //if(chartType.equals(AppConstants.GT_TIME_SERIES)) {
+ // debugLogger.debug("**********Outer If " + chartSeries);
+ //}
+
+ if (valueColId.length() > 0 && (!valueColId.equals(removeColId))) {
+ DataColumnType dct = rdef.getColumnById(valueColId);
+ dct.setChartSeq(idx++);
+ dct.setChartColor(valueColColor);
+ dct.setColOnChart(valueColAxis.equals("Y") ? "1" : "0");
+ if(chartType.equals(AppConstants.GT_TIME_SERIES)) {
+ dct.setCreateInNewChart(newChartColAxis.equals("Y") ? true : false);
+ } else
+ dct.setCreateInNewChart(false);
+
+ if(chartGroup!=null && chartGroup.length()>0)
+ dct.setChartGroup(chartGroup+"|"+valueColId);
+ else dct.setChartGroup("");
+ if(chartType.equals(AppConstants.GT_TIME_SERIES))
+ dct.setYAxis(nvl(yAxisGroup)+"|"+valueColId);
+ else if (chartType.equals(AppConstants.GT_BAR_3D))
+ dct.setYAxis(nvl(yAxisGroup)+"|"+valueColId);
+ else dct.setYAxis("");
+ //}
+ //else
+ //dct.setCreateInNewChart(false);
+ } else if (valueColId.length() > 0 && (valueColId.equals(removeColId))) {// if
+ DataColumnType dct = rdef.getColumnById(valueColId);
+ dct.setChartSeq(-1);
+ dct.setChartColor(null);
+ dct.setColOnChart(null);
+ dct.setCreateInNewChart(false);
+ dct.setChartGroup(null);
+ dct.setYAxis(null);
+ } else { // else
+ DataColumnType dct = rdef.getColumnById(valueColId);
+ dct.setChartSeq(-1);
+ dct.setChartColor(null);
+ dct.setColOnChart(null);
+ dct.setCreateInNewChart(false);
+ dct.setChartGroup(null);
+ dct.setYAxis(null);
+ }
+ } // for
+
+ if (action.equals(AppConstants.WA_ADD_USER)) {
+ String valueColId = AppUtils.getRequestNvlValue(request, "valueColNew");
+ String valueColColor = AppUtils.getRequestNvlValue(request, "valueColNewColor");
+ String valueColAxis = AppUtils.getRequestNvlValue(request, "valueColNewAxis");
+
+ if (valueColId.length() > 0) {
+ DataColumnType dct = rdef.getColumnById(valueColId);
+ dct.setChartSeq(idx++);
+ dct.setChartColor(valueColColor);
+ dct.setColOnChart(valueColAxis.equals("Y") ? "1" : "0");
+ } // if
+ } // for
+
+ return true; // reportUpdated;
+ } // processChart
+
+ public boolean processAdhocSchedule(HttpServletRequest request, String action)
+ throws Exception {
+ ReportSchedule reportSchedule = (ReportSchedule) request.getSession().getAttribute(AppConstants.SI_REPORT_SCHEDULE);
+ reportSchedule.setScheduleUserID(AppUtils.getUserID(request));
+ reportSchedule.setSchedEnabled(
+ nvl(AppUtils.getRequestValue(request, "schedEnabled"), "N"));
+ reportSchedule.setStartDate(
+ AppUtils.getRequestNvlValue(request, "schedStartDate"));
+ reportSchedule.setEndDate(
+ AppUtils.getRequestNvlValue(request, "schedEndDate"));
+ reportSchedule.setEndHour(AppUtils.getRequestNvlValue(request, "schedEndHour"));
+ reportSchedule.setEndMin(AppUtils.getRequestNvlValue(request, "schedEndMin"));
+ reportSchedule.setEndAMPM(AppUtils.getRequestNvlValue(request, "schedEndAMPM"));
+ //schedRunDate
+ reportSchedule.setRunDate(
+ AppUtils.getRequestNvlValue(request, "schedRunDate").length()>0?AppUtils.getRequestNvlValue(request, "schedRunDate"):AppUtils.getRequestNvlValue(request, "schedStartDate"));
+ reportSchedule.setRunHour(AppUtils.getRequestNvlValue(request, "schedHour"));
+ reportSchedule.setRunMin(AppUtils.getRequestNvlValue(request, "schedMin"));
+ reportSchedule.setRunAMPM(AppUtils.getRequestNvlValue(request, "schedAMPM"));
+ reportSchedule.setRecurrence(
+ AppUtils.getRequestNvlValue(request, "schedRecurrence"));
+ reportSchedule.setConditional(
+ nvl(AppUtils.getRequestValue(request, "conditional"), "N"));
+ reportSchedule.setConditionSQL(
+ AppUtils.getRequestNvlValue(request, "conditionSQL"));
+ reportSchedule.setNotify_type(
+ AppUtils.getRequestNvlValue(request, "notify_type"));
+ reportSchedule.setDownloadLimit(
+ AppUtils.getRequestNvlValue(request, "downloadLimit"));
+ reportSchedule.setFormFields(
+ AppUtils.getRequestNvlValue(request, "formFields"));
+ reportSchedule.setAttachmentMode(
+ AppUtils.getRequestNvlValue(request, "sendAttachment"));
+
+ String userId = AppUtils.getRequestNvlValue(request, "schedEmailAdd");
+ String roleId = AppUtils.getRequestNvlValue(request, "schedEmailAddRole");
+ int flag = 0;
+ if ((!(userId.length()>0 || roleId.length()>0) && (reportSchedule.getEmailToUsers().isEmpty() && reportSchedule.getEmailToRoles().isEmpty())) ) {
+ flag = 1;
+ }
+
+ if (flag == 1 || (action.equals(AppConstants.WA_ADD_USER) || action.equals(AppConstants.WA_ADD_ROLE)) ) {
+ String loggedInUserId = AppUtils.getUserID(request);
+ if (Globals.getUseLoginIdInSchedYN().equals("Y")){
+ reportSchedule.addEmailToUser(loggedInUserId, AppUtils.getUserLoginId(request));
+ } else
+ reportSchedule.addEmailToUser(loggedInUserId, (AppUtils.getUserName(loggedInUserId).length()>0?AppUtils.getUserName(loggedInUserId):(AppUtils.getUserLoginId(loggedInUserId).length()>0?AppUtils.getUserLoginId(loggedInUserId):loggedInUserId) ));
+ }
+ if (action.equals(AppConstants.WA_ADD_USER)) {
+ //String userId = AppUtils.getRequestNvlValue(request, "schedEmailAdd");
+ String userName = AppUtils.getUserName(userId);
+ if (Globals.getUseLoginIdInSchedYN().equals("Y")){
+ String userLoginId = AppUtils.getUserLoginId(userId);
+ if (userId.length() > 0 && (userLoginId != null && userLoginId.length() > 0))
+ reportSchedule.addEmailToUser(userId, userLoginId);
+ else {
+ if (userId.length() > 0 && (userName != null && userName.length() > 0) )
+ reportSchedule.addEmailToUser(userId, userName);
+ else {
+ reportSchedule.addEmailToUser(userId, userId);
+ }
+ }
+ }else{
+ if (userId.length() > 0 && (userName != null && userName.length() > 0) )
+ reportSchedule.addEmailToUser(userId, userName);
+ else {
+ reportSchedule.addEmailToUser(userId, userId);
+ }
+ }
+
+ } else if (action.equals(AppConstants.WA_DELETE_USER))
+ reportSchedule.removeEmailToUser(
+ AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
+ else if (action.equals(AppConstants.WA_ADD_ROLE)) {
+ //String roleId = AppUtils.getRequestNvlValue(request, "schedEmailAddRole");
+ String roleName = AppUtils.getRoleName(roleId);
+ if (roleId.length() > 0 && roleName != null)
+ reportSchedule.addEmailToRole(roleId, roleName);
+ } else if (action.equals(AppConstants.WA_DELETE_ROLE))
+ reportSchedule.removeEmailToRole(
+ AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
+ request.getSession().setAttribute(AppConstants.SI_REPORT_SCHEDULE, reportSchedule);
+ return true;
+ } // processAdhocSchedule
+
+ private boolean processSchedule(HttpServletRequest request, String action)
+ throws Exception {
+ // Added for form field chaining in schedule tab so that setParamValues() is called
+ request.setAttribute(AppConstants.SCHEDULE_ACTION, "Y");
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+ ReportSchedule reportSchedule = rdef.getReportSchedule();
+ reportSchedule.setScheduleUserID(AppUtils.getUserID(request));
+ reportSchedule.setSchedEnabled(
+ nvl(AppUtils.getRequestValue(request, "schedEnabled"), "N"));
+ reportSchedule.setStartDate(
+ AppUtils.getRequestNvlValue(request, "schedStartDate"));
+ reportSchedule.setEndDate(
+ AppUtils.getRequestNvlValue(request, "schedEndDate"));
+ reportSchedule.setEndHour(AppUtils.getRequestNvlValue(request, "schedEndHour"));
+ reportSchedule.setEndMin(AppUtils.getRequestNvlValue(request, "schedEndMin"));
+ reportSchedule.setEndAMPM(AppUtils.getRequestNvlValue(request, "schedEndAMPM"));
+ //schedRunDate
+ reportSchedule.setRunDate(
+ AppUtils.getRequestNvlValue(request, "schedRunDate").length()>0?AppUtils.getRequestNvlValue(request, "schedRunDate"):AppUtils.getRequestNvlValue(request, "schedStartDate"));
+ reportSchedule.setRunHour(AppUtils.getRequestNvlValue(request, "schedHour"));
+ reportSchedule.setRunMin(AppUtils.getRequestNvlValue(request, "schedMin"));
+ reportSchedule.setRunAMPM(AppUtils.getRequestNvlValue(request, "schedAMPM"));
+ reportSchedule.setRecurrence(
+ AppUtils.getRequestNvlValue(request, "schedRecurrence"));
+ reportSchedule.setConditional(
+ nvl(AppUtils.getRequestValue(request, "conditional"), "N"));
+ reportSchedule.setConditionSQL(
+ AppUtils.getRequestNvlValue(request, "conditionSQL"));
+ reportSchedule.setNotify_type(
+ AppUtils.getRequestNvlValue(request, "notify_type"));
+ reportSchedule.setDownloadLimit(
+ AppUtils.getRequestNvlValue(request, "downloadLimit"));
+ reportSchedule.setFormFields(
+ AppUtils.getRequestNvlValue(request, "formFields"));
+ reportSchedule.setAttachmentMode(
+ AppUtils.getRequestNvlValue(request, "sendAttachment"));
+
+ reportSchedule.setEncryptMode(
+ AppUtils.getRequestNvlValue(request, "encryptMode"));
+ if (action.equals(AppConstants.WA_ADD_USER)) {
+ String userId = AppUtils.getRequestNvlValue(request, "schedEmailAdd");
+ String userName = AppUtils.getUserName(userId);
+ if (Globals.getUseLoginIdInSchedYN().equals("Y")){
+ String userLoginId = AppUtils.getUserLoginId(userId);
+ if (userId.length() > 0 && (userLoginId != null && userLoginId.length() > 0))
+ reportSchedule.addEmailToUser(userId, userLoginId);
+ else {
+ if (userId.length() > 0 && (userName != null && userName.length() > 0) )
+ reportSchedule.addEmailToUser(userId, userName);
+ else {
+ reportSchedule.addEmailToUser(userId, userId);
+ }
+ }
+ }else{
+ if (userId.length() > 0 && (userName != null && userName.length() > 0) )
+ reportSchedule.addEmailToUser(userId, userName);
+ else {
+ reportSchedule.addEmailToUser(userId, userId);
+ }
+ }
+ } else if (action.equals(AppConstants.WA_DELETE_USER))
+ reportSchedule.removeEmailToUser(
+ AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
+ else if (action.equals(AppConstants.WA_ADD_ROLE)) {
+ String roleId = AppUtils.getRequestNvlValue(request, "schedEmailAddRole");
+ String roleName = AppUtils.getRoleName(roleId);
+ if (roleId.length() > 0 && roleName != null)
+ reportSchedule.addEmailToRole(roleId, roleName);
+ } else if (action.equals(AppConstants.WA_DELETE_ROLE))
+ reportSchedule.removeEmailToRole(
+ AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
+
+ return true;
+ } // processSchedule
+
+ private boolean processUserAccess(HttpServletRequest request, String action)
+ throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+
+ String ownerID = AppUtils.getRequestNvlValue(request, "reportOwner");
+ String rPublic = nvl(AppUtils.getRequestValue(request, "public"), "N");
+
+ boolean reportUpdated = (!(ownerID.equals(nvl(rdef.getOwnerID())) && rPublic
+ .equals(rdef.isPublic() ? "Y" : "N")));
+
+ rdef.getReportSecurity().setOwnerID(ownerID);
+ rdef.setPublic(rPublic.equals("Y"));
+
+ if (action.equals(AppConstants.WA_ADD_USER))
+ rdef.getReportSecurity().addUserAccess(
+ AppUtils.getRequestNvlValue(request, "newUserId"), "Y");
+ else if (action.equals(AppConstants.WA_DELETE_USER))
+ rdef.getReportSecurity().removeUserAccess(
+ AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
+ else if (action.equals(AppConstants.WA_GRANT_USER))
+ rdef.getReportSecurity().updateUserAccess(
+ AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID), "N");
+ else if (action.equals(AppConstants.WA_REVOKE_USER))
+ rdef.getReportSecurity().updateUserAccess(
+ AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID), "Y");
+ else if (action.equals(AppConstants.WA_ADD_ROLE))
+ rdef.getReportSecurity().addRoleAccess(
+ AppUtils.getRequestNvlValue(request, "newRoleId"), "Y");
+ else if (action.equals(AppConstants.WA_DELETE_ROLE))
+ rdef.getReportSecurity().removeRoleAccess(
+ AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
+ else if (action.equals(AppConstants.WA_GRANT_ROLE))
+ rdef.getReportSecurity().updateRoleAccess(
+ AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID), "N");
+ else if (action.equals(AppConstants.WA_REVOKE_ROLE))
+ rdef.getReportSecurity().updateRoleAccess(
+ AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID), "Y");
+
+ return reportUpdated;
+ } // processUserAccess
+
+ private boolean processClearLog(HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+ String user_id = AppUtils.getUserID(request);
+ // Modified so that only the logged in user entries are erased. - Sundar
+ ReportLoader.clearReportLogEntries(rdef.getReportID(), user_id);
+ return false;
+ } // processClearLog
+
+ private boolean processValidateSQL(HttpServletRequest request) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+
+ String sql = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportSQL"));
+ request.setAttribute("sqlValidated", "N");
+ rdef.parseReportSQL(sql);
+ request.setAttribute("sqlValidated", "Y");
+
+ return true;
+ } // processValidateSQL
+
+
+ /*****For Report Maps - Start******/
+ private boolean processMap(HttpServletRequest request, String action) throws Exception {
+ ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
+ AppConstants.SI_REPORT_DEFINITION);
+
+ org.openecomp.portalsdk.analytics.xmlobj.ReportMap repMap = rdef.getReportMap();
+ //clearing already added
+ if (repMap != null){
+ repMap.getMarkers().removeAll(repMap.getMarkers());
+ }
+ String addressColumn = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "addressColumn0"));
+ System.out.println(" #$%#$%#$% -- address col = " + addressColumn);
+ String dataColumn = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "dataColumn0"));
+ String legendColumn = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "legendColumn"));
+ //String legendDisplayName = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "dataHeaderL"));
+ //if(nvl(legendDisplayName).length()<=0) legendDisplayName = legendColumn;
+ String color = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "markerColor0"));
+ String isMapAllowed = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "isMapAllowed"));
+ String useDefaultSize = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "useDefaultSize"));
+ String height = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "height"));
+ String width = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "width"));
+ System.out.println(" #$%#$%#$% -- useDefaultSize="+ useDefaultSize+" height = " + height+" width="+width);
+
+ String addAddress = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "addAddress"));
+ String latCol = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "latColumn"));
+ String longCol = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "longColumn"));
+ String colorCol = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "colorColumn"));
+ if (isMapAllowed.equals(""))
+ isMapAllowed = "N";
+ if (useDefaultSize.equals(""))
+ useDefaultSize = "N";
+ if (repMap == null)
+ rdef.setReportMap(new ObjectFactory().createReportMap());
+ repMap.setAddressColumn(addressColumn);
+ repMap.setDataColumn(dataColumn);
+ repMap.setIsMapAllowedYN(isMapAllowed);
+ repMap.setUseDefaultSize(useDefaultSize);
+ repMap.setMarkerColor(color);
+ repMap.setAddAddressInDataYN(addAddress);
+ repMap.setLatColumn(latCol);
+ repMap.setLongColumn(longCol);
+ repMap.setColorColumn(colorCol);
+ repMap.setHeight(height.trim());
+ repMap.setWidth(width.trim());
+ repMap.setLegendColumn(legendColumn);
+ //repMap.setLegendDisplayName(legendDisplayName);
+
+ Marker m = new ObjectFactory().createMarker();
+ m.setAddressColumn(addressColumn);
+ m.setDataColumn(dataColumn);
+ repMap.getMarkers().add(m);
+ String markerCountString = AppUtils.getRequestNvlValue(request, "markerCount");
+ int markerCount = 0;
+ if (markerCountString != null && markerCountString.equals("") == false){
+ markerCount = new Integer(markerCountString).intValue();
+ }
+ for (int i = 1; i < markerCount; i ++){
+ String additionalAddressColumn = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "addressColumn" + i));
+ String additionalDataHeader = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "dataHeader" + i));
+ String additionalData = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "dataColumn" + i));
+ String additionalColor = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "markerColor" + i));
+ if (additionalAddressColumn.equals("1") == false){
+ m = new ObjectFactory().createMarker();
+ m.setAddressColumn(additionalAddressColumn);
+ m.setDataHeader(additionalDataHeader);
+ m.setDataColumn(additionalData);
+ m.setMarkerColor(additionalColor);
+ repMap.getMarkers().add(m);
+ }
+ }
+ return true;
+ } // processMap
+ /*****For Report Maps - End******/
+
+
+} // WizardProcessor