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============================================
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;
46 import java.util.TimeZone;
48 import javax.servlet.http.HttpServletRequest;
49 import javax.xml.datatype.DatatypeConfigurationException;
50 import javax.xml.datatype.DatatypeFactory;
51 import javax.xml.datatype.XMLGregorianCalendar;
53 import org.onap.portalsdk.analytics.error.RaptorException;
54 import org.onap.portalsdk.analytics.error.ValidationException;
55 import org.onap.portalsdk.analytics.model.ReportHandler;
56 import org.onap.portalsdk.analytics.model.ReportLoader;
57 import org.onap.portalsdk.analytics.model.base.IdNameValue;
58 import org.onap.portalsdk.analytics.model.base.OrderBySeqComparator;
59 import org.onap.portalsdk.analytics.model.base.OrderSeqComparator;
60 import org.onap.portalsdk.analytics.model.definition.ReportDefinition;
61 import org.onap.portalsdk.analytics.model.definition.ReportSchedule;
62 import org.onap.portalsdk.analytics.model.runtime.FormField;
63 import org.onap.portalsdk.analytics.model.runtime.ReportRuntime;
64 import org.onap.portalsdk.analytics.system.AppUtils;
65 import org.onap.portalsdk.analytics.system.DbUtils;
66 import org.onap.portalsdk.analytics.system.Globals;
67 import org.onap.portalsdk.analytics.util.AppConstants;
68 import org.onap.portalsdk.analytics.util.DataSet;
69 import org.onap.portalsdk.analytics.util.XSSFilter;
70 import org.onap.portalsdk.analytics.xmlobj.ChartDrillFormfield;
71 import org.onap.portalsdk.analytics.xmlobj.ColFilterType;
72 import org.onap.portalsdk.analytics.xmlobj.DataColumnType;
73 import org.onap.portalsdk.analytics.xmlobj.DataSourceType;
74 import org.onap.portalsdk.analytics.xmlobj.FormFieldType;
75 import org.onap.portalsdk.analytics.xmlobj.FormatType;
76 import org.onap.portalsdk.analytics.xmlobj.JavascriptItemType;
77 import org.onap.portalsdk.analytics.xmlobj.Marker;
78 import org.onap.portalsdk.analytics.xmlobj.ObjectFactory;
79 import org.onap.portalsdk.analytics.xmlobj.SemaphoreType;
80 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
83 * This class is part of <B><I>RAPTOR (Rapid Application Programming Tool for OLAP Reporting)</I></B><BR/>
86 * --------------------------------------------------------------------------------------------------<BR/>
87 * <B>WizardProcessor.java</B> - This class is used to process the user input provided in the wizard.<BR/>
88 * It is called in creation as well as updation process. It builds report xml via JAXB using user<BR/>
89 * input. This is vital one, to store meta information of each report<BR/>
90 * ---------------------------------------------------------------------------------------------------<BR/>
93 * <U>Change Log</U><BR/><BR/>
95 * 31-Aug-2009 : Version 8.5.1 (Sundar);<UL><LI> For Time Series multi series property is exposed. </LI></UL>
96 * 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>
97 * 18-Aug-2009 : Version 8.5.1 (Sundar);<UL><LI> request Object is passed to prevent caching user/roles - Datamining/Hosting. </LI></UL>
98 * 12-Aug-2009 : Version 8.5 (Sundar); <UL><LI> For Line Charts too options are captured and rendering is customized. </LI></UL>
99 * 29-Jul-2009 : Version 8.4 (Sundar); <UL><LI> Maximum Excel Download size would be persisted if changed. </LI></UL>
100 * 14-Jul-2009 : Version 8.4 (Sundar); <UL><LI> Schedule feature is added to Dashboard Reports. </LI></UL>
101 * 29-Jun-2009 : Version 8.4 (Sundar); <UL><LI> Options for <I>Compare to Previous year Chart</I> are processed.</LI>
102 * <LI> In the Bar chart Last Occuring Series/Category can be plotted as Bar or Line Renderer. </LI>
104 * 22-Jun-2009 : Version 8.4 (Sundar); <UL><LI> processChart method is modified to accommodate creating
105 * Bar Charts, Time Difference Charts and adding generic chart options.</LI></UL>
109 public class WizardProcessor extends org.onap.portalsdk.analytics.RaptorObject {
110 public static Calendar getCalendar(XMLGregorianCalendar xmlCalendar){
111 // log.debug("Zone ID is " + xmlCalendar.getTimezone());
112 TimeZone timeZone = xmlCalendar.getTimeZone(xmlCalendar.getTimezone());
113 Calendar calendar = Calendar.getInstance(timeZone);
114 calendar.set(Calendar.YEAR,xmlCalendar.getYear());
115 calendar.set(Calendar.MONTH,xmlCalendar.getMonth()-1);
116 calendar.set(Calendar.DATE,xmlCalendar.getDay());
117 calendar.set(Calendar.HOUR_OF_DAY,xmlCalendar.getHour());
118 calendar.set(Calendar.MINUTE,xmlCalendar.getMinute());
119 calendar.set(Calendar.SECOND,xmlCalendar.getSecond());
122 private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(WizardProcessor.class);
123 public WizardProcessor() {
126 private String adjustDataType(String oracleDataType) {
127 return oracleDataType.equals("VARCHAR2") ? AppConstants.CT_CHAR : oracleDataType;
128 // Probably should be expanded to convert any CHAR or VARCHAR type to
129 // CT_CHAR, number type to CT_NUMBER and date to CT_DATE
132 public void persistReportDefinition(HttpServletRequest request, ReportDefinition rdef)
133 throws RaptorException {
134 ReportRuntime rr = (ReportRuntime) request.getSession().getAttribute(
135 AppConstants.SI_REPORT_RUNTIME);
136 if (rr != null && rr.getReportID().equals(rdef.getReportID()))
137 request.getSession().removeAttribute(AppConstants.SI_REPORT_RUNTIME);
138 rdef.persistReport(request);
139 } // persistReportDefinition
141 public void processWizardStep(HttpServletRequest request) throws Exception {
142 String action = nvl(request.getParameter(AppConstants.RI_WIZARD_ACTION),
143 AppConstants.WA_BACK);
145 String reportID = AppUtils.getRequestValue(request, AppConstants.RI_REPORT_ID);
146 ReportDefinition rdef = (new ReportHandler()).loadReportDefinition(request, reportID);
147 request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
149 String curStep = rdef.getWizardSequence().getCurrentStep();
150 String curSubStep = rdef.getWizardSequence().getCurrentSubStep();
151 if (AppUtils.getRequestNvlValue(request, "showDashboardOptions").length()<=0)
152 request.setAttribute("showDashboardOptions", "F");
153 logger.debug(EELFLoggerDelegate.debugLogger, ("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^curStep " + curStep + " " + curSubStep + " " + action));
154 boolean reportUpdated = false;
155 if (!action.equals(AppConstants.WA_BACK)) {
156 if (curStep.equals(AppConstants.WS_DEFINITION)) {
157 reportUpdated = processDefinition(request);
158 } else if (curStep.equals(AppConstants.WS_SQL)) {
159 if (action.equals(AppConstants.WA_VALIDATE))
160 reportUpdated = processValidateSQL(request);
161 } else if (curStep.equals(AppConstants.WS_TABLES)) {
162 if (curSubStep.equals(AppConstants.WSS_ADD))
163 reportUpdated = processTableAdd(request);
164 else if (curSubStep.equals(AppConstants.WSS_EDIT))
165 reportUpdated = processTableEdit(request);
166 else if (action.equals(AppConstants.WA_DELETE))
167 reportUpdated = processTableDelete(request);
168 } else if (curStep.equals(AppConstants.WS_COLUMNS)) {
169 if (curSubStep.equals(AppConstants.WSS_ADD)
170 || curSubStep.equals(AppConstants.WSS_EDIT) || action.equals(AppConstants.WA_SAVE) || action.equals(AppConstants.WA_NEXT)) {
171 reportUpdated = processColumnAddEdit(request, curSubStep
172 .equals(AppConstants.WSS_EDIT) || curSubStep
173 .equals(AppConstants.WA_MODIFY));
174 //reportUpdated = processColumnAddEdit(request, true);
176 else if (curSubStep.equals(AppConstants.WSS_ADD_MULTI))
177 reportUpdated = processColumnAddMulti(request);
178 else if (curSubStep.equals(AppConstants.WSS_ORDER_ALL))
179 reportUpdated = processColumnOrderAll(request);
180 else if (action.equals(AppConstants.WA_DELETE))
181 reportUpdated = processColumnDelete(request);
182 else if (action.equals(AppConstants.WA_MOVE_UP))
183 reportUpdated = processColumnMoveUp(request);
184 else if (action.equals(AppConstants.WA_MOVE_DOWN))
185 reportUpdated = processColumnMoveDown(request);
186 } else if (curStep.equals(AppConstants.WS_FORM_FIELDS)) {
187 if (curSubStep.equals(AppConstants.WSS_ADD)
188 || curSubStep.equals(AppConstants.WSS_EDIT))
189 reportUpdated = processFormFieldAddEdit(request, curSubStep
190 .equals(AppConstants.WSS_EDIT), action);
191 else if (action.equals(AppConstants.WA_DELETE))
192 reportUpdated = processFormFieldDelete(request);
193 else if (action.equals(AppConstants.WA_MOVE_UP))
194 reportUpdated = processFormFieldMoveUp(request);
195 else if (action.equals(AppConstants.WA_MOVE_DOWN))
196 reportUpdated = processFormFieldMoveDown(request);
197 else if (action.equals(AppConstants.WSS_ADD_BLANK))
198 reportUpdated = processFormFieldBlank(request);
199 else if (action.equals(AppConstants.WSS_INFO_BAR))
200 reportUpdated = processFormFieldInfoBar(request);
201 } else if (curStep.equals(AppConstants.WS_FILTERS)) {
202 if (curSubStep.equals(AppConstants.WSS_ADD)
203 || curSubStep.equals(AppConstants.WSS_EDIT))
204 reportUpdated = processFilterAddEdit(request, curSubStep
205 .equals(AppConstants.WSS_EDIT));
206 else if (action.equals(AppConstants.WA_DELETE))
207 reportUpdated = processFilterDelete(request);
208 } else if (curStep.equals(AppConstants.WS_SORTING)) {
209 if (curSubStep.equals(AppConstants.WSS_ADD)
210 || curSubStep.equals(AppConstants.WSS_EDIT))
211 reportUpdated = processSortAddEdit(request, curSubStep
212 .equals(AppConstants.WSS_EDIT));
213 else if (curSubStep.equals(AppConstants.WSS_ORDER_ALL))
214 reportUpdated = processSortOrderAll(request);
215 else if (action.equals(AppConstants.WA_DELETE))
216 reportUpdated = processSortDelete(request);
217 else if (action.equals(AppConstants.WA_MOVE_UP))
218 reportUpdated = processSortMoveUp(request);
219 else if (action.equals(AppConstants.WA_MOVE_DOWN))
220 reportUpdated = processSortMoveDown(request);
221 } else if (curStep.equals(AppConstants.WS_JAVASCRIPT)) {
222 if (action.equals(AppConstants.WSS_ADD))
223 reportUpdated = processAddJavascriptElement(request);
224 else if (action.equals(AppConstants.WA_SAVE))
225 reportUpdated = processSaveJavascriptElement(request);
226 else if (action.equals(AppConstants.WA_DELETE))
227 reportUpdated = processDeleteJavascriptElement(request);
229 reportUpdated = processJavascript(request);
230 } else if (curStep.equals(AppConstants.WS_CHART)) {
231 reportUpdated = processChart(request, action);
232 } else if (curStep.equals(AppConstants.WS_USER_ACCESS)) {
233 reportUpdated = processUserAccess(request, action);
234 } else if (curStep.equals(AppConstants.WS_REPORT_LOG)) {
235 if (action.equals(AppConstants.WA_DELETE_USER))
236 reportUpdated = processClearLog(request);
237 } else if (curStep.equals(AppConstants.WS_SCHEDULE)) {
238 reportUpdated = processSchedule(request, action);
239 } else if(curStep.equals(AppConstants.WS_DATA_FORECASTING)) {
240 reportUpdated = processForecasting(request, action);
242 /****For Report Maps - Start*****/
243 else if (curStep.equals(AppConstants.WS_MAP)) {
244 reportUpdated = processMap(request, action);
246 /****For Report Maps - End*****/
251 persistReportDefinition(request, rdef);
252 } // processWizardStep
254 public void processImportSemaphorePopup(HttpServletRequest request) throws RaptorException {
255 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
256 AppConstants.SI_REPORT_DEFINITION);
258 String importReportId = AppUtils
259 .getRequestNvlValue(request, AppConstants.RI_REPORT_ID);
260 ReportRuntime rr = (new ReportHandler()).loadReportRuntime(request, importReportId,
263 ArrayList importedList = new ArrayList();
264 if (rr.getSemaphoreList() != null)
265 for (Iterator iter = rr.getSemaphoreList().getSemaphore().iterator(); iter
267 SemaphoreType sem = rdef.addSemaphore(new ObjectFactory(),
268 (SemaphoreType) iter.next());
270 .add(new IdNameValue(sem.getSemaphoreId(), sem.getSemaphoreName()));
273 if (importedList.size() > 0) {
274 request.setAttribute(AppConstants.RI_DATA_SET, importedList);
275 persistReportDefinition(request, rdef);
277 } // processImportSemaphorePopup
279 public void processSemaphorePopup(HttpServletRequest request) throws RaptorException {
280 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
281 AppConstants.SI_REPORT_DEFINITION);
283 String semaphoreId = AppUtils.getRequestNvlValue(request, "semaphoreId");
284 String semaphoreName = AppUtils.getRequestNvlValue(request, "semaphoreName");
285 String semaphoreType = AppUtils.getRequestNvlValue(request, "semaphoreType");
287 SemaphoreType semaphore = rdef.getSemaphoreById(semaphoreId);
288 if (semaphore == null) {
289 semaphore = rdef.addSemaphoreType(new ObjectFactory(), semaphoreName,
290 semaphoreType, null);
291 semaphoreId = semaphore.getSemaphoreId();
292 request.setAttribute("semaphoreId", semaphoreId);
294 rdef.deleteSemaphore(semaphore);
295 semaphore.setSemaphoreName(semaphoreName);
296 semaphore.setSemaphoreType(semaphoreType);
298 rdef.setSemaphore(semaphore);
301 String[] formatId = request.getParameterValues("formatId");
302 String[] lessThanValue = request.getParameterValues("lessThanValue");
303 String[] expression = request.getParameterValues("expression");
304 String[] bold = request.getParameterValues("bold");
305 String[] italic = request.getParameterValues("italic");
306 String[] underline = request.getParameterValues("underline");
307 String[] bgColor = request.getParameterValues("bgColor");
308 String[] fontColor = request.getParameterValues("fontColor");
309 String[] fontFace = request.getParameterValues("fontFace");
310 String[] fontSize = request.getParameterValues("fontSize");
311 //String[] anyFmt = request.getParameterValues("anyFmt");
313 // String[] alignment = request.getParameterValues("alignment");
315 for (int i = 0; i < lessThanValue.length; i++)
316 if (i == 0 || nvl(lessThanValue[i]).length() > 0) {
317 FormatType fmt = null;
318 if (i == 0 || nvl(formatId[i]).length() > 0)
319 fmt = rdef.getSemaphoreFormatById(semaphore, nvl(formatId[i]));
321 fmt = rdef.addEmptyFormatType(new ObjectFactory(), semaphore);
323 fmt.setLessThanValue(nvl(lessThanValue[i]));
324 fmt.setExpression(nvl(expression[i]));
325 fmt.setBold(bold[i].equals("Y"));
326 fmt.setItalic(italic[i].equals("Y"));
327 fmt.setUnderline(underline[i].equals("Y"));
328 fmt.setBgColor(bgColor[i]);
329 fmt.setFontColor(fontColor[i]);
330 fmt.setFontFace(fontFace[i]);
331 fmt.setFontSize(fontSize[i]);
332 //fmt.setAnyFmt((anyFmt[i]!=null)?anyFmt[i].startsWith("Y"):false);
333 // fmt.setAlignment(alignment[i]);
334 } else if (nvl(formatId[i]).length() > 0)
335 rdef.deleteFormatType(semaphore, formatId[i]);
337 persistReportDefinition(request, rdef);
338 } // processSemaphorePopup
340 private boolean processDefinition(HttpServletRequest request) throws Exception {
341 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
342 AppConstants.SI_REPORT_DEFINITION);
344 String reportName = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportName"));
345 String reportDescr = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportDescr"));
346 String folderId = AppUtils.getRequestNvlValue(request, "folder_id");
347 boolean isAllowSchedule = (AppUtils.getRequestNvlValue(request, "allowSchedule").length()<=0?"N":AppUtils.getRequestNvlValue(request, "allowSchedule")).startsWith("Y");
348 boolean isColumnGroup = (AppUtils.getRequestNvlValue(request, "multiGroupColumn").length()<=0?"N":AppUtils.getRequestNvlValue(request, "multiGroupColumn")).startsWith("Y");
349 boolean isTopDown = (AppUtils.getRequestNvlValue(request, "topDown").length()<=0?"N":AppUtils.getRequestNvlValue(request, "topDown")).startsWith("Y");
350 boolean isSizedByContent= (AppUtils.getRequestNvlValue(request, "sizedByContent").length()<=0?"N":AppUtils.getRequestNvlValue(request, "sizedByContent")).startsWith("Y");
351 boolean reportsInNewWindow = false;
352 boolean hideFormFieldAfterRun = false;
354 /*recurrance in schedule tab - Start*/
355 String isOneTimeScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isOneTimeScheduleAllowed"),"N");
356 String isHourlyScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isHourlyScheduleAllowed"),"N");
357 String isDailyScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isDailyScheduleAllowed"),"N");
358 String isDailyMFScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isDailyMFScheduleAllowed"),"N");
359 String isWeeklyScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isWeeklyScheduleAllowed"),"N");
360 String isMonthlyScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isMonthlyScheduleAllowed"),"N");
361 //System.out.println("//////////// + isOneTimeScheduleAllowed : " + isOneTimeScheduleAllowed);
362 /*recurrance in schedule tab - End*/
365 if (reportDescr.length() > 1000)
366 reportDescr = reportDescr.substring(0, 1000);
367 boolean reportUpdated;
369 String reportType = AppUtils.getRequestNvlValue(request, "reportType");
373 //rdef.setReportName(reportName);
374 //rdef.setReportDescr(reportDescr);
375 //rdef.setReportType(reportType);
376 rdef.setFolderId(folderId);
377 // debugLogger.debug("setting folder ID = " + folderId);
378 if(reportType.equals(AppConstants.RT_DASHBOARD)) {
379 rdef.setReportName(reportName);
380 rdef.setReportDescr(reportDescr);
381 rdef.setReportType(reportType);
382 String dashboardLayoutHTML = AppUtils.getRequestNvlValue(request, "dashboardLayoutHTML");
383 rdef.setDashboardLayoutHTML(dashboardLayoutHTML);
384 String dataContainerHeight = nvl(AppUtils.getRequestValue(request, "heightContainer"), "auto");
385 String dataContainerWidth = nvl(AppUtils.getRequestValue(request, "widthContainer"), "auto");
386 rdef.setDataContainerHeight(dataContainerHeight);
387 rdef.setDataContainerWidth(dataContainerWidth);
388 rdef.setAllowSchedule(isAllowSchedule?"Y":"N");
392 String numDashCols = AppUtils.getRequestNvlValue(request, "numDashCols");
393 String reports1 = AppUtils.getRequestNvlValue(request, "reports1");
394 String reports2 = AppUtils.getRequestNvlValue(request, "reports2");
395 String reports3 = AppUtils.getRequestNvlValue(request, "reports3");
396 String reports4 = AppUtils.getRequestNvlValue(request, "reports4");
397 String repBgColor1 = AppUtils.getRequestNvlValue(request, "repBgColor1");
398 String repBgColor2 = AppUtils.getRequestNvlValue(request, "repBgColor2");
399 String repBgColor3 = AppUtils.getRequestNvlValue(request, "repBgColor3");
400 String repBgColor4 = AppUtils.getRequestNvlValue(request, "repBgColor4");
402 //List reports = rdef.getDashBoardReports();
403 rdef.setNumDashCols(numDashCols);
404 DashboardReports reportsList = new DashboardReportsImpl();
406 String reports[] = new String[]{reports1, reports2, reports3, reports4};
407 String repBgColors[] = new String[]{repBgColor1, repBgColor2, repBgColor3, repBgColor4};
408 for (int i = 0; i < reports.length; i++) {
409 Reports report = new ReportsImpl();
410 report.setReportId(reports[i]);
411 report.setBgcolor(repBgColors[i]);
412 reportsList.getReportsList().add(report);
417 rdef.setDashBoardReports(reportsList);
419 reportUpdated = true;
421 // reportUpdated = (!(reportName.equals(nvl(rdef.getReportName()))
422 // && reportDescr.equals(nvl(rdef.getReportDescr()))
423 // && reportType.equals(nvl(rdef.getReportType()))
424 // && numDashCols.equals(nvl(rdef.getNumDashCols()))));
427 if (rdef.getWizardSequence() instanceof WizardSequence)
428 rdef.generateWizardSequence(request);
432 if (AppUtils.getRequestNvlValue(request, "reportType").equals(AppConstants.RT_CROSSTAB) || rdef.getReportType().equals(AppConstants.RT_CROSSTAB)) {
434 String widthNo = AppUtils.getRequestNvlValue(request, "widthNo");
435 if(nvl(widthNo).endsWith("px"))
436 rdef.setWidthNoColumn(widthNo);
438 rdef.setWidthNoColumn(widthNo+"px");
441 String dataGridAlign = AppUtils.getRequestNvlValue(request, "dataGridAlign");
442 if(nvl(dataGridAlign).length()>0) {
443 rdef.setDataGridAlign(dataGridAlign);
445 rdef.setDataGridAlign("left");
448 String pdfImgLogo = AppUtils.getRequestNvlValue(request, "pdfImg");
449 if(nvl(pdfImgLogo).length()>0)
450 rdef.setPdfImg(pdfImgLogo);
452 rdef.setPdfImg(null);
453 String emptyMessage = AppUtils.getRequestNvlValue(request, "emptyMessage");
454 if(nvl(emptyMessage).length()>0)
455 rdef.setEmptyMessage(emptyMessage);
457 rdef.setEmptyMessage("");
458 String formHelp = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "formHelp"));
459 //String rDashboardType = nvl(AppUtils.getRequestValue(request, "showDashboardOptions"), "N");
460 //rdef.setDashboardType(rDashboardType.equals("Y"));
461 int excelDownloadSize = 500;
463 excelDownloadSize = Integer.parseInt(AppUtils.getRequestValue(request, "excelDownloadSize"));
464 } catch (NumberFormatException ex) {}
465 if(AppUtils.getRequestNvlValue(request, "excelDownloadSize").length()>0)
466 rdef.setMaxRowsInExcelDownload(Integer.parseInt(AppUtils.getRequestValue(request, "excelDownloadSize")));
467 if(AppUtils.getRequestNvlValue(request, "reportInNewWindow").length()>0)
468 reportsInNewWindow = AppUtils.getRequestNvlValue(request,"reportInNewWindow").equals("Y");
469 if(AppUtils.getRequestNvlValue(request, "hideFormFieldsAfterRun").length()>0)
470 hideFormFieldAfterRun = AppUtils.getRequestNvlValue(request,"hideFormFieldsAfterRun").equals("Y");
473 if(AppUtils.getRequestNvlValue(request, "displayFolderTree").length()>0)
474 rdef.setDisplayFolderTree(AppUtils.getRequestNvlValue(request,"displayFolderTree").equals("Y"));
476 rdef.setDisplayFolderTree(false);
477 String dataSource = AppUtils.getRequestNvlValue(request, "dataSource");
478 String dbType = Globals.getDBType();
479 String schemaSql = Globals.getRemoteDbSchemaSqlWithWhereClause();
480 schemaSql = schemaSql.replace("[schema_id]", dataSource);
483 ds = DbUtils.executeQuery(schemaSql);
485 String prefix = "", desc = "";
487 for (int i = 0; i < ds.getRowCount(); i++) {
488 dbType = ds.getItem(i, 2);
491 catch (Exception e) {}
493 int pageSize = Globals.getDefaultPageSize();
495 pageSize = Integer.parseInt(AppUtils.getRequestValue(request, "pageSize"));
496 } catch (NumberFormatException e) {
498 String rApproved = nvl(AppUtils.getRequestValue(request, "menuApproved"), "N");
500 String[] menuIDs = request.getParameterValues("menuID");
502 for (int i = 0; i < menuIDs.length; i++)
503 menuID += (menuID.length() == 0 ? "" : "|") + menuIDs[i];
507 // boolean additionalFieldsShown = AppUtils.getRequestNvlValue(request,
508 // "additionalFieldsShown").equals("Y");
509 boolean rRCSDisabled = AppUtils.getRequestNvlValue(request, "runtimeColSortDisabled").equals("Y");
510 String reportDefType = AppUtils.getRequestNvlValue(request, "reportDefType");
511 String dataContainerHeight = nvl(AppUtils.getRequestValue(request, "heightContainer"), "auto");
512 String dataContainerWidth = nvl(AppUtils.getRequestValue(request, "widthContainer"), "auto");
514 String displayOptions = nvl(AppUtils.getRequestValue(request, "hideForm"), "N")
515 + nvl(AppUtils.getRequestValue(request, "hideChart"), "N")
516 + nvl(AppUtils.getRequestValue(request, "hideData"), "N")
517 + nvl(AppUtils.getRequestValue(request, "hideBtns"), "N")
518 + nvl(AppUtils.getRequestValue(request, "hideMap"), "N")
519 + nvl(AppUtils.getRequestValue(request, "hideExcelIcons"), "N")
520 + nvl(AppUtils.getRequestValue(request, "hidePDFIcons"), "N");
521 /* StringBuffer dashboardOptions = new StringBuffer("");
522 dashboardOptions.append((nvl(AppUtils.getRequestValue(request, "hide"),"chart").equals("chart"))?"Y":"N");
523 dashboardOptions.append((nvl(AppUtils.getRequestValue(request, "hide"),"").equals("data"))?"Y":"N");
524 dashboardOptions.append((nvl(AppUtils.getRequestValue(request, "hideBtns"),"").equals("Y"))?"Y":"N");*/
526 String numFormCols = nvl(AppUtils.getRequestValue(request, "numFormCols"), "1");
527 String reportTitle = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportTitle"));
528 String reportSubTitle = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportSubTitle"));
529 String reportHeader = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportHeader"));
530 String reportFooter = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportFooter"));
532 int frozenColumns = 0;
534 frozenColumns = Integer.parseInt(AppUtils.getRequestValue(request, "frozenColumns"));
535 } catch (NumberFormatException ex) {
539 /* reportUpdated = (!(reportName.equals(nvl(rdef.getReportName()))))
540 && (!(reportDescr.equals(nvl(rdef.getReportDescr()))))
541 && (!(formHelp.equals(nvl(rdef.getFormHelpText()))))
542 && (!(reportType.equals(nvl(rdef.getReportType()))))
543 && (pageSize != rdef.getPageSize()) &&
544 // rPublic.equals(rdef.isPublic()?"Y":"N")&&
545 (!(menuID.equals(nvl(rdef.getMenuID()))))
546 && (!(rApproved.equals(rdef.isMenuApproved()))) && (additionalFieldsShown ? ((!(rRCSDisabled
547 .equals(rdef.isRuntimeColSortDisabled())))
548 && (!(displayOptions.equals(nvl(rdef.getDisplayOptions()))))
549 && (!(dashboardOptions.equals(nvl(rdef.getDashboardOptions()))))
550 && (!(numFormCols.equals(nvl(rdef.getNumFormCols()))))
551 && (!(reportTitle.equals(nvl(rdef.getReportTitle()))))
552 && (!(reportSubTitle.equals(nvl(rdef.getReportSubTitle()))))
553 && (!(reportHeader.equals(nvl(rdef.getReportHeader())))) && (!(reportFooter
554 .equals(nvl(rdef.getReportFooter()))))&& (reportsInNewWindow != rdef.isReportInNewWindow())):true);
556 /* reportUpdated = rRCSDisabled ==(rdef.isRuntimeColSortDisabled()
557 && displayOptions.equals(nvl(rdef.getDisplayOptions()))
558 //&& dashboardOptions.equals(nvl(rdef.getDashboardOptions()))
559 && numFormCols.equals(nvl(rdef.getNumFormCols()))
560 && reportTitle.equals(nvl(rdef.getReportTitle()))
561 && reportSubTitle.equals(nvl(rdef.getReportSubTitle()))
562 && reportHeader.equals(nvl(rdef.getReportHeader()))
563 && reportsInNewWindow == rdef.isReportInNewWindow()
564 && reportFooter.equals(nvl(rdef.getReportFooter())))
568 /*reportUpdated = (!(reportName.equals(nvl(rdef.getReportName()))
569 && reportDescr.equals(nvl(rdef.getReportDescr()))
570 && formHelp.equals(nvl(rdef.getFormHelpText()))
571 && reportType.equals(nvl(rdef.getReportType()))
572 && (pageSize == rdef.getPageSize())
573 && excelDownloadSize == rdef.getMaxRowsInExcelDownload()
574 && reportsInNewWindow == rdef.isReportInNewWindow()
575 && displayOptions.equals(rdef.getDisplayOptions())
576 && dataContainerHeight.equals(rdef.getDataContainerHeight())
577 && dataContainerWidth.equals(rdef.getDataContainerWidth())
578 && (isAllowSchedule ==(rdef.isAllowSchedule()))
579 // rPublic.equals(rdef.isPublic()?"Y":"N")&&
580 && menuID.equals(nvl(rdef.getMenuID()))
581 && rApproved.equals(rdef.isMenuApproved() ? "Y" : "N") && (rRCSDisabled
582 == ((rdef.isRuntimeColSortDisabled())
583 && displayOptions.equals(nvl(rdef.getDisplayOptions()))
584 //&& dashboardOptions.equals(nvl(rdef.getDashboardOptions()))
585 && numFormCols.equals(nvl(rdef.getNumFormCols()))
586 && reportTitle.equals(nvl(rdef.getReportTitle()))
587 && reportSubTitle.equals(nvl(rdef.getReportSubTitle()))
588 && isOneTimeScheduleAllowed.equals(nvl(rdef.getIsOneTimeScheduleAllowed()))
589 && isHourlyScheduleAllowed.equals(nvl(rdef.getIsHourlyScheduleAllowed()))
590 && isDailyScheduleAllowed.equals(nvl(rdef.getIsDailyScheduleAllowed()))
591 && isDailyMFScheduleAllowed.equals(nvl(rdef.getIsDailyMFScheduleAllowed()))
592 && isWeeklyScheduleAllowed.equals(nvl(rdef.getIsWeeklyScheduleAllowed()))
593 && isMonthlyScheduleAllowed.equals(nvl(rdef.getIsMonthlyScheduleAllowed()))
594 && reportHeader.equals(nvl(rdef.getReportHeader())) && reportFooter
595 .equals(nvl(rdef.getReportFooter()))))
597 rdef.setReportName(reportName);
598 rdef.setReportDescr(reportDescr);
599 rdef.setFormHelpText(formHelp);
600 rdef.setReportType(reportType);
601 rdef.setPageSize(pageSize);
602 rdef.setDBInfo(dataSource);
603 rdef.setDBType(dbType);
604 rdef.setDisplayOptions(displayOptions);
605 rdef.setDataContainerHeight(dataContainerHeight);
606 rdef.setDataContainerWidth(dataContainerWidth);
607 rdef.setAllowSchedule(isAllowSchedule?"Y":"N");
608 rdef.setMultiGroupColumn(isColumnGroup?"Y":"N");
609 rdef.setTopDown(isTopDown?"Y":"N");
610 rdef.setSizedByContent(isSizedByContent?"Y":"N");
611 // rdef.setPublic(rPublic.equals("Y"));
612 rdef.setMenuID(menuID);
613 rdef.setMenuApproved(rApproved.equals("Y"));
614 if (reportDefType.length() > 0)
615 rdef.setReportDefType(reportDefType);
616 /* if(rdef.isDashboardType()) {
617 rdef.setDashboardOptions(dashboardOptions.toString());
619 rdef.setHideFormFieldAfterRun(hideFormFieldAfterRun);
620 rdef.setReportInNewWindow(reportsInNewWindow);
621 rdef.setRuntimeColSortDisabled(rRCSDisabled);
622 rdef.setNumFormCols(numFormCols);
623 rdef.setReportTitle(reportTitle);
624 rdef.setReportSubTitle(reportSubTitle);
625 rdef.setReportHeader(reportHeader);
626 rdef.setReportFooter(reportFooter);
627 rdef.setIsOneTimeScheduleAllowed(isOneTimeScheduleAllowed);
628 rdef.setIsHourlyScheduleAllowed(isHourlyScheduleAllowed);
629 rdef.setIsDailyScheduleAllowed(isDailyScheduleAllowed);
630 rdef.setIsDailyMFScheduleAllowed(isDailyMFScheduleAllowed);
631 rdef.setIsWeeklyScheduleAllowed(isWeeklyScheduleAllowed);
632 rdef.setIsMonthlyScheduleAllowed(isMonthlyScheduleAllowed);
633 rdef.setFrozenColumns(frozenColumns);
637 if (rdef.getWizardSequence() instanceof WizardSequence)
638 rdef.generateWizardSequence(request);
642 * if(formHelp.length()>255) formHelp = formHelp.substring(0, 255);
646 // String rPublic = nvl(AppUtils.getRequestValue(request, "public"),
648 // String menuID = AppUtils.getRequestNvlValue(request, "menuID");
650 // boolean dashboardOptionsShown = AppUtils.getRequestNvlValue(request,
651 // "dashboardOptionsShown").equals("Y");
653 reportUpdated = true;
655 if (rdef.getReportID().equals("-1"))
656 // Always need to persist new report - in case it is a copy
657 reportUpdated = true;
659 return reportUpdated;
660 } // processDefinition
662 private boolean processTableAdd(HttpServletRequest request) throws Exception {
663 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
664 AppConstants.SI_REPORT_DEFINITION);
666 String tableName = AppUtils.getRequestNvlValue(request, "tableName").toUpperCase();
667 String tableId = rdef.getUniqueTableId(tableName);
669 String joinTableExpr = null;
670 String joinTableId = null;
672 DataSourceType joinTable =
673 rdef.getTableById(AppUtils.getRequestValue(request, "joinTableName"));
674 if (joinTable != null) {
675 String joinTableName = joinTable.getTableName();
676 joinTableId = joinTable.getTableId();
678 String joinExpr = AppUtils.getRequestNvlValue(request, "joinExpr").toUpperCase();
680 joinTableExpr = joinExpr.replaceAll("\\["+tableName+"\\]", tableId);
681 joinTableExpr = joinTableExpr.replaceAll("\\["+joinTableName+"\\]", joinTableId);
682 // debugLogger.debug("joinExpr : "+joinExpr+"\njoinTableExpr : "+ joinTableExpr);
685 rdef.addDataSourceType(new ObjectFactory(), tableId, tableName, AppUtils
686 .getRequestNvlValue(request, "tablePK"), AppUtils.getRequestNvlValue(request,
687 "displayName"), joinTableId, joinTableExpr, null);
689 rdef.setOuterJoin(rdef.getTableById(tableId), AppUtils.getRequestNvlValue(request,
691 rdef.resetCache(true);
696 private boolean processTableEdit(HttpServletRequest request) throws Exception {
697 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
698 AppConstants.SI_REPORT_DEFINITION);
700 DataSourceType dst = rdef.getTableById(AppUtils.getRequestNvlValue(request,
701 AppConstants.RI_DETAIL_ID));
703 String displayName = XSSFilter.filterRequest(AppUtils.getRequestNvlValue(request, "displayName"));
704 String outerJoin = AppUtils.getRequestNvlValue(request, "outerJoin");
706 String tableName = AppUtils.getRequestNvlValue(request, "tableName").toUpperCase();
707 String joinTableId = AppUtils.getRequestNvlValue(request, "joinTableName");
709 String joinExpr = AppUtils.getRequestNvlValue(request, "joinExpr").toUpperCase();
711 String joinTableExpr = null;
712 if(joinExpr.length()!=0){
713 joinTableExpr = joinExpr.replaceAll("\\["+tableName+"\\]", rdef.getTableByDBName(tableName).getTableId());
714 joinTableExpr = joinTableExpr.replaceAll("\\["+rdef.getTableById(joinTableId).getTableName().toUpperCase()+"\\]", joinTableId);
715 dst.setRefDefinition(joinTableExpr);
717 boolean reportUpdated = (!displayName.equals(nvl(dst.getDisplayName())) ||
718 !outerJoin.equals(rdef.getOuterJoinType(dst)) ||
719 !(joinExpr.length()==0));
721 dst.setDisplayName(displayName);
722 rdef.setOuterJoin(dst, outerJoin);
724 rdef.resetCache(true);
726 return true; // reportUpdated;
727 } // processTableEdit
730 private boolean processTableDelete(HttpServletRequest request) throws Exception {
731 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
732 AppConstants.SI_REPORT_DEFINITION);
733 rdef.deleteDataSourceType(AppUtils.getRequestNvlValue(request,
734 AppConstants.RI_DETAIL_ID));
736 } // processTableDelete
738 private boolean processColumnAddEdit(HttpServletRequest request, boolean isEdit)
743 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
744 AppConstants.SI_REPORT_DEFINITION);
745 DataColumnType currColumn = null;
747 String tableId = null;
748 String colName = null;
749 String dataType = null;
751 currColumn = rdef.getColumnById(AppUtils.getRequestNvlValue(request,
752 AppConstants.RI_DETAIL_ID));
754 if(currColumn!=null) {
755 tableId = currColumn.getTableId();
756 colName = currColumn.getDbColName(); // currColumn.getColName();
757 dataType = currColumn.getDbColType();
760 String colData = AppUtils.getRequestNvlValue(request, "columnDetails");
761 if(nvl(colData).length()>0) {
762 tableId = colData.substring(0, colData.indexOf('|'));
763 colName = colData.substring(tableId.length() + 1,
764 colData.indexOf('|', tableId.length() + 1)).toUpperCase();
765 dataType = colData.substring(tableId.length() + colName.length() + 2);
769 String exprFormula = AppUtils.getRequestNvlValue(request, "exprFormula");
771 String colNameValue = null;
772 if (exprFormula.length() > 0)
773 if (exprFormula.equals("_exprText_"))
774 colNameValue = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestValue(request, "exprText"));
775 else if (exprFormula.equals("COUNT(*)"))
776 colNameValue = exprFormula;
778 colNameValue = exprFormula + " " + colName + ")";
780 colNameValue = colName;
782 int displayWidth = -1;
784 displayWidth = Integer.parseInt(AppUtils.getRequestValue(request, "displayWidth"));
785 } catch (NumberFormatException e) {
788 String sColId = isEdit ? currColumn.getColId() : (nvl(colName).length()>0?rdef.getUniqueColumnId(colName):null);
789 String drillDownParams = AppUtils.getRequestValue(request, "drillDownParams");
790 if (drillDownParams != null) {
791 // Replacing references to [this] with [col_id]
792 while (drillDownParams.indexOf("[this]") >= 0) {
793 int startIdx = drillDownParams.indexOf("[this]");
794 StringBuffer sb = new StringBuffer();
797 sb.append(drillDownParams.substring(0, startIdx));
798 sb.append("[" + sColId + "]");
799 if (startIdx + 6 < drillDownParams.length() - 1)
800 sb.append(drillDownParams.substring(startIdx + 5));
801 drillDownParams = sb.toString();
805 String crossTabValue = null;
806 boolean isVisible = AppUtils.getRequestFlag(request, "visible");
807 boolean isSortable = AppUtils.getRequestFlag(request, "sortable");
808 String nowrap = AppUtils.getRequestNvlValue(request, "nowrap");
811 indentation = Integer.parseInt(AppUtils.getRequestNvlValue(request, "indentation"));
812 }catch (NumberFormatException e) {
814 String dependsOnFormField = AppUtils.getRequestNvlValue(request, "dependsOnFormField");
815 boolean isGroupBreak = AppUtils.getRequestFlag(request, "groupBreak");
816 String groupByPosStr = AppUtils.nvls(AppUtils.getRequestValue(request, "groupByPos"), "0");
817 int groupByPos = Integer.parseInt(groupByPosStr);
818 currColumn.setGroupByPos(groupByPos);
821 String subTotalCustomText = AppUtils.nvls(AppUtils.getRequestValue(request, "subTotalCustomText"), "Sub Total");
822 currColumn.setSubTotalCustomText(subTotalCustomText);
824 boolean hideRepeatedKey = AppUtils.getRequestFlag(request, "hideRepeatedKeys");
825 currColumn.setHideRepeatedKey(hideRepeatedKey);
828 String displayTotal = AppUtils.getRequestNvlValue(request, "displayTotal");
829 String widthInPxls = AppUtils.getRequestNvlValue(request, "widthInPxls");
831 if (rdef.getReportType().equals(AppConstants.RT_CROSSTAB)) {
835 crossTabValue = AppUtils.getRequestValue(request, "crossTabValue");
836 isVisible = nvl(crossTabValue).equals(AppConstants.CV_ROW)
837 || nvl(crossTabValue).equals(AppConstants.CV_COLUMN)
838 || nvl(crossTabValue).equals(AppConstants.CV_VALUE);
839 isGroupBreak = nvl(crossTabValue).equals(AppConstants.CV_ROW)
840 || nvl(crossTabValue).equals(AppConstants.CV_COLUMN);
842 if (nvl(crossTabValue).equals(AppConstants.CV_VALUE))
844 + AppUtils.getRequestNvlValue(request, "displayTotalPerRow");
849 String displayName = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "displayName"));
850 String colType = AppUtils.getRequestNvlValue(request, "colType");
851 String displayFormat = AppUtils.getRequestNvlValue(request, "displayFormat");
854 if(colType.equals(AppConstants.CT_HYPERLINK)) {
855 String hyperlinkURL = AppUtils.getRequestValue(request, "hyperlinkURL");
856 currColumn.setHyperlinkURL(hyperlinkURL);
857 String anchor = AppUtils.getRequestValue(request, "anchor");
858 currColumn.setHyperlinkType(anchor);
859 if(anchor.equals("IMAGE")) {
860 String actionImg = AppUtils.getRequestValue(request, "actionImg");
861 currColumn.setActionImg(actionImg);
867 String displayAlign = AppUtils.getRequestValue(request, "displayAlign");
868 String displayHeaderAlign = AppUtils.getRequestValue(request, "displayHeaderAlign");
869 String drillDownURL = AppUtils.getRequestValue(request, "drillDownURL");
870 String drillDownSuppress = AppUtils.getRequestValue(request, "drillDownSuppress");
871 boolean drillDownPopUp = AppUtils.getRequestFlag (request, "drillDownPopUp");
872 String semaphoreId = AppUtils.getRequestNvlValue(request, "semaphore");
873 String semaphoreType = AppUtils.getRequestNvlValue(request, "semaphoreTypeHidden");
875 String levelStr = AppUtils.getRequestNvlValue(request, "multiGroupColLevel");
876 String startColGroup = AppUtils.getRequestNvlValue(request, "startMultiGroup");
877 String colGroupColSpan = AppUtils.getRequestNvlValue(request, "colspan");
880 level = Integer.parseInt(levelStr);
881 }catch (NumberFormatException ex) {
884 int startColGroupInt = 0;
885 int colGroupColSpanInt = 0;
888 //startColGroupInt = Integer.parseInt(startColGroup);
889 colGroupColSpanInt = Integer.parseInt(colGroupColSpan);
890 } catch (NumberFormatException ex) {
894 currColumn.setLevel(level);
896 currColumn.setStart(startColGroupInt);
897 currColumn.setColspan(colGroupColSpanInt);
900 String targetColumnId = (semaphoreType.indexOf("|")!= -1 ? semaphoreType.substring(semaphoreType.indexOf("|")+1):"");
901 DataColumnType targetColumn = rdef.getColumnById(targetColumnId);
903 SemaphoreType semaphore = rdef.getSemaphoreById(semaphoreId);
904 rdef.deleteSemaphore(semaphore);
905 if(nvl(semaphoreType).length() > 0 && semaphoreType.indexOf("|")!=-1)
906 semaphore.setSemaphoreType(semaphoreType.substring(0,semaphoreType.indexOf("|")));
907 if(semaphore!=null) {
908 semaphore.setComment(currColumn.getColId());
909 if(nvl(semaphoreType).length() > 0)
910 semaphore.setTarget(targetColumnId.length()>0? targetColumnId: "");
911 rdef.setSemaphore(semaphore);
916 if(nvl(widthInPxls).length()>0) {
917 if(nvl(widthInPxls).endsWith("px"))
918 currColumn.setDisplayWidthInPxls(widthInPxls);
920 currColumn.setDisplayWidthInPxls(widthInPxls+"px");
922 currColumn.setDisplayWidthInPxls("");
925 currColumn.setCrossTabValue(crossTabValue);
926 currColumn.setDependsOnFormField(dependsOnFormField);
927 currColumn.setDisplayName(displayName);
928 //currColumn.setOriginalDisplayName(displayName);
930 if (displayWidth > 0)
931 currColumn.setDisplayWidth(displayWidth);
932 currColumn.setDisplayAlignment(displayAlign);
933 currColumn.setDisplayHeaderAlignment(displayHeaderAlign);
934 currColumn.setDrillDownURL(drillDownURL);
935 currColumn.setDrillDownParams(drillDownParams);
936 currColumn.setDrillDownType(drillDownSuppress);
937 currColumn.setDrillinPoPUp(drillDownPopUp);
939 currColumn.setIndentation(indentation);
941 rdef.setDrillDownURLInPopupPresent(true);
943 /*if(targetColumn!=null) {
944 currColumn.setSemaphoreId(null);
945 targetColumn.setSemaphoreId(semaphoreId);
947 currColumn.setSemaphoreId(semaphoreId);
948 currColumn.setGroupBreak(isGroupBreak);
949 logger.debug(EELFLoggerDelegate.debugLogger, (" ------------ Display Total ---------- "+ displayTotal));
950 currColumn.setDisplayTotal(displayTotal);
951 //if (currColumn.getDrillDownURL() == null || currColumn.getDrillDownURL().length() == 0)
952 currColumn.setVisible(isVisible);
953 currColumn.setIsSortable(isSortable);
954 currColumn.setNowrap(nowrap);
956 // currColumn.setVisible(true);
957 if (rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED)) {
959 currColumn.setColType(colType);
960 displayFormat = AppUtils.getRequestValue(request, "colDataFormat");
961 if (displayFormat != null){
962 currColumn.setColFormat(displayFormat);
964 if(colType!=null && colType.equals(AppConstants.CT_DATE)) {
965 boolean enhancedPagination = AppUtils.getRequestFlag(request, "enhancedPagination");
966 currColumn.setEnhancedPagination(enhancedPagination);
969 if (!rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED)) {
970 currColumn.setColName(colNameValue);
971 if (displayFormat != null)
972 currColumn.setColFormat(displayFormat);
973 //currColumn.setVisible(isVisible);
974 currColumn.setCalculated(exprFormula.length() > 0);
976 rdef.adjustColumnType(currColumn);
979 rdef.resetCache(true);
981 currColumn = rdef.addDataColumnType(new ObjectFactory(), sColId, tableId, colName,
982 crossTabValue, colNameValue, displayName, displayWidth, displayAlign, rdef
983 .getAllColumns().size() + 1, isVisible,
984 (exprFormula.length() > 0), adjustDataType(dataType), displayFormat,
985 isGroupBreak, -1, null, displayTotal, null, -1, drillDownSuppress,
986 drillDownURL, drillDownParams, semaphoreId, null);
988 if (rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED))
989 rdef.setColumnNoParseDateFlag(currColumn, AppUtils.getRequestFlag(request,
991 if(nvl(displayName).length()>0)
995 } // processColumnAddEdit
997 private boolean processColumnAddMulti(HttpServletRequest request) throws Exception {
998 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
999 AppConstants.SI_REPORT_DEFINITION);
1001 List reportCols = rdef.getAllColumns();
1002 int nCol = reportCols.size() + 1;
1004 String[] addColumn = request.getParameterValues("addColumn");
1005 String[] tableId = request.getParameterValues("tableId");
1006 String[] columnName = request.getParameterValues("columnName");
1007 String[] columnType = request.getParameterValues("columnType");
1008 String[] displayName = request.getParameterValues("displayName");
1010 for (int i = 0; i < addColumn.length; i++)
1011 if (addColumn[i].equals("Y")) {
1013 String uniqueDisplayName = displayName[i];
1014 boolean isUnique = true;
1017 for (Iterator iter = reportCols.iterator(); iter.hasNext();)
1018 if (uniqueDisplayName.equals(((DataColumnType) iter.next())
1019 .getDisplayName())) {
1021 uniqueDisplayName = displayName[i] + (j++);
1024 } while (!isUnique);
1028 new ObjectFactory(),
1029 rdef.getUniqueColumnId(columnName[i]),
1040 adjustDataType(columnType[i]),
1041 (columnType[i].equals(AppConstants.CT_DATE) ? AppConstants.DEFAULT_DATE_FORMAT
1042 : null), false, -1, null, null, null, -1, null, null,
1047 } // processColumnAddMulti
1049 private boolean processColumnOrderAll(HttpServletRequest request) throws Exception {
1050 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1051 AppConstants.SI_REPORT_DEFINITION);
1053 String[] colId = request.getParameterValues("colId");
1054 String[] colOrder = request.getParameterValues("colOrder");
1056 boolean reportUpdated = false;
1057 for (int i = 0; i < colId.length; i++) {
1058 DataColumnType dct = rdef.getColumnById(nvl(colId[i]));
1064 iColOrder = Integer.parseInt(colOrder[i]);
1065 } catch (NumberFormatException e) {
1068 if (iColOrder > 0) {
1069 dct.setOrderSeq(iColOrder);
1070 reportUpdated = true;
1074 if (reportUpdated) {
1075 List reportCols = rdef.getAllColumns();
1076 Collections.sort(reportCols, new OrderSeqComparator());
1079 for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
1080 DataColumnType dct = (DataColumnType) iter.next();
1081 dct.setOrderSeq(iOrder++);
1084 rdef.resetCache(false);
1087 return reportUpdated;
1088 } // processColumnOrderAll
1090 private boolean processColumnDelete(HttpServletRequest request) throws Exception {
1091 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1092 AppConstants.SI_REPORT_DEFINITION);
1093 rdef.deleteDataColumnType(AppUtils.getRequestNvlValue(request,
1094 AppConstants.RI_DETAIL_ID));
1096 } // processColumnDelete
1098 private boolean processColumnMoveUp(HttpServletRequest request) throws Exception {
1099 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1100 AppConstants.SI_REPORT_DEFINITION);
1101 rdef.shiftColumnOrderUp(AppUtils
1102 .getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
1104 } // processColumnMoveUp
1106 private boolean processColumnMoveDown(HttpServletRequest request) throws Exception {
1107 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1108 AppConstants.SI_REPORT_DEFINITION);
1109 rdef.shiftColumnOrderDown(AppUtils.getRequestNvlValue(request,
1110 AppConstants.RI_DETAIL_ID));
1112 } // processColumnMoveDown
1114 private boolean processFormFieldAddEdit(HttpServletRequest request, boolean isEdit,
1115 String action) throws Exception {
1116 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1117 AppConstants.SI_REPORT_DEFINITION);
1119 String fieldName = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "fieldName"));
1120 String multiSelectSize = "0";
1121 String colId = AppUtils.getRequestNvlValue(request, "fieldColId");
1122 if (rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED)) {
1123 String displayFormat = AppUtils.getRequestNvlValue(request, "displayFormat");
1124 if (displayFormat.length() > 0)
1125 colId += "|" + displayFormat;
1127 String fieldType = AppUtils.getRequestNvlValue(request, "fieldType");
1128 String validation = AppUtils.getRequestNvlValue(request, "validation");
1129 String mandatory = nvl(AppUtils.getRequestValue(request, "mandatory"), "N");
1130 String defaultValue = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "defaultValue"));
1131 String fieldHelp = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "fieldHelp"));
1132 String fieldSQL = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "fieldSQL"));
1133 String fieldDefaultSQL = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "fieldDefaultSQL"));
1134 String visible = nvl(AppUtils.getRequestValue(request, "visible"),"Y");
1135 String dependsOn = nvl(AppUtils.getRequestValue(request, "dependsOn"),"");
1136 String rangeStartDate = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "rangeStartDate"));
1137 String rangeEndDate = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "rangeEndDate"));
1138 String rangeStartDateSQL = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "rangeStartDateSQL"));
1139 String rangeEndDateSQL = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "rangeEndDateSQL"));
1140 boolean isGroupFormField = AppUtils.getRequestFlag(request,"isGroupFormField");
1142 Calendar start = null;
1143 Calendar end = null;
1144 if (AppUtils.nvl(rangeStartDate).length()>0){
1145 SimpleDateFormat dtf = new SimpleDateFormat("MM/dd/yyyy");
1146 start = Calendar.getInstance();
1147 start.setTime(dtf.parse(rangeStartDate));
1149 if (AppUtils.nvl(rangeEndDate).length()>0){
1150 SimpleDateFormat dtf = new SimpleDateFormat("MM/dd/yyyy");
1151 end = Calendar.getInstance();
1152 end.setTime(dtf.parse(rangeEndDate));
1154 * if(fieldHelp.length()>255) fieldHelp = fieldHelp.substring(0, 255);
1157 boolean reportUpdated = false;
1159 FormFieldType currField = null;
1161 String fieldId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID);
1163 currField = rdef.getFormFieldById(fieldId);
1164 if (currField != null && nvl(fieldName).length()>0) {
1165 reportUpdated = (!(fieldName.equals(nvl(currField.getFieldName()))
1166 && colId.equals(nvl(currField.getColId()))
1167 && fieldType.equals(nvl(currField.getFieldType()))
1168 && validation.equals(nvl(currField.getValidationType()))
1169 && mandatory.equals(nvl(currField.getMandatory(), "N"))
1170 && defaultValue.equals(nvl(currField.getDefaultValue()))
1171 && fieldSQL.equals(nvl(currField.getFieldSQL()))
1172 && fieldDefaultSQL.equals(nvl(currField.getFieldDefaultSQL()))
1173 && dependsOn.equals(nvl(currField.getDependsOn(), "N"))
1174 && (start == null || (start != null && currField.getRangeStartDate() == null) || (start.compareTo(getCalendar(currField.getRangeStartDate())) )==0)
1175 && (end == null || (end != null && currField.getRangeEndDate() == null) || (end.equals(currField.getRangeEndDate())))
1176 && rangeStartDateSQL.equals(nvl(currField.getRangeStartDateSQL()))
1177 && rangeEndDateSQL.equals(nvl(currField.getRangeEndDateSQL()))
1178 && visible.equals(nvl(currField.getVisible(), "Y"))
1179 && isGroupFormField == currField.isGroupFormField()
1180 && fieldHelp.equals(nvl(currField.getComment()))));
1182 rdef.replaceFormFieldReferences("[" + currField.getFieldName() + "]", "["
1185 currField.setFieldName(fieldName);
1186 currField.setColId(colId);
1187 currField.setFieldType(fieldType);
1188 currField.setValidationType(validation);
1189 currField.setMandatory(mandatory);
1190 currField.setDefaultValue(defaultValue);
1191 currField.setFieldSQL(fieldSQL);
1192 currField.setFieldDefaultSQL(fieldDefaultSQL);
1193 currField.setComment(fieldHelp);
1194 currField.setVisible(visible);
1195 currField.setDependsOn(dependsOn);
1198 currField.setRangeStartDate(DatatypeFactory.newInstance()
1199 .newXMLGregorianCalendar(start.YEAR, start.MONTH, start.DAY_OF_WEEK, start.HOUR, start.MINUTE, start.SECOND, start.MILLISECOND, start.ZONE_OFFSET));
1201 currField.setRangeStartDate(null);
1204 currField.setRangeEndDate(DatatypeFactory.newInstance()
1205 .newXMLGregorianCalendar(end.YEAR, end.MONTH, end.DAY_OF_WEEK, end.HOUR, end.MINUTE, end.SECOND, end.MILLISECOND, end.ZONE_OFFSET));
1207 currField.setRangeEndDate(null);
1209 /*currField.setRangeEndDate(DatatypeFactory.newInstance()
1210 .newXMLGregorianCalendar(end));*/
1211 } catch (DatatypeConfigurationException ex) {
1215 currField.setRangeStartDateSQL(rangeStartDateSQL);
1216 currField.setRangeEndDateSQL(rangeEndDateSQL);
1217 currField.setGroupFormField(isGroupFormField);
1218 if(fieldType.equals(FormField.FFT_LIST_MULTI)) {
1219 multiSelectSize = AppUtils.getRequestNvlValue(request, "multiSelectListSize");
1220 currField.setMultiSelectListSize(multiSelectSize);
1226 reportUpdated = true;
1228 currField = rdef.addFormFieldType(new ObjectFactory(), fieldName, colId,
1229 fieldType, validation, mandatory, defaultValue, fieldSQL, fieldHelp, start, end, rangeStartDateSQL, rangeEndDateSQL);
1231 request.setAttribute(AppConstants.RI_DETAIL_ID, currField.getFieldId());
1234 if (action.equals(AppConstants.WA_ADD_USER)) {
1235 reportUpdated = true;
1236 rdef.addFormFieldPredefinedValue(new ObjectFactory(), currField, XSSFilter.filterRequestOnlyScript(AppUtils
1237 .getRequestNvlValue(request, "newPredefinedValue")));
1238 } else if (action.equals(AppConstants.WA_DELETE_USER)) {
1239 reportUpdated = true;
1240 rdef.deleteFormFieldPredefinedValue(currField, AppUtils.getRequestNvlValue(
1241 request, "delPredefinedValue"));
1244 return reportUpdated;
1245 } // processFormFieldAddEdit
1247 private boolean processFormFieldDelete(HttpServletRequest request) throws Exception {
1248 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1249 AppConstants.SI_REPORT_DEFINITION);
1251 String fieldId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID);
1252 rdef.deleteFormField(fieldId);
1255 } // processFormFieldDelete
1257 private boolean processFormFieldMoveUp(HttpServletRequest request) throws Exception {
1258 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1259 AppConstants.SI_REPORT_DEFINITION);
1260 rdef.shiftFormFieldUp(AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
1262 } // processFormFieldMoveUp
1264 private boolean processFormFieldMoveDown(HttpServletRequest request) throws Exception {
1265 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1266 AppConstants.SI_REPORT_DEFINITION);
1267 rdef.shiftFormFieldDown(AppUtils
1268 .getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
1270 } // processFormFieldMoveDown
1272 private boolean processFormFieldBlank(HttpServletRequest request) throws Exception {
1273 boolean reportUpdated = false;
1274 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1275 AppConstants.SI_REPORT_DEFINITION);
1276 reportUpdated = true;
1277 rdef.addFormFieldBlank(new ObjectFactory());
1279 } // processFormFieldMoveDown
1281 //processFormFieldInfoBar
1282 private boolean processFormFieldInfoBar(HttpServletRequest request) throws Exception {
1283 boolean reportUpdated = false;
1284 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1285 AppConstants.SI_REPORT_DEFINITION);
1286 reportUpdated = true;
1287 rdef.addCustomizedTextForParameters(XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "blueBarField")));
1289 } // processFormFieldMoveDown
1292 private boolean processForecasting(HttpServletRequest request, String action) throws Exception {
1293 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1294 AppConstants.SI_REPORT_DEFINITION);
1296 if(rdef.getDataminingOptions()==null)
1297 rdef.addDataminingOptions(new ObjectFactory());
1299 String classifiers = AppUtils.getRequestNvlValue(request, "classifiers");
1300 rdef.setClassifier(classifiers);
1301 String dateAttrColId = AppUtils.getRequestNvlValue(request, "timeAttribute");
1302 String timeFormat = AppUtils.getRequestNvlValue(request, "timeFormat");
1303 if(timeFormat.equals("Default")) timeFormat = "yyyy-MM-dd HH:mm:ss";
1304 String forecastingPeriod = AppUtils.getRequestNvlValue(request, "forecastingPeriod");
1306 String[] forecastCols = request.getParameterValues("forecastCol");
1307 List reportCols = rdef.getAllColumns();
1308 DataColumnType dct = null;
1309 Iterator iter = null;
1313 if(dateAttrColId != null) {
1314 for(iter=reportCols.iterator(); iter.hasNext(); ) {
1315 dct = (DataColumnType) iter.next();
1316 if(dct.getColId().equals(dateAttrColId)) {
1317 dct.setDataMiningCol(AppConstants.DM_DATE_ATTR);
1318 if(timeFormat!=null) rdef.setForecastingTimeFormat(timeFormat);
1324 if(forecastCols != null) {
1325 for (int i = 0; i < forecastCols.length; i++) {
1326 for(iter=reportCols.iterator(); iter.hasNext(); ) {
1327 dct = (DataColumnType) iter.next();
1328 if(dct.getColId().equals(forecastCols[i])) {
1329 dct.setDataMiningCol(AppConstants.DM_FORECASTING_ATTR);
1333 rdef.setForecastingPeriod(forecastingPeriod);
1335 boolean reportUpdated = true;
1337 return reportUpdated;
1338 } // processForecasting
1341 private boolean processFilterAddEdit(HttpServletRequest request, boolean isEdit)
1343 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1344 AppConstants.SI_REPORT_DEFINITION);
1346 String colId = AppUtils.getRequestNvlValue(request, "filterColId");
1347 String filterExpr = AppUtils.getRequestNvlValue(request, "filterExpr");
1348 String argType = (filterExpr.equals("IS NULL") || filterExpr.equals("IS NOT NULL")) ? null
1349 : AppUtils.getRequestNvlValue(request, "argType");
1350 String argValue = (filterExpr.equals("IS NULL") || filterExpr.equals("IS NOT NULL")) ? null
1351 : AppUtils.getRequestNvlValue(request, "argValue");
1353 if (nvl(argType).equals(AppConstants.AT_COLUMN)) {
1354 List reportCols = rdef.getAllColumns();
1355 for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
1356 DataColumnType dct = (DataColumnType) iter.next();
1357 if (argValue != null && argValue.equals("[" + dct.getDisplayName() + "]")) {
1358 argValue = dct.getColId();
1364 if (nvl(argType).equals(AppConstants.AT_VALUE)
1365 && (!nvl(argValue).equals(AppConstants.FILTER_MAX_VALUE))
1366 && (!nvl(argValue).equals(AppConstants.FILTER_MIN_VALUE))) {
1367 // Validating the value by type
1368 DataColumnType currColumn = rdef.getColumnById(colId);
1369 String currColType = currColumn.getColType();
1372 String s_sql = Globals.getProcessFilterAddEdit();
1373 s_sql = s_sql.replace("[argValue]", argValue);
1374 /*DataSet ds = DbUtils.executeQuery("SELECT "
1375 + (currColType.equals(AppConstants.CT_NUMBER) ? ("TO_NUMBER('"
1377 : (currColType.equals(AppConstants.CT_DATE) ? ("TO_DATE('"
1380 + nvl(currColumn.getColFormat(),
1381 AppConstants.DEFAULT_DATE_FORMAT) + "')")
1382 : ("'" + argValue + "'"))) + " FROM dual");*/
1384 DataSet ds = DbUtils.executeQuery("SELECT "
1385 + (currColType.equals(AppConstants.CT_NUMBER) ? ("TO_NUMBER('"
1387 : (currColType.equals(AppConstants.CT_DATE) ? ("TO_DATE('"
1390 + nvl(currColumn.getColFormat(),
1391 AppConstants.DEFAULT_DATE_FORMAT) + "')")
1393 } catch (Exception e) {
1394 throw new ValidationException(
1396 + (currColType.equals(AppConstants.CT_NUMBER) ? "Invalid number"
1397 : (currColType.equals(AppConstants.CT_DATE) ? ("Invalid date<br>Expected date format " + nvl(
1398 currColumn.getColFormat(),
1399 AppConstants.DEFAULT_DATE_FORMAT))
1400 : "Invalid value<br>Possible reason: use of single quotes"))
1401 + "<!--" + e.getMessage() + "--><br>Value: " + argValue);
1408 filterPos = Integer.parseInt(AppUtils.getRequestValue(request, "filterPos"));
1409 } catch (NumberFormatException e) {
1412 ColFilterType currFilter = rdef.getFilterById(colId, filterPos);
1413 if (currFilter != null) {
1414 currFilter.setJoinCondition(AppUtils.getRequestValue(request, "filterJoin"));
1415 currFilter.setOpenBrackets(AppUtils.getRequestValue(request, "openBrackets"));
1416 currFilter.setExpression(filterExpr);
1417 // if(argType!=null)
1418 currFilter.setArgType(argType);
1419 // if(argValue!=null)
1420 currFilter.setArgValue(argValue);
1422 .setCloseBrackets(AppUtils.getRequestValue(request, "closeBrackets"));
1425 rdef.resetCache(true);
1427 rdef.addColFilterType(new ObjectFactory(), colId, AppUtils.getRequestValue(
1428 request, "filterJoin"), AppUtils.getRequestValue(request, "openBrackets"),
1429 filterExpr, argType, argValue, AppUtils.getRequestValue(request,
1430 "closeBrackets"), null);
1434 } // processFilterAddEdit
1436 private boolean processFilterDelete(HttpServletRequest request) throws Exception {
1437 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1438 AppConstants.SI_REPORT_DEFINITION);
1440 String filterId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID);
1441 String colId = filterId.substring(0, filterId.indexOf('|'));
1444 filterPos = Integer.parseInt(filterId.substring(colId.length() + 1));
1445 } catch (NumberFormatException e) {
1448 rdef.removeColumnFilter(colId, filterPos);
1451 } // processFilterDelete
1453 private boolean processSortAddEdit(HttpServletRequest request, boolean isEdit)
1455 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1456 AppConstants.SI_REPORT_DEFINITION);
1458 String sortAscDesc = AppUtils.getRequestNvlValue(request, "sortAscDesc");
1460 DataColumnType currColumn = rdef.getColumnById(AppUtils.getRequestNvlValue(
1461 request, AppConstants.RI_DETAIL_ID));
1462 if (currColumn != null)
1463 currColumn.setOrderByAscDesc(sortAscDesc);
1464 rdef.resetCache(true);
1466 rdef.addColumnSort(AppUtils.getRequestNvlValue(request, "sortColId"), sortAscDesc,
1467 rdef.getNumSortColumns() + 1);
1470 } // processSortAddEdit
1472 private boolean processSortOrderAll(HttpServletRequest request) throws Exception {
1473 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1474 AppConstants.SI_REPORT_DEFINITION);
1476 String[] colId = request.getParameterValues("colId");
1477 String[] sortOrder = request.getParameterValues("sortOrder");
1478 String[] sortAscDesc = request.getParameterValues("sortAscDesc");
1480 boolean reportUpdated = false;
1481 for (int i = 0; i < colId.length; i++) {
1482 DataColumnType dct = rdef.getColumnById(nvl(colId[i]));
1488 iSortOrder = Integer.parseInt(sortOrder[i]);
1489 } catch (NumberFormatException e) {
1492 if (iSortOrder > 0) {
1493 if (dct.getOrderBySeq() > 0) {
1495 if (dct.getOrderBySeq() != iSortOrder) {
1496 dct.setOrderBySeq(iSortOrder);
1497 reportUpdated = true;
1499 if (!nvl(dct.getOrderByAscDesc()).equals(nvl(sortAscDesc[i]))) {
1500 dct.setOrderByAscDesc(sortAscDesc[i]);
1501 reportUpdated = true;
1505 dct.setOrderBySeq(iSortOrder);
1506 dct.setOrderByAscDesc(sortAscDesc[i]);
1507 reportUpdated = true;
1510 if (dct.getOrderBySeq() > 0) {
1512 dct.setOrderBySeq(0);
1513 dct.setOrderByAscDesc(null);
1514 reportUpdated = true;
1519 if (reportUpdated) {
1520 List reportCols = rdef.getAllColumns();
1521 Collections.sort(reportCols, new OrderBySeqComparator());
1523 for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
1524 DataColumnType dct = (DataColumnType) iter.next();
1525 if (dct.getOrderBySeq() > 0)
1526 dct.setOrderBySeq(iOrder++);
1528 Collections.sort(reportCols, new OrderSeqComparator());
1530 rdef.resetCache(true);
1533 return reportUpdated;
1534 } // processSortOrderAll
1536 private boolean processSortDelete(HttpServletRequest request) throws Exception {
1537 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1538 AppConstants.SI_REPORT_DEFINITION);
1539 rdef.removeColumnSort(AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
1541 } // processSortDelete
1543 private boolean processSortMoveUp(HttpServletRequest request) throws Exception {
1544 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1545 AppConstants.SI_REPORT_DEFINITION);
1547 .shiftColumnSortUp(AppUtils.getRequestNvlValue(request,
1548 AppConstants.RI_DETAIL_ID));
1550 } // processSortMoveUp
1552 private boolean processSortMoveDown(HttpServletRequest request) throws Exception {
1553 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1554 AppConstants.SI_REPORT_DEFINITION);
1555 rdef.shiftColumnSortDown(AppUtils.getRequestNvlValue(request,
1556 AppConstants.RI_DETAIL_ID));
1558 } // processSortMoveDown
1560 private boolean processJavascript (HttpServletRequest request) throws Exception {
1561 processSaveJavascriptElement(request);
1565 private boolean processSaveJavascriptElement (HttpServletRequest request) throws Exception {
1566 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1567 AppConstants.SI_REPORT_DEFINITION);
1568 rdef.setJavascriptElement(AppUtils.getRequestNvlValue(request, AppConstants.RI_JAVASCRIPT));
1569 String id = AppUtils.getRequestNvlValue(request, AppConstants.RI_JAVASCRIPT_ITEM_ID);
1570 String fieldId = AppUtils.getRequestNvlValue(request, "javascriptFormField-"+id);
1571 if( nvl(fieldId).length()>0 && !(fieldId.startsWith("-1"))) {
1573 String callableJavascriptText = AppUtils.getRequestNvlValue(request, "callText-"+id);
1575 logger.debug(EELFLoggerDelegate.debugLogger, ("FieldId " + fieldId + " Call Text " + callableJavascriptText+ " id " + id));
1576 JavascriptItemType javaScriptType = null;
1577 if(id.length()>0 && id.startsWith("-1")) {
1578 javaScriptType = rdef.addJavascriptType(new ObjectFactory(), id);
1579 javaScriptType.setFieldId(fieldId);
1580 if(!fieldId.equals("os1") || !fieldId.equals("ol1"))
1581 javaScriptType.setId(rdef.getNextIdForJavaScriptElement(new ObjectFactory(), fieldId));
1583 if(fieldId.equals("os1"))
1584 javaScriptType.setId("os1|1");
1586 javaScriptType.setId("ol1|1");
1588 javaScriptType.setCallText(callableJavascriptText);
1590 javaScriptType = rdef.addJavascriptType(new ObjectFactory(), id);
1591 javaScriptType.setCallText(callableJavascriptText);
1596 private boolean processAddJavascriptElement (HttpServletRequest request) throws Exception {
1597 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1598 AppConstants.SI_REPORT_DEFINITION);
1600 JavascriptItemType javaScriptType = rdef.addJavascriptType(new ObjectFactory(), "");
1601 javaScriptType.setId("");
1602 javaScriptType.setFieldId("");
1603 javaScriptType.setCallText("");
1608 private boolean processDeleteJavascriptElement (HttpServletRequest request) throws Exception {
1609 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1610 AppConstants.SI_REPORT_DEFINITION);
1611 String id = AppUtils.getRequestNvlValue(request, AppConstants.RI_JAVASCRIPT_ITEM_ID);
1612 if(rdef.deleteJavascriptType(id))
1618 private boolean processChart(HttpServletRequest request, String action) throws Exception {
1619 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1620 AppConstants.SI_REPORT_DEFINITION);
1622 int valueColsCount = rdef.getChartValueColumnsList(AppConstants.CHART_ALL_COLUMNS, null).size();
1624 String chartType = AppUtils.getRequestNvlValue(request, "chartType");
1625 String chartTypeFixed = AppUtils.getRequestValue(request, "chartTypeFixed");
1626 String legendColId = AppUtils.getRequestNvlValue(request, "legendCol");
1627 // String valueColId = AppUtils.getRequestNvlValue(request, "valueCol");
1628 String leftAxisLabel = AppUtils.getRequestValue(request, "leftAxisLabel");
1629 String rightAxisLabel = AppUtils.getRequestValue(request, "rightAxisLabel");
1630 String chartWidth = XSSFilter.filterRequest(AppUtils.getRequestNvlValue(request, "chartWidth"));
1631 String chartHeight = XSSFilter.filterRequest(AppUtils.getRequestNvlValue(request, "chartHeight"));
1632 String chartMultiseries = AppUtils.getRequestNvlValue(request, "multiSeries");
1633 String lastSeriesALineChart = AppUtils.getRequestNvlValue(request, "lastSeriesALineChart");
1634 String lastSeriesABarChart = AppUtils.getRequestNvlValue(request, "lastSeriesABarChart");
1635 String overLayItemLabel = "N";
1636 String chartDisplay = null;
1638 String multiplePieOrder = null;
1639 String multiplePieLabelDisplay = null;
1641 String chartOrientation = null;
1642 String secondaryChartRenderer = null;
1644 String linearRegression = null;
1646 boolean multiplePieOrderInRunPage = false;
1647 boolean multiplePieLabelDisplayInRunPage = false;
1649 boolean chartOrientationInRunPage = false;
1650 boolean secondaryChartRendererInRunPage = false;
1652 boolean chartDisplayInRunPage = false;
1654 String intervalFromdate = null;
1655 String intervalTodate = null;
1656 String intervalLabel = null;
1657 boolean displayIntervalInputInRunPage = false;
1658 boolean animate = false;
1660 animate = AppUtils.getRequestNvlValue(request, "animatedOption").equals("animate");
1661 if(Globals.showAnimatedChartOption())
1662 rdef.setChartAnimate(animate);
1665 String removeColId = "";
1666 if (action.equals(AppConstants.WA_DELETE_USER)) {
1667 removeColId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID);
1668 if(valueColsCount == 2 && !rdef.hasSeriesColumn()) {
1669 rdef.setChartLeftAxisLabel(null);
1670 rdef.setChartRightAxisLabel(null);
1672 if(chartType.equals(AppConstants.GT_TIME_SERIES) || chartType.equals(AppConstants.GT_PIE_MULTIPLE)) {
1673 chartMultiseries = "N";
1678 if(rdef.getChartAdditionalOptions()==null)
1679 rdef.addChartAdditionalOptions(new ObjectFactory());
1681 if(rdef.getChartDrillOptions()==null)
1682 rdef.addChartDrillOptions(new ObjectFactory());
1684 //clearing already added
1685 if(rdef.getChartDrillOptions().getTargetFormfield()!=null)
1686 rdef.getChartDrillOptions().getTargetFormfield().removeAll(rdef.getChartDrillOptions().getTargetFormfield());
1689 if(chartType.equals(AppConstants.GT_PIE_MULTIPLE)) {
1690 multiplePieOrder = AppUtils.getRequestNvlValue(request, "multiplePieOrder");
1691 multiplePieLabelDisplay = AppUtils.getRequestNvlValue(request, "multiplePieLabelDisplay");
1692 chartDisplay = AppUtils.getRequestNvlValue(request, "chartDisplay");
1693 //if(AppUtils.getRequestNvlValue(request, "multiplePieOrderInRunPage").length()>0)
1694 multiplePieOrderInRunPage = AppUtils.getRequestNvlValue(request,"multiplePieOrderInRunPage").equals("Y");
1695 //if(AppUtils.getRequestNvlValue(request, "multiplePieLabelDisplayInRunPage").length()>0)
1696 multiplePieLabelDisplayInRunPage = AppUtils.getRequestNvlValue(request,"multiplePieLabelDisplayInRunPage").equals("Y");
1697 //if(AppUtils.getRequestNvlValue(request, "chartDisplayInRunPage").length()>0)
1698 chartDisplayInRunPage = AppUtils.getRequestNvlValue(request,"chartDisplayInRunPage").equals("Y");
1699 if(rdef.getChartAdditionalOptions()!=null) {
1700 rdef.setChartMultiplePieOrder(multiplePieOrder+(multiplePieOrderInRunPage?"|Y":""));
1701 rdef.setChartMultiplePieLabelDisplay(multiplePieLabelDisplay+(multiplePieLabelDisplayInRunPage?"|Y":""));
1702 rdef.setChartDisplay(chartDisplay+(chartDisplayInRunPage?"|Y":""));
1707 if(chartType.equals(AppConstants.GT_REGRESSION)) {
1708 linearRegression = AppUtils.getRequestNvlValue(request, "regressionType");
1709 rdef.setLinearRegressionColor(AppUtils.getRequestNvlValue(request, "valueLinearRegressionColor"));
1710 rdef.setExponentialRegressionColor(AppUtils.getRequestNvlValue(request, "valueExponentialRegressionColor"));
1711 rdef.setCustomizedRegressionPoint(AppUtils.getRequestNvlValue(request, "regressionPointCustomization"));
1713 if(nvl(linearRegression).length()>0)
1714 rdef.setLinearRegression(linearRegression);
1716 rdef.setLinearRegression("Y");
1719 if(chartType.equals(AppConstants.GT_BAR_3D)) {
1720 chartOrientation = AppUtils.getRequestNvlValue(request, "chartOrientation");
1721 secondaryChartRenderer = AppUtils.getRequestNvlValue(request, "secondaryChartRenderer");
1722 chartDisplay = AppUtils.getRequestNvlValue(request, "chartDisplay");
1723 //if(AppUtils.getRequestNvlValue(request, "chartOrientationInRunPage").length()>0)
1724 chartOrientationInRunPage = AppUtils.getRequestNvlValue(request,"chartOrientationInRunPage").equals("Y");
1725 //if(AppUtils.getRequestNvlValue(request, "secondaryChartRendererInRunPage").length()>0)
1726 secondaryChartRendererInRunPage = AppUtils.getRequestNvlValue(request,"secondaryChartRendererInRunPage").equals("Y");
1727 //if(AppUtils.getRequestNvlValue(request, "chartDisplayInRunPage").length()>0)
1728 chartDisplayInRunPage = AppUtils.getRequestNvlValue(request,"chartDisplayInRunPage").equals("Y");
1729 rdef.setChartOrientation(chartOrientation+(chartOrientationInRunPage?"|Y":""));
1730 rdef.setSecondaryChartRenderer(secondaryChartRenderer+(secondaryChartRendererInRunPage?"|Y":""));
1731 rdef.setChartDisplay(chartDisplay+(chartDisplayInRunPage?"|Y":""));
1732 rdef.setLastSeriesALineChart(nvl(lastSeriesALineChart, "N"));
1735 if(chartType.equals(AppConstants.GT_LINE)) {
1736 chartOrientation = AppUtils.getRequestNvlValue(request, "chartOrientation");
1737 secondaryChartRenderer = AppUtils.getRequestNvlValue(request, "secondaryChartRenderer");
1738 chartDisplay = AppUtils.getRequestNvlValue(request, "chartDisplay");
1739 //if(AppUtils.getRequestNvlValue(request, "chartOrientationInRunPage").length()>0)
1740 chartOrientationInRunPage = AppUtils.getRequestNvlValue(request,"chartOrientationInRunPage").equals("Y");
1741 //if(AppUtils.getRequestNvlValue(request, "secondaryChartRendererInRunPage").length()>0)
1742 secondaryChartRendererInRunPage = AppUtils.getRequestNvlValue(request,"secondaryChartRendererInRunPage").equals("Y");
1743 //if(AppUtils.getRequestNvlValue(request, "chartDisplayInRunPage").length()>0)
1744 chartDisplayInRunPage = AppUtils.getRequestNvlValue(request,"chartDisplayInRunPage").equals("Y");
1745 rdef.setChartOrientation(chartOrientation+(chartOrientationInRunPage?"|Y":""));
1746 rdef.setSecondaryChartRenderer(secondaryChartRenderer+(secondaryChartRendererInRunPage?"|Y":""));
1747 rdef.setChartDisplay(chartDisplay+(chartDisplayInRunPage?"|Y":""));
1748 rdef.setLastSeriesABarChart(nvl(lastSeriesABarChart, "N"));
1750 if(chartType.equals(AppConstants.GT_TIME_DIFFERENCE_CHART)) {
1751 intervalFromdate = AppUtils.getRequestNvlValue(request, "intervalFromDate");
1752 intervalTodate = AppUtils.getRequestNvlValue(request, "intervalToDate");
1753 intervalLabel = AppUtils.getRequestNvlValue(request, "intervalLabel");
1754 displayIntervalInputInRunPage = AppUtils.getRequestNvlValue(request,"intervalInputInRunPage").equals("Y");
1755 rdef.setIntervalFromdate(intervalFromdate+(displayIntervalInputInRunPage?"|Y":""));
1756 rdef.setIntervalTodate(intervalTodate+(displayIntervalInputInRunPage?"|Y":""));
1757 rdef.setIntervalLabel(intervalLabel);
1759 if(chartType.equals(AppConstants.GT_STACKED_VERT_BAR) || chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR) || chartType.equals(AppConstants.GT_STACKED_VERT_BAR_LINES)
1760 || chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR_LINES)) {
1761 overLayItemLabel = AppUtils.getRequestNvlValue(request, "overlayItemValue");
1762 rdef.setOverlayItemValueOnStackBar(nvl(overLayItemLabel, "N"));
1763 animate = AppUtils.getRequestNvlValue(request, "animatedOption").equals("animate");
1764 rdef.setChartAnimate(animate);
1767 rdef.setRangeAxisLowerLimit(AppUtils.getRequestNvlValue(request, "yAxisLowerLimit"));
1768 rdef.setRangeAxisUpperLimit(AppUtils.getRequestNvlValue(request, "yAxisUpperLimit"));
1769 rdef.setLegendLabelAngle(AppUtils.getRequestNvlValue(request,"labelAngle"));
1770 rdef.setLegendPosition(AppUtils.getRequestNvlValue(request,"legendPosition"));
1771 rdef.setMaxLabelsInDomainAxis(AppUtils.getRequestNvlValue(request,"maxLabelsInDomainAxis"));
1772 String chartLegendDisplay = AppUtils.getRequestNvlValue(request,"hideLegend");
1773 boolean showLegendDisplayOptionsInRunPage = false;
1774 showLegendDisplayOptionsInRunPage = AppUtils.getRequestNvlValue(request,"showLegendDisplayOptionsInRunPage").equals("Y");
1775 rdef.setChartLegendDisplay(chartLegendDisplay+(showLegendDisplayOptionsInRunPage?"|Y":""));
1776 rdef.setChartToolTips(AppUtils.getRequestNvlValue(request,"hideTooltips"));
1777 rdef.setDomainAxisValuesAsString(AppUtils.getRequestNvlValue(request,"keepAsString"));
1779 //System.out.println("KeepAsString " + AppUtils.getRequestNvlValue(request,"keepAsString"));
1780 //System.out.println("From ReportDef " + rdef.keepDomainAxisValueInChartAsString());
1781 // boolean reportUpdated = (!
1782 // chartType.equals(nvl(rdef.getChartType())));
1783 rdef.setChartType(chartType);
1784 rdef.setChartTypeFixed(nvl(chartTypeFixed, "N"));
1785 if (nvl(leftAxisLabel).length()>0)
1786 rdef.setChartLeftAxisLabel(leftAxisLabel);
1788 rdef.setChartLeftAxisLabel(null);
1789 if (nvl(rightAxisLabel).length()>0)
1790 rdef.setChartRightAxisLabel(rightAxisLabel);
1792 rdef.setChartRightAxisLabel(null);
1793 rdef.setChartWidth(nvl(chartWidth, "" + Globals.getDefaultChartWidth()));
1794 rdef.setChartHeight(nvl(chartHeight, "" + Globals.getDefaultChartHeight()));
1795 if(chartType.equals(AppConstants.GT_TIME_SERIES) || chartType.equals(AppConstants.GT_PIE_MULTIPLE)) {
1796 rdef.setChartMultiSeries(chartMultiseries);
1798 rdef.setChartMultiSeries("N");
1801 List reportCols = rdef.getAllColumns();
1802 for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
1803 DataColumnType dct = (DataColumnType) iter.next();
1805 if (dct.getColId().equals(legendColId)) {
1806 // reportUpdated = reportUpdated||(!
1807 // nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND));
1808 dct.setColOnChart(AppConstants.GC_LEGEND);
1811 // reportUpdated||nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND);
1812 dct.setColOnChart(null);
1816 * if(dct.getColId().equals(valueColId)) { reportUpdated =
1817 * reportUpdated||(dct.getChartSeq()<=0); dct.setChartSeq(1); }
1818 * else { reportUpdated = reportUpdated||(dct.getChartSeq()>0);
1820 dct.setChartSeq(-1);
1825 List columns = rdef.getAllColumns();
1826 if(chartType.equals(AppConstants.GT_TIME_SERIES)) {
1827 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1828 String chartGroup = AppUtils.getRequestNvlValue(request, "chartGroup");
1829 String yAxis = AppUtils.getRequestNvlValue(request, "yAxis");
1830 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1831 DataColumnType alldct = (DataColumnType) iterator.next();
1832 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1833 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1836 String drillDownReportId = AppUtils.getRequestNvlValue(request, "drillDownReport");
1837 if(!drillDownReportId.equals("-1")) {
1838 ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, drillDownReportId,
1841 request.setAttribute("CHART_FORMFIELDS", ddRr.getReportFormFields());
1843 for(ddRr.getReportFormFields().resetNext(); ddRr.getReportFormFields().hasNext(); ) {
1844 FormField ff = ddRr.getReportFormFields().getNext();
1845 if(!ff.getFieldType().equals(FormField.FFT_BLANK)) {
1846 String value = AppUtils.getRequestNvlValue(request, "drillDown_"+ff.getFieldName());
1847 ChartDrillFormfield cdf = new ObjectFactory().createChartDrillFormfield();
1848 cdf.setFormfield(value);
1849 rdef.getChartDrillOptions().getTargetFormfield().add(cdf);
1855 if(chartType.equals(AppConstants.GT_BAR_3D)) {
1856 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1857 String chartGroup = AppUtils.getRequestNvlValue(request, "chartGroup");
1858 String yAxis = AppUtils.getRequestNvlValue(request, "yAxis");
1859 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1860 DataColumnType alldct = (DataColumnType) iterator.next();
1861 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1862 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1864 String drillDownReportId = AppUtils.getRequestNvlValue(request, "drillDownReport");
1865 rdef.setDrillReportIdForChart(drillDownReportId);
1866 if(drillDownReportId.equals("-1")){
1867 rdef.setDrillReportIdForChart("");
1870 if(!drillDownReportId.equals("-1")) {
1871 ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, drillDownReportId,
1874 request.setAttribute("CHART_FORMFIELDS", ddRr.getReportFormFields());
1876 for(ddRr.getReportFormFields().resetNext(); ddRr.getReportFormFields().hasNext(); ) {
1877 FormField ff = ddRr.getReportFormFields().getNext();
1878 if(!ff.getFieldType().equals(FormField.FFT_BLANK)) {
1879 String value = AppUtils.getRequestNvlValue(request, "drillDown_"+ff.getFieldName());
1880 ChartDrillFormfield cdf = new ObjectFactory().createChartDrillFormfield();
1881 cdf.setFormfield(value);
1882 rdef.getChartDrillOptions().getTargetFormfield().add(cdf);
1886 String xAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownXAxisFormfield");
1887 String yAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownYAxisFormfield");
1888 String seriesAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownSeriesAxisFormfield");
1890 if(!xAxisFormField.equals("-1")){
1891 rdef.setDrillXAxisFormField(xAxisFormField);
1893 if(!yAxisFormField.equals("-1"))
1894 rdef.setDrillYAxisFormField(yAxisFormField);
1895 if(!seriesAxisFormField.equals("-1"))
1896 rdef.setDrillSeriesFormField(seriesAxisFormField);
1898 rdef.setDrillXAxisFormField("");
1899 rdef.setDrillYAxisFormField("");
1900 rdef.setDrillSeriesFormField("");
1904 } else if(chartType.equals(AppConstants.GT_SCATTER)) {
1905 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1906 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1907 DataColumnType alldct = (DataColumnType) iterator.next();
1908 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1909 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1912 }else if(chartType.equals(AppConstants.GT_REGRESSION)) {
1913 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1914 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1915 DataColumnType alldct = (DataColumnType) iterator.next();
1916 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1917 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1919 }else if(chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR) || chartType.equals(AppConstants.GT_STACKED_VERT_BAR)
1920 || chartType.equals(AppConstants.GT_STACKED_VERT_BAR_LINES) || chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR_LINES)) {
1921 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1922 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1923 DataColumnType alldct = (DataColumnType) iterator.next();
1924 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1925 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1927 }else if(chartType.equals(AppConstants.GT_LINE)) {
1928 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1929 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1930 DataColumnType alldct = (DataColumnType) iterator.next();
1931 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1932 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1934 } else if (chartType.equals(AppConstants.GT_TIME_DIFFERENCE_CHART)) {
1935 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1936 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1937 DataColumnType alldct = (DataColumnType) iterator.next();
1938 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1939 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1941 } else if (chartType.equals(AppConstants.GT_COMPARE_PREVYEAR_CHART)) {
1942 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1943 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1944 DataColumnType alldct = (DataColumnType) iterator.next();
1945 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1946 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1950 if (rdef.hasSeriesColumn()) {
1951 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1952 DataColumnType alldct = (DataColumnType) iterator.next();
1953 alldct.setChartSeries(false);
1957 String drillDownReportId = AppUtils.getRequestNvlValue(request, "drillDownReport");
1958 rdef.setDrillReportIdForChart(drillDownReportId);
1959 if(drillDownReportId.equals("-1")){
1960 rdef.setDrillReportIdForChart("");
1963 if(!drillDownReportId.equals("-1")) {
1964 ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, drillDownReportId,
1967 request.setAttribute("CHART_FORMFIELDS", ddRr.getReportFormFields());
1968 for(ddRr.getReportFormFields().resetNext(); ddRr.getReportFormFields().hasNext(); ) {
1969 FormField ff = ddRr.getReportFormFields().getNext();
1970 if(!ff.getFieldType().equals(FormField.FFT_BLANK)) {
1971 String value = AppUtils.getRequestNvlValue(request, "drillDown_"+ff.getFieldName());
1972 ChartDrillFormfield cdf = new ObjectFactory().createChartDrillFormfield();
1973 cdf.setFormfield(value);
1974 rdef.getChartDrillOptions().getTargetFormfield().add(cdf);
1978 String xAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownXAxisFormfield");
1979 String yAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownYAxisFormfield");
1980 String seriesAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownSeriesAxisFormfield");
1982 if(!xAxisFormField.equals("-1")){
1983 rdef.setDrillXAxisFormField(xAxisFormField);
1985 if(!yAxisFormField.equals("-1"))
1986 rdef.setDrillYAxisFormField(yAxisFormField);
1987 if(!seriesAxisFormField.equals("-1"))
1988 rdef.setDrillSeriesFormField(seriesAxisFormField);
1990 rdef.setDrillXAxisFormField("");
1991 rdef.setDrillYAxisFormField("");
1992 rdef.setDrillSeriesFormField("");
1999 for (int i = 1; i < Math.max(valueColsCount, 1) + 1; i++) {
2000 //debugLogger.debug("********** " + chartSeries);
2002 /* Range Axis is resetted before adding */
2003 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
2004 DataColumnType dct = (DataColumnType) iterator.next();
2005 if(!nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND)) {
2006 dct.setChartSeq(-1);
2007 dct.setChartColor(null);
2008 dct.setColOnChart(null);
2009 dct.setCreateInNewChart(false);
2010 dct.setChartGroup(null);
2016 String newChartColAxis = AppUtils.getRequestNvlValue(request, "newChart" + i+"Axis");
2017 String valueColId = AppUtils.getRequestNvlValue(request, "valueCol" + i);
2018 String valueColColor = AppUtils.getRequestNvlValue(request, "valueCol" + i
2020 String valueColAxis = AppUtils
2021 .getRequestNvlValue(request, "valueCol" + valueColId + "Axis");
2022 String chartGroup = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "chartGroup" + valueColId + "Axis"));
2023 String yAxisGroup = "";
2024 yAxisGroup = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "YAxisLabel" + valueColId));
2025 //debugLogger.debug("^^^^^^^^^^^^^^^^^Chart Group " + chartGroup);
2026 //if(chartType.equals(AppConstants.GT_TIME_SERIES)) {
2027 // debugLogger.debug("**********Outer If " + chartSeries);
2030 if (valueColId.length() > 0 && (!valueColId.equals(removeColId))) {
2031 DataColumnType dct = rdef.getColumnById(valueColId);
2032 dct.setChartSeq(idx++);
2033 dct.setChartColor(valueColColor);
2034 dct.setColOnChart(valueColAxis.equals("Y") ? "1" : "0");
2035 if(chartType.equals(AppConstants.GT_TIME_SERIES)) {
2036 dct.setCreateInNewChart(newChartColAxis.equals("Y") ? true : false);
2038 dct.setCreateInNewChart(false);
2040 if(chartGroup!=null && chartGroup.length()>0)
2041 dct.setChartGroup(chartGroup+"|"+valueColId);
2042 else dct.setChartGroup("");
2043 if(chartType.equals(AppConstants.GT_TIME_SERIES))
2044 dct.setYAxis(nvl(yAxisGroup)+"|"+valueColId);
2045 else if (chartType.equals(AppConstants.GT_BAR_3D))
2046 dct.setYAxis(nvl(yAxisGroup)+"|"+valueColId);
2047 else dct.setYAxis("");
2050 //dct.setCreateInNewChart(false);
2051 } else if (valueColId.length() > 0 && (valueColId.equals(removeColId))) {// if
2052 DataColumnType dct = rdef.getColumnById(valueColId);
2053 dct.setChartSeq(-1);
2054 dct.setChartColor(null);
2055 dct.setColOnChart(null);
2056 dct.setCreateInNewChart(false);
2057 dct.setChartGroup(null);
2060 DataColumnType dct = rdef.getColumnById(valueColId);
2061 dct.setChartSeq(-1);
2062 dct.setChartColor(null);
2063 dct.setColOnChart(null);
2064 dct.setCreateInNewChart(false);
2065 dct.setChartGroup(null);
2070 if (action.equals(AppConstants.WA_ADD_USER)) {
2071 String valueColId = AppUtils.getRequestNvlValue(request, "valueColNew");
2072 String valueColColor = AppUtils.getRequestNvlValue(request, "valueColNewColor");
2073 String valueColAxis = AppUtils.getRequestNvlValue(request, "valueColNewAxis");
2075 if (valueColId.length() > 0) {
2076 DataColumnType dct = rdef.getColumnById(valueColId);
2077 dct.setChartSeq(idx++);
2078 dct.setChartColor(valueColColor);
2079 dct.setColOnChart(valueColAxis.equals("Y") ? "1" : "0");
2083 return true; // reportUpdated;
2086 public boolean processAdhocSchedule(HttpServletRequest request, String action)
2088 ReportSchedule reportSchedule = (ReportSchedule) request.getSession().getAttribute(AppConstants.SI_REPORT_SCHEDULE);
2089 reportSchedule.setScheduleUserID(AppUtils.getUserID(request));
2090 reportSchedule.setSchedEnabled(
2091 nvl(AppUtils.getRequestValue(request, "schedEnabled"), "N"));
2092 reportSchedule.setStartDate(
2093 AppUtils.getRequestNvlValue(request, "schedStartDate"));
2094 reportSchedule.setEndDate(
2095 AppUtils.getRequestNvlValue(request, "schedEndDate"));
2096 reportSchedule.setEndHour(AppUtils.getRequestNvlValue(request, "schedEndHour"));
2097 reportSchedule.setEndMin(AppUtils.getRequestNvlValue(request, "schedEndMin"));
2098 reportSchedule.setEndAMPM(AppUtils.getRequestNvlValue(request, "schedEndAMPM"));
2100 reportSchedule.setRunDate(
2101 AppUtils.getRequestNvlValue(request, "schedRunDate").length()>0?AppUtils.getRequestNvlValue(request, "schedRunDate"):AppUtils.getRequestNvlValue(request, "schedStartDate"));
2102 reportSchedule.setRunHour(AppUtils.getRequestNvlValue(request, "schedHour"));
2103 reportSchedule.setRunMin(AppUtils.getRequestNvlValue(request, "schedMin"));
2104 reportSchedule.setRunAMPM(AppUtils.getRequestNvlValue(request, "schedAMPM"));
2105 reportSchedule.setRecurrence(
2106 AppUtils.getRequestNvlValue(request, "schedRecurrence"));
2107 reportSchedule.setConditional(
2108 nvl(AppUtils.getRequestValue(request, "conditional"), "N"));
2109 reportSchedule.setConditionSQL(
2110 AppUtils.getRequestNvlValue(request, "conditionSQL"));
2111 reportSchedule.setNotify_type(
2112 AppUtils.getRequestNvlValue(request, "notify_type"));
2113 reportSchedule.setDownloadLimit(
2114 AppUtils.getRequestNvlValue(request, "downloadLimit"));
2115 reportSchedule.setFormFields(
2116 AppUtils.getRequestNvlValue(request, "formFields"));
2117 reportSchedule.setAttachmentMode(
2118 AppUtils.getRequestNvlValue(request, "sendAttachment"));
2120 String userId = AppUtils.getRequestNvlValue(request, "schedEmailAdd");
2121 String roleId = AppUtils.getRequestNvlValue(request, "schedEmailAddRole");
2123 if ((!(userId.length()>0 || roleId.length()>0) && (reportSchedule.getEmailToUsers().isEmpty() && reportSchedule.getEmailToRoles().isEmpty())) ) {
2127 if (flag == 1 || (action.equals(AppConstants.WA_ADD_USER) || action.equals(AppConstants.WA_ADD_ROLE)) ) {
2128 String loggedInUserId = AppUtils.getUserID(request);
2129 if (Globals.getUseLoginIdInSchedYN().equals("Y")){
2130 reportSchedule.addEmailToUser(loggedInUserId, AppUtils.getUserLoginId(request));
2132 reportSchedule.addEmailToUser(loggedInUserId, (AppUtils.getUserName(loggedInUserId).length()>0?AppUtils.getUserName(loggedInUserId):(AppUtils.getUserLoginId(loggedInUserId).length()>0?AppUtils.getUserLoginId(loggedInUserId):loggedInUserId) ));
2134 if (action.equals(AppConstants.WA_ADD_USER)) {
2135 //String userId = AppUtils.getRequestNvlValue(request, "schedEmailAdd");
2136 String userName = AppUtils.getUserName(userId);
2137 if (Globals.getUseLoginIdInSchedYN().equals("Y")){
2138 String userLoginId = AppUtils.getUserLoginId(userId);
2139 if (userId.length() > 0 && (userLoginId != null && userLoginId.length() > 0))
2140 reportSchedule.addEmailToUser(userId, userLoginId);
2142 if (userId.length() > 0 && (userName != null && userName.length() > 0) )
2143 reportSchedule.addEmailToUser(userId, userName);
2145 reportSchedule.addEmailToUser(userId, userId);
2149 if (userId.length() > 0 && (userName != null && userName.length() > 0) )
2150 reportSchedule.addEmailToUser(userId, userName);
2152 reportSchedule.addEmailToUser(userId, userId);
2156 } else if (action.equals(AppConstants.WA_DELETE_USER))
2157 reportSchedule.removeEmailToUser(
2158 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2159 else if (action.equals(AppConstants.WA_ADD_ROLE)) {
2160 //String roleId = AppUtils.getRequestNvlValue(request, "schedEmailAddRole");
2161 String roleName = AppUtils.getRoleName(roleId);
2162 if (roleId.length() > 0 && roleName != null)
2163 reportSchedule.addEmailToRole(roleId, roleName);
2164 } else if (action.equals(AppConstants.WA_DELETE_ROLE))
2165 reportSchedule.removeEmailToRole(
2166 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2167 request.getSession().setAttribute(AppConstants.SI_REPORT_SCHEDULE, reportSchedule);
2169 } // processAdhocSchedule
2171 private boolean processSchedule(HttpServletRequest request, String action)
2173 // Added for form field chaining in schedule tab so that setParamValues() is called
2174 request.setAttribute(AppConstants.SCHEDULE_ACTION, "Y");
2175 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
2176 AppConstants.SI_REPORT_DEFINITION);
2177 ReportSchedule reportSchedule = rdef.getReportSchedule();
2178 reportSchedule.setScheduleUserID(AppUtils.getUserID(request));
2179 reportSchedule.setSchedEnabled(
2180 nvl(AppUtils.getRequestValue(request, "schedEnabled"), "N"));
2181 reportSchedule.setStartDate(
2182 AppUtils.getRequestNvlValue(request, "schedStartDate"));
2183 reportSchedule.setEndDate(
2184 AppUtils.getRequestNvlValue(request, "schedEndDate"));
2185 reportSchedule.setEndHour(AppUtils.getRequestNvlValue(request, "schedEndHour"));
2186 reportSchedule.setEndMin(AppUtils.getRequestNvlValue(request, "schedEndMin"));
2187 reportSchedule.setEndAMPM(AppUtils.getRequestNvlValue(request, "schedEndAMPM"));
2189 reportSchedule.setRunDate(
2190 AppUtils.getRequestNvlValue(request, "schedRunDate").length()>0?AppUtils.getRequestNvlValue(request, "schedRunDate"):AppUtils.getRequestNvlValue(request, "schedStartDate"));
2191 reportSchedule.setRunHour(AppUtils.getRequestNvlValue(request, "schedHour"));
2192 reportSchedule.setRunMin(AppUtils.getRequestNvlValue(request, "schedMin"));
2193 reportSchedule.setRunAMPM(AppUtils.getRequestNvlValue(request, "schedAMPM"));
2194 reportSchedule.setRecurrence(
2195 AppUtils.getRequestNvlValue(request, "schedRecurrence"));
2196 reportSchedule.setConditional(
2197 nvl(AppUtils.getRequestValue(request, "conditional"), "N"));
2198 reportSchedule.setConditionSQL(
2199 AppUtils.getRequestNvlValue(request, "conditionSQL"));
2200 reportSchedule.setNotify_type(
2201 AppUtils.getRequestNvlValue(request, "notify_type"));
2202 reportSchedule.setDownloadLimit(
2203 AppUtils.getRequestNvlValue(request, "downloadLimit"));
2204 reportSchedule.setFormFields(
2205 AppUtils.getRequestNvlValue(request, "formFields"));
2206 reportSchedule.setAttachmentMode(
2207 AppUtils.getRequestNvlValue(request, "sendAttachment"));
2209 reportSchedule.setEncryptMode(
2210 AppUtils.getRequestNvlValue(request, "encryptMode"));
2211 if (action.equals(AppConstants.WA_ADD_USER)) {
2212 String userId = AppUtils.getRequestNvlValue(request, "schedEmailAdd");
2213 String userName = AppUtils.getUserName(userId);
2214 if (Globals.getUseLoginIdInSchedYN().equals("Y")){
2215 String userLoginId = AppUtils.getUserLoginId(userId);
2216 if (userId.length() > 0 && (userLoginId != null && userLoginId.length() > 0))
2217 reportSchedule.addEmailToUser(userId, userLoginId);
2219 if (userId.length() > 0 && (userName != null && userName.length() > 0) )
2220 reportSchedule.addEmailToUser(userId, userName);
2222 reportSchedule.addEmailToUser(userId, userId);
2226 if (userId.length() > 0 && (userName != null && userName.length() > 0) )
2227 reportSchedule.addEmailToUser(userId, userName);
2229 reportSchedule.addEmailToUser(userId, userId);
2232 } else if (action.equals(AppConstants.WA_DELETE_USER))
2233 reportSchedule.removeEmailToUser(
2234 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2235 else if (action.equals(AppConstants.WA_ADD_ROLE)) {
2236 String roleId = AppUtils.getRequestNvlValue(request, "schedEmailAddRole");
2237 String roleName = AppUtils.getRoleName(roleId);
2238 if (roleId.length() > 0 && roleName != null)
2239 reportSchedule.addEmailToRole(roleId, roleName);
2240 } else if (action.equals(AppConstants.WA_DELETE_ROLE))
2241 reportSchedule.removeEmailToRole(
2242 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2245 } // processSchedule
2247 private boolean processUserAccess(HttpServletRequest request, String action)
2249 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
2250 AppConstants.SI_REPORT_DEFINITION);
2252 String ownerID = AppUtils.getRequestNvlValue(request, "reportOwner");
2253 String rPublic = nvl(AppUtils.getRequestValue(request, "public"), "N");
2255 boolean reportUpdated = (!(ownerID.equals(nvl(rdef.getOwnerID())) && rPublic
2256 .equals(rdef.isPublic() ? "Y" : "N")));
2258 rdef.getReportSecurity().setOwnerID(ownerID);
2259 rdef.setPublic(rPublic.equals("Y"));
2261 if (action.equals(AppConstants.WA_ADD_USER))
2262 rdef.getReportSecurity().addUserAccess(
2263 AppUtils.getRequestNvlValue(request, "newUserId"), "Y");
2264 else if (action.equals(AppConstants.WA_DELETE_USER))
2265 rdef.getReportSecurity().removeUserAccess(
2266 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2267 else if (action.equals(AppConstants.WA_GRANT_USER))
2268 rdef.getReportSecurity().updateUserAccess(
2269 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID), "N");
2270 else if (action.equals(AppConstants.WA_REVOKE_USER))
2271 rdef.getReportSecurity().updateUserAccess(
2272 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID), "Y");
2273 else if (action.equals(AppConstants.WA_ADD_ROLE))
2274 rdef.getReportSecurity().addRoleAccess(
2275 AppUtils.getRequestNvlValue(request, "newRoleId"), "Y");
2276 else if (action.equals(AppConstants.WA_DELETE_ROLE))
2277 rdef.getReportSecurity().removeRoleAccess(
2278 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2279 else if (action.equals(AppConstants.WA_GRANT_ROLE))
2280 rdef.getReportSecurity().updateRoleAccess(
2281 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID), "N");
2282 else if (action.equals(AppConstants.WA_REVOKE_ROLE))
2283 rdef.getReportSecurity().updateRoleAccess(
2284 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID), "Y");
2286 return reportUpdated;
2287 } // processUserAccess
2289 private boolean processClearLog(HttpServletRequest request) throws Exception {
2290 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
2291 AppConstants.SI_REPORT_DEFINITION);
2292 String user_id = AppUtils.getUserID(request);
2293 // Modified so that only the logged in user entries are erased. - Sundar
2294 ReportLoader.clearReportLogEntries(rdef.getReportID(), user_id);
2296 } // processClearLog
2298 private boolean processValidateSQL(HttpServletRequest request) throws Exception {
2299 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
2300 AppConstants.SI_REPORT_DEFINITION);
2302 String sql = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportSQL"));
2303 request.setAttribute("sqlValidated", "N");
2304 rdef.parseReportSQL(sql);
2305 request.setAttribute("sqlValidated", "Y");
2308 } // processValidateSQL
2311 /*****For Report Maps - Start******/
2312 private boolean processMap(HttpServletRequest request, String action) throws Exception {
2313 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
2314 AppConstants.SI_REPORT_DEFINITION);
2316 org.onap.portalsdk.analytics.xmlobj.ReportMap repMap = rdef.getReportMap();
2317 //clearing already added
2318 if (repMap != null){
2319 repMap.getMarkers().removeAll(repMap.getMarkers());
2321 String addressColumn = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "addressColumn0"));
2322 System.out.println(" #$%#$%#$% -- address col = " + addressColumn);
2323 String dataColumn = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "dataColumn0"));
2324 String legendColumn = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "legendColumn"));
2325 //String legendDisplayName = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "dataHeaderL"));
2326 //if(nvl(legendDisplayName).length()<=0) legendDisplayName = legendColumn;
2327 String color = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "markerColor0"));
2328 String isMapAllowed = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "isMapAllowed"));
2329 String useDefaultSize = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "useDefaultSize"));
2330 String height = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "height"));
2331 String width = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "width"));
2332 System.out.println(" #$%#$%#$% -- useDefaultSize="+ useDefaultSize+" height = " + height+" width="+width);
2334 String addAddress = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "addAddress"));
2335 String latCol = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "latColumn"));
2336 String longCol = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "longColumn"));
2337 String colorCol = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "colorColumn"));
2338 if (isMapAllowed.equals(""))
2340 if (useDefaultSize.equals(""))
2341 useDefaultSize = "N";
2343 rdef.setReportMap(new ObjectFactory().createReportMap());
2345 repMap.setAddressColumn(addressColumn);
2346 repMap.setDataColumn(dataColumn);
2347 repMap.setIsMapAllowedYN(isMapAllowed);
2348 repMap.setUseDefaultSize(useDefaultSize);
2349 repMap.setMarkerColor(color);
2350 repMap.setAddAddressInDataYN(addAddress);
2351 repMap.setLatColumn(latCol);
2352 repMap.setLongColumn(longCol);
2353 repMap.setColorColumn(colorCol);
2354 repMap.setHeight(height.trim());
2355 repMap.setWidth(width.trim());
2356 repMap.setLegendColumn(legendColumn);
2357 //repMap.setLegendDisplayName(legendDisplayName);
2359 Marker m = new ObjectFactory().createMarker();
2360 m.setAddressColumn(addressColumn);
2361 m.setDataColumn(dataColumn);
2362 repMap.getMarkers().add(m);
2363 String markerCountString = AppUtils.getRequestNvlValue(request, "markerCount");
2364 int markerCount = 0;
2365 if (markerCountString != null && markerCountString.equals("") == false){
2366 markerCount = new Integer(markerCountString).intValue();
2368 for (int i = 1; i < markerCount; i ++){
2369 String additionalAddressColumn = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "addressColumn" + i));
2370 String additionalDataHeader = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "dataHeader" + i));
2371 String additionalData = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "dataColumn" + i));
2372 String additionalColor = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "markerColor" + i));
2373 if (additionalAddressColumn.equals("1") == false){
2374 m = new ObjectFactory().createMarker();
2375 m.setAddressColumn(additionalAddressColumn);
2376 m.setDataHeader(additionalDataHeader);
2377 m.setDataColumn(additionalData);
2378 m.setMarkerColor(additionalColor);
2379 repMap.getMarkers().add(m);
2386 /*****For Report Maps - End******/
2389 } // WizardProcessor