2 * ================================================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ================================================================================
20 package org.openecomp.portalsdk.analytics.controller;
22 import java.text.SimpleDateFormat;
23 import java.util.ArrayList;
24 import java.util.Calendar;
25 import java.util.Collections;
26 import java.util.Iterator;
27 import java.util.List;
29 import javax.servlet.http.HttpServletRequest;
30 import javax.xml.datatype.DatatypeConfigurationException;
31 import javax.xml.datatype.DatatypeFactory;
33 import org.openecomp.portalsdk.analytics.error.RaptorException;
34 import org.openecomp.portalsdk.analytics.error.ValidationException;
35 import org.openecomp.portalsdk.analytics.model.ReportHandler;
36 import org.openecomp.portalsdk.analytics.model.ReportLoader;
37 import org.openecomp.portalsdk.analytics.model.base.IdNameValue;
38 import org.openecomp.portalsdk.analytics.model.base.OrderBySeqComparator;
39 import org.openecomp.portalsdk.analytics.model.base.OrderSeqComparator;
40 import org.openecomp.portalsdk.analytics.model.definition.ReportDefinition;
41 import org.openecomp.portalsdk.analytics.model.definition.ReportSchedule;
42 import org.openecomp.portalsdk.analytics.model.runtime.FormField;
43 import org.openecomp.portalsdk.analytics.model.runtime.ReportRuntime;
44 import org.openecomp.portalsdk.analytics.system.AppUtils;
45 import org.openecomp.portalsdk.analytics.system.DbUtils;
46 import org.openecomp.portalsdk.analytics.system.Globals;
47 import org.openecomp.portalsdk.analytics.util.AppConstants;
48 import org.openecomp.portalsdk.analytics.util.DataSet;
49 import org.openecomp.portalsdk.analytics.util.XSSFilter;
50 import org.openecomp.portalsdk.analytics.xmlobj.ChartDrillFormfield;
51 import org.openecomp.portalsdk.analytics.xmlobj.ColFilterType;
52 import org.openecomp.portalsdk.analytics.xmlobj.DataColumnType;
53 import org.openecomp.portalsdk.analytics.xmlobj.DataSourceType;
54 import org.openecomp.portalsdk.analytics.xmlobj.FormFieldType;
55 import org.openecomp.portalsdk.analytics.xmlobj.FormatType;
56 import org.openecomp.portalsdk.analytics.xmlobj.JavascriptItemType;
57 import org.openecomp.portalsdk.analytics.xmlobj.Marker;
58 import org.openecomp.portalsdk.analytics.xmlobj.ObjectFactory;
59 import org.openecomp.portalsdk.analytics.xmlobj.SemaphoreType;
60 import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate;
63 * This class is part of <B><I>RAPTOR (Rapid Application Programming Tool for OLAP Reporting)</I></B><BR/>
66 * --------------------------------------------------------------------------------------------------<BR/>
67 * <B>WizardProcessor.java</B> - This class is used to process the user input provided in the wizard.<BR/>
68 * It is called in creation as well as updation process. It builds report xml via JAXB using user<BR/>
69 * input. This is vital one, to store meta information of each report<BR/>
70 * ---------------------------------------------------------------------------------------------------<BR/>
73 * <U>Change Log</U><BR/><BR/>
75 * 31-Aug-2009 : Version 8.5.1 (Sundar);<UL><LI> For Time Series multi series property is exposed. </LI></UL>
76 * 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>
77 * 18-Aug-2009 : Version 8.5.1 (Sundar);<UL><LI> request Object is passed to prevent caching user/roles - Datamining/Hosting. </LI></UL>
78 * 12-Aug-2009 : Version 8.5 (Sundar); <UL><LI> For Line Charts too options are captured and rendering is customized. </LI></UL>
79 * 29-Jul-2009 : Version 8.4 (Sundar); <UL><LI> Maximum Excel Download size would be persisted if changed. </LI></UL>
80 * 14-Jul-2009 : Version 8.4 (Sundar); <UL><LI> Schedule feature is added to Dashboard Reports. </LI></UL>
81 * 29-Jun-2009 : Version 8.4 (Sundar); <UL><LI> Options for <I>Compare to Previous year Chart</I> are processed.</LI>
82 * <LI> In the Bar chart Last Occuring Series/Category can be plotted as Bar or Line Renderer. </LI>
84 * 22-Jun-2009 : Version 8.4 (Sundar); <UL><LI> processChart method is modified to accommodate creating
85 * Bar Charts, Time Difference Charts and adding generic chart options.</LI></UL>
89 public class WizardProcessor extends org.openecomp.portalsdk.analytics.RaptorObject {
91 EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(WizardProcessor.class);
93 public WizardProcessor() {
96 private String adjustDataType(String oracleDataType) {
97 return oracleDataType.equals("VARCHAR2") ? AppConstants.CT_CHAR : oracleDataType;
98 // Probably should be expanded to convert any CHAR or VARCHAR type to
99 // CT_CHAR, number type to CT_NUMBER and date to CT_DATE
102 public void persistReportDefinition(HttpServletRequest request, ReportDefinition rdef)
103 throws RaptorException {
104 ReportRuntime rr = (ReportRuntime) request.getSession().getAttribute(
105 AppConstants.SI_REPORT_RUNTIME);
106 if (rr != null && rr.getReportID().equals(rdef.getReportID()))
107 request.getSession().removeAttribute(AppConstants.SI_REPORT_RUNTIME);
108 rdef.persistReport(request);
109 } // persistReportDefinition
111 public void processWizardStep(HttpServletRequest request) throws Exception {
112 String action = nvl(request.getParameter(AppConstants.RI_WIZARD_ACTION),
113 AppConstants.WA_BACK);
115 String reportID = AppUtils.getRequestValue(request, AppConstants.RI_REPORT_ID);
116 ReportDefinition rdef = (new ReportHandler()).loadReportDefinition(request, reportID);
117 request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
119 String curStep = rdef.getWizardSequence().getCurrentStep();
120 String curSubStep = rdef.getWizardSequence().getCurrentSubStep();
121 if (AppUtils.getRequestNvlValue(request, "showDashboardOptions").length()<=0)
122 request.setAttribute("showDashboardOptions", "F");
123 logger.debug(EELFLoggerDelegate.debugLogger, ("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^curStep " + curStep + " " + curSubStep + " " + action));
124 boolean reportUpdated = false;
125 if (!action.equals(AppConstants.WA_BACK)) {
126 if (curStep.equals(AppConstants.WS_DEFINITION)) {
127 reportUpdated = processDefinition(request);
128 } else if (curStep.equals(AppConstants.WS_SQL)) {
129 if (action.equals(AppConstants.WA_VALIDATE))
130 reportUpdated = processValidateSQL(request);
131 } else if (curStep.equals(AppConstants.WS_TABLES)) {
132 if (curSubStep.equals(AppConstants.WSS_ADD))
133 reportUpdated = processTableAdd(request);
134 else if (curSubStep.equals(AppConstants.WSS_EDIT))
135 reportUpdated = processTableEdit(request);
136 else if (action.equals(AppConstants.WA_DELETE))
137 reportUpdated = processTableDelete(request);
138 } else if (curStep.equals(AppConstants.WS_COLUMNS)) {
139 if (curSubStep.equals(AppConstants.WSS_ADD)
140 || curSubStep.equals(AppConstants.WSS_EDIT) || action.equals(AppConstants.WA_SAVE) || action.equals(AppConstants.WA_NEXT)) {
141 reportUpdated = processColumnAddEdit(request, curSubStep
142 .equals(AppConstants.WSS_EDIT) || curSubStep
143 .equals(AppConstants.WA_MODIFY));
144 //reportUpdated = processColumnAddEdit(request, true);
146 else if (curSubStep.equals(AppConstants.WSS_ADD_MULTI))
147 reportUpdated = processColumnAddMulti(request);
148 else if (curSubStep.equals(AppConstants.WSS_ORDER_ALL))
149 reportUpdated = processColumnOrderAll(request);
150 else if (action.equals(AppConstants.WA_DELETE))
151 reportUpdated = processColumnDelete(request);
152 else if (action.equals(AppConstants.WA_MOVE_UP))
153 reportUpdated = processColumnMoveUp(request);
154 else if (action.equals(AppConstants.WA_MOVE_DOWN))
155 reportUpdated = processColumnMoveDown(request);
156 } else if (curStep.equals(AppConstants.WS_FORM_FIELDS)) {
157 if (curSubStep.equals(AppConstants.WSS_ADD)
158 || curSubStep.equals(AppConstants.WSS_EDIT))
159 reportUpdated = processFormFieldAddEdit(request, curSubStep
160 .equals(AppConstants.WSS_EDIT), action);
161 else if (action.equals(AppConstants.WA_DELETE))
162 reportUpdated = processFormFieldDelete(request);
163 else if (action.equals(AppConstants.WA_MOVE_UP))
164 reportUpdated = processFormFieldMoveUp(request);
165 else if (action.equals(AppConstants.WA_MOVE_DOWN))
166 reportUpdated = processFormFieldMoveDown(request);
167 else if (action.equals(AppConstants.WSS_ADD_BLANK))
168 reportUpdated = processFormFieldBlank(request);
169 else if (action.equals(AppConstants.WSS_INFO_BAR))
170 reportUpdated = processFormFieldInfoBar(request);
171 } else if (curStep.equals(AppConstants.WS_FILTERS)) {
172 if (curSubStep.equals(AppConstants.WSS_ADD)
173 || curSubStep.equals(AppConstants.WSS_EDIT))
174 reportUpdated = processFilterAddEdit(request, curSubStep
175 .equals(AppConstants.WSS_EDIT));
176 else if (action.equals(AppConstants.WA_DELETE))
177 reportUpdated = processFilterDelete(request);
178 } else if (curStep.equals(AppConstants.WS_SORTING)) {
179 if (curSubStep.equals(AppConstants.WSS_ADD)
180 || curSubStep.equals(AppConstants.WSS_EDIT))
181 reportUpdated = processSortAddEdit(request, curSubStep
182 .equals(AppConstants.WSS_EDIT));
183 else if (curSubStep.equals(AppConstants.WSS_ORDER_ALL))
184 reportUpdated = processSortOrderAll(request);
185 else if (action.equals(AppConstants.WA_DELETE))
186 reportUpdated = processSortDelete(request);
187 else if (action.equals(AppConstants.WA_MOVE_UP))
188 reportUpdated = processSortMoveUp(request);
189 else if (action.equals(AppConstants.WA_MOVE_DOWN))
190 reportUpdated = processSortMoveDown(request);
191 } else if (curStep.equals(AppConstants.WS_JAVASCRIPT)) {
192 if (action.equals(AppConstants.WSS_ADD))
193 reportUpdated = processAddJavascriptElement(request);
194 else if (action.equals(AppConstants.WA_SAVE))
195 reportUpdated = processSaveJavascriptElement(request);
196 else if (action.equals(AppConstants.WA_DELETE))
197 reportUpdated = processDeleteJavascriptElement(request);
199 reportUpdated = processJavascript(request);
200 } else if (curStep.equals(AppConstants.WS_CHART)) {
201 reportUpdated = processChart(request, action);
202 } else if (curStep.equals(AppConstants.WS_USER_ACCESS)) {
203 reportUpdated = processUserAccess(request, action);
204 } else if (curStep.equals(AppConstants.WS_REPORT_LOG)) {
205 if (action.equals(AppConstants.WA_DELETE_USER))
206 reportUpdated = processClearLog(request);
207 } else if (curStep.equals(AppConstants.WS_SCHEDULE)) {
208 reportUpdated = processSchedule(request, action);
209 } else if(curStep.equals(AppConstants.WS_DATA_FORECASTING)) {
210 reportUpdated = processForecasting(request, action);
212 /****For Report Maps - Start*****/
213 else if (curStep.equals(AppConstants.WS_MAP)) {
214 reportUpdated = processMap(request, action);
216 /****For Report Maps - End*****/
221 persistReportDefinition(request, rdef);
222 } // processWizardStep
224 public void processImportSemaphorePopup(HttpServletRequest request) throws RaptorException {
225 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
226 AppConstants.SI_REPORT_DEFINITION);
228 String importReportId = AppUtils
229 .getRequestNvlValue(request, AppConstants.RI_REPORT_ID);
230 ReportRuntime rr = (new ReportHandler()).loadReportRuntime(request, importReportId,
233 ArrayList importedList = new ArrayList();
234 if (rr.getSemaphoreList() != null)
235 for (Iterator iter = rr.getSemaphoreList().getSemaphore().iterator(); iter
237 SemaphoreType sem = rdef.addSemaphore(new ObjectFactory(),
238 (SemaphoreType) iter.next());
240 .add(new IdNameValue(sem.getSemaphoreId(), sem.getSemaphoreName()));
243 if (importedList.size() > 0) {
244 request.setAttribute(AppConstants.RI_DATA_SET, importedList);
245 persistReportDefinition(request, rdef);
247 } // processImportSemaphorePopup
249 public void processSemaphorePopup(HttpServletRequest request) throws RaptorException {
250 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
251 AppConstants.SI_REPORT_DEFINITION);
253 String semaphoreId = AppUtils.getRequestNvlValue(request, "semaphoreId");
254 String semaphoreName = AppUtils.getRequestNvlValue(request, "semaphoreName");
255 String semaphoreType = AppUtils.getRequestNvlValue(request, "semaphoreType");
257 SemaphoreType semaphore = rdef.getSemaphoreById(semaphoreId);
258 if (semaphore == null) {
259 semaphore = rdef.addSemaphoreType(new ObjectFactory(), semaphoreName,
260 semaphoreType, null);
261 semaphoreId = semaphore.getSemaphoreId();
262 request.setAttribute("semaphoreId", semaphoreId);
264 rdef.deleteSemaphore(semaphore);
265 semaphore.setSemaphoreName(semaphoreName);
266 semaphore.setSemaphoreType(semaphoreType);
268 rdef.setSemaphore(semaphore);
271 String[] formatId = request.getParameterValues("formatId");
272 String[] lessThanValue = request.getParameterValues("lessThanValue");
273 String[] expression = request.getParameterValues("expression");
274 String[] bold = request.getParameterValues("bold");
275 String[] italic = request.getParameterValues("italic");
276 String[] underline = request.getParameterValues("underline");
277 String[] bgColor = request.getParameterValues("bgColor");
278 String[] fontColor = request.getParameterValues("fontColor");
279 String[] fontFace = request.getParameterValues("fontFace");
280 String[] fontSize = request.getParameterValues("fontSize");
281 //String[] anyFmt = request.getParameterValues("anyFmt");
283 // String[] alignment = request.getParameterValues("alignment");
285 for (int i = 0; i < lessThanValue.length; i++)
286 if (i == 0 || nvl(lessThanValue[i]).length() > 0) {
287 FormatType fmt = null;
288 if (i == 0 || nvl(formatId[i]).length() > 0)
289 fmt = rdef.getSemaphoreFormatById(semaphore, nvl(formatId[i]));
291 fmt = rdef.addEmptyFormatType(new ObjectFactory(), semaphore);
293 fmt.setLessThanValue(nvl(lessThanValue[i]));
294 fmt.setExpression(nvl(expression[i]));
295 fmt.setBold(bold[i].equals("Y"));
296 fmt.setItalic(italic[i].equals("Y"));
297 fmt.setUnderline(underline[i].equals("Y"));
298 fmt.setBgColor(bgColor[i]);
299 fmt.setFontColor(fontColor[i]);
300 fmt.setFontFace(fontFace[i]);
301 fmt.setFontSize(fontSize[i]);
302 //fmt.setAnyFmt((anyFmt[i]!=null)?anyFmt[i].startsWith("Y"):false);
303 // fmt.setAlignment(alignment[i]);
304 } else if (nvl(formatId[i]).length() > 0)
305 rdef.deleteFormatType(semaphore, formatId[i]);
307 persistReportDefinition(request, rdef);
308 } // processSemaphorePopup
310 private boolean processDefinition(HttpServletRequest request) throws Exception {
311 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
312 AppConstants.SI_REPORT_DEFINITION);
314 String reportName = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportName"));
315 String reportDescr = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportDescr"));
316 String folderId = AppUtils.getRequestNvlValue(request, "folder_id");
317 boolean isAllowSchedule = (AppUtils.getRequestNvlValue(request, "allowSchedule").length()<=0?"N":AppUtils.getRequestNvlValue(request, "allowSchedule")).startsWith("Y");
318 boolean isColumnGroup = (AppUtils.getRequestNvlValue(request, "multiGroupColumn").length()<=0?"N":AppUtils.getRequestNvlValue(request, "multiGroupColumn")).startsWith("Y");
319 boolean isTopDown = (AppUtils.getRequestNvlValue(request, "topDown").length()<=0?"N":AppUtils.getRequestNvlValue(request, "topDown")).startsWith("Y");
320 boolean isSizedByContent= (AppUtils.getRequestNvlValue(request, "sizedByContent").length()<=0?"N":AppUtils.getRequestNvlValue(request, "sizedByContent")).startsWith("Y");
321 boolean reportsInNewWindow = false;
322 boolean hideFormFieldAfterRun = false;
324 /*recurrance in schedule tab - Start*/
325 String isOneTimeScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isOneTimeScheduleAllowed"),"N");
326 String isHourlyScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isHourlyScheduleAllowed"),"N");
327 String isDailyScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isDailyScheduleAllowed"),"N");
328 String isDailyMFScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isDailyMFScheduleAllowed"),"N");
329 String isWeeklyScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isWeeklyScheduleAllowed"),"N");
330 String isMonthlyScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isMonthlyScheduleAllowed"),"N");
331 //System.out.println("//////////// + isOneTimeScheduleAllowed : " + isOneTimeScheduleAllowed);
332 /*recurrance in schedule tab - End*/
335 if (reportDescr.length() > 1000)
336 reportDescr = reportDescr.substring(0, 1000);
337 boolean reportUpdated;
339 String reportType = AppUtils.getRequestNvlValue(request, "reportType");
343 //rdef.setReportName(reportName);
344 //rdef.setReportDescr(reportDescr);
345 //rdef.setReportType(reportType);
346 rdef.setFolderId(folderId);
347 // debugLogger.debug("setting folder ID = " + folderId);
348 if(reportType.equals(AppConstants.RT_DASHBOARD)) {
349 rdef.setReportName(reportName);
350 rdef.setReportDescr(reportDescr);
351 rdef.setReportType(reportType);
352 String dashboardLayoutHTML = AppUtils.getRequestNvlValue(request, "dashboardLayoutHTML");
353 rdef.setDashboardLayoutHTML(dashboardLayoutHTML);
354 String dataContainerHeight = nvl(AppUtils.getRequestValue(request, "heightContainer"), "auto");
355 String dataContainerWidth = nvl(AppUtils.getRequestValue(request, "widthContainer"), "auto");
356 rdef.setDataContainerHeight(dataContainerHeight);
357 rdef.setDataContainerWidth(dataContainerWidth);
358 rdef.setAllowSchedule(isAllowSchedule?"Y":"N");
362 String numDashCols = AppUtils.getRequestNvlValue(request, "numDashCols");
363 String reports1 = AppUtils.getRequestNvlValue(request, "reports1");
364 String reports2 = AppUtils.getRequestNvlValue(request, "reports2");
365 String reports3 = AppUtils.getRequestNvlValue(request, "reports3");
366 String reports4 = AppUtils.getRequestNvlValue(request, "reports4");
367 String repBgColor1 = AppUtils.getRequestNvlValue(request, "repBgColor1");
368 String repBgColor2 = AppUtils.getRequestNvlValue(request, "repBgColor2");
369 String repBgColor3 = AppUtils.getRequestNvlValue(request, "repBgColor3");
370 String repBgColor4 = AppUtils.getRequestNvlValue(request, "repBgColor4");
372 //List reports = rdef.getDashBoardReports();
373 rdef.setNumDashCols(numDashCols);
374 DashboardReports reportsList = new DashboardReportsImpl();
376 String reports[] = new String[]{reports1, reports2, reports3, reports4};
377 String repBgColors[] = new String[]{repBgColor1, repBgColor2, repBgColor3, repBgColor4};
378 for (int i = 0; i < reports.length; i++) {
379 Reports report = new ReportsImpl();
380 report.setReportId(reports[i]);
381 report.setBgcolor(repBgColors[i]);
382 reportsList.getReportsList().add(report);
387 rdef.setDashBoardReports(reportsList);
389 reportUpdated = true;
391 // reportUpdated = (!(reportName.equals(nvl(rdef.getReportName()))
392 // && reportDescr.equals(nvl(rdef.getReportDescr()))
393 // && reportType.equals(nvl(rdef.getReportType()))
394 // && numDashCols.equals(nvl(rdef.getNumDashCols()))));
397 if (rdef.getWizardSequence() instanceof WizardSequence)
398 rdef.generateWizardSequence(request);
402 if (AppUtils.getRequestNvlValue(request, "reportType").equals(AppConstants.RT_CROSSTAB) || rdef.getReportType().equals(AppConstants.RT_CROSSTAB)) {
404 String widthNo = AppUtils.getRequestNvlValue(request, "widthNo");
405 if(nvl(widthNo).endsWith("px"))
406 rdef.setWidthNoColumn(widthNo);
408 rdef.setWidthNoColumn(widthNo+"px");
411 String dataGridAlign = AppUtils.getRequestNvlValue(request, "dataGridAlign");
412 if(nvl(dataGridAlign).length()>0) {
413 rdef.setDataGridAlign(dataGridAlign);
415 rdef.setDataGridAlign("left");
418 String pdfImgLogo = AppUtils.getRequestNvlValue(request, "pdfImg");
419 if(nvl(pdfImgLogo).length()>0)
420 rdef.setPdfImg(pdfImgLogo);
422 rdef.setPdfImg(null);
423 String emptyMessage = AppUtils.getRequestNvlValue(request, "emptyMessage");
424 if(nvl(emptyMessage).length()>0)
425 rdef.setEmptyMessage(emptyMessage);
427 rdef.setEmptyMessage("");
428 String formHelp = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "formHelp"));
429 //String rDashboardType = nvl(AppUtils.getRequestValue(request, "showDashboardOptions"), "N");
430 //rdef.setDashboardType(rDashboardType.equals("Y"));
431 int excelDownloadSize = 500;
433 excelDownloadSize = Integer.parseInt(AppUtils.getRequestValue(request, "excelDownloadSize"));
434 } catch (NumberFormatException ex) {}
435 if(AppUtils.getRequestNvlValue(request, "excelDownloadSize").length()>0)
436 rdef.setMaxRowsInExcelDownload(Integer.parseInt(AppUtils.getRequestValue(request, "excelDownloadSize")));
437 if(AppUtils.getRequestNvlValue(request, "reportInNewWindow").length()>0)
438 reportsInNewWindow = AppUtils.getRequestNvlValue(request,"reportInNewWindow").equals("Y");
439 if(AppUtils.getRequestNvlValue(request, "hideFormFieldsAfterRun").length()>0)
440 hideFormFieldAfterRun = AppUtils.getRequestNvlValue(request,"hideFormFieldsAfterRun").equals("Y");
443 if(AppUtils.getRequestNvlValue(request, "displayFolderTree").length()>0)
444 rdef.setDisplayFolderTree(AppUtils.getRequestNvlValue(request,"displayFolderTree").equals("Y"));
446 rdef.setDisplayFolderTree(false);
447 String dataSource = AppUtils.getRequestNvlValue(request, "dataSource");
448 String dbType = Globals.getDBType();
449 String schemaSql = Globals.getRemoteDbSchemaSqlWithWhereClause();
450 schemaSql = schemaSql.replace("[schema_id]", dataSource);
453 ds = DbUtils.executeQuery(schemaSql);
455 String prefix = "", desc = "";
457 for (int i = 0; i < ds.getRowCount(); i++) {
458 dbType = ds.getItem(i, 2);
461 catch (Exception e) {}
463 int pageSize = Globals.getDefaultPageSize();
465 pageSize = Integer.parseInt(AppUtils.getRequestValue(request, "pageSize"));
466 } catch (NumberFormatException e) {
468 String rApproved = nvl(AppUtils.getRequestValue(request, "menuApproved"), "N");
470 String[] menuIDs = request.getParameterValues("menuID");
472 for (int i = 0; i < menuIDs.length; i++)
473 menuID += (menuID.length() == 0 ? "" : "|") + menuIDs[i];
477 // boolean additionalFieldsShown = AppUtils.getRequestNvlValue(request,
478 // "additionalFieldsShown").equals("Y");
479 boolean rRCSDisabled = AppUtils.getRequestNvlValue(request, "runtimeColSortDisabled").equals("Y");
480 String reportDefType = AppUtils.getRequestNvlValue(request, "reportDefType");
481 String dataContainerHeight = nvl(AppUtils.getRequestValue(request, "heightContainer"), "auto");
482 String dataContainerWidth = nvl(AppUtils.getRequestValue(request, "widthContainer"), "auto");
484 String displayOptions = nvl(AppUtils.getRequestValue(request, "hideForm"), "N")
485 + nvl(AppUtils.getRequestValue(request, "hideChart"), "N")
486 + nvl(AppUtils.getRequestValue(request, "hideData"), "N")
487 + nvl(AppUtils.getRequestValue(request, "hideBtns"), "N")
488 + nvl(AppUtils.getRequestValue(request, "hideMap"), "N")
489 + nvl(AppUtils.getRequestValue(request, "hideExcelIcons"), "N")
490 + nvl(AppUtils.getRequestValue(request, "hidePDFIcons"), "N");
491 /* StringBuffer dashboardOptions = new StringBuffer("");
492 dashboardOptions.append((nvl(AppUtils.getRequestValue(request, "hide"),"chart").equals("chart"))?"Y":"N");
493 dashboardOptions.append((nvl(AppUtils.getRequestValue(request, "hide"),"").equals("data"))?"Y":"N");
494 dashboardOptions.append((nvl(AppUtils.getRequestValue(request, "hideBtns"),"").equals("Y"))?"Y":"N");*/
496 String numFormCols = nvl(AppUtils.getRequestValue(request, "numFormCols"), "1");
497 String reportTitle = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportTitle"));
498 String reportSubTitle = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportSubTitle"));
499 String reportHeader = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportHeader"));
500 String reportFooter = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportFooter"));
502 int frozenColumns = 0;
504 frozenColumns = Integer.parseInt(AppUtils.getRequestValue(request, "frozenColumns"));
505 } catch (NumberFormatException ex) {
509 /* reportUpdated = (!(reportName.equals(nvl(rdef.getReportName()))))
510 && (!(reportDescr.equals(nvl(rdef.getReportDescr()))))
511 && (!(formHelp.equals(nvl(rdef.getFormHelpText()))))
512 && (!(reportType.equals(nvl(rdef.getReportType()))))
513 && (pageSize != rdef.getPageSize()) &&
514 // rPublic.equals(rdef.isPublic()?"Y":"N")&&
515 (!(menuID.equals(nvl(rdef.getMenuID()))))
516 && (!(rApproved.equals(rdef.isMenuApproved()))) && (additionalFieldsShown ? ((!(rRCSDisabled
517 .equals(rdef.isRuntimeColSortDisabled())))
518 && (!(displayOptions.equals(nvl(rdef.getDisplayOptions()))))
519 && (!(dashboardOptions.equals(nvl(rdef.getDashboardOptions()))))
520 && (!(numFormCols.equals(nvl(rdef.getNumFormCols()))))
521 && (!(reportTitle.equals(nvl(rdef.getReportTitle()))))
522 && (!(reportSubTitle.equals(nvl(rdef.getReportSubTitle()))))
523 && (!(reportHeader.equals(nvl(rdef.getReportHeader())))) && (!(reportFooter
524 .equals(nvl(rdef.getReportFooter()))))&& (reportsInNewWindow != rdef.isReportInNewWindow())):true);
526 /* reportUpdated = rRCSDisabled ==(rdef.isRuntimeColSortDisabled()
527 && displayOptions.equals(nvl(rdef.getDisplayOptions()))
528 //&& dashboardOptions.equals(nvl(rdef.getDashboardOptions()))
529 && numFormCols.equals(nvl(rdef.getNumFormCols()))
530 && reportTitle.equals(nvl(rdef.getReportTitle()))
531 && reportSubTitle.equals(nvl(rdef.getReportSubTitle()))
532 && reportHeader.equals(nvl(rdef.getReportHeader()))
533 && reportsInNewWindow == rdef.isReportInNewWindow()
534 && reportFooter.equals(nvl(rdef.getReportFooter())))
538 /*reportUpdated = (!(reportName.equals(nvl(rdef.getReportName()))
539 && reportDescr.equals(nvl(rdef.getReportDescr()))
540 && formHelp.equals(nvl(rdef.getFormHelpText()))
541 && reportType.equals(nvl(rdef.getReportType()))
542 && (pageSize == rdef.getPageSize())
543 && excelDownloadSize == rdef.getMaxRowsInExcelDownload()
544 && reportsInNewWindow == rdef.isReportInNewWindow()
545 && displayOptions.equals(rdef.getDisplayOptions())
546 && dataContainerHeight.equals(rdef.getDataContainerHeight())
547 && dataContainerWidth.equals(rdef.getDataContainerWidth())
548 && (isAllowSchedule ==(rdef.isAllowSchedule()))
549 // rPublic.equals(rdef.isPublic()?"Y":"N")&&
550 && menuID.equals(nvl(rdef.getMenuID()))
551 && rApproved.equals(rdef.isMenuApproved() ? "Y" : "N") && (rRCSDisabled
552 == ((rdef.isRuntimeColSortDisabled())
553 && displayOptions.equals(nvl(rdef.getDisplayOptions()))
554 //&& dashboardOptions.equals(nvl(rdef.getDashboardOptions()))
555 && numFormCols.equals(nvl(rdef.getNumFormCols()))
556 && reportTitle.equals(nvl(rdef.getReportTitle()))
557 && reportSubTitle.equals(nvl(rdef.getReportSubTitle()))
558 && isOneTimeScheduleAllowed.equals(nvl(rdef.getIsOneTimeScheduleAllowed()))
559 && isHourlyScheduleAllowed.equals(nvl(rdef.getIsHourlyScheduleAllowed()))
560 && isDailyScheduleAllowed.equals(nvl(rdef.getIsDailyScheduleAllowed()))
561 && isDailyMFScheduleAllowed.equals(nvl(rdef.getIsDailyMFScheduleAllowed()))
562 && isWeeklyScheduleAllowed.equals(nvl(rdef.getIsWeeklyScheduleAllowed()))
563 && isMonthlyScheduleAllowed.equals(nvl(rdef.getIsMonthlyScheduleAllowed()))
564 && reportHeader.equals(nvl(rdef.getReportHeader())) && reportFooter
565 .equals(nvl(rdef.getReportFooter()))))
567 rdef.setReportName(reportName);
568 rdef.setReportDescr(reportDescr);
569 rdef.setFormHelpText(formHelp);
570 rdef.setReportType(reportType);
571 rdef.setPageSize(pageSize);
572 rdef.setDBInfo(dataSource);
573 rdef.setDBType(dbType);
574 rdef.setDisplayOptions(displayOptions);
575 rdef.setDataContainerHeight(dataContainerHeight);
576 rdef.setDataContainerWidth(dataContainerWidth);
577 rdef.setAllowSchedule(isAllowSchedule?"Y":"N");
578 rdef.setMultiGroupColumn(isColumnGroup?"Y":"N");
579 rdef.setTopDown(isTopDown?"Y":"N");
580 rdef.setSizedByContent(isSizedByContent?"Y":"N");
581 // rdef.setPublic(rPublic.equals("Y"));
582 rdef.setMenuID(menuID);
583 rdef.setMenuApproved(rApproved.equals("Y"));
584 if (reportDefType.length() > 0)
585 rdef.setReportDefType(reportDefType);
586 /* if(rdef.isDashboardType()) {
587 rdef.setDashboardOptions(dashboardOptions.toString());
589 rdef.setHideFormFieldAfterRun(hideFormFieldAfterRun);
590 rdef.setReportInNewWindow(reportsInNewWindow);
591 rdef.setRuntimeColSortDisabled(rRCSDisabled);
592 rdef.setNumFormCols(numFormCols);
593 rdef.setReportTitle(reportTitle);
594 rdef.setReportSubTitle(reportSubTitle);
595 rdef.setReportHeader(reportHeader);
596 rdef.setReportFooter(reportFooter);
597 rdef.setIsOneTimeScheduleAllowed(isOneTimeScheduleAllowed);
598 rdef.setIsHourlyScheduleAllowed(isHourlyScheduleAllowed);
599 rdef.setIsDailyScheduleAllowed(isDailyScheduleAllowed);
600 rdef.setIsDailyMFScheduleAllowed(isDailyMFScheduleAllowed);
601 rdef.setIsWeeklyScheduleAllowed(isWeeklyScheduleAllowed);
602 rdef.setIsMonthlyScheduleAllowed(isMonthlyScheduleAllowed);
603 rdef.setFrozenColumns(frozenColumns);
607 if (rdef.getWizardSequence() instanceof WizardSequence)
608 rdef.generateWizardSequence(request);
612 * if(formHelp.length()>255) formHelp = formHelp.substring(0, 255);
616 // String rPublic = nvl(AppUtils.getRequestValue(request, "public"),
618 // String menuID = AppUtils.getRequestNvlValue(request, "menuID");
620 // boolean dashboardOptionsShown = AppUtils.getRequestNvlValue(request,
621 // "dashboardOptionsShown").equals("Y");
623 reportUpdated = true;
625 if (rdef.getReportID().equals("-1"))
626 // Always need to persist new report - in case it is a copy
627 reportUpdated = true;
629 return reportUpdated;
630 } // processDefinition
632 private boolean processTableAdd(HttpServletRequest request) throws Exception {
633 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
634 AppConstants.SI_REPORT_DEFINITION);
636 String tableName = AppUtils.getRequestNvlValue(request, "tableName").toUpperCase();
637 String tableId = rdef.getUniqueTableId(tableName);
639 String joinTableExpr = null;
640 String joinTableId = null;
642 DataSourceType joinTable =
643 rdef.getTableById(AppUtils.getRequestValue(request, "joinTableName"));
644 if (joinTable != null) {
645 String joinTableName = joinTable.getTableName();
646 joinTableId = joinTable.getTableId();
648 String joinExpr = AppUtils.getRequestNvlValue(request, "joinExpr").toUpperCase();
650 joinTableExpr = joinExpr.replaceAll("\\["+tableName+"\\]", tableId);
651 joinTableExpr = joinTableExpr.replaceAll("\\["+joinTableName+"\\]", joinTableId);
652 // debugLogger.debug("joinExpr : "+joinExpr+"\njoinTableExpr : "+ joinTableExpr);
655 rdef.addDataSourceType(new ObjectFactory(), tableId, tableName, AppUtils
656 .getRequestNvlValue(request, "tablePK"), AppUtils.getRequestNvlValue(request,
657 "displayName"), joinTableId, joinTableExpr, null);
659 rdef.setOuterJoin(rdef.getTableById(tableId), AppUtils.getRequestNvlValue(request,
661 rdef.resetCache(true);
666 private boolean processTableEdit(HttpServletRequest request) throws Exception {
667 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
668 AppConstants.SI_REPORT_DEFINITION);
670 DataSourceType dst = rdef.getTableById(AppUtils.getRequestNvlValue(request,
671 AppConstants.RI_DETAIL_ID));
673 String displayName = XSSFilter.filterRequest(AppUtils.getRequestNvlValue(request, "displayName"));
674 String outerJoin = AppUtils.getRequestNvlValue(request, "outerJoin");
676 String tableName = AppUtils.getRequestNvlValue(request, "tableName").toUpperCase();
677 String joinTableId = AppUtils.getRequestNvlValue(request, "joinTableName");
679 String joinExpr = AppUtils.getRequestNvlValue(request, "joinExpr").toUpperCase();
681 String joinTableExpr = null;
682 if(joinExpr.length()!=0){
683 joinTableExpr = joinExpr.replaceAll("\\["+tableName+"\\]", rdef.getTableByDBName(tableName).getTableId());
684 joinTableExpr = joinTableExpr.replaceAll("\\["+rdef.getTableById(joinTableId).getTableName().toUpperCase()+"\\]", joinTableId);
685 dst.setRefDefinition(joinTableExpr);
687 boolean reportUpdated = (!displayName.equals(nvl(dst.getDisplayName())) ||
688 !outerJoin.equals(rdef.getOuterJoinType(dst)) ||
689 !(joinExpr.length()==0));
691 dst.setDisplayName(displayName);
692 rdef.setOuterJoin(dst, outerJoin);
694 rdef.resetCache(true);
696 return true; // reportUpdated;
697 } // processTableEdit
700 private boolean processTableDelete(HttpServletRequest request) throws Exception {
701 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
702 AppConstants.SI_REPORT_DEFINITION);
703 rdef.deleteDataSourceType(AppUtils.getRequestNvlValue(request,
704 AppConstants.RI_DETAIL_ID));
706 } // processTableDelete
708 private boolean processColumnAddEdit(HttpServletRequest request, boolean isEdit)
713 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
714 AppConstants.SI_REPORT_DEFINITION);
715 DataColumnType currColumn = null;
717 String tableId = null;
718 String colName = null;
719 String dataType = null;
721 currColumn = rdef.getColumnById(AppUtils.getRequestNvlValue(request,
722 AppConstants.RI_DETAIL_ID));
724 if(currColumn!=null) {
725 tableId = currColumn.getTableId();
726 colName = currColumn.getDbColName(); // currColumn.getColName();
727 dataType = currColumn.getDbColType();
730 String colData = AppUtils.getRequestNvlValue(request, "columnDetails");
731 if(nvl(colData).length()>0) {
732 tableId = colData.substring(0, colData.indexOf('|'));
733 colName = colData.substring(tableId.length() + 1,
734 colData.indexOf('|', tableId.length() + 1)).toUpperCase();
735 dataType = colData.substring(tableId.length() + colName.length() + 2);
739 String exprFormula = AppUtils.getRequestNvlValue(request, "exprFormula");
741 String colNameValue = null;
742 if (exprFormula.length() > 0)
743 if (exprFormula.equals("_exprText_"))
744 colNameValue = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestValue(request, "exprText"));
745 else if (exprFormula.equals("COUNT(*)"))
746 colNameValue = exprFormula;
748 colNameValue = exprFormula + " " + colName + ")";
750 colNameValue = colName;
752 int displayWidth = -1;
754 displayWidth = Integer.parseInt(AppUtils.getRequestValue(request, "displayWidth"));
755 } catch (NumberFormatException e) {
758 String sColId = isEdit ? currColumn.getColId() : (nvl(colName).length()>0?rdef.getUniqueColumnId(colName):null);
759 String drillDownParams = AppUtils.getRequestValue(request, "drillDownParams");
760 if (drillDownParams != null) {
761 // Replacing references to [this] with [col_id]
762 while (drillDownParams.indexOf("[this]") >= 0) {
763 int startIdx = drillDownParams.indexOf("[this]");
764 StringBuffer sb = new StringBuffer();
767 sb.append(drillDownParams.substring(0, startIdx));
768 sb.append("[" + sColId + "]");
769 if (startIdx + 6 < drillDownParams.length() - 1)
770 sb.append(drillDownParams.substring(startIdx + 5));
771 drillDownParams = sb.toString();
775 String crossTabValue = null;
776 boolean isVisible = AppUtils.getRequestFlag(request, "visible");
777 boolean isSortable = AppUtils.getRequestFlag(request, "sortable");
778 String nowrap = AppUtils.getRequestNvlValue(request, "nowrap");
781 indentation = Integer.parseInt(AppUtils.getRequestNvlValue(request, "indentation"));
782 }catch (NumberFormatException e) {
784 String dependsOnFormField = AppUtils.getRequestNvlValue(request, "dependsOnFormField");
785 boolean isGroupBreak = AppUtils.getRequestFlag(request, "groupBreak");
786 String groupByPosStr = AppUtils.nvls(AppUtils.getRequestValue(request, "groupByPos"), "0");
787 int groupByPos = Integer.parseInt(groupByPosStr);
788 currColumn.setGroupByPos(groupByPos);
791 String subTotalCustomText = AppUtils.nvls(AppUtils.getRequestValue(request, "subTotalCustomText"), "Sub Total");
792 currColumn.setSubTotalCustomText(subTotalCustomText);
794 boolean hideRepeatedKey = AppUtils.getRequestFlag(request, "hideRepeatedKeys");
795 currColumn.setHideRepeatedKey(hideRepeatedKey);
798 String displayTotal = AppUtils.getRequestNvlValue(request, "displayTotal");
799 String widthInPxls = AppUtils.getRequestNvlValue(request, "widthInPxls");
801 if (rdef.getReportType().equals(AppConstants.RT_CROSSTAB)) {
805 crossTabValue = AppUtils.getRequestValue(request, "crossTabValue");
806 isVisible = nvl(crossTabValue).equals(AppConstants.CV_ROW)
807 || nvl(crossTabValue).equals(AppConstants.CV_COLUMN)
808 || nvl(crossTabValue).equals(AppConstants.CV_VALUE);
809 isGroupBreak = nvl(crossTabValue).equals(AppConstants.CV_ROW)
810 || nvl(crossTabValue).equals(AppConstants.CV_COLUMN);
812 if (nvl(crossTabValue).equals(AppConstants.CV_VALUE))
814 + AppUtils.getRequestNvlValue(request, "displayTotalPerRow");
819 String displayName = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "displayName"));
820 String colType = AppUtils.getRequestNvlValue(request, "colType");
821 String displayFormat = AppUtils.getRequestNvlValue(request, "displayFormat");
824 if(colType.equals(AppConstants.CT_HYPERLINK)) {
825 String hyperlinkURL = AppUtils.getRequestValue(request, "hyperlinkURL");
826 currColumn.setHyperlinkURL(hyperlinkURL);
827 String anchor = AppUtils.getRequestValue(request, "anchor");
828 currColumn.setHyperlinkType(anchor);
829 if(anchor.equals("IMAGE")) {
830 String actionImg = AppUtils.getRequestValue(request, "actionImg");
831 currColumn.setActionImg(actionImg);
837 String displayAlign = AppUtils.getRequestValue(request, "displayAlign");
838 String displayHeaderAlign = AppUtils.getRequestValue(request, "displayHeaderAlign");
839 String drillDownURL = AppUtils.getRequestValue(request, "drillDownURL");
840 String drillDownSuppress = AppUtils.getRequestValue(request, "drillDownSuppress");
841 boolean drillDownPopUp = AppUtils.getRequestFlag (request, "drillDownPopUp");
842 String semaphoreId = AppUtils.getRequestNvlValue(request, "semaphore");
843 String semaphoreType = AppUtils.getRequestNvlValue(request, "semaphoreTypeHidden");
845 String levelStr = AppUtils.getRequestNvlValue(request, "multiGroupColLevel");
846 String startColGroup = AppUtils.getRequestNvlValue(request, "startMultiGroup");
847 String colGroupColSpan = AppUtils.getRequestNvlValue(request, "colspan");
850 level = Integer.parseInt(levelStr);
851 }catch (NumberFormatException ex) {
854 int startColGroupInt = 0;
855 int colGroupColSpanInt = 0;
858 //startColGroupInt = Integer.parseInt(startColGroup);
859 colGroupColSpanInt = Integer.parseInt(colGroupColSpan);
860 } catch (NumberFormatException ex) {
864 currColumn.setLevel(level);
866 currColumn.setStart(startColGroupInt);
867 currColumn.setColspan(colGroupColSpanInt);
870 String targetColumnId = (semaphoreType.indexOf("|")!= -1 ? semaphoreType.substring(semaphoreType.indexOf("|")+1):"");
871 DataColumnType targetColumn = rdef.getColumnById(targetColumnId);
873 SemaphoreType semaphore = rdef.getSemaphoreById(semaphoreId);
874 rdef.deleteSemaphore(semaphore);
875 if(nvl(semaphoreType).length() > 0 && semaphoreType.indexOf("|")!=-1)
876 semaphore.setSemaphoreType(semaphoreType.substring(0,semaphoreType.indexOf("|")));
877 if(semaphore!=null) {
878 semaphore.setComment(currColumn.getColId());
879 if(nvl(semaphoreType).length() > 0)
880 semaphore.setTarget(targetColumnId.length()>0? targetColumnId: "");
881 rdef.setSemaphore(semaphore);
886 if(nvl(widthInPxls).length()>0) {
887 if(nvl(widthInPxls).endsWith("px"))
888 currColumn.setDisplayWidthInPxls(widthInPxls);
890 currColumn.setDisplayWidthInPxls(widthInPxls+"px");
892 currColumn.setDisplayWidthInPxls("");
895 currColumn.setCrossTabValue(crossTabValue);
896 currColumn.setDependsOnFormField(dependsOnFormField);
897 currColumn.setDisplayName(displayName);
898 //currColumn.setOriginalDisplayName(displayName);
900 if (displayWidth > 0)
901 currColumn.setDisplayWidth(displayWidth);
902 currColumn.setDisplayAlignment(displayAlign);
903 currColumn.setDisplayHeaderAlignment(displayHeaderAlign);
904 currColumn.setDrillDownURL(drillDownURL);
905 currColumn.setDrillDownParams(drillDownParams);
906 currColumn.setDrillDownType(drillDownSuppress);
907 currColumn.setDrillinPoPUp(drillDownPopUp);
909 currColumn.setIndentation(indentation);
911 rdef.setDrillDownURLInPopupPresent(true);
913 /*if(targetColumn!=null) {
914 currColumn.setSemaphoreId(null);
915 targetColumn.setSemaphoreId(semaphoreId);
917 currColumn.setSemaphoreId(semaphoreId);
918 currColumn.setGroupBreak(isGroupBreak);
919 logger.debug(EELFLoggerDelegate.debugLogger, (" ------------ Display Total ---------- "+ displayTotal));
920 currColumn.setDisplayTotal(displayTotal);
921 //if (currColumn.getDrillDownURL() == null || currColumn.getDrillDownURL().length() == 0)
922 currColumn.setVisible(isVisible);
923 currColumn.setIsSortable(isSortable);
924 currColumn.setNowrap(nowrap);
926 // currColumn.setVisible(true);
927 if (rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED)) {
929 currColumn.setColType(colType);
930 displayFormat = AppUtils.getRequestValue(request, "colDataFormat");
931 if (displayFormat != null){
932 currColumn.setColFormat(displayFormat);
934 if(colType!=null && colType.equals(AppConstants.CT_DATE)) {
935 boolean enhancedPagination = AppUtils.getRequestFlag(request, "enhancedPagination");
936 currColumn.setEnhancedPagination(enhancedPagination);
939 if (!rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED)) {
940 currColumn.setColName(colNameValue);
941 if (displayFormat != null)
942 currColumn.setColFormat(displayFormat);
943 //currColumn.setVisible(isVisible);
944 currColumn.setCalculated(exprFormula.length() > 0);
946 rdef.adjustColumnType(currColumn);
949 rdef.resetCache(true);
951 currColumn = rdef.addDataColumnType(new ObjectFactory(), sColId, tableId, colName,
952 crossTabValue, colNameValue, displayName, displayWidth, displayAlign, rdef
953 .getAllColumns().size() + 1, isVisible,
954 (exprFormula.length() > 0), adjustDataType(dataType), displayFormat,
955 isGroupBreak, -1, null, displayTotal, null, -1, drillDownSuppress,
956 drillDownURL, drillDownParams, semaphoreId, null);
958 if (rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED))
959 rdef.setColumnNoParseDateFlag(currColumn, AppUtils.getRequestFlag(request,
961 if(nvl(displayName).length()>0)
965 } // processColumnAddEdit
967 private boolean processColumnAddMulti(HttpServletRequest request) throws Exception {
968 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
969 AppConstants.SI_REPORT_DEFINITION);
971 List reportCols = rdef.getAllColumns();
972 int nCol = reportCols.size() + 1;
974 String[] addColumn = request.getParameterValues("addColumn");
975 String[] tableId = request.getParameterValues("tableId");
976 String[] columnName = request.getParameterValues("columnName");
977 String[] columnType = request.getParameterValues("columnType");
978 String[] displayName = request.getParameterValues("displayName");
980 for (int i = 0; i < addColumn.length; i++)
981 if (addColumn[i].equals("Y")) {
983 String uniqueDisplayName = displayName[i];
984 boolean isUnique = true;
987 for (Iterator iter = reportCols.iterator(); iter.hasNext();)
988 if (uniqueDisplayName.equals(((DataColumnType) iter.next())
989 .getDisplayName())) {
991 uniqueDisplayName = displayName[i] + (j++);
999 rdef.getUniqueColumnId(columnName[i]),
1010 adjustDataType(columnType[i]),
1011 (columnType[i].equals(AppConstants.CT_DATE) ? AppConstants.DEFAULT_DATE_FORMAT
1012 : null), false, -1, null, null, null, -1, null, null,
1017 } // processColumnAddMulti
1019 private boolean processColumnOrderAll(HttpServletRequest request) throws Exception {
1020 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1021 AppConstants.SI_REPORT_DEFINITION);
1023 String[] colId = request.getParameterValues("colId");
1024 String[] colOrder = request.getParameterValues("colOrder");
1026 boolean reportUpdated = false;
1027 for (int i = 0; i < colId.length; i++) {
1028 DataColumnType dct = rdef.getColumnById(nvl(colId[i]));
1034 iColOrder = Integer.parseInt(colOrder[i]);
1035 } catch (NumberFormatException e) {
1038 if (iColOrder > 0) {
1039 dct.setOrderSeq(iColOrder);
1040 reportUpdated = true;
1044 if (reportUpdated) {
1045 List reportCols = rdef.getAllColumns();
1046 Collections.sort(reportCols, new OrderSeqComparator());
1049 for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
1050 DataColumnType dct = (DataColumnType) iter.next();
1051 dct.setOrderSeq(iOrder++);
1054 rdef.resetCache(false);
1057 return reportUpdated;
1058 } // processColumnOrderAll
1060 private boolean processColumnDelete(HttpServletRequest request) throws Exception {
1061 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1062 AppConstants.SI_REPORT_DEFINITION);
1063 rdef.deleteDataColumnType(AppUtils.getRequestNvlValue(request,
1064 AppConstants.RI_DETAIL_ID));
1066 } // processColumnDelete
1068 private boolean processColumnMoveUp(HttpServletRequest request) throws Exception {
1069 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1070 AppConstants.SI_REPORT_DEFINITION);
1071 rdef.shiftColumnOrderUp(AppUtils
1072 .getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
1074 } // processColumnMoveUp
1076 private boolean processColumnMoveDown(HttpServletRequest request) throws Exception {
1077 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1078 AppConstants.SI_REPORT_DEFINITION);
1079 rdef.shiftColumnOrderDown(AppUtils.getRequestNvlValue(request,
1080 AppConstants.RI_DETAIL_ID));
1082 } // processColumnMoveDown
1084 private boolean processFormFieldAddEdit(HttpServletRequest request, boolean isEdit,
1085 String action) throws Exception {
1086 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1087 AppConstants.SI_REPORT_DEFINITION);
1089 String fieldName = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "fieldName"));
1090 String multiSelectSize = "0";
1091 String colId = AppUtils.getRequestNvlValue(request, "fieldColId");
1092 if (rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED)) {
1093 String displayFormat = AppUtils.getRequestNvlValue(request, "displayFormat");
1094 if (displayFormat.length() > 0)
1095 colId += "|" + displayFormat;
1097 String fieldType = AppUtils.getRequestNvlValue(request, "fieldType");
1098 String validation = AppUtils.getRequestNvlValue(request, "validation");
1099 String mandatory = nvl(AppUtils.getRequestValue(request, "mandatory"), "N");
1100 String defaultValue = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "defaultValue"));
1101 String fieldHelp = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "fieldHelp"));
1102 String fieldSQL = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "fieldSQL"));
1103 String fieldDefaultSQL = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "fieldDefaultSQL"));
1104 String visible = nvl(AppUtils.getRequestValue(request, "visible"),"Y");
1105 String dependsOn = nvl(AppUtils.getRequestValue(request, "dependsOn"),"");
1106 String rangeStartDate = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "rangeStartDate"));
1107 String rangeEndDate = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "rangeEndDate"));
1108 String rangeStartDateSQL = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "rangeStartDateSQL"));
1109 String rangeEndDateSQL = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "rangeEndDateSQL"));
1110 boolean isGroupFormField = AppUtils.getRequestFlag(request,"isGroupFormField");
1112 Calendar start = null;
1113 Calendar end = null;
1114 if (AppUtils.nvl(rangeStartDate).length()>0){
1115 SimpleDateFormat dtf = new SimpleDateFormat("MM/dd/yyyy");
1116 start = Calendar.getInstance();
1117 start.setTime(dtf.parse(rangeStartDate));
1119 if (AppUtils.nvl(rangeEndDate).length()>0){
1120 SimpleDateFormat dtf = new SimpleDateFormat("MM/dd/yyyy");
1121 end = Calendar.getInstance();
1122 end.setTime(dtf.parse(rangeEndDate));
1124 * if(fieldHelp.length()>255) fieldHelp = fieldHelp.substring(0, 255);
1127 boolean reportUpdated = false;
1129 FormFieldType currField = null;
1131 String fieldId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID);
1133 currField = rdef.getFormFieldById(fieldId);
1134 if (currField != null && nvl(fieldName).length()>0) {
1135 reportUpdated = (!(fieldName.equals(nvl(currField.getFieldName()))
1136 && colId.equals(nvl(currField.getColId()))
1137 && fieldType.equals(nvl(currField.getFieldType()))
1138 && validation.equals(nvl(currField.getValidationType()))
1139 && mandatory.equals(nvl(currField.getMandatory(), "N"))
1140 && defaultValue.equals(nvl(currField.getDefaultValue()))
1141 && fieldSQL.equals(nvl(currField.getFieldSQL()))
1142 && fieldDefaultSQL.equals(nvl(currField.getFieldDefaultSQL()))
1143 && dependsOn.equals(nvl(currField.getDependsOn(), "N"))
1144 && (start == null || (start != null && currField.getRangeStartDate() == null) || (start.equals(currField.getRangeStartDate())))
1145 && (end == null || (end != null && currField.getRangeEndDate() == null) || (end.equals(currField.getRangeEndDate())))
1146 && rangeStartDateSQL.equals(nvl(currField.getRangeStartDateSQL()))
1147 && rangeEndDateSQL.equals(nvl(currField.getRangeEndDateSQL()))
1148 && visible.equals(nvl(currField.getVisible(), "Y"))
1149 && isGroupFormField == currField.isGroupFormField()
1150 && fieldHelp.equals(nvl(currField.getComment()))));
1152 rdef.replaceFormFieldReferences("[" + currField.getFieldName() + "]", "["
1155 currField.setFieldName(fieldName);
1156 currField.setColId(colId);
1157 currField.setFieldType(fieldType);
1158 currField.setValidationType(validation);
1159 currField.setMandatory(mandatory);
1160 currField.setDefaultValue(defaultValue);
1161 currField.setFieldSQL(fieldSQL);
1162 currField.setFieldDefaultSQL(fieldDefaultSQL);
1163 currField.setComment(fieldHelp);
1164 currField.setVisible(visible);
1165 currField.setDependsOn(dependsOn);
1168 currField.setRangeStartDate(DatatypeFactory.newInstance()
1169 .newXMLGregorianCalendar(start.YEAR, start.MONTH, start.DAY_OF_WEEK, start.HOUR, start.MINUTE, start.SECOND, start.MILLISECOND, start.ZONE_OFFSET));
1171 currField.setRangeStartDate(null);
1174 currField.setRangeEndDate(DatatypeFactory.newInstance()
1175 .newXMLGregorianCalendar(end.YEAR, end.MONTH, end.DAY_OF_WEEK, end.HOUR, end.MINUTE, end.SECOND, end.MILLISECOND, end.ZONE_OFFSET));
1177 currField.setRangeEndDate(null);
1179 /*currField.setRangeEndDate(DatatypeFactory.newInstance()
1180 .newXMLGregorianCalendar(end));*/
1181 } catch (DatatypeConfigurationException ex) {
1185 currField.setRangeStartDateSQL(rangeStartDateSQL);
1186 currField.setRangeEndDateSQL(rangeEndDateSQL);
1187 currField.setGroupFormField(isGroupFormField);
1188 if(fieldType.equals(FormField.FFT_LIST_MULTI)) {
1189 multiSelectSize = AppUtils.getRequestNvlValue(request, "multiSelectListSize");
1190 currField.setMultiSelectListSize(multiSelectSize);
1196 reportUpdated = true;
1198 currField = rdef.addFormFieldType(new ObjectFactory(), fieldName, colId,
1199 fieldType, validation, mandatory, defaultValue, fieldSQL, fieldHelp, start, end, rangeStartDateSQL, rangeEndDateSQL);
1201 request.setAttribute(AppConstants.RI_DETAIL_ID, currField.getFieldId());
1204 if (action.equals(AppConstants.WA_ADD_USER)) {
1205 reportUpdated = true;
1206 rdef.addFormFieldPredefinedValue(new ObjectFactory(), currField, XSSFilter.filterRequestOnlyScript(AppUtils
1207 .getRequestNvlValue(request, "newPredefinedValue")));
1208 } else if (action.equals(AppConstants.WA_DELETE_USER)) {
1209 reportUpdated = true;
1210 rdef.deleteFormFieldPredefinedValue(currField, AppUtils.getRequestNvlValue(
1211 request, "delPredefinedValue"));
1214 return reportUpdated;
1215 } // processFormFieldAddEdit
1217 private boolean processFormFieldDelete(HttpServletRequest request) throws Exception {
1218 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1219 AppConstants.SI_REPORT_DEFINITION);
1221 String fieldId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID);
1222 rdef.deleteFormField(fieldId);
1225 } // processFormFieldDelete
1227 private boolean processFormFieldMoveUp(HttpServletRequest request) throws Exception {
1228 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1229 AppConstants.SI_REPORT_DEFINITION);
1230 rdef.shiftFormFieldUp(AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
1232 } // processFormFieldMoveUp
1234 private boolean processFormFieldMoveDown(HttpServletRequest request) throws Exception {
1235 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1236 AppConstants.SI_REPORT_DEFINITION);
1237 rdef.shiftFormFieldDown(AppUtils
1238 .getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
1240 } // processFormFieldMoveDown
1242 private boolean processFormFieldBlank(HttpServletRequest request) throws Exception {
1243 boolean reportUpdated = false;
1244 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1245 AppConstants.SI_REPORT_DEFINITION);
1246 reportUpdated = true;
1247 rdef.addFormFieldBlank(new ObjectFactory());
1249 } // processFormFieldMoveDown
1251 //processFormFieldInfoBar
1252 private boolean processFormFieldInfoBar(HttpServletRequest request) throws Exception {
1253 boolean reportUpdated = false;
1254 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1255 AppConstants.SI_REPORT_DEFINITION);
1256 reportUpdated = true;
1257 rdef.addCustomizedTextForParameters(XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "blueBarField")));
1259 } // processFormFieldMoveDown
1262 private boolean processForecasting(HttpServletRequest request, String action) throws Exception {
1263 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1264 AppConstants.SI_REPORT_DEFINITION);
1266 if(rdef.getDataminingOptions()==null)
1267 rdef.addDataminingOptions(new ObjectFactory());
1269 String classifiers = AppUtils.getRequestNvlValue(request, "classifiers");
1270 rdef.setClassifier(classifiers);
1271 String dateAttrColId = AppUtils.getRequestNvlValue(request, "timeAttribute");
1272 String timeFormat = AppUtils.getRequestNvlValue(request, "timeFormat");
1273 if(timeFormat.equals("Default")) timeFormat = "yyyy-MM-dd HH:mm:ss";
1274 String forecastingPeriod = AppUtils.getRequestNvlValue(request, "forecastingPeriod");
1276 String[] forecastCols = request.getParameterValues("forecastCol");
1277 List reportCols = rdef.getAllColumns();
1278 DataColumnType dct = null;
1279 Iterator iter = null;
1283 if(dateAttrColId != null) {
1284 for(iter=reportCols.iterator(); iter.hasNext(); ) {
1285 dct = (DataColumnType) iter.next();
1286 if(dct.getColId().equals(dateAttrColId)) {
1287 dct.setDataMiningCol(AppConstants.DM_DATE_ATTR);
1288 if(timeFormat!=null) rdef.setForecastingTimeFormat(timeFormat);
1294 if(forecastCols != null) {
1295 for (int i = 0; i < forecastCols.length; i++) {
1296 for(iter=reportCols.iterator(); iter.hasNext(); ) {
1297 dct = (DataColumnType) iter.next();
1298 if(dct.getColId().equals(forecastCols[i])) {
1299 dct.setDataMiningCol(AppConstants.DM_FORECASTING_ATTR);
1303 rdef.setForecastingPeriod(forecastingPeriod);
1305 boolean reportUpdated = true;
1307 return reportUpdated;
1308 } // processForecasting
1311 private boolean processFilterAddEdit(HttpServletRequest request, boolean isEdit)
1313 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1314 AppConstants.SI_REPORT_DEFINITION);
1316 String colId = AppUtils.getRequestNvlValue(request, "filterColId");
1317 String filterExpr = AppUtils.getRequestNvlValue(request, "filterExpr");
1318 String argType = (filterExpr.equals("IS NULL") || filterExpr.equals("IS NOT NULL")) ? null
1319 : AppUtils.getRequestNvlValue(request, "argType");
1320 String argValue = (filterExpr.equals("IS NULL") || filterExpr.equals("IS NOT NULL")) ? null
1321 : AppUtils.getRequestNvlValue(request, "argValue");
1323 if (nvl(argType).equals(AppConstants.AT_COLUMN)) {
1324 List reportCols = rdef.getAllColumns();
1325 for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
1326 DataColumnType dct = (DataColumnType) iter.next();
1327 if (argValue.equals("[" + dct.getDisplayName() + "]")) {
1328 argValue = dct.getColId();
1334 if (nvl(argType).equals(AppConstants.AT_VALUE)
1335 && (!nvl(argValue).equals(AppConstants.FILTER_MAX_VALUE))
1336 && (!nvl(argValue).equals(AppConstants.FILTER_MIN_VALUE))) {
1337 // Validating the value by type
1338 DataColumnType currColumn = rdef.getColumnById(colId);
1339 String currColType = currColumn.getColType();
1342 String s_sql = Globals.getProcessFilterAddEdit();
1343 s_sql = s_sql.replace("[argValue]", argValue);
1344 /*DataSet ds = DbUtils.executeQuery("SELECT "
1345 + (currColType.equals(AppConstants.CT_NUMBER) ? ("TO_NUMBER('"
1347 : (currColType.equals(AppConstants.CT_DATE) ? ("TO_DATE('"
1350 + nvl(currColumn.getColFormat(),
1351 AppConstants.DEFAULT_DATE_FORMAT) + "')")
1352 : ("'" + argValue + "'"))) + " FROM dual");*/
1354 DataSet ds = DbUtils.executeQuery("SELECT "
1355 + (currColType.equals(AppConstants.CT_NUMBER) ? ("TO_NUMBER('"
1357 : (currColType.equals(AppConstants.CT_DATE) ? ("TO_DATE('"
1360 + nvl(currColumn.getColFormat(),
1361 AppConstants.DEFAULT_DATE_FORMAT) + "')")
1363 } catch (Exception e) {
1364 throw new ValidationException(
1366 + (currColType.equals(AppConstants.CT_NUMBER) ? "Invalid number"
1367 : (currColType.equals(AppConstants.CT_DATE) ? ("Invalid date<br>Expected date format " + nvl(
1368 currColumn.getColFormat(),
1369 AppConstants.DEFAULT_DATE_FORMAT))
1370 : "Invalid value<br>Possible reason: use of single quotes"))
1371 + "<!--" + e.getMessage() + "--><br>Value: " + argValue);
1378 filterPos = Integer.parseInt(AppUtils.getRequestValue(request, "filterPos"));
1379 } catch (NumberFormatException e) {
1382 ColFilterType currFilter = rdef.getFilterById(colId, filterPos);
1383 if (currFilter != null) {
1384 currFilter.setJoinCondition(AppUtils.getRequestValue(request, "filterJoin"));
1385 currFilter.setOpenBrackets(AppUtils.getRequestValue(request, "openBrackets"));
1386 currFilter.setExpression(filterExpr);
1387 // if(argType!=null)
1388 currFilter.setArgType(argType);
1389 // if(argValue!=null)
1390 currFilter.setArgValue(argValue);
1392 .setCloseBrackets(AppUtils.getRequestValue(request, "closeBrackets"));
1395 rdef.resetCache(true);
1397 rdef.addColFilterType(new ObjectFactory(), colId, AppUtils.getRequestValue(
1398 request, "filterJoin"), AppUtils.getRequestValue(request, "openBrackets"),
1399 filterExpr, argType, argValue, AppUtils.getRequestValue(request,
1400 "closeBrackets"), null);
1404 } // processFilterAddEdit
1406 private boolean processFilterDelete(HttpServletRequest request) throws Exception {
1407 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1408 AppConstants.SI_REPORT_DEFINITION);
1410 String filterId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID);
1411 String colId = filterId.substring(0, filterId.indexOf('|'));
1414 filterPos = Integer.parseInt(filterId.substring(colId.length() + 1));
1415 } catch (NumberFormatException e) {
1418 rdef.removeColumnFilter(colId, filterPos);
1421 } // processFilterDelete
1423 private boolean processSortAddEdit(HttpServletRequest request, boolean isEdit)
1425 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1426 AppConstants.SI_REPORT_DEFINITION);
1428 String sortAscDesc = AppUtils.getRequestNvlValue(request, "sortAscDesc");
1430 DataColumnType currColumn = rdef.getColumnById(AppUtils.getRequestNvlValue(
1431 request, AppConstants.RI_DETAIL_ID));
1432 if (currColumn != null)
1433 currColumn.setOrderByAscDesc(sortAscDesc);
1434 rdef.resetCache(true);
1436 rdef.addColumnSort(AppUtils.getRequestNvlValue(request, "sortColId"), sortAscDesc,
1437 rdef.getNumSortColumns() + 1);
1440 } // processSortAddEdit
1442 private boolean processSortOrderAll(HttpServletRequest request) throws Exception {
1443 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1444 AppConstants.SI_REPORT_DEFINITION);
1446 String[] colId = request.getParameterValues("colId");
1447 String[] sortOrder = request.getParameterValues("sortOrder");
1448 String[] sortAscDesc = request.getParameterValues("sortAscDesc");
1450 boolean reportUpdated = false;
1451 for (int i = 0; i < colId.length; i++) {
1452 DataColumnType dct = rdef.getColumnById(nvl(colId[i]));
1458 iSortOrder = Integer.parseInt(sortOrder[i]);
1459 } catch (NumberFormatException e) {
1462 if (iSortOrder > 0) {
1463 if (dct.getOrderBySeq() > 0) {
1465 if (dct.getOrderBySeq() != iSortOrder) {
1466 dct.setOrderBySeq(iSortOrder);
1467 reportUpdated = true;
1469 if (!nvl(dct.getOrderByAscDesc()).equals(nvl(sortAscDesc[i]))) {
1470 dct.setOrderByAscDesc(sortAscDesc[i]);
1471 reportUpdated = true;
1475 dct.setOrderBySeq(iSortOrder);
1476 dct.setOrderByAscDesc(sortAscDesc[i]);
1477 reportUpdated = true;
1480 if (dct.getOrderBySeq() > 0) {
1482 dct.setOrderBySeq(0);
1483 dct.setOrderByAscDesc(null);
1484 reportUpdated = true;
1489 if (reportUpdated) {
1490 List reportCols = rdef.getAllColumns();
1491 Collections.sort(reportCols, new OrderBySeqComparator());
1493 for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
1494 DataColumnType dct = (DataColumnType) iter.next();
1495 if (dct.getOrderBySeq() > 0)
1496 dct.setOrderBySeq(iOrder++);
1498 Collections.sort(reportCols, new OrderSeqComparator());
1500 rdef.resetCache(true);
1503 return reportUpdated;
1504 } // processSortOrderAll
1506 private boolean processSortDelete(HttpServletRequest request) throws Exception {
1507 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1508 AppConstants.SI_REPORT_DEFINITION);
1509 rdef.removeColumnSort(AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
1511 } // processSortDelete
1513 private boolean processSortMoveUp(HttpServletRequest request) throws Exception {
1514 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1515 AppConstants.SI_REPORT_DEFINITION);
1517 .shiftColumnSortUp(AppUtils.getRequestNvlValue(request,
1518 AppConstants.RI_DETAIL_ID));
1520 } // processSortMoveUp
1522 private boolean processSortMoveDown(HttpServletRequest request) throws Exception {
1523 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1524 AppConstants.SI_REPORT_DEFINITION);
1525 rdef.shiftColumnSortDown(AppUtils.getRequestNvlValue(request,
1526 AppConstants.RI_DETAIL_ID));
1528 } // processSortMoveDown
1530 private boolean processJavascript (HttpServletRequest request) throws Exception {
1531 processSaveJavascriptElement(request);
1535 private boolean processSaveJavascriptElement (HttpServletRequest request) throws Exception {
1536 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1537 AppConstants.SI_REPORT_DEFINITION);
1538 rdef.setJavascriptElement(AppUtils.getRequestNvlValue(request, AppConstants.RI_JAVASCRIPT));
1539 String id = AppUtils.getRequestNvlValue(request, AppConstants.RI_JAVASCRIPT_ITEM_ID);
1540 String fieldId = AppUtils.getRequestNvlValue(request, "javascriptFormField-"+id);
1541 if( nvl(fieldId).length()>0 && !(fieldId.startsWith("-1"))) {
1543 String callableJavascriptText = AppUtils.getRequestNvlValue(request, "callText-"+id);
1545 logger.debug(EELFLoggerDelegate.debugLogger, ("FieldId " + fieldId + " Call Text " + callableJavascriptText+ " id " + id));
1546 JavascriptItemType javaScriptType = null;
1547 if(id.length()>0 && id.startsWith("-1")) {
1548 javaScriptType = rdef.addJavascriptType(new ObjectFactory(), id);
1549 javaScriptType.setFieldId(fieldId);
1550 if(!fieldId.equals("os1") || !fieldId.equals("ol1"))
1551 javaScriptType.setId(rdef.getNextIdForJavaScriptElement(new ObjectFactory(), fieldId));
1553 if(fieldId.equals("os1"))
1554 javaScriptType.setId("os1|1");
1556 javaScriptType.setId("ol1|1");
1558 javaScriptType.setCallText(callableJavascriptText);
1560 javaScriptType = rdef.addJavascriptType(new ObjectFactory(), id);
1561 javaScriptType.setCallText(callableJavascriptText);
1566 private boolean processAddJavascriptElement (HttpServletRequest request) throws Exception {
1567 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1568 AppConstants.SI_REPORT_DEFINITION);
1570 JavascriptItemType javaScriptType = rdef.addJavascriptType(new ObjectFactory(), "");
1571 javaScriptType.setId("");
1572 javaScriptType.setFieldId("");
1573 javaScriptType.setCallText("");
1578 private boolean processDeleteJavascriptElement (HttpServletRequest request) throws Exception {
1579 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1580 AppConstants.SI_REPORT_DEFINITION);
1581 String id = AppUtils.getRequestNvlValue(request, AppConstants.RI_JAVASCRIPT_ITEM_ID);
1582 if(rdef.deleteJavascriptType(id))
1588 private boolean processChart(HttpServletRequest request, String action) throws Exception {
1589 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1590 AppConstants.SI_REPORT_DEFINITION);
1592 int valueColsCount = rdef.getChartValueColumnsList(AppConstants.CHART_ALL_COLUMNS, null).size();
1594 String chartType = AppUtils.getRequestNvlValue(request, "chartType");
1595 String chartTypeFixed = AppUtils.getRequestValue(request, "chartTypeFixed");
1596 String legendColId = AppUtils.getRequestNvlValue(request, "legendCol");
1597 // String valueColId = AppUtils.getRequestNvlValue(request, "valueCol");
1598 String leftAxisLabel = AppUtils.getRequestValue(request, "leftAxisLabel");
1599 String rightAxisLabel = AppUtils.getRequestValue(request, "rightAxisLabel");
1600 String chartWidth = XSSFilter.filterRequest(AppUtils.getRequestNvlValue(request, "chartWidth"));
1601 String chartHeight = XSSFilter.filterRequest(AppUtils.getRequestNvlValue(request, "chartHeight"));
1602 String chartMultiseries = AppUtils.getRequestNvlValue(request, "multiSeries");
1603 String lastSeriesALineChart = AppUtils.getRequestNvlValue(request, "lastSeriesALineChart");
1604 String lastSeriesABarChart = AppUtils.getRequestNvlValue(request, "lastSeriesABarChart");
1605 String overLayItemLabel = "N";
1606 String chartDisplay = null;
1608 String multiplePieOrder = null;
1609 String multiplePieLabelDisplay = null;
1611 String chartOrientation = null;
1612 String secondaryChartRenderer = null;
1614 String linearRegression = null;
1616 boolean multiplePieOrderInRunPage = false;
1617 boolean multiplePieLabelDisplayInRunPage = false;
1619 boolean chartOrientationInRunPage = false;
1620 boolean secondaryChartRendererInRunPage = false;
1622 boolean chartDisplayInRunPage = false;
1624 String intervalFromdate = null;
1625 String intervalTodate = null;
1626 String intervalLabel = null;
1627 boolean displayIntervalInputInRunPage = false;
1628 boolean animate = false;
1630 animate = AppUtils.getRequestNvlValue(request, "animatedOption").equals("animate");
1631 if(Globals.showAnimatedChartOption())
1632 rdef.setChartAnimate(animate);
1635 String removeColId = "";
1636 if (action.equals(AppConstants.WA_DELETE_USER)) {
1637 removeColId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID);
1638 if(valueColsCount == 2 && !rdef.hasSeriesColumn()) {
1639 rdef.setChartLeftAxisLabel(null);
1640 rdef.setChartRightAxisLabel(null);
1642 if(chartType.equals(AppConstants.GT_TIME_SERIES) || chartType.equals(AppConstants.GT_PIE_MULTIPLE)) {
1643 chartMultiseries = "N";
1648 if(rdef.getChartAdditionalOptions()==null)
1649 rdef.addChartAdditionalOptions(new ObjectFactory());
1651 if(rdef.getChartDrillOptions()==null)
1652 rdef.addChartDrillOptions(new ObjectFactory());
1654 //clearing already added
1655 if(rdef.getChartDrillOptions().getTargetFormfield()!=null)
1656 rdef.getChartDrillOptions().getTargetFormfield().removeAll(rdef.getChartDrillOptions().getTargetFormfield());
1659 if(chartType.equals(AppConstants.GT_PIE_MULTIPLE)) {
1660 multiplePieOrder = AppUtils.getRequestNvlValue(request, "multiplePieOrder");
1661 multiplePieLabelDisplay = AppUtils.getRequestNvlValue(request, "multiplePieLabelDisplay");
1662 chartDisplay = AppUtils.getRequestNvlValue(request, "chartDisplay");
1663 //if(AppUtils.getRequestNvlValue(request, "multiplePieOrderInRunPage").length()>0)
1664 multiplePieOrderInRunPage = AppUtils.getRequestNvlValue(request,"multiplePieOrderInRunPage").equals("Y");
1665 //if(AppUtils.getRequestNvlValue(request, "multiplePieLabelDisplayInRunPage").length()>0)
1666 multiplePieLabelDisplayInRunPage = AppUtils.getRequestNvlValue(request,"multiplePieLabelDisplayInRunPage").equals("Y");
1667 //if(AppUtils.getRequestNvlValue(request, "chartDisplayInRunPage").length()>0)
1668 chartDisplayInRunPage = AppUtils.getRequestNvlValue(request,"chartDisplayInRunPage").equals("Y");
1669 if(rdef.getChartAdditionalOptions()!=null) {
1670 rdef.setChartMultiplePieOrder(multiplePieOrder+(multiplePieOrderInRunPage?"|Y":""));
1671 rdef.setChartMultiplePieLabelDisplay(multiplePieLabelDisplay+(multiplePieLabelDisplayInRunPage?"|Y":""));
1672 rdef.setChartDisplay(chartDisplay+(chartDisplayInRunPage?"|Y":""));
1677 if(chartType.equals(AppConstants.GT_REGRESSION)) {
1678 linearRegression = AppUtils.getRequestNvlValue(request, "regressionType");
1679 rdef.setLinearRegressionColor(AppUtils.getRequestNvlValue(request, "valueLinearRegressionColor"));
1680 rdef.setExponentialRegressionColor(AppUtils.getRequestNvlValue(request, "valueExponentialRegressionColor"));
1681 rdef.setCustomizedRegressionPoint(AppUtils.getRequestNvlValue(request, "regressionPointCustomization"));
1683 if(nvl(linearRegression).length()>0)
1684 rdef.setLinearRegression(linearRegression);
1686 rdef.setLinearRegression("Y");
1689 if(chartType.equals(AppConstants.GT_BAR_3D)) {
1690 chartOrientation = AppUtils.getRequestNvlValue(request, "chartOrientation");
1691 secondaryChartRenderer = AppUtils.getRequestNvlValue(request, "secondaryChartRenderer");
1692 chartDisplay = AppUtils.getRequestNvlValue(request, "chartDisplay");
1693 //if(AppUtils.getRequestNvlValue(request, "chartOrientationInRunPage").length()>0)
1694 chartOrientationInRunPage = AppUtils.getRequestNvlValue(request,"chartOrientationInRunPage").equals("Y");
1695 //if(AppUtils.getRequestNvlValue(request, "secondaryChartRendererInRunPage").length()>0)
1696 secondaryChartRendererInRunPage = AppUtils.getRequestNvlValue(request,"secondaryChartRendererInRunPage").equals("Y");
1697 //if(AppUtils.getRequestNvlValue(request, "chartDisplayInRunPage").length()>0)
1698 chartDisplayInRunPage = AppUtils.getRequestNvlValue(request,"chartDisplayInRunPage").equals("Y");
1699 rdef.setChartOrientation(chartOrientation+(chartOrientationInRunPage?"|Y":""));
1700 rdef.setSecondaryChartRenderer(secondaryChartRenderer+(secondaryChartRendererInRunPage?"|Y":""));
1701 rdef.setChartDisplay(chartDisplay+(chartDisplayInRunPage?"|Y":""));
1702 rdef.setLastSeriesALineChart(nvl(lastSeriesALineChart, "N"));
1705 if(chartType.equals(AppConstants.GT_LINE)) {
1706 chartOrientation = AppUtils.getRequestNvlValue(request, "chartOrientation");
1707 secondaryChartRenderer = AppUtils.getRequestNvlValue(request, "secondaryChartRenderer");
1708 chartDisplay = AppUtils.getRequestNvlValue(request, "chartDisplay");
1709 //if(AppUtils.getRequestNvlValue(request, "chartOrientationInRunPage").length()>0)
1710 chartOrientationInRunPage = AppUtils.getRequestNvlValue(request,"chartOrientationInRunPage").equals("Y");
1711 //if(AppUtils.getRequestNvlValue(request, "secondaryChartRendererInRunPage").length()>0)
1712 secondaryChartRendererInRunPage = AppUtils.getRequestNvlValue(request,"secondaryChartRendererInRunPage").equals("Y");
1713 //if(AppUtils.getRequestNvlValue(request, "chartDisplayInRunPage").length()>0)
1714 chartDisplayInRunPage = AppUtils.getRequestNvlValue(request,"chartDisplayInRunPage").equals("Y");
1715 rdef.setChartOrientation(chartOrientation+(chartOrientationInRunPage?"|Y":""));
1716 rdef.setSecondaryChartRenderer(secondaryChartRenderer+(secondaryChartRendererInRunPage?"|Y":""));
1717 rdef.setChartDisplay(chartDisplay+(chartDisplayInRunPage?"|Y":""));
1718 rdef.setLastSeriesABarChart(nvl(lastSeriesABarChart, "N"));
1720 if(chartType.equals(AppConstants.GT_TIME_DIFFERENCE_CHART)) {
1721 intervalFromdate = AppUtils.getRequestNvlValue(request, "intervalFromDate");
1722 intervalTodate = AppUtils.getRequestNvlValue(request, "intervalToDate");
1723 intervalLabel = AppUtils.getRequestNvlValue(request, "intervalLabel");
1724 displayIntervalInputInRunPage = AppUtils.getRequestNvlValue(request,"intervalInputInRunPage").equals("Y");
1725 rdef.setIntervalFromdate(intervalFromdate+(displayIntervalInputInRunPage?"|Y":""));
1726 rdef.setIntervalTodate(intervalTodate+(displayIntervalInputInRunPage?"|Y":""));
1727 rdef.setIntervalLabel(intervalLabel);
1729 if(chartType.equals(AppConstants.GT_STACKED_VERT_BAR) || chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR) || chartType.equals(AppConstants.GT_STACKED_VERT_BAR_LINES)
1730 || chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR_LINES)) {
1731 overLayItemLabel = AppUtils.getRequestNvlValue(request, "overlayItemValue");
1732 rdef.setOverlayItemValueOnStackBar(nvl(overLayItemLabel, "N"));
1733 animate = AppUtils.getRequestNvlValue(request, "animatedOption").equals("animate");
1734 rdef.setChartAnimate(animate);
1737 rdef.setRangeAxisLowerLimit(AppUtils.getRequestNvlValue(request, "yAxisLowerLimit"));
1738 rdef.setRangeAxisUpperLimit(AppUtils.getRequestNvlValue(request, "yAxisUpperLimit"));
1739 rdef.setLegendLabelAngle(AppUtils.getRequestNvlValue(request,"labelAngle"));
1740 rdef.setLegendPosition(AppUtils.getRequestNvlValue(request,"legendPosition"));
1741 rdef.setMaxLabelsInDomainAxis(AppUtils.getRequestNvlValue(request,"maxLabelsInDomainAxis"));
1742 String chartLegendDisplay = AppUtils.getRequestNvlValue(request,"hideLegend");
1743 boolean showLegendDisplayOptionsInRunPage = false;
1744 showLegendDisplayOptionsInRunPage = AppUtils.getRequestNvlValue(request,"showLegendDisplayOptionsInRunPage").equals("Y");
1745 rdef.setChartLegendDisplay(chartLegendDisplay+(showLegendDisplayOptionsInRunPage?"|Y":""));
1746 rdef.setChartToolTips(AppUtils.getRequestNvlValue(request,"hideTooltips"));
1747 rdef.setDomainAxisValuesAsString(AppUtils.getRequestNvlValue(request,"keepAsString"));
1749 //System.out.println("KeepAsString " + AppUtils.getRequestNvlValue(request,"keepAsString"));
1750 //System.out.println("From ReportDef " + rdef.keepDomainAxisValueInChartAsString());
1751 // boolean reportUpdated = (!
1752 // chartType.equals(nvl(rdef.getChartType())));
1753 rdef.setChartType(chartType);
1754 rdef.setChartTypeFixed(nvl(chartTypeFixed, "N"));
1755 if (nvl(leftAxisLabel).length()>0)
1756 rdef.setChartLeftAxisLabel(leftAxisLabel);
1758 rdef.setChartLeftAxisLabel(null);
1759 if (nvl(rightAxisLabel).length()>0)
1760 rdef.setChartRightAxisLabel(rightAxisLabel);
1762 rdef.setChartRightAxisLabel(null);
1763 rdef.setChartWidth(nvl(chartWidth, "" + Globals.getDefaultChartWidth()));
1764 rdef.setChartHeight(nvl(chartHeight, "" + Globals.getDefaultChartHeight()));
1765 if(chartType.equals(AppConstants.GT_TIME_SERIES) || chartType.equals(AppConstants.GT_PIE_MULTIPLE)) {
1766 rdef.setChartMultiSeries(chartMultiseries);
1768 rdef.setChartMultiSeries("N");
1771 List reportCols = rdef.getAllColumns();
1772 for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
1773 DataColumnType dct = (DataColumnType) iter.next();
1775 if (dct.getColId().equals(legendColId)) {
1776 // reportUpdated = reportUpdated||(!
1777 // nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND));
1778 dct.setColOnChart(AppConstants.GC_LEGEND);
1781 // reportUpdated||nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND);
1782 dct.setColOnChart(null);
1786 * if(dct.getColId().equals(valueColId)) { reportUpdated =
1787 * reportUpdated||(dct.getChartSeq()<=0); dct.setChartSeq(1); }
1788 * else { reportUpdated = reportUpdated||(dct.getChartSeq()>0);
1790 dct.setChartSeq(-1);
1795 List columns = rdef.getAllColumns();
1796 if(chartType.equals(AppConstants.GT_TIME_SERIES)) {
1797 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1798 String chartGroup = AppUtils.getRequestNvlValue(request, "chartGroup");
1799 String yAxis = AppUtils.getRequestNvlValue(request, "yAxis");
1800 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1801 DataColumnType alldct = (DataColumnType) iterator.next();
1802 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1803 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1806 String drillDownReportId = AppUtils.getRequestNvlValue(request, "drillDownReport");
1807 if(!drillDownReportId.equals("-1")) {
1808 ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, drillDownReportId,
1811 request.setAttribute("CHART_FORMFIELDS", ddRr.getReportFormFields());
1813 for(ddRr.getReportFormFields().resetNext(); ddRr.getReportFormFields().hasNext(); ) {
1814 FormField ff = ddRr.getReportFormFields().getNext();
1815 if(!ff.getFieldType().equals(FormField.FFT_BLANK)) {
1816 String value = AppUtils.getRequestNvlValue(request, "drillDown_"+ff.getFieldName());
1817 ChartDrillFormfield cdf = new ObjectFactory().createChartDrillFormfield();
1818 cdf.setFormfield(value);
1819 rdef.getChartDrillOptions().getTargetFormfield().add(cdf);
1825 if(chartType.equals(AppConstants.GT_BAR_3D)) {
1826 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1827 String chartGroup = AppUtils.getRequestNvlValue(request, "chartGroup");
1828 String yAxis = AppUtils.getRequestNvlValue(request, "yAxis");
1829 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1830 DataColumnType alldct = (DataColumnType) iterator.next();
1831 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1832 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1834 String drillDownReportId = AppUtils.getRequestNvlValue(request, "drillDownReport");
1835 rdef.setDrillReportIdForChart(drillDownReportId);
1836 if(drillDownReportId.equals("-1")){
1837 rdef.setDrillReportIdForChart("");
1840 if(!drillDownReportId.equals("-1")) {
1841 ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, drillDownReportId,
1844 request.setAttribute("CHART_FORMFIELDS", ddRr.getReportFormFields());
1846 for(ddRr.getReportFormFields().resetNext(); ddRr.getReportFormFields().hasNext(); ) {
1847 FormField ff = ddRr.getReportFormFields().getNext();
1848 if(!ff.getFieldType().equals(FormField.FFT_BLANK)) {
1849 String value = AppUtils.getRequestNvlValue(request, "drillDown_"+ff.getFieldName());
1850 ChartDrillFormfield cdf = new ObjectFactory().createChartDrillFormfield();
1851 cdf.setFormfield(value);
1852 rdef.getChartDrillOptions().getTargetFormfield().add(cdf);
1856 String xAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownXAxisFormfield");
1857 String yAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownYAxisFormfield");
1858 String seriesAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownSeriesAxisFormfield");
1860 if(!xAxisFormField.equals("-1")){
1861 rdef.setDrillXAxisFormField(xAxisFormField);
1863 if(!yAxisFormField.equals("-1"))
1864 rdef.setDrillYAxisFormField(yAxisFormField);
1865 if(!seriesAxisFormField.equals("-1"))
1866 rdef.setDrillSeriesFormField(seriesAxisFormField);
1868 rdef.setDrillXAxisFormField("");
1869 rdef.setDrillYAxisFormField("");
1870 rdef.setDrillSeriesFormField("");
1874 } else if(chartType.equals(AppConstants.GT_SCATTER)) {
1875 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1876 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1877 DataColumnType alldct = (DataColumnType) iterator.next();
1878 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1879 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1882 }else if(chartType.equals(AppConstants.GT_REGRESSION)) {
1883 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1884 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1885 DataColumnType alldct = (DataColumnType) iterator.next();
1886 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1887 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1889 }else if(chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR) || chartType.equals(AppConstants.GT_STACKED_VERT_BAR)
1890 || chartType.equals(AppConstants.GT_STACKED_VERT_BAR_LINES) || chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR_LINES)) {
1891 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1892 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1893 DataColumnType alldct = (DataColumnType) iterator.next();
1894 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1895 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1897 }else if(chartType.equals(AppConstants.GT_LINE)) {
1898 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1899 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1900 DataColumnType alldct = (DataColumnType) iterator.next();
1901 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1902 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1904 } else if (chartType.equals(AppConstants.GT_TIME_DIFFERENCE_CHART)) {
1905 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1906 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1907 DataColumnType alldct = (DataColumnType) iterator.next();
1908 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1909 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1911 } else if (chartType.equals(AppConstants.GT_COMPARE_PREVYEAR_CHART)) {
1912 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1913 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1914 DataColumnType alldct = (DataColumnType) iterator.next();
1915 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1916 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1920 if (rdef.hasSeriesColumn()) {
1921 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1922 DataColumnType alldct = (DataColumnType) iterator.next();
1923 alldct.setChartSeries(false);
1927 String drillDownReportId = AppUtils.getRequestNvlValue(request, "drillDownReport");
1928 rdef.setDrillReportIdForChart(drillDownReportId);
1929 if(drillDownReportId.equals("-1")){
1930 rdef.setDrillReportIdForChart("");
1933 if(!drillDownReportId.equals("-1")) {
1934 ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, drillDownReportId,
1937 request.setAttribute("CHART_FORMFIELDS", ddRr.getReportFormFields());
1938 for(ddRr.getReportFormFields().resetNext(); ddRr.getReportFormFields().hasNext(); ) {
1939 FormField ff = ddRr.getReportFormFields().getNext();
1940 if(!ff.getFieldType().equals(FormField.FFT_BLANK)) {
1941 String value = AppUtils.getRequestNvlValue(request, "drillDown_"+ff.getFieldName());
1942 ChartDrillFormfield cdf = new ObjectFactory().createChartDrillFormfield();
1943 cdf.setFormfield(value);
1944 rdef.getChartDrillOptions().getTargetFormfield().add(cdf);
1948 String xAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownXAxisFormfield");
1949 String yAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownYAxisFormfield");
1950 String seriesAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownSeriesAxisFormfield");
1952 if(!xAxisFormField.equals("-1")){
1953 rdef.setDrillXAxisFormField(xAxisFormField);
1955 if(!yAxisFormField.equals("-1"))
1956 rdef.setDrillYAxisFormField(yAxisFormField);
1957 if(!seriesAxisFormField.equals("-1"))
1958 rdef.setDrillSeriesFormField(seriesAxisFormField);
1960 rdef.setDrillXAxisFormField("");
1961 rdef.setDrillYAxisFormField("");
1962 rdef.setDrillSeriesFormField("");
1969 for (int i = 1; i < Math.max(valueColsCount, 1) + 1; i++) {
1970 //debugLogger.debug("********** " + chartSeries);
1972 /* Range Axis is resetted before adding */
1973 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1974 DataColumnType dct = (DataColumnType) iterator.next();
1975 if(!nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND)) {
1976 dct.setChartSeq(-1);
1977 dct.setChartColor(null);
1978 dct.setColOnChart(null);
1979 dct.setCreateInNewChart(false);
1980 dct.setChartGroup(null);
1986 String newChartColAxis = AppUtils.getRequestNvlValue(request, "newChart" + i+"Axis");
1987 String valueColId = AppUtils.getRequestNvlValue(request, "valueCol" + i);
1988 String valueColColor = AppUtils.getRequestNvlValue(request, "valueCol" + i
1990 String valueColAxis = AppUtils
1991 .getRequestNvlValue(request, "valueCol" + valueColId + "Axis");
1992 String chartGroup = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "chartGroup" + valueColId + "Axis"));
1993 String yAxisGroup = "";
1994 yAxisGroup = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "YAxisLabel" + valueColId));
1995 //debugLogger.debug("^^^^^^^^^^^^^^^^^Chart Group " + chartGroup);
1996 //if(chartType.equals(AppConstants.GT_TIME_SERIES)) {
1997 // debugLogger.debug("**********Outer If " + chartSeries);
2000 if (valueColId.length() > 0 && (!valueColId.equals(removeColId))) {
2001 DataColumnType dct = rdef.getColumnById(valueColId);
2002 dct.setChartSeq(idx++);
2003 dct.setChartColor(valueColColor);
2004 dct.setColOnChart(valueColAxis.equals("Y") ? "1" : "0");
2005 if(chartType.equals(AppConstants.GT_TIME_SERIES)) {
2006 dct.setCreateInNewChart(newChartColAxis.equals("Y") ? true : false);
2008 dct.setCreateInNewChart(false);
2010 if(chartGroup!=null && chartGroup.length()>0)
2011 dct.setChartGroup(chartGroup+"|"+valueColId);
2012 else dct.setChartGroup("");
2013 if(chartType.equals(AppConstants.GT_TIME_SERIES))
2014 dct.setYAxis(nvl(yAxisGroup)+"|"+valueColId);
2015 else if (chartType.equals(AppConstants.GT_BAR_3D))
2016 dct.setYAxis(nvl(yAxisGroup)+"|"+valueColId);
2017 else dct.setYAxis("");
2020 //dct.setCreateInNewChart(false);
2021 } else if (valueColId.length() > 0 && (valueColId.equals(removeColId))) {// if
2022 DataColumnType dct = rdef.getColumnById(valueColId);
2023 dct.setChartSeq(-1);
2024 dct.setChartColor(null);
2025 dct.setColOnChart(null);
2026 dct.setCreateInNewChart(false);
2027 dct.setChartGroup(null);
2030 DataColumnType dct = rdef.getColumnById(valueColId);
2031 dct.setChartSeq(-1);
2032 dct.setChartColor(null);
2033 dct.setColOnChart(null);
2034 dct.setCreateInNewChart(false);
2035 dct.setChartGroup(null);
2040 if (action.equals(AppConstants.WA_ADD_USER)) {
2041 String valueColId = AppUtils.getRequestNvlValue(request, "valueColNew");
2042 String valueColColor = AppUtils.getRequestNvlValue(request, "valueColNewColor");
2043 String valueColAxis = AppUtils.getRequestNvlValue(request, "valueColNewAxis");
2045 if (valueColId.length() > 0) {
2046 DataColumnType dct = rdef.getColumnById(valueColId);
2047 dct.setChartSeq(idx++);
2048 dct.setChartColor(valueColColor);
2049 dct.setColOnChart(valueColAxis.equals("Y") ? "1" : "0");
2053 return true; // reportUpdated;
2056 public boolean processAdhocSchedule(HttpServletRequest request, String action)
2058 ReportSchedule reportSchedule = (ReportSchedule) request.getSession().getAttribute(AppConstants.SI_REPORT_SCHEDULE);
2059 reportSchedule.setScheduleUserID(AppUtils.getUserID(request));
2060 reportSchedule.setSchedEnabled(
2061 nvl(AppUtils.getRequestValue(request, "schedEnabled"), "N"));
2062 reportSchedule.setStartDate(
2063 AppUtils.getRequestNvlValue(request, "schedStartDate"));
2064 reportSchedule.setEndDate(
2065 AppUtils.getRequestNvlValue(request, "schedEndDate"));
2066 reportSchedule.setEndHour(AppUtils.getRequestNvlValue(request, "schedEndHour"));
2067 reportSchedule.setEndMin(AppUtils.getRequestNvlValue(request, "schedEndMin"));
2068 reportSchedule.setEndAMPM(AppUtils.getRequestNvlValue(request, "schedEndAMPM"));
2070 reportSchedule.setRunDate(
2071 AppUtils.getRequestNvlValue(request, "schedRunDate").length()>0?AppUtils.getRequestNvlValue(request, "schedRunDate"):AppUtils.getRequestNvlValue(request, "schedStartDate"));
2072 reportSchedule.setRunHour(AppUtils.getRequestNvlValue(request, "schedHour"));
2073 reportSchedule.setRunMin(AppUtils.getRequestNvlValue(request, "schedMin"));
2074 reportSchedule.setRunAMPM(AppUtils.getRequestNvlValue(request, "schedAMPM"));
2075 reportSchedule.setRecurrence(
2076 AppUtils.getRequestNvlValue(request, "schedRecurrence"));
2077 reportSchedule.setConditional(
2078 nvl(AppUtils.getRequestValue(request, "conditional"), "N"));
2079 reportSchedule.setConditionSQL(
2080 AppUtils.getRequestNvlValue(request, "conditionSQL"));
2081 reportSchedule.setNotify_type(
2082 AppUtils.getRequestNvlValue(request, "notify_type"));
2083 reportSchedule.setDownloadLimit(
2084 AppUtils.getRequestNvlValue(request, "downloadLimit"));
2085 reportSchedule.setFormFields(
2086 AppUtils.getRequestNvlValue(request, "formFields"));
2087 reportSchedule.setAttachmentMode(
2088 AppUtils.getRequestNvlValue(request, "sendAttachment"));
2090 String userId = AppUtils.getRequestNvlValue(request, "schedEmailAdd");
2091 String roleId = AppUtils.getRequestNvlValue(request, "schedEmailAddRole");
2093 if ((!(userId.length()>0 || roleId.length()>0) && (reportSchedule.getEmailToUsers().isEmpty() && reportSchedule.getEmailToRoles().isEmpty())) ) {
2097 if (flag == 1 || (action.equals(AppConstants.WA_ADD_USER) || action.equals(AppConstants.WA_ADD_ROLE)) ) {
2098 String loggedInUserId = AppUtils.getUserID(request);
2099 if (Globals.getUseLoginIdInSchedYN().equals("Y")){
2100 reportSchedule.addEmailToUser(loggedInUserId, AppUtils.getUserLoginId(request));
2102 reportSchedule.addEmailToUser(loggedInUserId, (AppUtils.getUserName(loggedInUserId).length()>0?AppUtils.getUserName(loggedInUserId):(AppUtils.getUserLoginId(loggedInUserId).length()>0?AppUtils.getUserLoginId(loggedInUserId):loggedInUserId) ));
2104 if (action.equals(AppConstants.WA_ADD_USER)) {
2105 //String userId = AppUtils.getRequestNvlValue(request, "schedEmailAdd");
2106 String userName = AppUtils.getUserName(userId);
2107 if (Globals.getUseLoginIdInSchedYN().equals("Y")){
2108 String userLoginId = AppUtils.getUserLoginId(userId);
2109 if (userId.length() > 0 && (userLoginId != null && userLoginId.length() > 0))
2110 reportSchedule.addEmailToUser(userId, userLoginId);
2112 if (userId.length() > 0 && (userName != null && userName.length() > 0) )
2113 reportSchedule.addEmailToUser(userId, userName);
2115 reportSchedule.addEmailToUser(userId, userId);
2119 if (userId.length() > 0 && (userName != null && userName.length() > 0) )
2120 reportSchedule.addEmailToUser(userId, userName);
2122 reportSchedule.addEmailToUser(userId, userId);
2126 } else if (action.equals(AppConstants.WA_DELETE_USER))
2127 reportSchedule.removeEmailToUser(
2128 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2129 else if (action.equals(AppConstants.WA_ADD_ROLE)) {
2130 //String roleId = AppUtils.getRequestNvlValue(request, "schedEmailAddRole");
2131 String roleName = AppUtils.getRoleName(roleId);
2132 if (roleId.length() > 0 && roleName != null)
2133 reportSchedule.addEmailToRole(roleId, roleName);
2134 } else if (action.equals(AppConstants.WA_DELETE_ROLE))
2135 reportSchedule.removeEmailToRole(
2136 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2137 request.getSession().setAttribute(AppConstants.SI_REPORT_SCHEDULE, reportSchedule);
2139 } // processAdhocSchedule
2141 private boolean processSchedule(HttpServletRequest request, String action)
2143 // Added for form field chaining in schedule tab so that setParamValues() is called
2144 request.setAttribute(AppConstants.SCHEDULE_ACTION, "Y");
2145 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
2146 AppConstants.SI_REPORT_DEFINITION);
2147 ReportSchedule reportSchedule = rdef.getReportSchedule();
2148 reportSchedule.setScheduleUserID(AppUtils.getUserID(request));
2149 reportSchedule.setSchedEnabled(
2150 nvl(AppUtils.getRequestValue(request, "schedEnabled"), "N"));
2151 reportSchedule.setStartDate(
2152 AppUtils.getRequestNvlValue(request, "schedStartDate"));
2153 reportSchedule.setEndDate(
2154 AppUtils.getRequestNvlValue(request, "schedEndDate"));
2155 reportSchedule.setEndHour(AppUtils.getRequestNvlValue(request, "schedEndHour"));
2156 reportSchedule.setEndMin(AppUtils.getRequestNvlValue(request, "schedEndMin"));
2157 reportSchedule.setEndAMPM(AppUtils.getRequestNvlValue(request, "schedEndAMPM"));
2159 reportSchedule.setRunDate(
2160 AppUtils.getRequestNvlValue(request, "schedRunDate").length()>0?AppUtils.getRequestNvlValue(request, "schedRunDate"):AppUtils.getRequestNvlValue(request, "schedStartDate"));
2161 reportSchedule.setRunHour(AppUtils.getRequestNvlValue(request, "schedHour"));
2162 reportSchedule.setRunMin(AppUtils.getRequestNvlValue(request, "schedMin"));
2163 reportSchedule.setRunAMPM(AppUtils.getRequestNvlValue(request, "schedAMPM"));
2164 reportSchedule.setRecurrence(
2165 AppUtils.getRequestNvlValue(request, "schedRecurrence"));
2166 reportSchedule.setConditional(
2167 nvl(AppUtils.getRequestValue(request, "conditional"), "N"));
2168 reportSchedule.setConditionSQL(
2169 AppUtils.getRequestNvlValue(request, "conditionSQL"));
2170 reportSchedule.setNotify_type(
2171 AppUtils.getRequestNvlValue(request, "notify_type"));
2172 reportSchedule.setDownloadLimit(
2173 AppUtils.getRequestNvlValue(request, "downloadLimit"));
2174 reportSchedule.setFormFields(
2175 AppUtils.getRequestNvlValue(request, "formFields"));
2176 reportSchedule.setAttachmentMode(
2177 AppUtils.getRequestNvlValue(request, "sendAttachment"));
2179 reportSchedule.setEncryptMode(
2180 AppUtils.getRequestNvlValue(request, "encryptMode"));
2181 if (action.equals(AppConstants.WA_ADD_USER)) {
2182 String userId = AppUtils.getRequestNvlValue(request, "schedEmailAdd");
2183 String userName = AppUtils.getUserName(userId);
2184 if (Globals.getUseLoginIdInSchedYN().equals("Y")){
2185 String userLoginId = AppUtils.getUserLoginId(userId);
2186 if (userId.length() > 0 && (userLoginId != null && userLoginId.length() > 0))
2187 reportSchedule.addEmailToUser(userId, userLoginId);
2189 if (userId.length() > 0 && (userName != null && userName.length() > 0) )
2190 reportSchedule.addEmailToUser(userId, userName);
2192 reportSchedule.addEmailToUser(userId, userId);
2196 if (userId.length() > 0 && (userName != null && userName.length() > 0) )
2197 reportSchedule.addEmailToUser(userId, userName);
2199 reportSchedule.addEmailToUser(userId, userId);
2202 } else if (action.equals(AppConstants.WA_DELETE_USER))
2203 reportSchedule.removeEmailToUser(
2204 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2205 else if (action.equals(AppConstants.WA_ADD_ROLE)) {
2206 String roleId = AppUtils.getRequestNvlValue(request, "schedEmailAddRole");
2207 String roleName = AppUtils.getRoleName(roleId);
2208 if (roleId.length() > 0 && roleName != null)
2209 reportSchedule.addEmailToRole(roleId, roleName);
2210 } else if (action.equals(AppConstants.WA_DELETE_ROLE))
2211 reportSchedule.removeEmailToRole(
2212 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2215 } // processSchedule
2217 private boolean processUserAccess(HttpServletRequest request, String action)
2219 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
2220 AppConstants.SI_REPORT_DEFINITION);
2222 String ownerID = AppUtils.getRequestNvlValue(request, "reportOwner");
2223 String rPublic = nvl(AppUtils.getRequestValue(request, "public"), "N");
2225 boolean reportUpdated = (!(ownerID.equals(nvl(rdef.getOwnerID())) && rPublic
2226 .equals(rdef.isPublic() ? "Y" : "N")));
2228 rdef.getReportSecurity().setOwnerID(ownerID);
2229 rdef.setPublic(rPublic.equals("Y"));
2231 if (action.equals(AppConstants.WA_ADD_USER))
2232 rdef.getReportSecurity().addUserAccess(
2233 AppUtils.getRequestNvlValue(request, "newUserId"), "Y");
2234 else if (action.equals(AppConstants.WA_DELETE_USER))
2235 rdef.getReportSecurity().removeUserAccess(
2236 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2237 else if (action.equals(AppConstants.WA_GRANT_USER))
2238 rdef.getReportSecurity().updateUserAccess(
2239 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID), "N");
2240 else if (action.equals(AppConstants.WA_REVOKE_USER))
2241 rdef.getReportSecurity().updateUserAccess(
2242 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID), "Y");
2243 else if (action.equals(AppConstants.WA_ADD_ROLE))
2244 rdef.getReportSecurity().addRoleAccess(
2245 AppUtils.getRequestNvlValue(request, "newRoleId"), "Y");
2246 else if (action.equals(AppConstants.WA_DELETE_ROLE))
2247 rdef.getReportSecurity().removeRoleAccess(
2248 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2249 else if (action.equals(AppConstants.WA_GRANT_ROLE))
2250 rdef.getReportSecurity().updateRoleAccess(
2251 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID), "N");
2252 else if (action.equals(AppConstants.WA_REVOKE_ROLE))
2253 rdef.getReportSecurity().updateRoleAccess(
2254 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID), "Y");
2256 return reportUpdated;
2257 } // processUserAccess
2259 private boolean processClearLog(HttpServletRequest request) throws Exception {
2260 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
2261 AppConstants.SI_REPORT_DEFINITION);
2262 String user_id = AppUtils.getUserID(request);
2263 // Modified so that only the logged in user entries are erased. - Sundar
2264 ReportLoader.clearReportLogEntries(rdef.getReportID(), user_id);
2266 } // processClearLog
2268 private boolean processValidateSQL(HttpServletRequest request) throws Exception {
2269 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
2270 AppConstants.SI_REPORT_DEFINITION);
2272 String sql = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportSQL"));
2273 request.setAttribute("sqlValidated", "N");
2274 rdef.parseReportSQL(sql);
2275 request.setAttribute("sqlValidated", "Y");
2278 } // processValidateSQL
2281 /*****For Report Maps - Start******/
2282 private boolean processMap(HttpServletRequest request, String action) throws Exception {
2283 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
2284 AppConstants.SI_REPORT_DEFINITION);
2286 org.openecomp.portalsdk.analytics.xmlobj.ReportMap repMap = rdef.getReportMap();
2287 //clearing already added
2288 if (repMap != null){
2289 repMap.getMarkers().removeAll(repMap.getMarkers());
2291 String addressColumn = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "addressColumn0"));
2292 System.out.println(" #$%#$%#$% -- address col = " + addressColumn);
2293 String dataColumn = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "dataColumn0"));
2294 String legendColumn = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "legendColumn"));
2295 //String legendDisplayName = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "dataHeaderL"));
2296 //if(nvl(legendDisplayName).length()<=0) legendDisplayName = legendColumn;
2297 String color = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "markerColor0"));
2298 String isMapAllowed = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "isMapAllowed"));
2299 String useDefaultSize = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "useDefaultSize"));
2300 String height = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "height"));
2301 String width = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "width"));
2302 System.out.println(" #$%#$%#$% -- useDefaultSize="+ useDefaultSize+" height = " + height+" width="+width);
2304 String addAddress = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "addAddress"));
2305 String latCol = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "latColumn"));
2306 String longCol = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "longColumn"));
2307 String colorCol = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "colorColumn"));
2308 if (isMapAllowed.equals(""))
2310 if (useDefaultSize.equals(""))
2311 useDefaultSize = "N";
2313 rdef.setReportMap(new ObjectFactory().createReportMap());
2314 repMap.setAddressColumn(addressColumn);
2315 repMap.setDataColumn(dataColumn);
2316 repMap.setIsMapAllowedYN(isMapAllowed);
2317 repMap.setUseDefaultSize(useDefaultSize);
2318 repMap.setMarkerColor(color);
2319 repMap.setAddAddressInDataYN(addAddress);
2320 repMap.setLatColumn(latCol);
2321 repMap.setLongColumn(longCol);
2322 repMap.setColorColumn(colorCol);
2323 repMap.setHeight(height.trim());
2324 repMap.setWidth(width.trim());
2325 repMap.setLegendColumn(legendColumn);
2326 //repMap.setLegendDisplayName(legendDisplayName);
2328 Marker m = new ObjectFactory().createMarker();
2329 m.setAddressColumn(addressColumn);
2330 m.setDataColumn(dataColumn);
2331 repMap.getMarkers().add(m);
2332 String markerCountString = AppUtils.getRequestNvlValue(request, "markerCount");
2333 int markerCount = 0;
2334 if (markerCountString != null && markerCountString.equals("") == false){
2335 markerCount = new Integer(markerCountString).intValue();
2337 for (int i = 1; i < markerCount; i ++){
2338 String additionalAddressColumn = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "addressColumn" + i));
2339 String additionalDataHeader = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "dataHeader" + i));
2340 String additionalData = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "dataColumn" + i));
2341 String additionalColor = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "markerColor" + i));
2342 if (additionalAddressColumn.equals("1") == false){
2343 m = new ObjectFactory().createMarker();
2344 m.setAddressColumn(additionalAddressColumn);
2345 m.setDataHeader(additionalDataHeader);
2346 m.setDataColumn(additionalData);
2347 m.setMarkerColor(additionalColor);
2348 repMap.getMarkers().add(m);
2353 /*****For Report Maps - End******/
2356 } // WizardProcessor