2 * ============LICENSE_START==========================================
4 * ===================================================================
5 * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6 * ===================================================================
8 * Unless otherwise specified, all software contained herein is licensed
9 * under the Apache License, Version 2.0 (the “License”);
10 * you may not use this software except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
21 * Unless otherwise specified, all documentation contained herein is licensed
22 * under the Creative Commons License, Attribution 4.0 Intl. (the “License”);
23 * you may not use this documentation except in compliance with the License.
24 * You may obtain a copy of the License at
26 * https://creativecommons.org/licenses/by/4.0/
28 * Unless required by applicable law or agreed to in writing, documentation
29 * distributed under the License is distributed on an "AS IS" BASIS,
30 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31 * See the License for the specific language governing permissions and
32 * limitations under the License.
34 * ============LICENSE_END============================================
36 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
38 package org.onap.portalsdk.analytics.controller;
40 import java.text.SimpleDateFormat;
41 import java.util.ArrayList;
42 import java.util.Calendar;
43 import java.util.Collections;
44 import java.util.Iterator;
45 import java.util.List;
47 import javax.servlet.http.HttpServletRequest;
48 import javax.xml.datatype.DatatypeConfigurationException;
49 import javax.xml.datatype.DatatypeFactory;
51 import org.onap.portalsdk.analytics.error.RaptorException;
52 import org.onap.portalsdk.analytics.error.ValidationException;
53 import org.onap.portalsdk.analytics.model.ReportHandler;
54 import org.onap.portalsdk.analytics.model.ReportLoader;
55 import org.onap.portalsdk.analytics.model.base.IdNameValue;
56 import org.onap.portalsdk.analytics.model.base.OrderBySeqComparator;
57 import org.onap.portalsdk.analytics.model.base.OrderSeqComparator;
58 import org.onap.portalsdk.analytics.model.definition.ReportDefinition;
59 import org.onap.portalsdk.analytics.model.definition.ReportSchedule;
60 import org.onap.portalsdk.analytics.model.runtime.FormField;
61 import org.onap.portalsdk.analytics.model.runtime.ReportRuntime;
62 import org.onap.portalsdk.analytics.system.AppUtils;
63 import org.onap.portalsdk.analytics.system.DbUtils;
64 import org.onap.portalsdk.analytics.system.Globals;
65 import org.onap.portalsdk.analytics.util.AppConstants;
66 import org.onap.portalsdk.analytics.util.DataSet;
67 import org.onap.portalsdk.analytics.util.XSSFilter;
68 import org.onap.portalsdk.analytics.xmlobj.ChartDrillFormfield;
69 import org.onap.portalsdk.analytics.xmlobj.ColFilterType;
70 import org.onap.portalsdk.analytics.xmlobj.DataColumnType;
71 import org.onap.portalsdk.analytics.xmlobj.DataSourceType;
72 import org.onap.portalsdk.analytics.xmlobj.FormFieldType;
73 import org.onap.portalsdk.analytics.xmlobj.FormatType;
74 import org.onap.portalsdk.analytics.xmlobj.JavascriptItemType;
75 import org.onap.portalsdk.analytics.xmlobj.Marker;
76 import org.onap.portalsdk.analytics.xmlobj.ObjectFactory;
77 import org.onap.portalsdk.analytics.xmlobj.SemaphoreType;
78 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
81 * This class is part of <B><I>RAPTOR (Rapid Application Programming Tool for OLAP Reporting)</I></B><BR/>
84 * --------------------------------------------------------------------------------------------------<BR/>
85 * <B>WizardProcessor.java</B> - This class is used to process the user input provided in the wizard.<BR/>
86 * It is called in creation as well as updation process. It builds report xml via JAXB using user<BR/>
87 * input. This is vital one, to store meta information of each report<BR/>
88 * ---------------------------------------------------------------------------------------------------<BR/>
91 * <U>Change Log</U><BR/><BR/>
93 * 31-Aug-2009 : Version 8.5.1 (Sundar);<UL><LI> For Time Series multi series property is exposed. </LI></UL>
94 * 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>
95 * 18-Aug-2009 : Version 8.5.1 (Sundar);<UL><LI> request Object is passed to prevent caching user/roles - Datamining/Hosting. </LI></UL>
96 * 12-Aug-2009 : Version 8.5 (Sundar); <UL><LI> For Line Charts too options are captured and rendering is customized. </LI></UL>
97 * 29-Jul-2009 : Version 8.4 (Sundar); <UL><LI> Maximum Excel Download size would be persisted if changed. </LI></UL>
98 * 14-Jul-2009 : Version 8.4 (Sundar); <UL><LI> Schedule feature is added to Dashboard Reports. </LI></UL>
99 * 29-Jun-2009 : Version 8.4 (Sundar); <UL><LI> Options for <I>Compare to Previous year Chart</I> are processed.</LI>
100 * <LI> In the Bar chart Last Occuring Series/Category can be plotted as Bar or Line Renderer. </LI>
102 * 22-Jun-2009 : Version 8.4 (Sundar); <UL><LI> processChart method is modified to accommodate creating
103 * Bar Charts, Time Difference Charts and adding generic chart options.</LI></UL>
107 public class WizardProcessor extends org.onap.portalsdk.analytics.RaptorObject {
109 private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(WizardProcessor.class);
111 public WizardProcessor() {
114 private String adjustDataType(String oracleDataType) {
115 return oracleDataType.equals("VARCHAR2") ? AppConstants.CT_CHAR : oracleDataType;
116 // Probably should be expanded to convert any CHAR or VARCHAR type to
117 // CT_CHAR, number type to CT_NUMBER and date to CT_DATE
120 public void persistReportDefinition(HttpServletRequest request, ReportDefinition rdef)
121 throws RaptorException {
122 ReportRuntime rr = (ReportRuntime) request.getSession().getAttribute(
123 AppConstants.SI_REPORT_RUNTIME);
124 if (rr != null && rr.getReportID().equals(rdef.getReportID()))
125 request.getSession().removeAttribute(AppConstants.SI_REPORT_RUNTIME);
126 rdef.persistReport(request);
127 } // persistReportDefinition
129 public void processWizardStep(HttpServletRequest request) throws Exception {
130 String action = nvl(request.getParameter(AppConstants.RI_WIZARD_ACTION),
131 AppConstants.WA_BACK);
133 String reportID = AppUtils.getRequestValue(request, AppConstants.RI_REPORT_ID);
134 ReportDefinition rdef = (new ReportHandler()).loadReportDefinition(request, reportID);
135 request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
137 String curStep = rdef.getWizardSequence().getCurrentStep();
138 String curSubStep = rdef.getWizardSequence().getCurrentSubStep();
139 if (AppUtils.getRequestNvlValue(request, "showDashboardOptions").length()<=0)
140 request.setAttribute("showDashboardOptions", "F");
141 logger.debug(EELFLoggerDelegate.debugLogger, ("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^curStep " + curStep + " " + curSubStep + " " + action));
142 boolean reportUpdated = false;
143 if (!action.equals(AppConstants.WA_BACK)) {
144 if (curStep.equals(AppConstants.WS_DEFINITION)) {
145 reportUpdated = processDefinition(request);
146 } else if (curStep.equals(AppConstants.WS_SQL)) {
147 if (action.equals(AppConstants.WA_VALIDATE))
148 reportUpdated = processValidateSQL(request);
149 } else if (curStep.equals(AppConstants.WS_TABLES)) {
150 if (curSubStep.equals(AppConstants.WSS_ADD))
151 reportUpdated = processTableAdd(request);
152 else if (curSubStep.equals(AppConstants.WSS_EDIT))
153 reportUpdated = processTableEdit(request);
154 else if (action.equals(AppConstants.WA_DELETE))
155 reportUpdated = processTableDelete(request);
156 } else if (curStep.equals(AppConstants.WS_COLUMNS)) {
157 if (curSubStep.equals(AppConstants.WSS_ADD)
158 || curSubStep.equals(AppConstants.WSS_EDIT) || action.equals(AppConstants.WA_SAVE) || action.equals(AppConstants.WA_NEXT)) {
159 reportUpdated = processColumnAddEdit(request, curSubStep
160 .equals(AppConstants.WSS_EDIT) || curSubStep
161 .equals(AppConstants.WA_MODIFY));
162 //reportUpdated = processColumnAddEdit(request, true);
164 else if (curSubStep.equals(AppConstants.WSS_ADD_MULTI))
165 reportUpdated = processColumnAddMulti(request);
166 else if (curSubStep.equals(AppConstants.WSS_ORDER_ALL))
167 reportUpdated = processColumnOrderAll(request);
168 else if (action.equals(AppConstants.WA_DELETE))
169 reportUpdated = processColumnDelete(request);
170 else if (action.equals(AppConstants.WA_MOVE_UP))
171 reportUpdated = processColumnMoveUp(request);
172 else if (action.equals(AppConstants.WA_MOVE_DOWN))
173 reportUpdated = processColumnMoveDown(request);
174 } else if (curStep.equals(AppConstants.WS_FORM_FIELDS)) {
175 if (curSubStep.equals(AppConstants.WSS_ADD)
176 || curSubStep.equals(AppConstants.WSS_EDIT))
177 reportUpdated = processFormFieldAddEdit(request, curSubStep
178 .equals(AppConstants.WSS_EDIT), action);
179 else if (action.equals(AppConstants.WA_DELETE))
180 reportUpdated = processFormFieldDelete(request);
181 else if (action.equals(AppConstants.WA_MOVE_UP))
182 reportUpdated = processFormFieldMoveUp(request);
183 else if (action.equals(AppConstants.WA_MOVE_DOWN))
184 reportUpdated = processFormFieldMoveDown(request);
185 else if (action.equals(AppConstants.WSS_ADD_BLANK))
186 reportUpdated = processFormFieldBlank(request);
187 else if (action.equals(AppConstants.WSS_INFO_BAR))
188 reportUpdated = processFormFieldInfoBar(request);
189 } else if (curStep.equals(AppConstants.WS_FILTERS)) {
190 if (curSubStep.equals(AppConstants.WSS_ADD)
191 || curSubStep.equals(AppConstants.WSS_EDIT))
192 reportUpdated = processFilterAddEdit(request, curSubStep
193 .equals(AppConstants.WSS_EDIT));
194 else if (action.equals(AppConstants.WA_DELETE))
195 reportUpdated = processFilterDelete(request);
196 } else if (curStep.equals(AppConstants.WS_SORTING)) {
197 if (curSubStep.equals(AppConstants.WSS_ADD)
198 || curSubStep.equals(AppConstants.WSS_EDIT))
199 reportUpdated = processSortAddEdit(request, curSubStep
200 .equals(AppConstants.WSS_EDIT));
201 else if (curSubStep.equals(AppConstants.WSS_ORDER_ALL))
202 reportUpdated = processSortOrderAll(request);
203 else if (action.equals(AppConstants.WA_DELETE))
204 reportUpdated = processSortDelete(request);
205 else if (action.equals(AppConstants.WA_MOVE_UP))
206 reportUpdated = processSortMoveUp(request);
207 else if (action.equals(AppConstants.WA_MOVE_DOWN))
208 reportUpdated = processSortMoveDown(request);
209 } else if (curStep.equals(AppConstants.WS_JAVASCRIPT)) {
210 if (action.equals(AppConstants.WSS_ADD))
211 reportUpdated = processAddJavascriptElement(request);
212 else if (action.equals(AppConstants.WA_SAVE))
213 reportUpdated = processSaveJavascriptElement(request);
214 else if (action.equals(AppConstants.WA_DELETE))
215 reportUpdated = processDeleteJavascriptElement(request);
217 reportUpdated = processJavascript(request);
218 } else if (curStep.equals(AppConstants.WS_CHART)) {
219 reportUpdated = processChart(request, action);
220 } else if (curStep.equals(AppConstants.WS_USER_ACCESS)) {
221 reportUpdated = processUserAccess(request, action);
222 } else if (curStep.equals(AppConstants.WS_REPORT_LOG)) {
223 if (action.equals(AppConstants.WA_DELETE_USER))
224 reportUpdated = processClearLog(request);
225 } else if (curStep.equals(AppConstants.WS_SCHEDULE)) {
226 reportUpdated = processSchedule(request, action);
227 } else if(curStep.equals(AppConstants.WS_DATA_FORECASTING)) {
228 reportUpdated = processForecasting(request, action);
230 /****For Report Maps - Start*****/
231 else if (curStep.equals(AppConstants.WS_MAP)) {
232 reportUpdated = processMap(request, action);
234 /****For Report Maps - End*****/
239 persistReportDefinition(request, rdef);
240 } // processWizardStep
242 public void processImportSemaphorePopup(HttpServletRequest request) throws RaptorException {
243 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
244 AppConstants.SI_REPORT_DEFINITION);
246 String importReportId = AppUtils
247 .getRequestNvlValue(request, AppConstants.RI_REPORT_ID);
248 ReportRuntime rr = (new ReportHandler()).loadReportRuntime(request, importReportId,
251 ArrayList importedList = new ArrayList();
252 if (rr.getSemaphoreList() != null)
253 for (Iterator iter = rr.getSemaphoreList().getSemaphore().iterator(); iter
255 SemaphoreType sem = rdef.addSemaphore(new ObjectFactory(),
256 (SemaphoreType) iter.next());
258 .add(new IdNameValue(sem.getSemaphoreId(), sem.getSemaphoreName()));
261 if (importedList.size() > 0) {
262 request.setAttribute(AppConstants.RI_DATA_SET, importedList);
263 persistReportDefinition(request, rdef);
265 } // processImportSemaphorePopup
267 public void processSemaphorePopup(HttpServletRequest request) throws RaptorException {
268 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
269 AppConstants.SI_REPORT_DEFINITION);
271 String semaphoreId = AppUtils.getRequestNvlValue(request, "semaphoreId");
272 String semaphoreName = AppUtils.getRequestNvlValue(request, "semaphoreName");
273 String semaphoreType = AppUtils.getRequestNvlValue(request, "semaphoreType");
275 SemaphoreType semaphore = rdef.getSemaphoreById(semaphoreId);
276 if (semaphore == null) {
277 semaphore = rdef.addSemaphoreType(new ObjectFactory(), semaphoreName,
278 semaphoreType, null);
279 semaphoreId = semaphore.getSemaphoreId();
280 request.setAttribute("semaphoreId", semaphoreId);
282 rdef.deleteSemaphore(semaphore);
283 semaphore.setSemaphoreName(semaphoreName);
284 semaphore.setSemaphoreType(semaphoreType);
286 rdef.setSemaphore(semaphore);
289 String[] formatId = request.getParameterValues("formatId");
290 String[] lessThanValue = request.getParameterValues("lessThanValue");
291 String[] expression = request.getParameterValues("expression");
292 String[] bold = request.getParameterValues("bold");
293 String[] italic = request.getParameterValues("italic");
294 String[] underline = request.getParameterValues("underline");
295 String[] bgColor = request.getParameterValues("bgColor");
296 String[] fontColor = request.getParameterValues("fontColor");
297 String[] fontFace = request.getParameterValues("fontFace");
298 String[] fontSize = request.getParameterValues("fontSize");
299 //String[] anyFmt = request.getParameterValues("anyFmt");
301 // String[] alignment = request.getParameterValues("alignment");
303 for (int i = 0; i < lessThanValue.length; i++)
304 if (i == 0 || nvl(lessThanValue[i]).length() > 0) {
305 FormatType fmt = null;
306 if (i == 0 || nvl(formatId[i]).length() > 0)
307 fmt = rdef.getSemaphoreFormatById(semaphore, nvl(formatId[i]));
309 fmt = rdef.addEmptyFormatType(new ObjectFactory(), semaphore);
311 fmt.setLessThanValue(nvl(lessThanValue[i]));
312 fmt.setExpression(nvl(expression[i]));
313 fmt.setBold(bold[i].equals("Y"));
314 fmt.setItalic(italic[i].equals("Y"));
315 fmt.setUnderline(underline[i].equals("Y"));
316 fmt.setBgColor(bgColor[i]);
317 fmt.setFontColor(fontColor[i]);
318 fmt.setFontFace(fontFace[i]);
319 fmt.setFontSize(fontSize[i]);
320 //fmt.setAnyFmt((anyFmt[i]!=null)?anyFmt[i].startsWith("Y"):false);
321 // fmt.setAlignment(alignment[i]);
322 } else if (nvl(formatId[i]).length() > 0)
323 rdef.deleteFormatType(semaphore, formatId[i]);
325 persistReportDefinition(request, rdef);
326 } // processSemaphorePopup
328 private boolean processDefinition(HttpServletRequest request) throws Exception {
329 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
330 AppConstants.SI_REPORT_DEFINITION);
332 String reportName = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportName"));
333 String reportDescr = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportDescr"));
334 String folderId = AppUtils.getRequestNvlValue(request, "folder_id");
335 boolean isAllowSchedule = (AppUtils.getRequestNvlValue(request, "allowSchedule").length()<=0?"N":AppUtils.getRequestNvlValue(request, "allowSchedule")).startsWith("Y");
336 boolean isColumnGroup = (AppUtils.getRequestNvlValue(request, "multiGroupColumn").length()<=0?"N":AppUtils.getRequestNvlValue(request, "multiGroupColumn")).startsWith("Y");
337 boolean isTopDown = (AppUtils.getRequestNvlValue(request, "topDown").length()<=0?"N":AppUtils.getRequestNvlValue(request, "topDown")).startsWith("Y");
338 boolean isSizedByContent= (AppUtils.getRequestNvlValue(request, "sizedByContent").length()<=0?"N":AppUtils.getRequestNvlValue(request, "sizedByContent")).startsWith("Y");
339 boolean reportsInNewWindow = false;
340 boolean hideFormFieldAfterRun = false;
342 /*recurrance in schedule tab - Start*/
343 String isOneTimeScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isOneTimeScheduleAllowed"),"N");
344 String isHourlyScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isHourlyScheduleAllowed"),"N");
345 String isDailyScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isDailyScheduleAllowed"),"N");
346 String isDailyMFScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isDailyMFScheduleAllowed"),"N");
347 String isWeeklyScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isWeeklyScheduleAllowed"),"N");
348 String isMonthlyScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isMonthlyScheduleAllowed"),"N");
349 //System.out.println("//////////// + isOneTimeScheduleAllowed : " + isOneTimeScheduleAllowed);
350 /*recurrance in schedule tab - End*/
353 if (reportDescr.length() > 1000)
354 reportDescr = reportDescr.substring(0, 1000);
355 boolean reportUpdated;
357 String reportType = AppUtils.getRequestNvlValue(request, "reportType");
361 //rdef.setReportName(reportName);
362 //rdef.setReportDescr(reportDescr);
363 //rdef.setReportType(reportType);
364 rdef.setFolderId(folderId);
365 // debugLogger.debug("setting folder ID = " + folderId);
366 if(reportType.equals(AppConstants.RT_DASHBOARD)) {
367 rdef.setReportName(reportName);
368 rdef.setReportDescr(reportDescr);
369 rdef.setReportType(reportType);
370 String dashboardLayoutHTML = AppUtils.getRequestNvlValue(request, "dashboardLayoutHTML");
371 rdef.setDashboardLayoutHTML(dashboardLayoutHTML);
372 String dataContainerHeight = nvl(AppUtils.getRequestValue(request, "heightContainer"), "auto");
373 String dataContainerWidth = nvl(AppUtils.getRequestValue(request, "widthContainer"), "auto");
374 rdef.setDataContainerHeight(dataContainerHeight);
375 rdef.setDataContainerWidth(dataContainerWidth);
376 rdef.setAllowSchedule(isAllowSchedule?"Y":"N");
380 String numDashCols = AppUtils.getRequestNvlValue(request, "numDashCols");
381 String reports1 = AppUtils.getRequestNvlValue(request, "reports1");
382 String reports2 = AppUtils.getRequestNvlValue(request, "reports2");
383 String reports3 = AppUtils.getRequestNvlValue(request, "reports3");
384 String reports4 = AppUtils.getRequestNvlValue(request, "reports4");
385 String repBgColor1 = AppUtils.getRequestNvlValue(request, "repBgColor1");
386 String repBgColor2 = AppUtils.getRequestNvlValue(request, "repBgColor2");
387 String repBgColor3 = AppUtils.getRequestNvlValue(request, "repBgColor3");
388 String repBgColor4 = AppUtils.getRequestNvlValue(request, "repBgColor4");
390 //List reports = rdef.getDashBoardReports();
391 rdef.setNumDashCols(numDashCols);
392 DashboardReports reportsList = new DashboardReportsImpl();
394 String reports[] = new String[]{reports1, reports2, reports3, reports4};
395 String repBgColors[] = new String[]{repBgColor1, repBgColor2, repBgColor3, repBgColor4};
396 for (int i = 0; i < reports.length; i++) {
397 Reports report = new ReportsImpl();
398 report.setReportId(reports[i]);
399 report.setBgcolor(repBgColors[i]);
400 reportsList.getReportsList().add(report);
405 rdef.setDashBoardReports(reportsList);
407 reportUpdated = true;
409 // reportUpdated = (!(reportName.equals(nvl(rdef.getReportName()))
410 // && reportDescr.equals(nvl(rdef.getReportDescr()))
411 // && reportType.equals(nvl(rdef.getReportType()))
412 // && numDashCols.equals(nvl(rdef.getNumDashCols()))));
415 if (rdef.getWizardSequence() instanceof WizardSequence)
416 rdef.generateWizardSequence(request);
420 if (AppUtils.getRequestNvlValue(request, "reportType").equals(AppConstants.RT_CROSSTAB) || rdef.getReportType().equals(AppConstants.RT_CROSSTAB)) {
422 String widthNo = AppUtils.getRequestNvlValue(request, "widthNo");
423 if(nvl(widthNo).endsWith("px"))
424 rdef.setWidthNoColumn(widthNo);
426 rdef.setWidthNoColumn(widthNo+"px");
429 String dataGridAlign = AppUtils.getRequestNvlValue(request, "dataGridAlign");
430 if(nvl(dataGridAlign).length()>0) {
431 rdef.setDataGridAlign(dataGridAlign);
433 rdef.setDataGridAlign("left");
436 String pdfImgLogo = AppUtils.getRequestNvlValue(request, "pdfImg");
437 if(nvl(pdfImgLogo).length()>0)
438 rdef.setPdfImg(pdfImgLogo);
440 rdef.setPdfImg(null);
441 String emptyMessage = AppUtils.getRequestNvlValue(request, "emptyMessage");
442 if(nvl(emptyMessage).length()>0)
443 rdef.setEmptyMessage(emptyMessage);
445 rdef.setEmptyMessage("");
446 String formHelp = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "formHelp"));
447 //String rDashboardType = nvl(AppUtils.getRequestValue(request, "showDashboardOptions"), "N");
448 //rdef.setDashboardType(rDashboardType.equals("Y"));
449 int excelDownloadSize = 500;
451 excelDownloadSize = Integer.parseInt(AppUtils.getRequestValue(request, "excelDownloadSize"));
452 } catch (NumberFormatException ex) {}
453 if(AppUtils.getRequestNvlValue(request, "excelDownloadSize").length()>0)
454 rdef.setMaxRowsInExcelDownload(Integer.parseInt(AppUtils.getRequestValue(request, "excelDownloadSize")));
455 if(AppUtils.getRequestNvlValue(request, "reportInNewWindow").length()>0)
456 reportsInNewWindow = AppUtils.getRequestNvlValue(request,"reportInNewWindow").equals("Y");
457 if(AppUtils.getRequestNvlValue(request, "hideFormFieldsAfterRun").length()>0)
458 hideFormFieldAfterRun = AppUtils.getRequestNvlValue(request,"hideFormFieldsAfterRun").equals("Y");
461 if(AppUtils.getRequestNvlValue(request, "displayFolderTree").length()>0)
462 rdef.setDisplayFolderTree(AppUtils.getRequestNvlValue(request,"displayFolderTree").equals("Y"));
464 rdef.setDisplayFolderTree(false);
465 String dataSource = AppUtils.getRequestNvlValue(request, "dataSource");
466 String dbType = Globals.getDBType();
467 String schemaSql = Globals.getRemoteDbSchemaSqlWithWhereClause();
468 schemaSql = schemaSql.replace("[schema_id]", dataSource);
471 ds = DbUtils.executeQuery(schemaSql);
473 String prefix = "", desc = "";
475 for (int i = 0; i < ds.getRowCount(); i++) {
476 dbType = ds.getItem(i, 2);
479 catch (Exception e) {}
481 int pageSize = Globals.getDefaultPageSize();
483 pageSize = Integer.parseInt(AppUtils.getRequestValue(request, "pageSize"));
484 } catch (NumberFormatException e) {
486 String rApproved = nvl(AppUtils.getRequestValue(request, "menuApproved"), "N");
488 String[] menuIDs = request.getParameterValues("menuID");
490 for (int i = 0; i < menuIDs.length; i++)
491 menuID += (menuID.length() == 0 ? "" : "|") + menuIDs[i];
495 // boolean additionalFieldsShown = AppUtils.getRequestNvlValue(request,
496 // "additionalFieldsShown").equals("Y");
497 boolean rRCSDisabled = AppUtils.getRequestNvlValue(request, "runtimeColSortDisabled").equals("Y");
498 String reportDefType = AppUtils.getRequestNvlValue(request, "reportDefType");
499 String dataContainerHeight = nvl(AppUtils.getRequestValue(request, "heightContainer"), "auto");
500 String dataContainerWidth = nvl(AppUtils.getRequestValue(request, "widthContainer"), "auto");
502 String displayOptions = nvl(AppUtils.getRequestValue(request, "hideForm"), "N")
503 + nvl(AppUtils.getRequestValue(request, "hideChart"), "N")
504 + nvl(AppUtils.getRequestValue(request, "hideData"), "N")
505 + nvl(AppUtils.getRequestValue(request, "hideBtns"), "N")
506 + nvl(AppUtils.getRequestValue(request, "hideMap"), "N")
507 + nvl(AppUtils.getRequestValue(request, "hideExcelIcons"), "N")
508 + nvl(AppUtils.getRequestValue(request, "hidePDFIcons"), "N");
509 /* StringBuffer dashboardOptions = new StringBuffer("");
510 dashboardOptions.append((nvl(AppUtils.getRequestValue(request, "hide"),"chart").equals("chart"))?"Y":"N");
511 dashboardOptions.append((nvl(AppUtils.getRequestValue(request, "hide"),"").equals("data"))?"Y":"N");
512 dashboardOptions.append((nvl(AppUtils.getRequestValue(request, "hideBtns"),"").equals("Y"))?"Y":"N");*/
514 String numFormCols = nvl(AppUtils.getRequestValue(request, "numFormCols"), "1");
515 String reportTitle = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportTitle"));
516 String reportSubTitle = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportSubTitle"));
517 String reportHeader = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportHeader"));
518 String reportFooter = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportFooter"));
520 int frozenColumns = 0;
522 frozenColumns = Integer.parseInt(AppUtils.getRequestValue(request, "frozenColumns"));
523 } catch (NumberFormatException ex) {
527 /* reportUpdated = (!(reportName.equals(nvl(rdef.getReportName()))))
528 && (!(reportDescr.equals(nvl(rdef.getReportDescr()))))
529 && (!(formHelp.equals(nvl(rdef.getFormHelpText()))))
530 && (!(reportType.equals(nvl(rdef.getReportType()))))
531 && (pageSize != rdef.getPageSize()) &&
532 // rPublic.equals(rdef.isPublic()?"Y":"N")&&
533 (!(menuID.equals(nvl(rdef.getMenuID()))))
534 && (!(rApproved.equals(rdef.isMenuApproved()))) && (additionalFieldsShown ? ((!(rRCSDisabled
535 .equals(rdef.isRuntimeColSortDisabled())))
536 && (!(displayOptions.equals(nvl(rdef.getDisplayOptions()))))
537 && (!(dashboardOptions.equals(nvl(rdef.getDashboardOptions()))))
538 && (!(numFormCols.equals(nvl(rdef.getNumFormCols()))))
539 && (!(reportTitle.equals(nvl(rdef.getReportTitle()))))
540 && (!(reportSubTitle.equals(nvl(rdef.getReportSubTitle()))))
541 && (!(reportHeader.equals(nvl(rdef.getReportHeader())))) && (!(reportFooter
542 .equals(nvl(rdef.getReportFooter()))))&& (reportsInNewWindow != rdef.isReportInNewWindow())):true);
544 /* reportUpdated = rRCSDisabled ==(rdef.isRuntimeColSortDisabled()
545 && displayOptions.equals(nvl(rdef.getDisplayOptions()))
546 //&& dashboardOptions.equals(nvl(rdef.getDashboardOptions()))
547 && numFormCols.equals(nvl(rdef.getNumFormCols()))
548 && reportTitle.equals(nvl(rdef.getReportTitle()))
549 && reportSubTitle.equals(nvl(rdef.getReportSubTitle()))
550 && reportHeader.equals(nvl(rdef.getReportHeader()))
551 && reportsInNewWindow == rdef.isReportInNewWindow()
552 && reportFooter.equals(nvl(rdef.getReportFooter())))
556 /*reportUpdated = (!(reportName.equals(nvl(rdef.getReportName()))
557 && reportDescr.equals(nvl(rdef.getReportDescr()))
558 && formHelp.equals(nvl(rdef.getFormHelpText()))
559 && reportType.equals(nvl(rdef.getReportType()))
560 && (pageSize == rdef.getPageSize())
561 && excelDownloadSize == rdef.getMaxRowsInExcelDownload()
562 && reportsInNewWindow == rdef.isReportInNewWindow()
563 && displayOptions.equals(rdef.getDisplayOptions())
564 && dataContainerHeight.equals(rdef.getDataContainerHeight())
565 && dataContainerWidth.equals(rdef.getDataContainerWidth())
566 && (isAllowSchedule ==(rdef.isAllowSchedule()))
567 // rPublic.equals(rdef.isPublic()?"Y":"N")&&
568 && menuID.equals(nvl(rdef.getMenuID()))
569 && rApproved.equals(rdef.isMenuApproved() ? "Y" : "N") && (rRCSDisabled
570 == ((rdef.isRuntimeColSortDisabled())
571 && displayOptions.equals(nvl(rdef.getDisplayOptions()))
572 //&& dashboardOptions.equals(nvl(rdef.getDashboardOptions()))
573 && numFormCols.equals(nvl(rdef.getNumFormCols()))
574 && reportTitle.equals(nvl(rdef.getReportTitle()))
575 && reportSubTitle.equals(nvl(rdef.getReportSubTitle()))
576 && isOneTimeScheduleAllowed.equals(nvl(rdef.getIsOneTimeScheduleAllowed()))
577 && isHourlyScheduleAllowed.equals(nvl(rdef.getIsHourlyScheduleAllowed()))
578 && isDailyScheduleAllowed.equals(nvl(rdef.getIsDailyScheduleAllowed()))
579 && isDailyMFScheduleAllowed.equals(nvl(rdef.getIsDailyMFScheduleAllowed()))
580 && isWeeklyScheduleAllowed.equals(nvl(rdef.getIsWeeklyScheduleAllowed()))
581 && isMonthlyScheduleAllowed.equals(nvl(rdef.getIsMonthlyScheduleAllowed()))
582 && reportHeader.equals(nvl(rdef.getReportHeader())) && reportFooter
583 .equals(nvl(rdef.getReportFooter()))))
585 rdef.setReportName(reportName);
586 rdef.setReportDescr(reportDescr);
587 rdef.setFormHelpText(formHelp);
588 rdef.setReportType(reportType);
589 rdef.setPageSize(pageSize);
590 rdef.setDBInfo(dataSource);
591 rdef.setDBType(dbType);
592 rdef.setDisplayOptions(displayOptions);
593 rdef.setDataContainerHeight(dataContainerHeight);
594 rdef.setDataContainerWidth(dataContainerWidth);
595 rdef.setAllowSchedule(isAllowSchedule?"Y":"N");
596 rdef.setMultiGroupColumn(isColumnGroup?"Y":"N");
597 rdef.setTopDown(isTopDown?"Y":"N");
598 rdef.setSizedByContent(isSizedByContent?"Y":"N");
599 // rdef.setPublic(rPublic.equals("Y"));
600 rdef.setMenuID(menuID);
601 rdef.setMenuApproved(rApproved.equals("Y"));
602 if (reportDefType.length() > 0)
603 rdef.setReportDefType(reportDefType);
604 /* if(rdef.isDashboardType()) {
605 rdef.setDashboardOptions(dashboardOptions.toString());
607 rdef.setHideFormFieldAfterRun(hideFormFieldAfterRun);
608 rdef.setReportInNewWindow(reportsInNewWindow);
609 rdef.setRuntimeColSortDisabled(rRCSDisabled);
610 rdef.setNumFormCols(numFormCols);
611 rdef.setReportTitle(reportTitle);
612 rdef.setReportSubTitle(reportSubTitle);
613 rdef.setReportHeader(reportHeader);
614 rdef.setReportFooter(reportFooter);
615 rdef.setIsOneTimeScheduleAllowed(isOneTimeScheduleAllowed);
616 rdef.setIsHourlyScheduleAllowed(isHourlyScheduleAllowed);
617 rdef.setIsDailyScheduleAllowed(isDailyScheduleAllowed);
618 rdef.setIsDailyMFScheduleAllowed(isDailyMFScheduleAllowed);
619 rdef.setIsWeeklyScheduleAllowed(isWeeklyScheduleAllowed);
620 rdef.setIsMonthlyScheduleAllowed(isMonthlyScheduleAllowed);
621 rdef.setFrozenColumns(frozenColumns);
625 if (rdef.getWizardSequence() instanceof WizardSequence)
626 rdef.generateWizardSequence(request);
630 * if(formHelp.length()>255) formHelp = formHelp.substring(0, 255);
634 // String rPublic = nvl(AppUtils.getRequestValue(request, "public"),
636 // String menuID = AppUtils.getRequestNvlValue(request, "menuID");
638 // boolean dashboardOptionsShown = AppUtils.getRequestNvlValue(request,
639 // "dashboardOptionsShown").equals("Y");
641 reportUpdated = true;
643 if (rdef.getReportID().equals("-1"))
644 // Always need to persist new report - in case it is a copy
645 reportUpdated = true;
647 return reportUpdated;
648 } // processDefinition
650 private boolean processTableAdd(HttpServletRequest request) throws Exception {
651 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
652 AppConstants.SI_REPORT_DEFINITION);
654 String tableName = AppUtils.getRequestNvlValue(request, "tableName").toUpperCase();
655 String tableId = rdef.getUniqueTableId(tableName);
657 String joinTableExpr = null;
658 String joinTableId = null;
660 DataSourceType joinTable =
661 rdef.getTableById(AppUtils.getRequestValue(request, "joinTableName"));
662 if (joinTable != null) {
663 String joinTableName = joinTable.getTableName();
664 joinTableId = joinTable.getTableId();
666 String joinExpr = AppUtils.getRequestNvlValue(request, "joinExpr").toUpperCase();
668 joinTableExpr = joinExpr.replaceAll("\\["+tableName+"\\]", tableId);
669 joinTableExpr = joinTableExpr.replaceAll("\\["+joinTableName+"\\]", joinTableId);
670 // debugLogger.debug("joinExpr : "+joinExpr+"\njoinTableExpr : "+ joinTableExpr);
673 rdef.addDataSourceType(new ObjectFactory(), tableId, tableName, AppUtils
674 .getRequestNvlValue(request, "tablePK"), AppUtils.getRequestNvlValue(request,
675 "displayName"), joinTableId, joinTableExpr, null);
677 rdef.setOuterJoin(rdef.getTableById(tableId), AppUtils.getRequestNvlValue(request,
679 rdef.resetCache(true);
684 private boolean processTableEdit(HttpServletRequest request) throws Exception {
685 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
686 AppConstants.SI_REPORT_DEFINITION);
688 DataSourceType dst = rdef.getTableById(AppUtils.getRequestNvlValue(request,
689 AppConstants.RI_DETAIL_ID));
691 String displayName = XSSFilter.filterRequest(AppUtils.getRequestNvlValue(request, "displayName"));
692 String outerJoin = AppUtils.getRequestNvlValue(request, "outerJoin");
694 String tableName = AppUtils.getRequestNvlValue(request, "tableName").toUpperCase();
695 String joinTableId = AppUtils.getRequestNvlValue(request, "joinTableName");
697 String joinExpr = AppUtils.getRequestNvlValue(request, "joinExpr").toUpperCase();
699 String joinTableExpr = null;
700 if(joinExpr.length()!=0){
701 joinTableExpr = joinExpr.replaceAll("\\["+tableName+"\\]", rdef.getTableByDBName(tableName).getTableId());
702 joinTableExpr = joinTableExpr.replaceAll("\\["+rdef.getTableById(joinTableId).getTableName().toUpperCase()+"\\]", joinTableId);
703 dst.setRefDefinition(joinTableExpr);
705 boolean reportUpdated = (!displayName.equals(nvl(dst.getDisplayName())) ||
706 !outerJoin.equals(rdef.getOuterJoinType(dst)) ||
707 !(joinExpr.length()==0));
709 dst.setDisplayName(displayName);
710 rdef.setOuterJoin(dst, outerJoin);
712 rdef.resetCache(true);
714 return true; // reportUpdated;
715 } // processTableEdit
718 private boolean processTableDelete(HttpServletRequest request) throws Exception {
719 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
720 AppConstants.SI_REPORT_DEFINITION);
721 rdef.deleteDataSourceType(AppUtils.getRequestNvlValue(request,
722 AppConstants.RI_DETAIL_ID));
724 } // processTableDelete
726 private boolean processColumnAddEdit(HttpServletRequest request, boolean isEdit)
731 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
732 AppConstants.SI_REPORT_DEFINITION);
733 DataColumnType currColumn = null;
735 String tableId = null;
736 String colName = null;
737 String dataType = null;
739 currColumn = rdef.getColumnById(AppUtils.getRequestNvlValue(request,
740 AppConstants.RI_DETAIL_ID));
742 if(currColumn!=null) {
743 tableId = currColumn.getTableId();
744 colName = currColumn.getDbColName(); // currColumn.getColName();
745 dataType = currColumn.getDbColType();
748 String colData = AppUtils.getRequestNvlValue(request, "columnDetails");
749 if(nvl(colData).length()>0) {
750 tableId = colData.substring(0, colData.indexOf('|'));
751 colName = colData.substring(tableId.length() + 1,
752 colData.indexOf('|', tableId.length() + 1)).toUpperCase();
753 dataType = colData.substring(tableId.length() + colName.length() + 2);
757 String exprFormula = AppUtils.getRequestNvlValue(request, "exprFormula");
759 String colNameValue = null;
760 if (exprFormula.length() > 0)
761 if (exprFormula.equals("_exprText_"))
762 colNameValue = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestValue(request, "exprText"));
763 else if (exprFormula.equals("COUNT(*)"))
764 colNameValue = exprFormula;
766 colNameValue = exprFormula + " " + colName + ")";
768 colNameValue = colName;
770 int displayWidth = -1;
772 displayWidth = Integer.parseInt(AppUtils.getRequestValue(request, "displayWidth"));
773 } catch (NumberFormatException e) {
776 String sColId = isEdit ? currColumn.getColId() : (nvl(colName).length()>0?rdef.getUniqueColumnId(colName):null);
777 String drillDownParams = AppUtils.getRequestValue(request, "drillDownParams");
778 if (drillDownParams != null) {
779 // Replacing references to [this] with [col_id]
780 while (drillDownParams.indexOf("[this]") >= 0) {
781 int startIdx = drillDownParams.indexOf("[this]");
782 StringBuffer sb = new StringBuffer();
785 sb.append(drillDownParams.substring(0, startIdx));
786 sb.append("[" + sColId + "]");
787 if (startIdx + 6 < drillDownParams.length() - 1)
788 sb.append(drillDownParams.substring(startIdx + 5));
789 drillDownParams = sb.toString();
793 String crossTabValue = null;
794 boolean isVisible = AppUtils.getRequestFlag(request, "visible");
795 boolean isSortable = AppUtils.getRequestFlag(request, "sortable");
796 String nowrap = AppUtils.getRequestNvlValue(request, "nowrap");
799 indentation = Integer.parseInt(AppUtils.getRequestNvlValue(request, "indentation"));
800 }catch (NumberFormatException e) {
802 String dependsOnFormField = AppUtils.getRequestNvlValue(request, "dependsOnFormField");
803 boolean isGroupBreak = AppUtils.getRequestFlag(request, "groupBreak");
804 String groupByPosStr = AppUtils.nvls(AppUtils.getRequestValue(request, "groupByPos"), "0");
805 int groupByPos = Integer.parseInt(groupByPosStr);
806 currColumn.setGroupByPos(groupByPos);
809 String subTotalCustomText = AppUtils.nvls(AppUtils.getRequestValue(request, "subTotalCustomText"), "Sub Total");
810 currColumn.setSubTotalCustomText(subTotalCustomText);
812 boolean hideRepeatedKey = AppUtils.getRequestFlag(request, "hideRepeatedKeys");
813 currColumn.setHideRepeatedKey(hideRepeatedKey);
816 String displayTotal = AppUtils.getRequestNvlValue(request, "displayTotal");
817 String widthInPxls = AppUtils.getRequestNvlValue(request, "widthInPxls");
819 if (rdef.getReportType().equals(AppConstants.RT_CROSSTAB)) {
823 crossTabValue = AppUtils.getRequestValue(request, "crossTabValue");
824 isVisible = nvl(crossTabValue).equals(AppConstants.CV_ROW)
825 || nvl(crossTabValue).equals(AppConstants.CV_COLUMN)
826 || nvl(crossTabValue).equals(AppConstants.CV_VALUE);
827 isGroupBreak = nvl(crossTabValue).equals(AppConstants.CV_ROW)
828 || nvl(crossTabValue).equals(AppConstants.CV_COLUMN);
830 if (nvl(crossTabValue).equals(AppConstants.CV_VALUE))
832 + AppUtils.getRequestNvlValue(request, "displayTotalPerRow");
837 String displayName = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "displayName"));
838 String colType = AppUtils.getRequestNvlValue(request, "colType");
839 String displayFormat = AppUtils.getRequestNvlValue(request, "displayFormat");
842 if(colType.equals(AppConstants.CT_HYPERLINK)) {
843 String hyperlinkURL = AppUtils.getRequestValue(request, "hyperlinkURL");
844 currColumn.setHyperlinkURL(hyperlinkURL);
845 String anchor = AppUtils.getRequestValue(request, "anchor");
846 currColumn.setHyperlinkType(anchor);
847 if(anchor.equals("IMAGE")) {
848 String actionImg = AppUtils.getRequestValue(request, "actionImg");
849 currColumn.setActionImg(actionImg);
855 String displayAlign = AppUtils.getRequestValue(request, "displayAlign");
856 String displayHeaderAlign = AppUtils.getRequestValue(request, "displayHeaderAlign");
857 String drillDownURL = AppUtils.getRequestValue(request, "drillDownURL");
858 String drillDownSuppress = AppUtils.getRequestValue(request, "drillDownSuppress");
859 boolean drillDownPopUp = AppUtils.getRequestFlag (request, "drillDownPopUp");
860 String semaphoreId = AppUtils.getRequestNvlValue(request, "semaphore");
861 String semaphoreType = AppUtils.getRequestNvlValue(request, "semaphoreTypeHidden");
863 String levelStr = AppUtils.getRequestNvlValue(request, "multiGroupColLevel");
864 String startColGroup = AppUtils.getRequestNvlValue(request, "startMultiGroup");
865 String colGroupColSpan = AppUtils.getRequestNvlValue(request, "colspan");
868 level = Integer.parseInt(levelStr);
869 }catch (NumberFormatException ex) {
872 int startColGroupInt = 0;
873 int colGroupColSpanInt = 0;
876 //startColGroupInt = Integer.parseInt(startColGroup);
877 colGroupColSpanInt = Integer.parseInt(colGroupColSpan);
878 } catch (NumberFormatException ex) {
882 currColumn.setLevel(level);
884 currColumn.setStart(startColGroupInt);
885 currColumn.setColspan(colGroupColSpanInt);
888 String targetColumnId = (semaphoreType.indexOf("|")!= -1 ? semaphoreType.substring(semaphoreType.indexOf("|")+1):"");
889 DataColumnType targetColumn = rdef.getColumnById(targetColumnId);
891 SemaphoreType semaphore = rdef.getSemaphoreById(semaphoreId);
892 rdef.deleteSemaphore(semaphore);
893 if(nvl(semaphoreType).length() > 0 && semaphoreType.indexOf("|")!=-1)
894 semaphore.setSemaphoreType(semaphoreType.substring(0,semaphoreType.indexOf("|")));
895 if(semaphore!=null) {
896 semaphore.setComment(currColumn.getColId());
897 if(nvl(semaphoreType).length() > 0)
898 semaphore.setTarget(targetColumnId.length()>0? targetColumnId: "");
899 rdef.setSemaphore(semaphore);
904 if(nvl(widthInPxls).length()>0) {
905 if(nvl(widthInPxls).endsWith("px"))
906 currColumn.setDisplayWidthInPxls(widthInPxls);
908 currColumn.setDisplayWidthInPxls(widthInPxls+"px");
910 currColumn.setDisplayWidthInPxls("");
913 currColumn.setCrossTabValue(crossTabValue);
914 currColumn.setDependsOnFormField(dependsOnFormField);
915 currColumn.setDisplayName(displayName);
916 //currColumn.setOriginalDisplayName(displayName);
918 if (displayWidth > 0)
919 currColumn.setDisplayWidth(displayWidth);
920 currColumn.setDisplayAlignment(displayAlign);
921 currColumn.setDisplayHeaderAlignment(displayHeaderAlign);
922 currColumn.setDrillDownURL(drillDownURL);
923 currColumn.setDrillDownParams(drillDownParams);
924 currColumn.setDrillDownType(drillDownSuppress);
925 currColumn.setDrillinPoPUp(drillDownPopUp);
927 currColumn.setIndentation(indentation);
929 rdef.setDrillDownURLInPopupPresent(true);
931 /*if(targetColumn!=null) {
932 currColumn.setSemaphoreId(null);
933 targetColumn.setSemaphoreId(semaphoreId);
935 currColumn.setSemaphoreId(semaphoreId);
936 currColumn.setGroupBreak(isGroupBreak);
937 logger.debug(EELFLoggerDelegate.debugLogger, (" ------------ Display Total ---------- "+ displayTotal));
938 currColumn.setDisplayTotal(displayTotal);
939 //if (currColumn.getDrillDownURL() == null || currColumn.getDrillDownURL().length() == 0)
940 currColumn.setVisible(isVisible);
941 currColumn.setIsSortable(isSortable);
942 currColumn.setNowrap(nowrap);
944 // currColumn.setVisible(true);
945 if (rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED)) {
947 currColumn.setColType(colType);
948 displayFormat = AppUtils.getRequestValue(request, "colDataFormat");
949 if (displayFormat != null){
950 currColumn.setColFormat(displayFormat);
952 if(colType!=null && colType.equals(AppConstants.CT_DATE)) {
953 boolean enhancedPagination = AppUtils.getRequestFlag(request, "enhancedPagination");
954 currColumn.setEnhancedPagination(enhancedPagination);
957 if (!rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED)) {
958 currColumn.setColName(colNameValue);
959 if (displayFormat != null)
960 currColumn.setColFormat(displayFormat);
961 //currColumn.setVisible(isVisible);
962 currColumn.setCalculated(exprFormula.length() > 0);
964 rdef.adjustColumnType(currColumn);
967 rdef.resetCache(true);
969 currColumn = rdef.addDataColumnType(new ObjectFactory(), sColId, tableId, colName,
970 crossTabValue, colNameValue, displayName, displayWidth, displayAlign, rdef
971 .getAllColumns().size() + 1, isVisible,
972 (exprFormula.length() > 0), adjustDataType(dataType), displayFormat,
973 isGroupBreak, -1, null, displayTotal, null, -1, drillDownSuppress,
974 drillDownURL, drillDownParams, semaphoreId, null);
976 if (rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED))
977 rdef.setColumnNoParseDateFlag(currColumn, AppUtils.getRequestFlag(request,
979 if(nvl(displayName).length()>0)
983 } // processColumnAddEdit
985 private boolean processColumnAddMulti(HttpServletRequest request) throws Exception {
986 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
987 AppConstants.SI_REPORT_DEFINITION);
989 List reportCols = rdef.getAllColumns();
990 int nCol = reportCols.size() + 1;
992 String[] addColumn = request.getParameterValues("addColumn");
993 String[] tableId = request.getParameterValues("tableId");
994 String[] columnName = request.getParameterValues("columnName");
995 String[] columnType = request.getParameterValues("columnType");
996 String[] displayName = request.getParameterValues("displayName");
998 for (int i = 0; i < addColumn.length; i++)
999 if (addColumn[i].equals("Y")) {
1001 String uniqueDisplayName = displayName[i];
1002 boolean isUnique = true;
1005 for (Iterator iter = reportCols.iterator(); iter.hasNext();)
1006 if (uniqueDisplayName.equals(((DataColumnType) iter.next())
1007 .getDisplayName())) {
1009 uniqueDisplayName = displayName[i] + (j++);
1012 } while (!isUnique);
1016 new ObjectFactory(),
1017 rdef.getUniqueColumnId(columnName[i]),
1028 adjustDataType(columnType[i]),
1029 (columnType[i].equals(AppConstants.CT_DATE) ? AppConstants.DEFAULT_DATE_FORMAT
1030 : null), false, -1, null, null, null, -1, null, null,
1035 } // processColumnAddMulti
1037 private boolean processColumnOrderAll(HttpServletRequest request) throws Exception {
1038 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1039 AppConstants.SI_REPORT_DEFINITION);
1041 String[] colId = request.getParameterValues("colId");
1042 String[] colOrder = request.getParameterValues("colOrder");
1044 boolean reportUpdated = false;
1045 for (int i = 0; i < colId.length; i++) {
1046 DataColumnType dct = rdef.getColumnById(nvl(colId[i]));
1052 iColOrder = Integer.parseInt(colOrder[i]);
1053 } catch (NumberFormatException e) {
1056 if (iColOrder > 0) {
1057 dct.setOrderSeq(iColOrder);
1058 reportUpdated = true;
1062 if (reportUpdated) {
1063 List reportCols = rdef.getAllColumns();
1064 Collections.sort(reportCols, new OrderSeqComparator());
1067 for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
1068 DataColumnType dct = (DataColumnType) iter.next();
1069 dct.setOrderSeq(iOrder++);
1072 rdef.resetCache(false);
1075 return reportUpdated;
1076 } // processColumnOrderAll
1078 private boolean processColumnDelete(HttpServletRequest request) throws Exception {
1079 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1080 AppConstants.SI_REPORT_DEFINITION);
1081 rdef.deleteDataColumnType(AppUtils.getRequestNvlValue(request,
1082 AppConstants.RI_DETAIL_ID));
1084 } // processColumnDelete
1086 private boolean processColumnMoveUp(HttpServletRequest request) throws Exception {
1087 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1088 AppConstants.SI_REPORT_DEFINITION);
1089 rdef.shiftColumnOrderUp(AppUtils
1090 .getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
1092 } // processColumnMoveUp
1094 private boolean processColumnMoveDown(HttpServletRequest request) throws Exception {
1095 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1096 AppConstants.SI_REPORT_DEFINITION);
1097 rdef.shiftColumnOrderDown(AppUtils.getRequestNvlValue(request,
1098 AppConstants.RI_DETAIL_ID));
1100 } // processColumnMoveDown
1102 private boolean processFormFieldAddEdit(HttpServletRequest request, boolean isEdit,
1103 String action) throws Exception {
1104 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1105 AppConstants.SI_REPORT_DEFINITION);
1107 String fieldName = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "fieldName"));
1108 String multiSelectSize = "0";
1109 String colId = AppUtils.getRequestNvlValue(request, "fieldColId");
1110 if (rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED)) {
1111 String displayFormat = AppUtils.getRequestNvlValue(request, "displayFormat");
1112 if (displayFormat.length() > 0)
1113 colId += "|" + displayFormat;
1115 String fieldType = AppUtils.getRequestNvlValue(request, "fieldType");
1116 String validation = AppUtils.getRequestNvlValue(request, "validation");
1117 String mandatory = nvl(AppUtils.getRequestValue(request, "mandatory"), "N");
1118 String defaultValue = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "defaultValue"));
1119 String fieldHelp = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "fieldHelp"));
1120 String fieldSQL = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "fieldSQL"));
1121 String fieldDefaultSQL = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "fieldDefaultSQL"));
1122 String visible = nvl(AppUtils.getRequestValue(request, "visible"),"Y");
1123 String dependsOn = nvl(AppUtils.getRequestValue(request, "dependsOn"),"");
1124 String rangeStartDate = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "rangeStartDate"));
1125 String rangeEndDate = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "rangeEndDate"));
1126 String rangeStartDateSQL = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "rangeStartDateSQL"));
1127 String rangeEndDateSQL = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "rangeEndDateSQL"));
1128 boolean isGroupFormField = AppUtils.getRequestFlag(request,"isGroupFormField");
1130 Calendar start = null;
1131 Calendar end = null;
1132 if (AppUtils.nvl(rangeStartDate).length()>0){
1133 SimpleDateFormat dtf = new SimpleDateFormat("MM/dd/yyyy");
1134 start = Calendar.getInstance();
1135 start.setTime(dtf.parse(rangeStartDate));
1137 if (AppUtils.nvl(rangeEndDate).length()>0){
1138 SimpleDateFormat dtf = new SimpleDateFormat("MM/dd/yyyy");
1139 end = Calendar.getInstance();
1140 end.setTime(dtf.parse(rangeEndDate));
1142 * if(fieldHelp.length()>255) fieldHelp = fieldHelp.substring(0, 255);
1145 boolean reportUpdated = false;
1147 FormFieldType currField = null;
1149 String fieldId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID);
1151 currField = rdef.getFormFieldById(fieldId);
1152 if (currField != null && nvl(fieldName).length()>0) {
1153 reportUpdated = (!(fieldName.equals(nvl(currField.getFieldName()))
1154 && colId.equals(nvl(currField.getColId()))
1155 && fieldType.equals(nvl(currField.getFieldType()))
1156 && validation.equals(nvl(currField.getValidationType()))
1157 && mandatory.equals(nvl(currField.getMandatory(), "N"))
1158 && defaultValue.equals(nvl(currField.getDefaultValue()))
1159 && fieldSQL.equals(nvl(currField.getFieldSQL()))
1160 && fieldDefaultSQL.equals(nvl(currField.getFieldDefaultSQL()))
1161 && dependsOn.equals(nvl(currField.getDependsOn(), "N"))
1162 && (start == null || (start != null && currField.getRangeStartDate() == null) || (start.equals(currField.getRangeStartDate())))
1163 && (end == null || (end != null && currField.getRangeEndDate() == null) || (end.equals(currField.getRangeEndDate())))
1164 && rangeStartDateSQL.equals(nvl(currField.getRangeStartDateSQL()))
1165 && rangeEndDateSQL.equals(nvl(currField.getRangeEndDateSQL()))
1166 && visible.equals(nvl(currField.getVisible(), "Y"))
1167 && isGroupFormField == currField.isGroupFormField()
1168 && fieldHelp.equals(nvl(currField.getComment()))));
1170 rdef.replaceFormFieldReferences("[" + currField.getFieldName() + "]", "["
1173 currField.setFieldName(fieldName);
1174 currField.setColId(colId);
1175 currField.setFieldType(fieldType);
1176 currField.setValidationType(validation);
1177 currField.setMandatory(mandatory);
1178 currField.setDefaultValue(defaultValue);
1179 currField.setFieldSQL(fieldSQL);
1180 currField.setFieldDefaultSQL(fieldDefaultSQL);
1181 currField.setComment(fieldHelp);
1182 currField.setVisible(visible);
1183 currField.setDependsOn(dependsOn);
1186 currField.setRangeStartDate(DatatypeFactory.newInstance()
1187 .newXMLGregorianCalendar(start.YEAR, start.MONTH, start.DAY_OF_WEEK, start.HOUR, start.MINUTE, start.SECOND, start.MILLISECOND, start.ZONE_OFFSET));
1189 currField.setRangeStartDate(null);
1192 currField.setRangeEndDate(DatatypeFactory.newInstance()
1193 .newXMLGregorianCalendar(end.YEAR, end.MONTH, end.DAY_OF_WEEK, end.HOUR, end.MINUTE, end.SECOND, end.MILLISECOND, end.ZONE_OFFSET));
1195 currField.setRangeEndDate(null);
1197 /*currField.setRangeEndDate(DatatypeFactory.newInstance()
1198 .newXMLGregorianCalendar(end));*/
1199 } catch (DatatypeConfigurationException ex) {
1203 currField.setRangeStartDateSQL(rangeStartDateSQL);
1204 currField.setRangeEndDateSQL(rangeEndDateSQL);
1205 currField.setGroupFormField(isGroupFormField);
1206 if(fieldType.equals(FormField.FFT_LIST_MULTI)) {
1207 multiSelectSize = AppUtils.getRequestNvlValue(request, "multiSelectListSize");
1208 currField.setMultiSelectListSize(multiSelectSize);
1214 reportUpdated = true;
1216 currField = rdef.addFormFieldType(new ObjectFactory(), fieldName, colId,
1217 fieldType, validation, mandatory, defaultValue, fieldSQL, fieldHelp, start, end, rangeStartDateSQL, rangeEndDateSQL);
1219 request.setAttribute(AppConstants.RI_DETAIL_ID, currField.getFieldId());
1222 if (action.equals(AppConstants.WA_ADD_USER)) {
1223 reportUpdated = true;
1224 rdef.addFormFieldPredefinedValue(new ObjectFactory(), currField, XSSFilter.filterRequestOnlyScript(AppUtils
1225 .getRequestNvlValue(request, "newPredefinedValue")));
1226 } else if (action.equals(AppConstants.WA_DELETE_USER)) {
1227 reportUpdated = true;
1228 rdef.deleteFormFieldPredefinedValue(currField, AppUtils.getRequestNvlValue(
1229 request, "delPredefinedValue"));
1232 return reportUpdated;
1233 } // processFormFieldAddEdit
1235 private boolean processFormFieldDelete(HttpServletRequest request) throws Exception {
1236 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1237 AppConstants.SI_REPORT_DEFINITION);
1239 String fieldId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID);
1240 rdef.deleteFormField(fieldId);
1243 } // processFormFieldDelete
1245 private boolean processFormFieldMoveUp(HttpServletRequest request) throws Exception {
1246 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1247 AppConstants.SI_REPORT_DEFINITION);
1248 rdef.shiftFormFieldUp(AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
1250 } // processFormFieldMoveUp
1252 private boolean processFormFieldMoveDown(HttpServletRequest request) throws Exception {
1253 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1254 AppConstants.SI_REPORT_DEFINITION);
1255 rdef.shiftFormFieldDown(AppUtils
1256 .getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
1258 } // processFormFieldMoveDown
1260 private boolean processFormFieldBlank(HttpServletRequest request) throws Exception {
1261 boolean reportUpdated = false;
1262 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1263 AppConstants.SI_REPORT_DEFINITION);
1264 reportUpdated = true;
1265 rdef.addFormFieldBlank(new ObjectFactory());
1267 } // processFormFieldMoveDown
1269 //processFormFieldInfoBar
1270 private boolean processFormFieldInfoBar(HttpServletRequest request) throws Exception {
1271 boolean reportUpdated = false;
1272 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1273 AppConstants.SI_REPORT_DEFINITION);
1274 reportUpdated = true;
1275 rdef.addCustomizedTextForParameters(XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "blueBarField")));
1277 } // processFormFieldMoveDown
1280 private boolean processForecasting(HttpServletRequest request, String action) throws Exception {
1281 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1282 AppConstants.SI_REPORT_DEFINITION);
1284 if(rdef.getDataminingOptions()==null)
1285 rdef.addDataminingOptions(new ObjectFactory());
1287 String classifiers = AppUtils.getRequestNvlValue(request, "classifiers");
1288 rdef.setClassifier(classifiers);
1289 String dateAttrColId = AppUtils.getRequestNvlValue(request, "timeAttribute");
1290 String timeFormat = AppUtils.getRequestNvlValue(request, "timeFormat");
1291 if(timeFormat.equals("Default")) timeFormat = "yyyy-MM-dd HH:mm:ss";
1292 String forecastingPeriod = AppUtils.getRequestNvlValue(request, "forecastingPeriod");
1294 String[] forecastCols = request.getParameterValues("forecastCol");
1295 List reportCols = rdef.getAllColumns();
1296 DataColumnType dct = null;
1297 Iterator iter = null;
1301 if(dateAttrColId != null) {
1302 for(iter=reportCols.iterator(); iter.hasNext(); ) {
1303 dct = (DataColumnType) iter.next();
1304 if(dct.getColId().equals(dateAttrColId)) {
1305 dct.setDataMiningCol(AppConstants.DM_DATE_ATTR);
1306 if(timeFormat!=null) rdef.setForecastingTimeFormat(timeFormat);
1312 if(forecastCols != null) {
1313 for (int i = 0; i < forecastCols.length; i++) {
1314 for(iter=reportCols.iterator(); iter.hasNext(); ) {
1315 dct = (DataColumnType) iter.next();
1316 if(dct.getColId().equals(forecastCols[i])) {
1317 dct.setDataMiningCol(AppConstants.DM_FORECASTING_ATTR);
1321 rdef.setForecastingPeriod(forecastingPeriod);
1323 boolean reportUpdated = true;
1325 return reportUpdated;
1326 } // processForecasting
1329 private boolean processFilterAddEdit(HttpServletRequest request, boolean isEdit)
1331 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1332 AppConstants.SI_REPORT_DEFINITION);
1334 String colId = AppUtils.getRequestNvlValue(request, "filterColId");
1335 String filterExpr = AppUtils.getRequestNvlValue(request, "filterExpr");
1336 String argType = (filterExpr.equals("IS NULL") || filterExpr.equals("IS NOT NULL")) ? null
1337 : AppUtils.getRequestNvlValue(request, "argType");
1338 String argValue = (filterExpr.equals("IS NULL") || filterExpr.equals("IS NOT NULL")) ? null
1339 : AppUtils.getRequestNvlValue(request, "argValue");
1341 if (nvl(argType).equals(AppConstants.AT_COLUMN)) {
1342 List reportCols = rdef.getAllColumns();
1343 for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
1344 DataColumnType dct = (DataColumnType) iter.next();
1345 if (argValue != null && argValue.equals("[" + dct.getDisplayName() + "]")) {
1346 argValue = dct.getColId();
1352 if (nvl(argType).equals(AppConstants.AT_VALUE)
1353 && (!nvl(argValue).equals(AppConstants.FILTER_MAX_VALUE))
1354 && (!nvl(argValue).equals(AppConstants.FILTER_MIN_VALUE))) {
1355 // Validating the value by type
1356 DataColumnType currColumn = rdef.getColumnById(colId);
1357 String currColType = currColumn.getColType();
1360 String s_sql = Globals.getProcessFilterAddEdit();
1361 s_sql = s_sql.replace("[argValue]", argValue);
1362 /*DataSet ds = DbUtils.executeQuery("SELECT "
1363 + (currColType.equals(AppConstants.CT_NUMBER) ? ("TO_NUMBER('"
1365 : (currColType.equals(AppConstants.CT_DATE) ? ("TO_DATE('"
1368 + nvl(currColumn.getColFormat(),
1369 AppConstants.DEFAULT_DATE_FORMAT) + "')")
1370 : ("'" + argValue + "'"))) + " FROM dual");*/
1372 DataSet ds = DbUtils.executeQuery("SELECT "
1373 + (currColType.equals(AppConstants.CT_NUMBER) ? ("TO_NUMBER('"
1375 : (currColType.equals(AppConstants.CT_DATE) ? ("TO_DATE('"
1378 + nvl(currColumn.getColFormat(),
1379 AppConstants.DEFAULT_DATE_FORMAT) + "')")
1381 } catch (Exception e) {
1382 throw new ValidationException(
1384 + (currColType.equals(AppConstants.CT_NUMBER) ? "Invalid number"
1385 : (currColType.equals(AppConstants.CT_DATE) ? ("Invalid date<br>Expected date format " + nvl(
1386 currColumn.getColFormat(),
1387 AppConstants.DEFAULT_DATE_FORMAT))
1388 : "Invalid value<br>Possible reason: use of single quotes"))
1389 + "<!--" + e.getMessage() + "--><br>Value: " + argValue);
1396 filterPos = Integer.parseInt(AppUtils.getRequestValue(request, "filterPos"));
1397 } catch (NumberFormatException e) {
1400 ColFilterType currFilter = rdef.getFilterById(colId, filterPos);
1401 if (currFilter != null) {
1402 currFilter.setJoinCondition(AppUtils.getRequestValue(request, "filterJoin"));
1403 currFilter.setOpenBrackets(AppUtils.getRequestValue(request, "openBrackets"));
1404 currFilter.setExpression(filterExpr);
1405 // if(argType!=null)
1406 currFilter.setArgType(argType);
1407 // if(argValue!=null)
1408 currFilter.setArgValue(argValue);
1410 .setCloseBrackets(AppUtils.getRequestValue(request, "closeBrackets"));
1413 rdef.resetCache(true);
1415 rdef.addColFilterType(new ObjectFactory(), colId, AppUtils.getRequestValue(
1416 request, "filterJoin"), AppUtils.getRequestValue(request, "openBrackets"),
1417 filterExpr, argType, argValue, AppUtils.getRequestValue(request,
1418 "closeBrackets"), null);
1422 } // processFilterAddEdit
1424 private boolean processFilterDelete(HttpServletRequest request) throws Exception {
1425 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1426 AppConstants.SI_REPORT_DEFINITION);
1428 String filterId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID);
1429 String colId = filterId.substring(0, filterId.indexOf('|'));
1432 filterPos = Integer.parseInt(filterId.substring(colId.length() + 1));
1433 } catch (NumberFormatException e) {
1436 rdef.removeColumnFilter(colId, filterPos);
1439 } // processFilterDelete
1441 private boolean processSortAddEdit(HttpServletRequest request, boolean isEdit)
1443 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1444 AppConstants.SI_REPORT_DEFINITION);
1446 String sortAscDesc = AppUtils.getRequestNvlValue(request, "sortAscDesc");
1448 DataColumnType currColumn = rdef.getColumnById(AppUtils.getRequestNvlValue(
1449 request, AppConstants.RI_DETAIL_ID));
1450 if (currColumn != null)
1451 currColumn.setOrderByAscDesc(sortAscDesc);
1452 rdef.resetCache(true);
1454 rdef.addColumnSort(AppUtils.getRequestNvlValue(request, "sortColId"), sortAscDesc,
1455 rdef.getNumSortColumns() + 1);
1458 } // processSortAddEdit
1460 private boolean processSortOrderAll(HttpServletRequest request) throws Exception {
1461 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1462 AppConstants.SI_REPORT_DEFINITION);
1464 String[] colId = request.getParameterValues("colId");
1465 String[] sortOrder = request.getParameterValues("sortOrder");
1466 String[] sortAscDesc = request.getParameterValues("sortAscDesc");
1468 boolean reportUpdated = false;
1469 for (int i = 0; i < colId.length; i++) {
1470 DataColumnType dct = rdef.getColumnById(nvl(colId[i]));
1476 iSortOrder = Integer.parseInt(sortOrder[i]);
1477 } catch (NumberFormatException e) {
1480 if (iSortOrder > 0) {
1481 if (dct.getOrderBySeq() > 0) {
1483 if (dct.getOrderBySeq() != iSortOrder) {
1484 dct.setOrderBySeq(iSortOrder);
1485 reportUpdated = true;
1487 if (!nvl(dct.getOrderByAscDesc()).equals(nvl(sortAscDesc[i]))) {
1488 dct.setOrderByAscDesc(sortAscDesc[i]);
1489 reportUpdated = true;
1493 dct.setOrderBySeq(iSortOrder);
1494 dct.setOrderByAscDesc(sortAscDesc[i]);
1495 reportUpdated = true;
1498 if (dct.getOrderBySeq() > 0) {
1500 dct.setOrderBySeq(0);
1501 dct.setOrderByAscDesc(null);
1502 reportUpdated = true;
1507 if (reportUpdated) {
1508 List reportCols = rdef.getAllColumns();
1509 Collections.sort(reportCols, new OrderBySeqComparator());
1511 for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
1512 DataColumnType dct = (DataColumnType) iter.next();
1513 if (dct.getOrderBySeq() > 0)
1514 dct.setOrderBySeq(iOrder++);
1516 Collections.sort(reportCols, new OrderSeqComparator());
1518 rdef.resetCache(true);
1521 return reportUpdated;
1522 } // processSortOrderAll
1524 private boolean processSortDelete(HttpServletRequest request) throws Exception {
1525 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1526 AppConstants.SI_REPORT_DEFINITION);
1527 rdef.removeColumnSort(AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
1529 } // processSortDelete
1531 private boolean processSortMoveUp(HttpServletRequest request) throws Exception {
1532 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1533 AppConstants.SI_REPORT_DEFINITION);
1535 .shiftColumnSortUp(AppUtils.getRequestNvlValue(request,
1536 AppConstants.RI_DETAIL_ID));
1538 } // processSortMoveUp
1540 private boolean processSortMoveDown(HttpServletRequest request) throws Exception {
1541 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1542 AppConstants.SI_REPORT_DEFINITION);
1543 rdef.shiftColumnSortDown(AppUtils.getRequestNvlValue(request,
1544 AppConstants.RI_DETAIL_ID));
1546 } // processSortMoveDown
1548 private boolean processJavascript (HttpServletRequest request) throws Exception {
1549 processSaveJavascriptElement(request);
1553 private boolean processSaveJavascriptElement (HttpServletRequest request) throws Exception {
1554 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1555 AppConstants.SI_REPORT_DEFINITION);
1556 rdef.setJavascriptElement(AppUtils.getRequestNvlValue(request, AppConstants.RI_JAVASCRIPT));
1557 String id = AppUtils.getRequestNvlValue(request, AppConstants.RI_JAVASCRIPT_ITEM_ID);
1558 String fieldId = AppUtils.getRequestNvlValue(request, "javascriptFormField-"+id);
1559 if( nvl(fieldId).length()>0 && !(fieldId.startsWith("-1"))) {
1561 String callableJavascriptText = AppUtils.getRequestNvlValue(request, "callText-"+id);
1563 logger.debug(EELFLoggerDelegate.debugLogger, ("FieldId " + fieldId + " Call Text " + callableJavascriptText+ " id " + id));
1564 JavascriptItemType javaScriptType = null;
1565 if(id.length()>0 && id.startsWith("-1")) {
1566 javaScriptType = rdef.addJavascriptType(new ObjectFactory(), id);
1567 javaScriptType.setFieldId(fieldId);
1568 if(!fieldId.equals("os1") || !fieldId.equals("ol1"))
1569 javaScriptType.setId(rdef.getNextIdForJavaScriptElement(new ObjectFactory(), fieldId));
1571 if(fieldId.equals("os1"))
1572 javaScriptType.setId("os1|1");
1574 javaScriptType.setId("ol1|1");
1576 javaScriptType.setCallText(callableJavascriptText);
1578 javaScriptType = rdef.addJavascriptType(new ObjectFactory(), id);
1579 javaScriptType.setCallText(callableJavascriptText);
1584 private boolean processAddJavascriptElement (HttpServletRequest request) throws Exception {
1585 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1586 AppConstants.SI_REPORT_DEFINITION);
1588 JavascriptItemType javaScriptType = rdef.addJavascriptType(new ObjectFactory(), "");
1589 javaScriptType.setId("");
1590 javaScriptType.setFieldId("");
1591 javaScriptType.setCallText("");
1596 private boolean processDeleteJavascriptElement (HttpServletRequest request) throws Exception {
1597 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1598 AppConstants.SI_REPORT_DEFINITION);
1599 String id = AppUtils.getRequestNvlValue(request, AppConstants.RI_JAVASCRIPT_ITEM_ID);
1600 if(rdef.deleteJavascriptType(id))
1606 private boolean processChart(HttpServletRequest request, String action) throws Exception {
1607 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1608 AppConstants.SI_REPORT_DEFINITION);
1610 int valueColsCount = rdef.getChartValueColumnsList(AppConstants.CHART_ALL_COLUMNS, null).size();
1612 String chartType = AppUtils.getRequestNvlValue(request, "chartType");
1613 String chartTypeFixed = AppUtils.getRequestValue(request, "chartTypeFixed");
1614 String legendColId = AppUtils.getRequestNvlValue(request, "legendCol");
1615 // String valueColId = AppUtils.getRequestNvlValue(request, "valueCol");
1616 String leftAxisLabel = AppUtils.getRequestValue(request, "leftAxisLabel");
1617 String rightAxisLabel = AppUtils.getRequestValue(request, "rightAxisLabel");
1618 String chartWidth = XSSFilter.filterRequest(AppUtils.getRequestNvlValue(request, "chartWidth"));
1619 String chartHeight = XSSFilter.filterRequest(AppUtils.getRequestNvlValue(request, "chartHeight"));
1620 String chartMultiseries = AppUtils.getRequestNvlValue(request, "multiSeries");
1621 String lastSeriesALineChart = AppUtils.getRequestNvlValue(request, "lastSeriesALineChart");
1622 String lastSeriesABarChart = AppUtils.getRequestNvlValue(request, "lastSeriesABarChart");
1623 String overLayItemLabel = "N";
1624 String chartDisplay = null;
1626 String multiplePieOrder = null;
1627 String multiplePieLabelDisplay = null;
1629 String chartOrientation = null;
1630 String secondaryChartRenderer = null;
1632 String linearRegression = null;
1634 boolean multiplePieOrderInRunPage = false;
1635 boolean multiplePieLabelDisplayInRunPage = false;
1637 boolean chartOrientationInRunPage = false;
1638 boolean secondaryChartRendererInRunPage = false;
1640 boolean chartDisplayInRunPage = false;
1642 String intervalFromdate = null;
1643 String intervalTodate = null;
1644 String intervalLabel = null;
1645 boolean displayIntervalInputInRunPage = false;
1646 boolean animate = false;
1648 animate = AppUtils.getRequestNvlValue(request, "animatedOption").equals("animate");
1649 if(Globals.showAnimatedChartOption())
1650 rdef.setChartAnimate(animate);
1653 String removeColId = "";
1654 if (action.equals(AppConstants.WA_DELETE_USER)) {
1655 removeColId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID);
1656 if(valueColsCount == 2 && !rdef.hasSeriesColumn()) {
1657 rdef.setChartLeftAxisLabel(null);
1658 rdef.setChartRightAxisLabel(null);
1660 if(chartType.equals(AppConstants.GT_TIME_SERIES) || chartType.equals(AppConstants.GT_PIE_MULTIPLE)) {
1661 chartMultiseries = "N";
1666 if(rdef.getChartAdditionalOptions()==null)
1667 rdef.addChartAdditionalOptions(new ObjectFactory());
1669 if(rdef.getChartDrillOptions()==null)
1670 rdef.addChartDrillOptions(new ObjectFactory());
1672 //clearing already added
1673 if(rdef.getChartDrillOptions().getTargetFormfield()!=null)
1674 rdef.getChartDrillOptions().getTargetFormfield().removeAll(rdef.getChartDrillOptions().getTargetFormfield());
1677 if(chartType.equals(AppConstants.GT_PIE_MULTIPLE)) {
1678 multiplePieOrder = AppUtils.getRequestNvlValue(request, "multiplePieOrder");
1679 multiplePieLabelDisplay = AppUtils.getRequestNvlValue(request, "multiplePieLabelDisplay");
1680 chartDisplay = AppUtils.getRequestNvlValue(request, "chartDisplay");
1681 //if(AppUtils.getRequestNvlValue(request, "multiplePieOrderInRunPage").length()>0)
1682 multiplePieOrderInRunPage = AppUtils.getRequestNvlValue(request,"multiplePieOrderInRunPage").equals("Y");
1683 //if(AppUtils.getRequestNvlValue(request, "multiplePieLabelDisplayInRunPage").length()>0)
1684 multiplePieLabelDisplayInRunPage = AppUtils.getRequestNvlValue(request,"multiplePieLabelDisplayInRunPage").equals("Y");
1685 //if(AppUtils.getRequestNvlValue(request, "chartDisplayInRunPage").length()>0)
1686 chartDisplayInRunPage = AppUtils.getRequestNvlValue(request,"chartDisplayInRunPage").equals("Y");
1687 if(rdef.getChartAdditionalOptions()!=null) {
1688 rdef.setChartMultiplePieOrder(multiplePieOrder+(multiplePieOrderInRunPage?"|Y":""));
1689 rdef.setChartMultiplePieLabelDisplay(multiplePieLabelDisplay+(multiplePieLabelDisplayInRunPage?"|Y":""));
1690 rdef.setChartDisplay(chartDisplay+(chartDisplayInRunPage?"|Y":""));
1695 if(chartType.equals(AppConstants.GT_REGRESSION)) {
1696 linearRegression = AppUtils.getRequestNvlValue(request, "regressionType");
1697 rdef.setLinearRegressionColor(AppUtils.getRequestNvlValue(request, "valueLinearRegressionColor"));
1698 rdef.setExponentialRegressionColor(AppUtils.getRequestNvlValue(request, "valueExponentialRegressionColor"));
1699 rdef.setCustomizedRegressionPoint(AppUtils.getRequestNvlValue(request, "regressionPointCustomization"));
1701 if(nvl(linearRegression).length()>0)
1702 rdef.setLinearRegression(linearRegression);
1704 rdef.setLinearRegression("Y");
1707 if(chartType.equals(AppConstants.GT_BAR_3D)) {
1708 chartOrientation = AppUtils.getRequestNvlValue(request, "chartOrientation");
1709 secondaryChartRenderer = AppUtils.getRequestNvlValue(request, "secondaryChartRenderer");
1710 chartDisplay = AppUtils.getRequestNvlValue(request, "chartDisplay");
1711 //if(AppUtils.getRequestNvlValue(request, "chartOrientationInRunPage").length()>0)
1712 chartOrientationInRunPage = AppUtils.getRequestNvlValue(request,"chartOrientationInRunPage").equals("Y");
1713 //if(AppUtils.getRequestNvlValue(request, "secondaryChartRendererInRunPage").length()>0)
1714 secondaryChartRendererInRunPage = AppUtils.getRequestNvlValue(request,"secondaryChartRendererInRunPage").equals("Y");
1715 //if(AppUtils.getRequestNvlValue(request, "chartDisplayInRunPage").length()>0)
1716 chartDisplayInRunPage = AppUtils.getRequestNvlValue(request,"chartDisplayInRunPage").equals("Y");
1717 rdef.setChartOrientation(chartOrientation+(chartOrientationInRunPage?"|Y":""));
1718 rdef.setSecondaryChartRenderer(secondaryChartRenderer+(secondaryChartRendererInRunPage?"|Y":""));
1719 rdef.setChartDisplay(chartDisplay+(chartDisplayInRunPage?"|Y":""));
1720 rdef.setLastSeriesALineChart(nvl(lastSeriesALineChart, "N"));
1723 if(chartType.equals(AppConstants.GT_LINE)) {
1724 chartOrientation = AppUtils.getRequestNvlValue(request, "chartOrientation");
1725 secondaryChartRenderer = AppUtils.getRequestNvlValue(request, "secondaryChartRenderer");
1726 chartDisplay = AppUtils.getRequestNvlValue(request, "chartDisplay");
1727 //if(AppUtils.getRequestNvlValue(request, "chartOrientationInRunPage").length()>0)
1728 chartOrientationInRunPage = AppUtils.getRequestNvlValue(request,"chartOrientationInRunPage").equals("Y");
1729 //if(AppUtils.getRequestNvlValue(request, "secondaryChartRendererInRunPage").length()>0)
1730 secondaryChartRendererInRunPage = AppUtils.getRequestNvlValue(request,"secondaryChartRendererInRunPage").equals("Y");
1731 //if(AppUtils.getRequestNvlValue(request, "chartDisplayInRunPage").length()>0)
1732 chartDisplayInRunPage = AppUtils.getRequestNvlValue(request,"chartDisplayInRunPage").equals("Y");
1733 rdef.setChartOrientation(chartOrientation+(chartOrientationInRunPage?"|Y":""));
1734 rdef.setSecondaryChartRenderer(secondaryChartRenderer+(secondaryChartRendererInRunPage?"|Y":""));
1735 rdef.setChartDisplay(chartDisplay+(chartDisplayInRunPage?"|Y":""));
1736 rdef.setLastSeriesABarChart(nvl(lastSeriesABarChart, "N"));
1738 if(chartType.equals(AppConstants.GT_TIME_DIFFERENCE_CHART)) {
1739 intervalFromdate = AppUtils.getRequestNvlValue(request, "intervalFromDate");
1740 intervalTodate = AppUtils.getRequestNvlValue(request, "intervalToDate");
1741 intervalLabel = AppUtils.getRequestNvlValue(request, "intervalLabel");
1742 displayIntervalInputInRunPage = AppUtils.getRequestNvlValue(request,"intervalInputInRunPage").equals("Y");
1743 rdef.setIntervalFromdate(intervalFromdate+(displayIntervalInputInRunPage?"|Y":""));
1744 rdef.setIntervalTodate(intervalTodate+(displayIntervalInputInRunPage?"|Y":""));
1745 rdef.setIntervalLabel(intervalLabel);
1747 if(chartType.equals(AppConstants.GT_STACKED_VERT_BAR) || chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR) || chartType.equals(AppConstants.GT_STACKED_VERT_BAR_LINES)
1748 || chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR_LINES)) {
1749 overLayItemLabel = AppUtils.getRequestNvlValue(request, "overlayItemValue");
1750 rdef.setOverlayItemValueOnStackBar(nvl(overLayItemLabel, "N"));
1751 animate = AppUtils.getRequestNvlValue(request, "animatedOption").equals("animate");
1752 rdef.setChartAnimate(animate);
1755 rdef.setRangeAxisLowerLimit(AppUtils.getRequestNvlValue(request, "yAxisLowerLimit"));
1756 rdef.setRangeAxisUpperLimit(AppUtils.getRequestNvlValue(request, "yAxisUpperLimit"));
1757 rdef.setLegendLabelAngle(AppUtils.getRequestNvlValue(request,"labelAngle"));
1758 rdef.setLegendPosition(AppUtils.getRequestNvlValue(request,"legendPosition"));
1759 rdef.setMaxLabelsInDomainAxis(AppUtils.getRequestNvlValue(request,"maxLabelsInDomainAxis"));
1760 String chartLegendDisplay = AppUtils.getRequestNvlValue(request,"hideLegend");
1761 boolean showLegendDisplayOptionsInRunPage = false;
1762 showLegendDisplayOptionsInRunPage = AppUtils.getRequestNvlValue(request,"showLegendDisplayOptionsInRunPage").equals("Y");
1763 rdef.setChartLegendDisplay(chartLegendDisplay+(showLegendDisplayOptionsInRunPage?"|Y":""));
1764 rdef.setChartToolTips(AppUtils.getRequestNvlValue(request,"hideTooltips"));
1765 rdef.setDomainAxisValuesAsString(AppUtils.getRequestNvlValue(request,"keepAsString"));
1767 //System.out.println("KeepAsString " + AppUtils.getRequestNvlValue(request,"keepAsString"));
1768 //System.out.println("From ReportDef " + rdef.keepDomainAxisValueInChartAsString());
1769 // boolean reportUpdated = (!
1770 // chartType.equals(nvl(rdef.getChartType())));
1771 rdef.setChartType(chartType);
1772 rdef.setChartTypeFixed(nvl(chartTypeFixed, "N"));
1773 if (nvl(leftAxisLabel).length()>0)
1774 rdef.setChartLeftAxisLabel(leftAxisLabel);
1776 rdef.setChartLeftAxisLabel(null);
1777 if (nvl(rightAxisLabel).length()>0)
1778 rdef.setChartRightAxisLabel(rightAxisLabel);
1780 rdef.setChartRightAxisLabel(null);
1781 rdef.setChartWidth(nvl(chartWidth, "" + Globals.getDefaultChartWidth()));
1782 rdef.setChartHeight(nvl(chartHeight, "" + Globals.getDefaultChartHeight()));
1783 if(chartType.equals(AppConstants.GT_TIME_SERIES) || chartType.equals(AppConstants.GT_PIE_MULTIPLE)) {
1784 rdef.setChartMultiSeries(chartMultiseries);
1786 rdef.setChartMultiSeries("N");
1789 List reportCols = rdef.getAllColumns();
1790 for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
1791 DataColumnType dct = (DataColumnType) iter.next();
1793 if (dct.getColId().equals(legendColId)) {
1794 // reportUpdated = reportUpdated||(!
1795 // nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND));
1796 dct.setColOnChart(AppConstants.GC_LEGEND);
1799 // reportUpdated||nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND);
1800 dct.setColOnChart(null);
1804 * if(dct.getColId().equals(valueColId)) { reportUpdated =
1805 * reportUpdated||(dct.getChartSeq()<=0); dct.setChartSeq(1); }
1806 * else { reportUpdated = reportUpdated||(dct.getChartSeq()>0);
1808 dct.setChartSeq(-1);
1813 List columns = rdef.getAllColumns();
1814 if(chartType.equals(AppConstants.GT_TIME_SERIES)) {
1815 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1816 String chartGroup = AppUtils.getRequestNvlValue(request, "chartGroup");
1817 String yAxis = AppUtils.getRequestNvlValue(request, "yAxis");
1818 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1819 DataColumnType alldct = (DataColumnType) iterator.next();
1820 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1821 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1824 String drillDownReportId = AppUtils.getRequestNvlValue(request, "drillDownReport");
1825 if(!drillDownReportId.equals("-1")) {
1826 ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, drillDownReportId,
1829 request.setAttribute("CHART_FORMFIELDS", ddRr.getReportFormFields());
1831 for(ddRr.getReportFormFields().resetNext(); ddRr.getReportFormFields().hasNext(); ) {
1832 FormField ff = ddRr.getReportFormFields().getNext();
1833 if(!ff.getFieldType().equals(FormField.FFT_BLANK)) {
1834 String value = AppUtils.getRequestNvlValue(request, "drillDown_"+ff.getFieldName());
1835 ChartDrillFormfield cdf = new ObjectFactory().createChartDrillFormfield();
1836 cdf.setFormfield(value);
1837 rdef.getChartDrillOptions().getTargetFormfield().add(cdf);
1843 if(chartType.equals(AppConstants.GT_BAR_3D)) {
1844 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1845 String chartGroup = AppUtils.getRequestNvlValue(request, "chartGroup");
1846 String yAxis = AppUtils.getRequestNvlValue(request, "yAxis");
1847 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1848 DataColumnType alldct = (DataColumnType) iterator.next();
1849 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1850 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1852 String drillDownReportId = AppUtils.getRequestNvlValue(request, "drillDownReport");
1853 rdef.setDrillReportIdForChart(drillDownReportId);
1854 if(drillDownReportId.equals("-1")){
1855 rdef.setDrillReportIdForChart("");
1858 if(!drillDownReportId.equals("-1")) {
1859 ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, drillDownReportId,
1862 request.setAttribute("CHART_FORMFIELDS", ddRr.getReportFormFields());
1864 for(ddRr.getReportFormFields().resetNext(); ddRr.getReportFormFields().hasNext(); ) {
1865 FormField ff = ddRr.getReportFormFields().getNext();
1866 if(!ff.getFieldType().equals(FormField.FFT_BLANK)) {
1867 String value = AppUtils.getRequestNvlValue(request, "drillDown_"+ff.getFieldName());
1868 ChartDrillFormfield cdf = new ObjectFactory().createChartDrillFormfield();
1869 cdf.setFormfield(value);
1870 rdef.getChartDrillOptions().getTargetFormfield().add(cdf);
1874 String xAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownXAxisFormfield");
1875 String yAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownYAxisFormfield");
1876 String seriesAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownSeriesAxisFormfield");
1878 if(!xAxisFormField.equals("-1")){
1879 rdef.setDrillXAxisFormField(xAxisFormField);
1881 if(!yAxisFormField.equals("-1"))
1882 rdef.setDrillYAxisFormField(yAxisFormField);
1883 if(!seriesAxisFormField.equals("-1"))
1884 rdef.setDrillSeriesFormField(seriesAxisFormField);
1886 rdef.setDrillXAxisFormField("");
1887 rdef.setDrillYAxisFormField("");
1888 rdef.setDrillSeriesFormField("");
1892 } else if(chartType.equals(AppConstants.GT_SCATTER)) {
1893 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1894 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1895 DataColumnType alldct = (DataColumnType) iterator.next();
1896 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1897 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1900 }else if(chartType.equals(AppConstants.GT_REGRESSION)) {
1901 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1902 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1903 DataColumnType alldct = (DataColumnType) iterator.next();
1904 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1905 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1907 }else if(chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR) || chartType.equals(AppConstants.GT_STACKED_VERT_BAR)
1908 || chartType.equals(AppConstants.GT_STACKED_VERT_BAR_LINES) || chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR_LINES)) {
1909 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1910 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1911 DataColumnType alldct = (DataColumnType) iterator.next();
1912 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1913 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1915 }else if(chartType.equals(AppConstants.GT_LINE)) {
1916 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1917 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1918 DataColumnType alldct = (DataColumnType) iterator.next();
1919 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1920 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1922 } else if (chartType.equals(AppConstants.GT_TIME_DIFFERENCE_CHART)) {
1923 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1924 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1925 DataColumnType alldct = (DataColumnType) iterator.next();
1926 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1927 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1929 } else if (chartType.equals(AppConstants.GT_COMPARE_PREVYEAR_CHART)) {
1930 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1931 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1932 DataColumnType alldct = (DataColumnType) iterator.next();
1933 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1934 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1938 if (rdef.hasSeriesColumn()) {
1939 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1940 DataColumnType alldct = (DataColumnType) iterator.next();
1941 alldct.setChartSeries(false);
1945 String drillDownReportId = AppUtils.getRequestNvlValue(request, "drillDownReport");
1946 rdef.setDrillReportIdForChart(drillDownReportId);
1947 if(drillDownReportId.equals("-1")){
1948 rdef.setDrillReportIdForChart("");
1951 if(!drillDownReportId.equals("-1")) {
1952 ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, drillDownReportId,
1955 request.setAttribute("CHART_FORMFIELDS", ddRr.getReportFormFields());
1956 for(ddRr.getReportFormFields().resetNext(); ddRr.getReportFormFields().hasNext(); ) {
1957 FormField ff = ddRr.getReportFormFields().getNext();
1958 if(!ff.getFieldType().equals(FormField.FFT_BLANK)) {
1959 String value = AppUtils.getRequestNvlValue(request, "drillDown_"+ff.getFieldName());
1960 ChartDrillFormfield cdf = new ObjectFactory().createChartDrillFormfield();
1961 cdf.setFormfield(value);
1962 rdef.getChartDrillOptions().getTargetFormfield().add(cdf);
1966 String xAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownXAxisFormfield");
1967 String yAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownYAxisFormfield");
1968 String seriesAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownSeriesAxisFormfield");
1970 if(!xAxisFormField.equals("-1")){
1971 rdef.setDrillXAxisFormField(xAxisFormField);
1973 if(!yAxisFormField.equals("-1"))
1974 rdef.setDrillYAxisFormField(yAxisFormField);
1975 if(!seriesAxisFormField.equals("-1"))
1976 rdef.setDrillSeriesFormField(seriesAxisFormField);
1978 rdef.setDrillXAxisFormField("");
1979 rdef.setDrillYAxisFormField("");
1980 rdef.setDrillSeriesFormField("");
1987 for (int i = 1; i < Math.max(valueColsCount, 1) + 1; i++) {
1988 //debugLogger.debug("********** " + chartSeries);
1990 /* Range Axis is resetted before adding */
1991 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1992 DataColumnType dct = (DataColumnType) iterator.next();
1993 if(!nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND)) {
1994 dct.setChartSeq(-1);
1995 dct.setChartColor(null);
1996 dct.setColOnChart(null);
1997 dct.setCreateInNewChart(false);
1998 dct.setChartGroup(null);
2004 String newChartColAxis = AppUtils.getRequestNvlValue(request, "newChart" + i+"Axis");
2005 String valueColId = AppUtils.getRequestNvlValue(request, "valueCol" + i);
2006 String valueColColor = AppUtils.getRequestNvlValue(request, "valueCol" + i
2008 String valueColAxis = AppUtils
2009 .getRequestNvlValue(request, "valueCol" + valueColId + "Axis");
2010 String chartGroup = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "chartGroup" + valueColId + "Axis"));
2011 String yAxisGroup = "";
2012 yAxisGroup = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "YAxisLabel" + valueColId));
2013 //debugLogger.debug("^^^^^^^^^^^^^^^^^Chart Group " + chartGroup);
2014 //if(chartType.equals(AppConstants.GT_TIME_SERIES)) {
2015 // debugLogger.debug("**********Outer If " + chartSeries);
2018 if (valueColId.length() > 0 && (!valueColId.equals(removeColId))) {
2019 DataColumnType dct = rdef.getColumnById(valueColId);
2020 dct.setChartSeq(idx++);
2021 dct.setChartColor(valueColColor);
2022 dct.setColOnChart(valueColAxis.equals("Y") ? "1" : "0");
2023 if(chartType.equals(AppConstants.GT_TIME_SERIES)) {
2024 dct.setCreateInNewChart(newChartColAxis.equals("Y") ? true : false);
2026 dct.setCreateInNewChart(false);
2028 if(chartGroup!=null && chartGroup.length()>0)
2029 dct.setChartGroup(chartGroup+"|"+valueColId);
2030 else dct.setChartGroup("");
2031 if(chartType.equals(AppConstants.GT_TIME_SERIES))
2032 dct.setYAxis(nvl(yAxisGroup)+"|"+valueColId);
2033 else if (chartType.equals(AppConstants.GT_BAR_3D))
2034 dct.setYAxis(nvl(yAxisGroup)+"|"+valueColId);
2035 else dct.setYAxis("");
2038 //dct.setCreateInNewChart(false);
2039 } else if (valueColId.length() > 0 && (valueColId.equals(removeColId))) {// if
2040 DataColumnType dct = rdef.getColumnById(valueColId);
2041 dct.setChartSeq(-1);
2042 dct.setChartColor(null);
2043 dct.setColOnChart(null);
2044 dct.setCreateInNewChart(false);
2045 dct.setChartGroup(null);
2048 DataColumnType dct = rdef.getColumnById(valueColId);
2049 dct.setChartSeq(-1);
2050 dct.setChartColor(null);
2051 dct.setColOnChart(null);
2052 dct.setCreateInNewChart(false);
2053 dct.setChartGroup(null);
2058 if (action.equals(AppConstants.WA_ADD_USER)) {
2059 String valueColId = AppUtils.getRequestNvlValue(request, "valueColNew");
2060 String valueColColor = AppUtils.getRequestNvlValue(request, "valueColNewColor");
2061 String valueColAxis = AppUtils.getRequestNvlValue(request, "valueColNewAxis");
2063 if (valueColId.length() > 0) {
2064 DataColumnType dct = rdef.getColumnById(valueColId);
2065 dct.setChartSeq(idx++);
2066 dct.setChartColor(valueColColor);
2067 dct.setColOnChart(valueColAxis.equals("Y") ? "1" : "0");
2071 return true; // reportUpdated;
2074 public boolean processAdhocSchedule(HttpServletRequest request, String action)
2076 ReportSchedule reportSchedule = (ReportSchedule) request.getSession().getAttribute(AppConstants.SI_REPORT_SCHEDULE);
2077 reportSchedule.setScheduleUserID(AppUtils.getUserID(request));
2078 reportSchedule.setSchedEnabled(
2079 nvl(AppUtils.getRequestValue(request, "schedEnabled"), "N"));
2080 reportSchedule.setStartDate(
2081 AppUtils.getRequestNvlValue(request, "schedStartDate"));
2082 reportSchedule.setEndDate(
2083 AppUtils.getRequestNvlValue(request, "schedEndDate"));
2084 reportSchedule.setEndHour(AppUtils.getRequestNvlValue(request, "schedEndHour"));
2085 reportSchedule.setEndMin(AppUtils.getRequestNvlValue(request, "schedEndMin"));
2086 reportSchedule.setEndAMPM(AppUtils.getRequestNvlValue(request, "schedEndAMPM"));
2088 reportSchedule.setRunDate(
2089 AppUtils.getRequestNvlValue(request, "schedRunDate").length()>0?AppUtils.getRequestNvlValue(request, "schedRunDate"):AppUtils.getRequestNvlValue(request, "schedStartDate"));
2090 reportSchedule.setRunHour(AppUtils.getRequestNvlValue(request, "schedHour"));
2091 reportSchedule.setRunMin(AppUtils.getRequestNvlValue(request, "schedMin"));
2092 reportSchedule.setRunAMPM(AppUtils.getRequestNvlValue(request, "schedAMPM"));
2093 reportSchedule.setRecurrence(
2094 AppUtils.getRequestNvlValue(request, "schedRecurrence"));
2095 reportSchedule.setConditional(
2096 nvl(AppUtils.getRequestValue(request, "conditional"), "N"));
2097 reportSchedule.setConditionSQL(
2098 AppUtils.getRequestNvlValue(request, "conditionSQL"));
2099 reportSchedule.setNotify_type(
2100 AppUtils.getRequestNvlValue(request, "notify_type"));
2101 reportSchedule.setDownloadLimit(
2102 AppUtils.getRequestNvlValue(request, "downloadLimit"));
2103 reportSchedule.setFormFields(
2104 AppUtils.getRequestNvlValue(request, "formFields"));
2105 reportSchedule.setAttachmentMode(
2106 AppUtils.getRequestNvlValue(request, "sendAttachment"));
2108 String userId = AppUtils.getRequestNvlValue(request, "schedEmailAdd");
2109 String roleId = AppUtils.getRequestNvlValue(request, "schedEmailAddRole");
2111 if ((!(userId.length()>0 || roleId.length()>0) && (reportSchedule.getEmailToUsers().isEmpty() && reportSchedule.getEmailToRoles().isEmpty())) ) {
2115 if (flag == 1 || (action.equals(AppConstants.WA_ADD_USER) || action.equals(AppConstants.WA_ADD_ROLE)) ) {
2116 String loggedInUserId = AppUtils.getUserID(request);
2117 if (Globals.getUseLoginIdInSchedYN().equals("Y")){
2118 reportSchedule.addEmailToUser(loggedInUserId, AppUtils.getUserLoginId(request));
2120 reportSchedule.addEmailToUser(loggedInUserId, (AppUtils.getUserName(loggedInUserId).length()>0?AppUtils.getUserName(loggedInUserId):(AppUtils.getUserLoginId(loggedInUserId).length()>0?AppUtils.getUserLoginId(loggedInUserId):loggedInUserId) ));
2122 if (action.equals(AppConstants.WA_ADD_USER)) {
2123 //String userId = AppUtils.getRequestNvlValue(request, "schedEmailAdd");
2124 String userName = AppUtils.getUserName(userId);
2125 if (Globals.getUseLoginIdInSchedYN().equals("Y")){
2126 String userLoginId = AppUtils.getUserLoginId(userId);
2127 if (userId.length() > 0 && (userLoginId != null && userLoginId.length() > 0))
2128 reportSchedule.addEmailToUser(userId, userLoginId);
2130 if (userId.length() > 0 && (userName != null && userName.length() > 0) )
2131 reportSchedule.addEmailToUser(userId, userName);
2133 reportSchedule.addEmailToUser(userId, userId);
2137 if (userId.length() > 0 && (userName != null && userName.length() > 0) )
2138 reportSchedule.addEmailToUser(userId, userName);
2140 reportSchedule.addEmailToUser(userId, userId);
2144 } else if (action.equals(AppConstants.WA_DELETE_USER))
2145 reportSchedule.removeEmailToUser(
2146 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2147 else if (action.equals(AppConstants.WA_ADD_ROLE)) {
2148 //String roleId = AppUtils.getRequestNvlValue(request, "schedEmailAddRole");
2149 String roleName = AppUtils.getRoleName(roleId);
2150 if (roleId.length() > 0 && roleName != null)
2151 reportSchedule.addEmailToRole(roleId, roleName);
2152 } else if (action.equals(AppConstants.WA_DELETE_ROLE))
2153 reportSchedule.removeEmailToRole(
2154 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2155 request.getSession().setAttribute(AppConstants.SI_REPORT_SCHEDULE, reportSchedule);
2157 } // processAdhocSchedule
2159 private boolean processSchedule(HttpServletRequest request, String action)
2161 // Added for form field chaining in schedule tab so that setParamValues() is called
2162 request.setAttribute(AppConstants.SCHEDULE_ACTION, "Y");
2163 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
2164 AppConstants.SI_REPORT_DEFINITION);
2165 ReportSchedule reportSchedule = rdef.getReportSchedule();
2166 reportSchedule.setScheduleUserID(AppUtils.getUserID(request));
2167 reportSchedule.setSchedEnabled(
2168 nvl(AppUtils.getRequestValue(request, "schedEnabled"), "N"));
2169 reportSchedule.setStartDate(
2170 AppUtils.getRequestNvlValue(request, "schedStartDate"));
2171 reportSchedule.setEndDate(
2172 AppUtils.getRequestNvlValue(request, "schedEndDate"));
2173 reportSchedule.setEndHour(AppUtils.getRequestNvlValue(request, "schedEndHour"));
2174 reportSchedule.setEndMin(AppUtils.getRequestNvlValue(request, "schedEndMin"));
2175 reportSchedule.setEndAMPM(AppUtils.getRequestNvlValue(request, "schedEndAMPM"));
2177 reportSchedule.setRunDate(
2178 AppUtils.getRequestNvlValue(request, "schedRunDate").length()>0?AppUtils.getRequestNvlValue(request, "schedRunDate"):AppUtils.getRequestNvlValue(request, "schedStartDate"));
2179 reportSchedule.setRunHour(AppUtils.getRequestNvlValue(request, "schedHour"));
2180 reportSchedule.setRunMin(AppUtils.getRequestNvlValue(request, "schedMin"));
2181 reportSchedule.setRunAMPM(AppUtils.getRequestNvlValue(request, "schedAMPM"));
2182 reportSchedule.setRecurrence(
2183 AppUtils.getRequestNvlValue(request, "schedRecurrence"));
2184 reportSchedule.setConditional(
2185 nvl(AppUtils.getRequestValue(request, "conditional"), "N"));
2186 reportSchedule.setConditionSQL(
2187 AppUtils.getRequestNvlValue(request, "conditionSQL"));
2188 reportSchedule.setNotify_type(
2189 AppUtils.getRequestNvlValue(request, "notify_type"));
2190 reportSchedule.setDownloadLimit(
2191 AppUtils.getRequestNvlValue(request, "downloadLimit"));
2192 reportSchedule.setFormFields(
2193 AppUtils.getRequestNvlValue(request, "formFields"));
2194 reportSchedule.setAttachmentMode(
2195 AppUtils.getRequestNvlValue(request, "sendAttachment"));
2197 reportSchedule.setEncryptMode(
2198 AppUtils.getRequestNvlValue(request, "encryptMode"));
2199 if (action.equals(AppConstants.WA_ADD_USER)) {
2200 String userId = AppUtils.getRequestNvlValue(request, "schedEmailAdd");
2201 String userName = AppUtils.getUserName(userId);
2202 if (Globals.getUseLoginIdInSchedYN().equals("Y")){
2203 String userLoginId = AppUtils.getUserLoginId(userId);
2204 if (userId.length() > 0 && (userLoginId != null && userLoginId.length() > 0))
2205 reportSchedule.addEmailToUser(userId, userLoginId);
2207 if (userId.length() > 0 && (userName != null && userName.length() > 0) )
2208 reportSchedule.addEmailToUser(userId, userName);
2210 reportSchedule.addEmailToUser(userId, userId);
2214 if (userId.length() > 0 && (userName != null && userName.length() > 0) )
2215 reportSchedule.addEmailToUser(userId, userName);
2217 reportSchedule.addEmailToUser(userId, userId);
2220 } else if (action.equals(AppConstants.WA_DELETE_USER))
2221 reportSchedule.removeEmailToUser(
2222 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2223 else if (action.equals(AppConstants.WA_ADD_ROLE)) {
2224 String roleId = AppUtils.getRequestNvlValue(request, "schedEmailAddRole");
2225 String roleName = AppUtils.getRoleName(roleId);
2226 if (roleId.length() > 0 && roleName != null)
2227 reportSchedule.addEmailToRole(roleId, roleName);
2228 } else if (action.equals(AppConstants.WA_DELETE_ROLE))
2229 reportSchedule.removeEmailToRole(
2230 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2233 } // processSchedule
2235 private boolean processUserAccess(HttpServletRequest request, String action)
2237 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
2238 AppConstants.SI_REPORT_DEFINITION);
2240 String ownerID = AppUtils.getRequestNvlValue(request, "reportOwner");
2241 String rPublic = nvl(AppUtils.getRequestValue(request, "public"), "N");
2243 boolean reportUpdated = (!(ownerID.equals(nvl(rdef.getOwnerID())) && rPublic
2244 .equals(rdef.isPublic() ? "Y" : "N")));
2246 rdef.getReportSecurity().setOwnerID(ownerID);
2247 rdef.setPublic(rPublic.equals("Y"));
2249 if (action.equals(AppConstants.WA_ADD_USER))
2250 rdef.getReportSecurity().addUserAccess(
2251 AppUtils.getRequestNvlValue(request, "newUserId"), "Y");
2252 else if (action.equals(AppConstants.WA_DELETE_USER))
2253 rdef.getReportSecurity().removeUserAccess(
2254 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2255 else if (action.equals(AppConstants.WA_GRANT_USER))
2256 rdef.getReportSecurity().updateUserAccess(
2257 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID), "N");
2258 else if (action.equals(AppConstants.WA_REVOKE_USER))
2259 rdef.getReportSecurity().updateUserAccess(
2260 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID), "Y");
2261 else if (action.equals(AppConstants.WA_ADD_ROLE))
2262 rdef.getReportSecurity().addRoleAccess(
2263 AppUtils.getRequestNvlValue(request, "newRoleId"), "Y");
2264 else if (action.equals(AppConstants.WA_DELETE_ROLE))
2265 rdef.getReportSecurity().removeRoleAccess(
2266 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2267 else if (action.equals(AppConstants.WA_GRANT_ROLE))
2268 rdef.getReportSecurity().updateRoleAccess(
2269 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID), "N");
2270 else if (action.equals(AppConstants.WA_REVOKE_ROLE))
2271 rdef.getReportSecurity().updateRoleAccess(
2272 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID), "Y");
2274 return reportUpdated;
2275 } // processUserAccess
2277 private boolean processClearLog(HttpServletRequest request) throws Exception {
2278 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
2279 AppConstants.SI_REPORT_DEFINITION);
2280 String user_id = AppUtils.getUserID(request);
2281 // Modified so that only the logged in user entries are erased. - Sundar
2282 ReportLoader.clearReportLogEntries(rdef.getReportID(), user_id);
2284 } // processClearLog
2286 private boolean processValidateSQL(HttpServletRequest request) throws Exception {
2287 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
2288 AppConstants.SI_REPORT_DEFINITION);
2290 String sql = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportSQL"));
2291 request.setAttribute("sqlValidated", "N");
2292 rdef.parseReportSQL(sql);
2293 request.setAttribute("sqlValidated", "Y");
2296 } // processValidateSQL
2299 /*****For Report Maps - Start******/
2300 private boolean processMap(HttpServletRequest request, String action) throws Exception {
2301 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
2302 AppConstants.SI_REPORT_DEFINITION);
2304 org.onap.portalsdk.analytics.xmlobj.ReportMap repMap = rdef.getReportMap();
2305 //clearing already added
2306 if (repMap != null){
2307 repMap.getMarkers().removeAll(repMap.getMarkers());
2309 String addressColumn = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "addressColumn0"));
2310 System.out.println(" #$%#$%#$% -- address col = " + addressColumn);
2311 String dataColumn = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "dataColumn0"));
2312 String legendColumn = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "legendColumn"));
2313 //String legendDisplayName = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "dataHeaderL"));
2314 //if(nvl(legendDisplayName).length()<=0) legendDisplayName = legendColumn;
2315 String color = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "markerColor0"));
2316 String isMapAllowed = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "isMapAllowed"));
2317 String useDefaultSize = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "useDefaultSize"));
2318 String height = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "height"));
2319 String width = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "width"));
2320 System.out.println(" #$%#$%#$% -- useDefaultSize="+ useDefaultSize+" height = " + height+" width="+width);
2322 String addAddress = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "addAddress"));
2323 String latCol = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "latColumn"));
2324 String longCol = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "longColumn"));
2325 String colorCol = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "colorColumn"));
2326 if (isMapAllowed.equals(""))
2328 if (useDefaultSize.equals(""))
2329 useDefaultSize = "N";
2331 rdef.setReportMap(new ObjectFactory().createReportMap());
2332 repMap.setAddressColumn(addressColumn);
2333 repMap.setDataColumn(dataColumn);
2334 repMap.setIsMapAllowedYN(isMapAllowed);
2335 repMap.setUseDefaultSize(useDefaultSize);
2336 repMap.setMarkerColor(color);
2337 repMap.setAddAddressInDataYN(addAddress);
2338 repMap.setLatColumn(latCol);
2339 repMap.setLongColumn(longCol);
2340 repMap.setColorColumn(colorCol);
2341 repMap.setHeight(height.trim());
2342 repMap.setWidth(width.trim());
2343 repMap.setLegendColumn(legendColumn);
2344 //repMap.setLegendDisplayName(legendDisplayName);
2346 Marker m = new ObjectFactory().createMarker();
2347 m.setAddressColumn(addressColumn);
2348 m.setDataColumn(dataColumn);
2349 repMap.getMarkers().add(m);
2350 String markerCountString = AppUtils.getRequestNvlValue(request, "markerCount");
2351 int markerCount = 0;
2352 if (markerCountString != null && markerCountString.equals("") == false){
2353 markerCount = new Integer(markerCountString).intValue();
2355 for (int i = 1; i < markerCount; i ++){
2356 String additionalAddressColumn = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "addressColumn" + i));
2357 String additionalDataHeader = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "dataHeader" + i));
2358 String additionalData = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "dataColumn" + i));
2359 String additionalColor = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "markerColor" + i));
2360 if (additionalAddressColumn.equals("1") == false){
2361 m = new ObjectFactory().createMarker();
2362 m.setAddressColumn(additionalAddressColumn);
2363 m.setDataHeader(additionalDataHeader);
2364 m.setDataColumn(additionalData);
2365 m.setMarkerColor(additionalColor);
2366 repMap.getMarkers().add(m);
2371 /*****For Report Maps - End******/
2374 } // WizardProcessor