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 private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(WizardProcessor.class);
112 public static Calendar getCalendar(XMLGregorianCalendar xmlCalendar){
113 TimeZone timeZone = xmlCalendar.getTimeZone(xmlCalendar.getTimezone());
114 Calendar calendar = Calendar.getInstance(timeZone);
115 calendar.set(Calendar.YEAR,xmlCalendar.getYear());
116 calendar.set(Calendar.MONTH,xmlCalendar.getMonth()-1);
117 calendar.set(Calendar.DATE,xmlCalendar.getDay());
118 calendar.set(Calendar.HOUR_OF_DAY,xmlCalendar.getHour());
119 calendar.set(Calendar.MINUTE,xmlCalendar.getMinute());
120 calendar.set(Calendar.SECOND,xmlCalendar.getSecond());
124 public WizardProcessor() {
127 private String adjustDataType(String oracleDataType) {
128 return "VARCHAR2".equals(oracleDataType) ? AppConstants.CT_CHAR : oracleDataType;
129 // Probably should be expanded to convert any CHAR or VARCHAR type to
130 // CT_CHAR, number type to CT_NUMBER and date to CT_DATE
133 public void persistReportDefinition(HttpServletRequest request, ReportDefinition rdef)
134 throws RaptorException {
135 ReportRuntime rr = (ReportRuntime) request.getSession().getAttribute(
136 AppConstants.SI_REPORT_RUNTIME);
137 if (rr != null && rr.getReportID().equals(rdef.getReportID()))
138 request.getSession().removeAttribute(AppConstants.SI_REPORT_RUNTIME);
139 rdef.persistReport(request);
140 } // persistReportDefinition
142 public void processWizardStep(HttpServletRequest request) throws Exception {
143 String action = nvl(request.getParameter(AppConstants.RI_WIZARD_ACTION),
144 AppConstants.WA_BACK);
146 String reportID = AppUtils.getRequestValue(request, AppConstants.RI_REPORT_ID);
147 ReportDefinition rdef = (new ReportHandler()).loadReportDefinition(request, reportID);
148 request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
150 String curStep = rdef.getWizardSequence().getCurrentStep();
151 String curSubStep = rdef.getWizardSequence().getCurrentSubStep();
152 if (AppUtils.getRequestNvlValue(request, "showDashboardOptions").length()<=0)
153 request.setAttribute("showDashboardOptions", "F");
154 logger.debug(EELFLoggerDelegate.debugLogger, ("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^curStep " + curStep + " " + curSubStep + " " + action));
155 boolean reportUpdated = false;
156 if (!action.equals(AppConstants.WA_BACK)) {
157 if (curStep.equals(AppConstants.WS_DEFINITION)) {
158 reportUpdated = processDefinition(request);
159 } else if (curStep.equals(AppConstants.WS_SQL)) {
160 if (action.equals(AppConstants.WA_VALIDATE))
161 reportUpdated = processValidateSQL(request);
162 } else if (curStep.equals(AppConstants.WS_TABLES)) {
163 if (curSubStep.equals(AppConstants.WSS_ADD))
164 reportUpdated = processTableAdd(request);
165 else if (curSubStep.equals(AppConstants.WSS_EDIT))
166 reportUpdated = processTableEdit(request);
167 else if (action.equals(AppConstants.WA_DELETE))
168 reportUpdated = processTableDelete(request);
169 } else if (curStep.equals(AppConstants.WS_COLUMNS)) {
170 if (curSubStep.equals(AppConstants.WSS_ADD)
171 || curSubStep.equals(AppConstants.WSS_EDIT) || action.equals(AppConstants.WA_SAVE) || action.equals(AppConstants.WA_NEXT)) {
172 reportUpdated = processColumnAddEdit(request, curSubStep
173 .equals(AppConstants.WSS_EDIT) || curSubStep
174 .equals(AppConstants.WA_MODIFY));
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.isEmpty()) {
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");
312 for (int i = 0; i < lessThanValue.length; i++)
313 if (i == 0 || nvl(lessThanValue[i]).length() > 0) {
314 FormatType fmt = null;
315 if (i == 0 || nvl(formatId[i]).length() > 0)
316 fmt = ReportDefinition.getSemaphoreFormatById(semaphore, nvl(formatId[i]));
318 fmt = ReportDefinition.addEmptyFormatType(new ObjectFactory(), semaphore);
320 fmt.setLessThanValue(nvl(lessThanValue[i]));
321 fmt.setExpression(nvl(expression[i]));
322 fmt.setBold("Y".equals(bold[i]));
323 fmt.setItalic("Y".equals(italic[i]));
324 fmt.setUnderline("Y".equals(underline[i]));
325 fmt.setBgColor(bgColor[i]);
326 fmt.setFontColor(fontColor[i]);
327 fmt.setFontFace(fontFace[i]);
328 fmt.setFontSize(fontSize[i]);
329 } else if (nvl(formatId[i]).length() > 0)
330 ReportDefinition.deleteFormatType(semaphore, formatId[i]);
332 persistReportDefinition(request, rdef);
333 } // processSemaphorePopup
335 private boolean processDefinition(HttpServletRequest request) throws RaptorException {
336 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
337 AppConstants.SI_REPORT_DEFINITION);
339 String reportName = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportName"));
340 String reportDescr = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportDescr"));
341 String folderId = AppUtils.getRequestNvlValue(request, "folder_id");
342 boolean isAllowSchedule = (AppUtils.getRequestNvlValue(request, "allowSchedule").length()<=0?"N":AppUtils.getRequestNvlValue(request, "allowSchedule")).startsWith("Y");
343 boolean isColumnGroup = (AppUtils.getRequestNvlValue(request, "multiGroupColumn").length()<=0?"N":AppUtils.getRequestNvlValue(request, "multiGroupColumn")).startsWith("Y");
344 boolean isTopDown = (AppUtils.getRequestNvlValue(request, "topDown").length()<=0?"N":AppUtils.getRequestNvlValue(request, "topDown")).startsWith("Y");
345 boolean isSizedByContent= (AppUtils.getRequestNvlValue(request, "sizedByContent").length()<=0?"N":AppUtils.getRequestNvlValue(request, "sizedByContent")).startsWith("Y");
346 boolean reportsInNewWindow = false;
347 boolean hideFormFieldAfterRun = false;
349 /*recurrance in schedule tab - Start*/
350 String isOneTimeScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isOneTimeScheduleAllowed"),"N");
351 String isHourlyScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isHourlyScheduleAllowed"),"N");
352 String isDailyScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isDailyScheduleAllowed"),"N");
353 String isDailyMFScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isDailyMFScheduleAllowed"),"N");
354 String isWeeklyScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isWeeklyScheduleAllowed"),"N");
355 String isMonthlyScheduleAllowed = nvl(AppUtils.getRequestValue(request, "isMonthlyScheduleAllowed"),"N");
356 /*recurrance in schedule tab - End*/
359 if (reportDescr.length() > 1000)
360 reportDescr = reportDescr.substring(0, 1000);
361 boolean reportUpdated;
363 String reportType = AppUtils.getRequestNvlValue(request, "reportType");
365 rdef.setFolderId(folderId);
367 if(reportType.equals(AppConstants.RT_DASHBOARD)) {
368 rdef.setReportName(reportName);
369 rdef.setReportDescr(reportDescr);
370 rdef.setReportType(reportType);
371 String dashboardLayoutHTML = AppUtils.getRequestNvlValue(request, "dashboardLayoutHTML");
372 rdef.setDashboardLayoutHTML(dashboardLayoutHTML);
373 String dataContainerHeight = nvl(AppUtils.getRequestValue(request, "heightContainer"), "auto");
374 String dataContainerWidth = nvl(AppUtils.getRequestValue(request, "widthContainer"), "auto");
375 rdef.setDataContainerHeight(dataContainerHeight);
376 rdef.setDataContainerWidth(dataContainerWidth);
377 rdef.setAllowSchedule(isAllowSchedule?"Y":"N");
380 reportUpdated = true;
383 if (rdef.getWizardSequence() instanceof WizardSequence)
384 rdef.generateWizardSequence(request);
388 if (AppUtils.getRequestNvlValue(request, "reportType").equals(AppConstants.RT_CROSSTAB) || rdef.getReportType().equals(AppConstants.RT_CROSSTAB)) {
390 String widthNo = AppUtils.getRequestNvlValue(request, "widthNo");
391 if(nvl(widthNo).endsWith("px"))
392 rdef.setWidthNoColumn(widthNo);
394 rdef.setWidthNoColumn(widthNo+"px");
397 String dataGridAlign = AppUtils.getRequestNvlValue(request, "dataGridAlign");
398 if(nvl(dataGridAlign).length()>0) {
399 rdef.setDataGridAlign(dataGridAlign);
401 rdef.setDataGridAlign("left");
404 String pdfImgLogo = AppUtils.getRequestNvlValue(request, "pdfImg");
405 if(nvl(pdfImgLogo).length()>0)
406 rdef.setPdfImg(pdfImgLogo);
408 rdef.setPdfImg(null);
409 String emptyMessage = AppUtils.getRequestNvlValue(request, "emptyMessage");
410 if(nvl(emptyMessage).length()>0)
411 rdef.setEmptyMessage(emptyMessage);
413 rdef.setEmptyMessage("");
414 String formHelp = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "formHelp"));
415 //String rDashboardType = nvl(AppUtils.getRequestValue(request, "showDashboardOptions"), "N");
416 //rdef.setDashboardType(rDashboardType.equals("Y"));
417 int excelDownloadSize = 500;
419 excelDownloadSize = Integer.parseInt(AppUtils.getRequestValue(request, "excelDownloadSize"));
420 } catch (NumberFormatException ex) {}
421 if(AppUtils.getRequestNvlValue(request, "excelDownloadSize").length()>0)
422 rdef.setMaxRowsInExcelDownload(Integer.parseInt(AppUtils.getRequestValue(request, "excelDownloadSize")));
423 if(AppUtils.getRequestNvlValue(request, "reportInNewWindow").length()>0)
424 reportsInNewWindow = AppUtils.getRequestNvlValue(request,"reportInNewWindow").equals("Y");
425 if(AppUtils.getRequestNvlValue(request, "hideFormFieldsAfterRun").length()>0)
426 hideFormFieldAfterRun = AppUtils.getRequestNvlValue(request,"hideFormFieldsAfterRun").equals("Y");
429 if(AppUtils.getRequestNvlValue(request, "displayFolderTree").length()>0)
430 rdef.setDisplayFolderTree(AppUtils.getRequestNvlValue(request,"displayFolderTree").equals("Y"));
432 rdef.setDisplayFolderTree(false);
433 String dataSource = AppUtils.getRequestNvlValue(request, "dataSource");
434 String dbType = Globals.getDBType();
435 String schemaSql = Globals.getRemoteDbSchemaSqlWithWhereClause();
436 schemaSql = schemaSql.replace("[schema_id]", dataSource);
439 ds = DbUtils.executeQuery(schemaSql);
441 String prefix = "", desc = "";
443 for (int i = 0; i < ds.getRowCount(); i++) {
444 dbType = ds.getItem(i, 2);
447 catch (Exception e) {}
449 int pageSize = Globals.getDefaultPageSize();
451 pageSize = Integer.parseInt(AppUtils.getRequestValue(request, "pageSize"));
452 } catch (NumberFormatException e) {
454 String rApproved = nvl(AppUtils.getRequestValue(request, "menuApproved"), "N");
456 String[] menuIDs = request.getParameterValues("menuID");
458 for (int i = 0; i < menuIDs.length; i++)
459 menuID += (menuID.length() == 0 ? "" : "|") + menuIDs[i];
463 // boolean additionalFieldsShown = AppUtils.getRequestNvlValue(request,
464 // "additionalFieldsShown").equals("Y");
465 boolean rRCSDisabled = AppUtils.getRequestNvlValue(request, "runtimeColSortDisabled").equals("Y");
466 String reportDefType = AppUtils.getRequestNvlValue(request, "reportDefType");
467 String dataContainerHeight = nvl(AppUtils.getRequestValue(request, "heightContainer"), "auto");
468 String dataContainerWidth = nvl(AppUtils.getRequestValue(request, "widthContainer"), "auto");
470 String displayOptions = nvl(AppUtils.getRequestValue(request, "hideForm"), "N")
471 + nvl(AppUtils.getRequestValue(request, "hideChart"), "N")
472 + nvl(AppUtils.getRequestValue(request, "hideData"), "N")
473 + nvl(AppUtils.getRequestValue(request, "hideBtns"), "N")
474 + nvl(AppUtils.getRequestValue(request, "hideMap"), "N")
475 + nvl(AppUtils.getRequestValue(request, "hideExcelIcons"), "N")
476 + nvl(AppUtils.getRequestValue(request, "hidePDFIcons"), "N");
477 /* StringBuffer dashboardOptions = new StringBuffer("");
478 dashboardOptions.append((nvl(AppUtils.getRequestValue(request, "hide"),"chart").equals("chart"))?"Y":"N");
479 dashboardOptions.append((nvl(AppUtils.getRequestValue(request, "hide"),"").equals("data"))?"Y":"N");
480 dashboardOptions.append((nvl(AppUtils.getRequestValue(request, "hideBtns"),"").equals("Y"))?"Y":"N");*/
482 String numFormCols = nvl(AppUtils.getRequestValue(request, "numFormCols"), "1");
483 String reportTitle = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportTitle"));
484 String reportSubTitle = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportSubTitle"));
485 String reportHeader = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportHeader"));
486 String reportFooter = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportFooter"));
488 int frozenColumns = 0;
490 frozenColumns = Integer.parseInt(AppUtils.getRequestValue(request, "frozenColumns"));
491 } catch (NumberFormatException ex) {
495 /* reportUpdated = (!(reportName.equals(nvl(rdef.getReportName()))))
496 && (!(reportDescr.equals(nvl(rdef.getReportDescr()))))
497 && (!(formHelp.equals(nvl(rdef.getFormHelpText()))))
498 && (!(reportType.equals(nvl(rdef.getReportType()))))
499 && (pageSize != rdef.getPageSize()) &&
500 // rPublic.equals(rdef.isPublic()?"Y":"N")&&
501 (!(menuID.equals(nvl(rdef.getMenuID()))))
502 && (!(rApproved.equals(rdef.isMenuApproved()))) && (additionalFieldsShown ? ((!(rRCSDisabled
503 .equals(rdef.isRuntimeColSortDisabled())))
504 && (!(displayOptions.equals(nvl(rdef.getDisplayOptions()))))
505 && (!(dashboardOptions.equals(nvl(rdef.getDashboardOptions()))))
506 && (!(numFormCols.equals(nvl(rdef.getNumFormCols()))))
507 && (!(reportTitle.equals(nvl(rdef.getReportTitle()))))
508 && (!(reportSubTitle.equals(nvl(rdef.getReportSubTitle()))))
509 && (!(reportHeader.equals(nvl(rdef.getReportHeader())))) && (!(reportFooter
510 .equals(nvl(rdef.getReportFooter()))))&& (reportsInNewWindow != rdef.isReportInNewWindow())):true);
512 /* reportUpdated = rRCSDisabled ==(rdef.isRuntimeColSortDisabled()
513 && displayOptions.equals(nvl(rdef.getDisplayOptions()))
514 //&& dashboardOptions.equals(nvl(rdef.getDashboardOptions()))
515 && numFormCols.equals(nvl(rdef.getNumFormCols()))
516 && reportTitle.equals(nvl(rdef.getReportTitle()))
517 && reportSubTitle.equals(nvl(rdef.getReportSubTitle()))
518 && reportHeader.equals(nvl(rdef.getReportHeader()))
519 && reportsInNewWindow == rdef.isReportInNewWindow()
520 && reportFooter.equals(nvl(rdef.getReportFooter())))
524 /*reportUpdated = (!(reportName.equals(nvl(rdef.getReportName()))
525 && reportDescr.equals(nvl(rdef.getReportDescr()))
526 && formHelp.equals(nvl(rdef.getFormHelpText()))
527 && reportType.equals(nvl(rdef.getReportType()))
528 && (pageSize == rdef.getPageSize())
529 && excelDownloadSize == rdef.getMaxRowsInExcelDownload()
530 && reportsInNewWindow == rdef.isReportInNewWindow()
531 && displayOptions.equals(rdef.getDisplayOptions())
532 && dataContainerHeight.equals(rdef.getDataContainerHeight())
533 && dataContainerWidth.equals(rdef.getDataContainerWidth())
534 && (isAllowSchedule ==(rdef.isAllowSchedule()))
535 // rPublic.equals(rdef.isPublic()?"Y":"N")&&
536 && menuID.equals(nvl(rdef.getMenuID()))
537 && rApproved.equals(rdef.isMenuApproved() ? "Y" : "N") && (rRCSDisabled
538 == ((rdef.isRuntimeColSortDisabled())
539 && displayOptions.equals(nvl(rdef.getDisplayOptions()))
540 //&& dashboardOptions.equals(nvl(rdef.getDashboardOptions()))
541 && numFormCols.equals(nvl(rdef.getNumFormCols()))
542 && reportTitle.equals(nvl(rdef.getReportTitle()))
543 && reportSubTitle.equals(nvl(rdef.getReportSubTitle()))
544 && isOneTimeScheduleAllowed.equals(nvl(rdef.getIsOneTimeScheduleAllowed()))
545 && isHourlyScheduleAllowed.equals(nvl(rdef.getIsHourlyScheduleAllowed()))
546 && isDailyScheduleAllowed.equals(nvl(rdef.getIsDailyScheduleAllowed()))
547 && isDailyMFScheduleAllowed.equals(nvl(rdef.getIsDailyMFScheduleAllowed()))
548 && isWeeklyScheduleAllowed.equals(nvl(rdef.getIsWeeklyScheduleAllowed()))
549 && isMonthlyScheduleAllowed.equals(nvl(rdef.getIsMonthlyScheduleAllowed()))
550 && reportHeader.equals(nvl(rdef.getReportHeader())) && reportFooter
551 .equals(nvl(rdef.getReportFooter()))))
553 rdef.setReportName(reportName);
554 rdef.setReportDescr(reportDescr);
555 rdef.setFormHelpText(formHelp);
556 rdef.setReportType(reportType);
557 rdef.setPageSize(pageSize);
558 rdef.setDBInfo(dataSource);
559 rdef.setDBType(dbType);
560 rdef.setDisplayOptions(displayOptions);
561 rdef.setDataContainerHeight(dataContainerHeight);
562 rdef.setDataContainerWidth(dataContainerWidth);
563 rdef.setAllowSchedule(isAllowSchedule?"Y":"N");
564 rdef.setMultiGroupColumn(isColumnGroup?"Y":"N");
565 rdef.setTopDown(isTopDown?"Y":"N");
566 rdef.setSizedByContent(isSizedByContent?"Y":"N");
567 // rdef.setPublic(rPublic.equals("Y"));
568 rdef.setMenuID(menuID);
569 rdef.setMenuApproved(rApproved.equals("Y"));
570 if (reportDefType.length() > 0)
571 rdef.setReportDefType(reportDefType);
572 /* if(rdef.isDashboardType()) {
573 rdef.setDashboardOptions(dashboardOptions.toString());
575 rdef.setHideFormFieldAfterRun(hideFormFieldAfterRun);
576 rdef.setReportInNewWindow(reportsInNewWindow);
577 rdef.setRuntimeColSortDisabled(rRCSDisabled);
578 rdef.setNumFormCols(numFormCols);
579 rdef.setReportTitle(reportTitle);
580 rdef.setReportSubTitle(reportSubTitle);
581 rdef.setReportHeader(reportHeader);
582 rdef.setReportFooter(reportFooter);
583 rdef.setIsOneTimeScheduleAllowed(isOneTimeScheduleAllowed);
584 rdef.setIsHourlyScheduleAllowed(isHourlyScheduleAllowed);
585 rdef.setIsDailyScheduleAllowed(isDailyScheduleAllowed);
586 rdef.setIsDailyMFScheduleAllowed(isDailyMFScheduleAllowed);
587 rdef.setIsWeeklyScheduleAllowed(isWeeklyScheduleAllowed);
588 rdef.setIsMonthlyScheduleAllowed(isMonthlyScheduleAllowed);
589 rdef.setFrozenColumns(frozenColumns);
593 if (rdef.getWizardSequence() instanceof WizardSequence)
594 rdef.generateWizardSequence(request);
598 * if(formHelp.length()>255) formHelp = formHelp.substring(0, 255);
602 // String rPublic = nvl(AppUtils.getRequestValue(request, "public"),
604 // String menuID = AppUtils.getRequestNvlValue(request, "menuID");
606 // boolean dashboardOptionsShown = AppUtils.getRequestNvlValue(request,
607 // "dashboardOptionsShown").equals("Y");
609 reportUpdated = true;
611 if (rdef.getReportID().equals("-1"))
612 // Always need to persist new report - in case it is a copy
613 reportUpdated = true;
615 return reportUpdated;
616 } // processDefinition
618 private boolean processTableAdd(HttpServletRequest request) throws Exception {
619 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
620 AppConstants.SI_REPORT_DEFINITION);
622 String tableName = AppUtils.getRequestNvlValue(request, "tableName").toUpperCase();
623 String tableId = rdef.getUniqueTableId(tableName);
625 String joinTableExpr = null;
626 String joinTableId = null;
628 DataSourceType joinTable =
629 rdef.getTableById(AppUtils.getRequestValue(request, "joinTableName"));
630 if (joinTable != null) {
631 String joinTableName = joinTable.getTableName();
632 joinTableId = joinTable.getTableId();
634 String joinExpr = AppUtils.getRequestNvlValue(request, "joinExpr").toUpperCase();
636 joinTableExpr = joinExpr.replaceAll("\\["+tableName+"\\]", tableId);
637 joinTableExpr = joinTableExpr.replaceAll("\\["+joinTableName+"\\]", joinTableId);
638 // debugLogger.debug("joinExpr : "+joinExpr+"\njoinTableExpr : "+ joinTableExpr);
641 rdef.addDataSourceType(new ObjectFactory(), tableId, tableName, AppUtils
642 .getRequestNvlValue(request, "tablePK"), AppUtils.getRequestNvlValue(request,
643 "displayName"), joinTableId, joinTableExpr, null);
645 rdef.setOuterJoin(rdef.getTableById(tableId), AppUtils.getRequestNvlValue(request,
647 rdef.resetCache(true);
652 private boolean processTableEdit(HttpServletRequest request) throws Exception {
653 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
654 AppConstants.SI_REPORT_DEFINITION);
656 DataSourceType dst = rdef.getTableById(AppUtils.getRequestNvlValue(request,
657 AppConstants.RI_DETAIL_ID));
659 String displayName = XSSFilter.filterRequest(AppUtils.getRequestNvlValue(request, "displayName"));
660 String outerJoin = AppUtils.getRequestNvlValue(request, "outerJoin");
662 String tableName = AppUtils.getRequestNvlValue(request, "tableName").toUpperCase();
663 String joinTableId = AppUtils.getRequestNvlValue(request, "joinTableName");
665 String joinExpr = AppUtils.getRequestNvlValue(request, "joinExpr").toUpperCase();
667 String joinTableExpr = null;
668 if(joinExpr.length()!=0){
669 joinTableExpr = joinExpr.replaceAll("\\["+tableName+"\\]", rdef.getTableByDBName(tableName).getTableId());
670 joinTableExpr = joinTableExpr.replaceAll("\\["+rdef.getTableById(joinTableId).getTableName().toUpperCase()+"\\]", joinTableId);
671 dst.setRefDefinition(joinTableExpr);
673 boolean reportUpdated = (!displayName.equals(nvl(dst.getDisplayName())) ||
674 !outerJoin.equals(rdef.getOuterJoinType(dst)) ||
675 !(joinExpr.length()==0));
677 dst.setDisplayName(displayName);
678 rdef.setOuterJoin(dst, outerJoin);
680 rdef.resetCache(true);
682 return true; // reportUpdated;
683 } // processTableEdit
686 private boolean processTableDelete(HttpServletRequest request) throws Exception {
687 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
688 AppConstants.SI_REPORT_DEFINITION);
689 rdef.deleteDataSourceType(AppUtils.getRequestNvlValue(request,
690 AppConstants.RI_DETAIL_ID));
692 } // processTableDelete
694 private boolean processColumnAddEdit(HttpServletRequest request, boolean isEdit)
699 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
700 AppConstants.SI_REPORT_DEFINITION);
701 DataColumnType currColumn = null;
703 String tableId = null;
704 String colName = null;
705 String dataType = null;
707 currColumn = rdef.getColumnById(AppUtils.getRequestNvlValue(request,
708 AppConstants.RI_DETAIL_ID));
710 if(currColumn!=null) {
711 tableId = currColumn.getTableId();
712 colName = currColumn.getDbColName(); // currColumn.getColName();
713 dataType = currColumn.getDbColType();
716 String colData = AppUtils.getRequestNvlValue(request, "columnDetails");
717 if(nvl(colData).length()>0) {
718 tableId = colData.substring(0, colData.indexOf('|'));
719 colName = colData.substring(tableId.length() + 1,
720 colData.indexOf('|', tableId.length() + 1)).toUpperCase();
721 dataType = colData.substring(tableId.length() + colName.length() + 2);
725 String exprFormula = AppUtils.getRequestNvlValue(request, "exprFormula");
727 String colNameValue = null;
728 if (exprFormula.length() > 0)
729 if (exprFormula.equals("_exprText_"))
730 colNameValue = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestValue(request, "exprText"));
731 else if (exprFormula.equals("COUNT(*)"))
732 colNameValue = exprFormula;
734 colNameValue = exprFormula + " " + colName + ")";
736 colNameValue = colName;
738 int displayWidth = -1;
740 displayWidth = Integer.parseInt(AppUtils.getRequestValue(request, "displayWidth"));
741 } catch (NumberFormatException e) {
744 String sColId = isEdit ? currColumn.getColId() : (nvl(colName).length()>0?rdef.getUniqueColumnId(colName):null);
745 String drillDownParams = AppUtils.getRequestValue(request, "drillDownParams");
746 if (drillDownParams != null) {
747 // Replacing references to [this] with [col_id]
748 while (drillDownParams.indexOf("[this]") >= 0) {
749 int startIdx = drillDownParams.indexOf("[this]");
750 StringBuffer sb = new StringBuffer();
753 sb.append(drillDownParams.substring(0, startIdx));
754 sb.append("[" + sColId + "]");
755 if (startIdx + 6 < drillDownParams.length() - 1)
756 sb.append(drillDownParams.substring(startIdx + 5));
757 drillDownParams = sb.toString();
761 String crossTabValue = null;
762 boolean isVisible = AppUtils.getRequestFlag(request, "visible");
763 boolean isSortable = AppUtils.getRequestFlag(request, "sortable");
764 String nowrap = AppUtils.getRequestNvlValue(request, "nowrap");
767 indentation = Integer.parseInt(AppUtils.getRequestNvlValue(request, "indentation"));
768 }catch (NumberFormatException e) {
770 String dependsOnFormField = AppUtils.getRequestNvlValue(request, "dependsOnFormField");
771 boolean isGroupBreak = AppUtils.getRequestFlag(request, "groupBreak");
772 String groupByPosStr = AppUtils.nvls(AppUtils.getRequestValue(request, "groupByPos"), "0");
773 int groupByPos = Integer.parseInt(groupByPosStr);
774 currColumn.setGroupByPos(groupByPos);
777 String subTotalCustomText = AppUtils.nvls(AppUtils.getRequestValue(request, "subTotalCustomText"), "Sub Total");
778 currColumn.setSubTotalCustomText(subTotalCustomText);
780 boolean hideRepeatedKey = AppUtils.getRequestFlag(request, "hideRepeatedKeys");
781 currColumn.setHideRepeatedKey(hideRepeatedKey);
784 String displayTotal = AppUtils.getRequestNvlValue(request, "displayTotal");
785 String widthInPxls = AppUtils.getRequestNvlValue(request, "widthInPxls");
787 if (rdef.getReportType().equals(AppConstants.RT_CROSSTAB)) {
791 crossTabValue = AppUtils.getRequestValue(request, "crossTabValue");
792 isVisible = nvl(crossTabValue).equals(AppConstants.CV_ROW)
793 || nvl(crossTabValue).equals(AppConstants.CV_COLUMN)
794 || nvl(crossTabValue).equals(AppConstants.CV_VALUE);
795 isGroupBreak = nvl(crossTabValue).equals(AppConstants.CV_ROW)
796 || nvl(crossTabValue).equals(AppConstants.CV_COLUMN);
798 if (nvl(crossTabValue).equals(AppConstants.CV_VALUE))
800 + AppUtils.getRequestNvlValue(request, "displayTotalPerRow");
805 String displayName = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "displayName"));
806 String colType = AppUtils.getRequestNvlValue(request, "colType");
807 String displayFormat = AppUtils.getRequestNvlValue(request, "displayFormat");
810 if(colType.equals(AppConstants.CT_HYPERLINK)) {
811 String hyperlinkURL = AppUtils.getRequestValue(request, "hyperlinkURL");
812 currColumn.setHyperlinkURL(hyperlinkURL);
813 String anchor = AppUtils.getRequestValue(request, "anchor");
814 currColumn.setHyperlinkType(anchor);
815 if(anchor.equals("IMAGE")) {
816 String actionImg = AppUtils.getRequestValue(request, "actionImg");
817 currColumn.setActionImg(actionImg);
823 String displayAlign = AppUtils.getRequestValue(request, "displayAlign");
824 String displayHeaderAlign = AppUtils.getRequestValue(request, "displayHeaderAlign");
825 String drillDownURL = AppUtils.getRequestValue(request, "drillDownURL");
826 String drillDownSuppress = AppUtils.getRequestValue(request, "drillDownSuppress");
827 boolean drillDownPopUp = AppUtils.getRequestFlag (request, "drillDownPopUp");
828 String semaphoreId = AppUtils.getRequestNvlValue(request, "semaphore");
829 String semaphoreType = AppUtils.getRequestNvlValue(request, "semaphoreTypeHidden");
831 String levelStr = AppUtils.getRequestNvlValue(request, "multiGroupColLevel");
832 String startColGroup = AppUtils.getRequestNvlValue(request, "startMultiGroup");
833 String colGroupColSpan = AppUtils.getRequestNvlValue(request, "colspan");
836 level = Integer.parseInt(levelStr);
837 }catch (NumberFormatException ex) {
840 int startColGroupInt = 0;
841 int colGroupColSpanInt = 0;
844 //startColGroupInt = Integer.parseInt(startColGroup);
845 colGroupColSpanInt = Integer.parseInt(colGroupColSpan);
846 } catch (NumberFormatException ex) {
850 currColumn.setLevel(level);
852 currColumn.setStart(startColGroupInt);
853 currColumn.setColspan(colGroupColSpanInt);
856 String targetColumnId = (semaphoreType.indexOf("|")!= -1 ? semaphoreType.substring(semaphoreType.indexOf("|")+1):"");
857 DataColumnType targetColumn = rdef.getColumnById(targetColumnId);
859 SemaphoreType semaphore = rdef.getSemaphoreById(semaphoreId);
860 rdef.deleteSemaphore(semaphore);
861 if(nvl(semaphoreType).length() > 0 && semaphoreType.indexOf("|")!=-1)
862 semaphore.setSemaphoreType(semaphoreType.substring(0,semaphoreType.indexOf("|")));
863 if(semaphore!=null) {
864 semaphore.setComment(currColumn.getColId());
865 if(nvl(semaphoreType).length() > 0)
866 semaphore.setTarget(targetColumnId.length()>0? targetColumnId: "");
867 rdef.setSemaphore(semaphore);
872 if(nvl(widthInPxls).length()>0) {
873 if(nvl(widthInPxls).endsWith("px"))
874 currColumn.setDisplayWidthInPxls(widthInPxls);
876 currColumn.setDisplayWidthInPxls(widthInPxls+"px");
878 currColumn.setDisplayWidthInPxls("");
881 currColumn.setCrossTabValue(crossTabValue);
882 currColumn.setDependsOnFormField(dependsOnFormField);
883 currColumn.setDisplayName(displayName);
884 //currColumn.setOriginalDisplayName(displayName);
886 if (displayWidth > 0)
887 currColumn.setDisplayWidth(displayWidth);
888 currColumn.setDisplayAlignment(displayAlign);
889 currColumn.setDisplayHeaderAlignment(displayHeaderAlign);
890 currColumn.setDrillDownURL(drillDownURL);
891 currColumn.setDrillDownParams(drillDownParams);
892 currColumn.setDrillDownType(drillDownSuppress);
893 currColumn.setDrillinPoPUp(drillDownPopUp);
895 currColumn.setIndentation(indentation);
897 rdef.setDrillDownURLInPopupPresent(true);
899 /*if(targetColumn!=null) {
900 currColumn.setSemaphoreId(null);
901 targetColumn.setSemaphoreId(semaphoreId);
903 currColumn.setSemaphoreId(semaphoreId);
904 currColumn.setGroupBreak(isGroupBreak);
905 logger.debug(EELFLoggerDelegate.debugLogger, (" ------------ Display Total ---------- "+ displayTotal));
906 currColumn.setDisplayTotal(displayTotal);
907 //if (currColumn.getDrillDownURL() == null || currColumn.getDrillDownURL().length() == 0)
908 currColumn.setVisible(isVisible);
909 currColumn.setIsSortable(isSortable);
910 currColumn.setNowrap(nowrap);
912 // currColumn.setVisible(true);
913 if (rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED)) {
915 currColumn.setColType(colType);
916 displayFormat = AppUtils.getRequestValue(request, "colDataFormat");
917 if (displayFormat != null){
918 currColumn.setColFormat(displayFormat);
920 if(colType!=null && colType.equals(AppConstants.CT_DATE)) {
921 boolean enhancedPagination = AppUtils.getRequestFlag(request, "enhancedPagination");
922 currColumn.setEnhancedPagination(enhancedPagination);
925 if (!rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED)) {
926 currColumn.setColName(colNameValue);
927 if (displayFormat != null)
928 currColumn.setColFormat(displayFormat);
929 //currColumn.setVisible(isVisible);
930 currColumn.setCalculated(exprFormula.length() > 0);
932 rdef.adjustColumnType(currColumn);
935 rdef.resetCache(true);
937 currColumn = rdef.addDataColumnType(new ObjectFactory(), sColId, tableId, colName,
938 crossTabValue, colNameValue, displayName, displayWidth, displayAlign, rdef
939 .getAllColumns().size() + 1, isVisible,
940 (exprFormula.length() > 0), adjustDataType(dataType), displayFormat,
941 isGroupBreak, -1, null, displayTotal, null, -1, drillDownSuppress,
942 drillDownURL, drillDownParams, semaphoreId, null);
944 if (rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED))
945 rdef.setColumnNoParseDateFlag(currColumn, AppUtils.getRequestFlag(request,
947 if(nvl(displayName).length()>0)
951 } // processColumnAddEdit
953 private boolean processColumnAddMulti(HttpServletRequest request) throws Exception {
954 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
955 AppConstants.SI_REPORT_DEFINITION);
957 List reportCols = rdef.getAllColumns();
958 int nCol = reportCols.size() + 1;
960 String[] addColumn = request.getParameterValues("addColumn");
961 String[] tableId = request.getParameterValues("tableId");
962 String[] columnName = request.getParameterValues("columnName");
963 String[] columnType = request.getParameterValues("columnType");
964 String[] displayName = request.getParameterValues("displayName");
966 for (int i = 0; i < addColumn.length; i++)
967 if (addColumn[i].equals("Y")) {
969 String uniqueDisplayName = displayName[i];
970 boolean isUnique = true;
973 for (Iterator iter = reportCols.iterator(); iter.hasNext();)
974 if (uniqueDisplayName.equals(((DataColumnType) iter.next())
975 .getDisplayName())) {
977 uniqueDisplayName = displayName[i] + (j++);
985 rdef.getUniqueColumnId(columnName[i]),
996 adjustDataType(columnType[i]),
997 (columnType[i].equals(AppConstants.CT_DATE) ? AppConstants.DEFAULT_DATE_FORMAT
998 : null), false, -1, null, null, null, -1, null, null,
1003 } // processColumnAddMulti
1005 private boolean processColumnOrderAll(HttpServletRequest request) throws Exception {
1006 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1007 AppConstants.SI_REPORT_DEFINITION);
1009 String[] colId = request.getParameterValues("colId");
1010 String[] colOrder = request.getParameterValues("colOrder");
1012 boolean reportUpdated = false;
1013 for (int i = 0; i < colId.length; i++) {
1014 DataColumnType dct = rdef.getColumnById(nvl(colId[i]));
1020 iColOrder = Integer.parseInt(colOrder[i]);
1021 } catch (NumberFormatException e) {
1024 if (iColOrder > 0) {
1025 dct.setOrderSeq(iColOrder);
1026 reportUpdated = true;
1030 if (reportUpdated) {
1031 List reportCols = rdef.getAllColumns();
1032 Collections.sort(reportCols, new OrderSeqComparator());
1035 for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
1036 DataColumnType dct = (DataColumnType) iter.next();
1037 dct.setOrderSeq(iOrder++);
1040 rdef.resetCache(false);
1043 return reportUpdated;
1044 } // processColumnOrderAll
1046 private boolean processColumnDelete(HttpServletRequest request) throws Exception {
1047 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1048 AppConstants.SI_REPORT_DEFINITION);
1049 rdef.deleteDataColumnType(AppUtils.getRequestNvlValue(request,
1050 AppConstants.RI_DETAIL_ID));
1052 } // processColumnDelete
1054 private boolean processColumnMoveUp(HttpServletRequest request) throws Exception {
1055 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1056 AppConstants.SI_REPORT_DEFINITION);
1057 rdef.shiftColumnOrderUp(AppUtils
1058 .getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
1060 } // processColumnMoveUp
1062 private boolean processColumnMoveDown(HttpServletRequest request) throws Exception {
1063 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1064 AppConstants.SI_REPORT_DEFINITION);
1065 rdef.shiftColumnOrderDown(AppUtils.getRequestNvlValue(request,
1066 AppConstants.RI_DETAIL_ID));
1068 } // processColumnMoveDown
1070 private boolean processFormFieldAddEdit(HttpServletRequest request, boolean isEdit,
1071 String action) throws Exception {
1072 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1073 AppConstants.SI_REPORT_DEFINITION);
1075 String fieldName = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "fieldName"));
1076 String multiSelectSize = "0";
1077 String colId = AppUtils.getRequestNvlValue(request, "fieldColId");
1078 if (rdef.getReportDefType().equals(AppConstants.RD_SQL_BASED)) {
1079 String displayFormat = AppUtils.getRequestNvlValue(request, "displayFormat");
1080 if (displayFormat.length() > 0)
1081 colId += "|" + displayFormat;
1083 String fieldType = AppUtils.getRequestNvlValue(request, "fieldType");
1084 String validation = AppUtils.getRequestNvlValue(request, "validation");
1085 String mandatory = nvl(AppUtils.getRequestValue(request, "mandatory"), "N");
1086 String defaultValue = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "defaultValue"));
1087 String fieldHelp = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "fieldHelp"));
1088 String fieldSQL = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "fieldSQL"));
1089 String fieldDefaultSQL = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "fieldDefaultSQL"));
1090 String visible = nvl(AppUtils.getRequestValue(request, "visible"),"Y");
1091 String dependsOn = nvl(AppUtils.getRequestValue(request, "dependsOn"),"");
1092 String rangeStartDate = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "rangeStartDate"));
1093 String rangeEndDate = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "rangeEndDate"));
1094 String rangeStartDateSQL = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "rangeStartDateSQL"));
1095 String rangeEndDateSQL = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "rangeEndDateSQL"));
1096 boolean isGroupFormField = AppUtils.getRequestFlag(request,"isGroupFormField");
1098 Calendar start = null;
1099 Calendar end = null;
1100 if (AppUtils.nvl(rangeStartDate).length()>0){
1101 SimpleDateFormat dtf = new SimpleDateFormat("MM/dd/yyyy");
1102 start = Calendar.getInstance();
1103 start.setTime(dtf.parse(rangeStartDate));
1105 if (AppUtils.nvl(rangeEndDate).length()>0){
1106 SimpleDateFormat dtf = new SimpleDateFormat("MM/dd/yyyy");
1107 end = Calendar.getInstance();
1108 end.setTime(dtf.parse(rangeEndDate));
1110 * if(fieldHelp.length()>255) fieldHelp = fieldHelp.substring(0, 255);
1113 boolean reportUpdated = false;
1115 FormFieldType currField = null;
1117 String fieldId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID);
1119 currField = rdef.getFormFieldById(fieldId);
1120 if (currField != null && nvl(fieldName).length()>0) {
1121 reportUpdated = (!(fieldName.equals(nvl(currField.getFieldName()))
1122 && colId.equals(nvl(currField.getColId()))
1123 && fieldType.equals(nvl(currField.getFieldType()))
1124 && validation.equals(nvl(currField.getValidationType()))
1125 && mandatory.equals(nvl(currField.getMandatory(), "N"))
1126 && defaultValue.equals(nvl(currField.getDefaultValue()))
1127 && fieldSQL.equals(nvl(currField.getFieldSQL()))
1128 && fieldDefaultSQL.equals(nvl(currField.getFieldDefaultSQL()))
1129 && dependsOn.equals(nvl(currField.getDependsOn(), "N"))
1130 && (start == null || (start != null && currField.getRangeStartDate() == null) || (start.compareTo(getCalendar(currField.getRangeStartDate())) )==0)
1131 && (end == null || (end != null && currField.getRangeEndDate() == null) || (end.equals(currField.getRangeEndDate())))
1132 && rangeStartDateSQL.equals(nvl(currField.getRangeStartDateSQL()))
1133 && rangeEndDateSQL.equals(nvl(currField.getRangeEndDateSQL()))
1134 && visible.equals(nvl(currField.getVisible(), "Y"))
1135 && isGroupFormField == currField.isGroupFormField()
1136 && fieldHelp.equals(nvl(currField.getComment()))));
1138 rdef.replaceFormFieldReferences("[" + currField.getFieldName() + "]", "["
1141 currField.setFieldName(fieldName);
1142 currField.setColId(colId);
1143 currField.setFieldType(fieldType);
1144 currField.setValidationType(validation);
1145 currField.setMandatory(mandatory);
1146 currField.setDefaultValue(defaultValue);
1147 currField.setFieldSQL(fieldSQL);
1148 currField.setFieldDefaultSQL(fieldDefaultSQL);
1149 currField.setComment(fieldHelp);
1150 currField.setVisible(visible);
1151 currField.setDependsOn(dependsOn);
1154 currField.setRangeStartDate(DatatypeFactory.newInstance()
1155 .newXMLGregorianCalendar(start.YEAR, start.MONTH, start.DAY_OF_WEEK, start.HOUR, start.MINUTE, start.SECOND, start.MILLISECOND, start.ZONE_OFFSET));
1157 currField.setRangeStartDate(null);
1160 currField.setRangeEndDate(DatatypeFactory.newInstance()
1161 .newXMLGregorianCalendar(end.YEAR, end.MONTH, end.DAY_OF_WEEK, end.HOUR, end.MINUTE, end.SECOND, end.MILLISECOND, end.ZONE_OFFSET));
1163 currField.setRangeEndDate(null);
1165 /*currField.setRangeEndDate(DatatypeFactory.newInstance()
1166 .newXMLGregorianCalendar(end));*/
1167 } catch (DatatypeConfigurationException ex) {
1171 currField.setRangeStartDateSQL(rangeStartDateSQL);
1172 currField.setRangeEndDateSQL(rangeEndDateSQL);
1173 currField.setGroupFormField(isGroupFormField);
1174 if(fieldType.equals(FormField.FFT_LIST_MULTI)) {
1175 multiSelectSize = AppUtils.getRequestNvlValue(request, "multiSelectListSize");
1176 currField.setMultiSelectListSize(multiSelectSize);
1182 reportUpdated = true;
1184 currField = rdef.addFormFieldType(new ObjectFactory(), fieldName, colId,
1185 fieldType, validation, mandatory, defaultValue, fieldSQL, fieldHelp, start, end, rangeStartDateSQL, rangeEndDateSQL);
1187 request.setAttribute(AppConstants.RI_DETAIL_ID, currField.getFieldId());
1190 if (action.equals(AppConstants.WA_ADD_USER)) {
1191 reportUpdated = true;
1192 rdef.addFormFieldPredefinedValue(new ObjectFactory(), currField, XSSFilter.filterRequestOnlyScript(AppUtils
1193 .getRequestNvlValue(request, "newPredefinedValue")));
1194 } else if (action.equals(AppConstants.WA_DELETE_USER)) {
1195 reportUpdated = true;
1196 rdef.deleteFormFieldPredefinedValue(currField, AppUtils.getRequestNvlValue(
1197 request, "delPredefinedValue"));
1200 return reportUpdated;
1201 } // processFormFieldAddEdit
1203 private boolean processFormFieldDelete(HttpServletRequest request) throws Exception {
1204 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1205 AppConstants.SI_REPORT_DEFINITION);
1207 String fieldId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID);
1208 rdef.deleteFormField(fieldId);
1211 } // processFormFieldDelete
1213 private boolean processFormFieldMoveUp(HttpServletRequest request) throws Exception {
1214 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1215 AppConstants.SI_REPORT_DEFINITION);
1216 rdef.shiftFormFieldUp(AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
1218 } // processFormFieldMoveUp
1220 private boolean processFormFieldMoveDown(HttpServletRequest request) throws Exception {
1221 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1222 AppConstants.SI_REPORT_DEFINITION);
1223 rdef.shiftFormFieldDown(AppUtils
1224 .getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
1226 } // processFormFieldMoveDown
1228 private boolean processFormFieldBlank(HttpServletRequest request) throws Exception {
1229 boolean reportUpdated = false;
1230 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1231 AppConstants.SI_REPORT_DEFINITION);
1232 reportUpdated = true;
1233 rdef.addFormFieldBlank(new ObjectFactory());
1235 } // processFormFieldMoveDown
1237 //processFormFieldInfoBar
1238 private boolean processFormFieldInfoBar(HttpServletRequest request) throws Exception {
1239 boolean reportUpdated = false;
1240 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1241 AppConstants.SI_REPORT_DEFINITION);
1242 reportUpdated = true;
1243 rdef.addCustomizedTextForParameters(XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "blueBarField")));
1245 } // processFormFieldMoveDown
1248 private boolean processForecasting(HttpServletRequest request, String action) throws Exception {
1249 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1250 AppConstants.SI_REPORT_DEFINITION);
1252 if(rdef.getDataminingOptions()==null)
1253 rdef.addDataminingOptions(new ObjectFactory());
1255 String classifiers = AppUtils.getRequestNvlValue(request, "classifiers");
1256 rdef.setClassifier(classifiers);
1257 String dateAttrColId = AppUtils.getRequestNvlValue(request, "timeAttribute");
1258 String timeFormat = AppUtils.getRequestNvlValue(request, "timeFormat");
1259 if(timeFormat.equals("Default")) timeFormat = "yyyy-MM-dd HH:mm:ss";
1260 String forecastingPeriod = AppUtils.getRequestNvlValue(request, "forecastingPeriod");
1262 String[] forecastCols = request.getParameterValues("forecastCol");
1263 List reportCols = rdef.getAllColumns();
1264 DataColumnType dct = null;
1265 Iterator iter = null;
1269 if(dateAttrColId != null) {
1270 for(iter=reportCols.iterator(); iter.hasNext(); ) {
1271 dct = (DataColumnType) iter.next();
1272 if(dct.getColId().equals(dateAttrColId)) {
1273 dct.setDataMiningCol(AppConstants.DM_DATE_ATTR);
1274 if(timeFormat!=null) rdef.setForecastingTimeFormat(timeFormat);
1280 if(forecastCols != null) {
1281 for (int i = 0; i < forecastCols.length; i++) {
1282 for(iter=reportCols.iterator(); iter.hasNext(); ) {
1283 dct = (DataColumnType) iter.next();
1284 if(dct.getColId().equals(forecastCols[i])) {
1285 dct.setDataMiningCol(AppConstants.DM_FORECASTING_ATTR);
1289 rdef.setForecastingPeriod(forecastingPeriod);
1291 boolean reportUpdated = true;
1293 return reportUpdated;
1294 } // processForecasting
1297 private boolean processFilterAddEdit(HttpServletRequest request, boolean isEdit)
1299 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1300 AppConstants.SI_REPORT_DEFINITION);
1302 String colId = AppUtils.getRequestNvlValue(request, "filterColId");
1303 String filterExpr = AppUtils.getRequestNvlValue(request, "filterExpr");
1304 String argType = (filterExpr.equals("IS NULL") || filterExpr.equals("IS NOT NULL")) ? null
1305 : AppUtils.getRequestNvlValue(request, "argType");
1306 String argValue = (filterExpr.equals("IS NULL") || filterExpr.equals("IS NOT NULL")) ? null
1307 : AppUtils.getRequestNvlValue(request, "argValue");
1309 if (nvl(argType).equals(AppConstants.AT_COLUMN)) {
1310 List reportCols = rdef.getAllColumns();
1311 for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
1312 DataColumnType dct = (DataColumnType) iter.next();
1313 if (argValue != null && argValue.equals("[" + dct.getDisplayName() + "]")) {
1314 argValue = dct.getColId();
1320 if (nvl(argType).equals(AppConstants.AT_VALUE)
1321 && (!nvl(argValue).equals(AppConstants.FILTER_MAX_VALUE))
1322 && (!nvl(argValue).equals(AppConstants.FILTER_MIN_VALUE))) {
1323 // Validating the value by type
1324 DataColumnType currColumn = rdef.getColumnById(colId);
1325 String currColType = currColumn.getColType();
1328 String s_sql = Globals.getProcessFilterAddEdit();
1329 s_sql = s_sql.replace("[argValue]", argValue);
1330 /*DataSet ds = DbUtils.executeQuery("SELECT "
1331 + (currColType.equals(AppConstants.CT_NUMBER) ? ("TO_NUMBER('"
1333 : (currColType.equals(AppConstants.CT_DATE) ? ("TO_DATE('"
1336 + nvl(currColumn.getColFormat(),
1337 AppConstants.DEFAULT_DATE_FORMAT) + "')")
1338 : ("'" + argValue + "'"))) + " FROM dual");*/
1340 DataSet ds = DbUtils.executeQuery("SELECT "
1341 + (currColType.equals(AppConstants.CT_NUMBER) ? ("TO_NUMBER('"
1343 : (currColType.equals(AppConstants.CT_DATE) ? ("TO_DATE('"
1346 + nvl(currColumn.getColFormat(),
1347 AppConstants.DEFAULT_DATE_FORMAT) + "')")
1349 } catch (Exception e) {
1350 throw new ValidationException(
1352 + (currColType.equals(AppConstants.CT_NUMBER) ? "Invalid number"
1353 : (currColType.equals(AppConstants.CT_DATE) ? ("Invalid date<br>Expected date format " + nvl(
1354 currColumn.getColFormat(),
1355 AppConstants.DEFAULT_DATE_FORMAT))
1356 : "Invalid value<br>Possible reason: use of single quotes"))
1357 + "<!--" + e.getMessage() + "--><br>Value: " + argValue);
1364 filterPos = Integer.parseInt(AppUtils.getRequestValue(request, "filterPos"));
1365 } catch (NumberFormatException e) {
1368 ColFilterType currFilter = rdef.getFilterById(colId, filterPos);
1369 if (currFilter != null) {
1370 currFilter.setJoinCondition(AppUtils.getRequestValue(request, "filterJoin"));
1371 currFilter.setOpenBrackets(AppUtils.getRequestValue(request, "openBrackets"));
1372 currFilter.setExpression(filterExpr);
1373 // if(argType!=null)
1374 currFilter.setArgType(argType);
1375 // if(argValue!=null)
1376 currFilter.setArgValue(argValue);
1378 .setCloseBrackets(AppUtils.getRequestValue(request, "closeBrackets"));
1381 rdef.resetCache(true);
1383 rdef.addColFilterType(new ObjectFactory(), colId, AppUtils.getRequestValue(
1384 request, "filterJoin"), AppUtils.getRequestValue(request, "openBrackets"),
1385 filterExpr, argType, argValue, AppUtils.getRequestValue(request,
1386 "closeBrackets"), null);
1390 } // processFilterAddEdit
1392 private boolean processFilterDelete(HttpServletRequest request) throws Exception {
1393 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1394 AppConstants.SI_REPORT_DEFINITION);
1396 String filterId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID);
1397 String colId = filterId.substring(0, filterId.indexOf('|'));
1400 filterPos = Integer.parseInt(filterId.substring(colId.length() + 1));
1401 } catch (NumberFormatException e) {
1404 rdef.removeColumnFilter(colId, filterPos);
1407 } // processFilterDelete
1409 private boolean processSortAddEdit(HttpServletRequest request, boolean isEdit)
1411 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1412 AppConstants.SI_REPORT_DEFINITION);
1414 String sortAscDesc = AppUtils.getRequestNvlValue(request, "sortAscDesc");
1416 DataColumnType currColumn = rdef.getColumnById(AppUtils.getRequestNvlValue(
1417 request, AppConstants.RI_DETAIL_ID));
1418 if (currColumn != null)
1419 currColumn.setOrderByAscDesc(sortAscDesc);
1420 rdef.resetCache(true);
1422 rdef.addColumnSort(AppUtils.getRequestNvlValue(request, "sortColId"), sortAscDesc,
1423 rdef.getNumSortColumns() + 1);
1426 } // processSortAddEdit
1428 private boolean processSortOrderAll(HttpServletRequest request) throws Exception {
1429 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1430 AppConstants.SI_REPORT_DEFINITION);
1432 String[] colId = request.getParameterValues("colId");
1433 String[] sortOrder = request.getParameterValues("sortOrder");
1434 String[] sortAscDesc = request.getParameterValues("sortAscDesc");
1436 boolean reportUpdated = false;
1437 for (int i = 0; i < colId.length; i++) {
1438 DataColumnType dct = rdef.getColumnById(nvl(colId[i]));
1444 iSortOrder = Integer.parseInt(sortOrder[i]);
1445 } catch (NumberFormatException e) {
1448 if (iSortOrder > 0) {
1449 if (dct.getOrderBySeq() > 0) {
1451 if (dct.getOrderBySeq() != iSortOrder) {
1452 dct.setOrderBySeq(iSortOrder);
1453 reportUpdated = true;
1455 if (!nvl(dct.getOrderByAscDesc()).equals(nvl(sortAscDesc[i]))) {
1456 dct.setOrderByAscDesc(sortAscDesc[i]);
1457 reportUpdated = true;
1461 dct.setOrderBySeq(iSortOrder);
1462 dct.setOrderByAscDesc(sortAscDesc[i]);
1463 reportUpdated = true;
1466 if (dct.getOrderBySeq() > 0) {
1468 dct.setOrderBySeq(0);
1469 dct.setOrderByAscDesc(null);
1470 reportUpdated = true;
1475 if (reportUpdated) {
1476 List reportCols = rdef.getAllColumns();
1477 Collections.sort(reportCols, new OrderBySeqComparator());
1479 for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
1480 DataColumnType dct = (DataColumnType) iter.next();
1481 if (dct.getOrderBySeq() > 0)
1482 dct.setOrderBySeq(iOrder++);
1484 Collections.sort(reportCols, new OrderSeqComparator());
1486 rdef.resetCache(true);
1489 return reportUpdated;
1490 } // processSortOrderAll
1492 private boolean processSortDelete(HttpServletRequest request) throws Exception {
1493 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1494 AppConstants.SI_REPORT_DEFINITION);
1495 rdef.removeColumnSort(AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
1497 } // processSortDelete
1499 private boolean processSortMoveUp(HttpServletRequest request) throws Exception {
1500 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1501 AppConstants.SI_REPORT_DEFINITION);
1503 .shiftColumnSortUp(AppUtils.getRequestNvlValue(request,
1504 AppConstants.RI_DETAIL_ID));
1506 } // processSortMoveUp
1508 private boolean processSortMoveDown(HttpServletRequest request) throws Exception {
1509 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1510 AppConstants.SI_REPORT_DEFINITION);
1511 rdef.shiftColumnSortDown(AppUtils.getRequestNvlValue(request,
1512 AppConstants.RI_DETAIL_ID));
1514 } // processSortMoveDown
1516 private boolean processJavascript (HttpServletRequest request) throws Exception {
1517 processSaveJavascriptElement(request);
1521 private boolean processSaveJavascriptElement (HttpServletRequest request) throws Exception {
1522 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1523 AppConstants.SI_REPORT_DEFINITION);
1524 rdef.setJavascriptElement(AppUtils.getRequestNvlValue(request, AppConstants.RI_JAVASCRIPT));
1525 String id = AppUtils.getRequestNvlValue(request, AppConstants.RI_JAVASCRIPT_ITEM_ID);
1526 String fieldId = AppUtils.getRequestNvlValue(request, "javascriptFormField-"+id);
1527 if( nvl(fieldId).length()>0 && !(fieldId.startsWith("-1"))) {
1529 String callableJavascriptText = AppUtils.getRequestNvlValue(request, "callText-"+id);
1531 logger.debug(EELFLoggerDelegate.debugLogger, ("FieldId " + fieldId + " Call Text " + callableJavascriptText+ " id " + id));
1532 JavascriptItemType javaScriptType = null;
1533 if(id.length()>0 && id.startsWith("-1")) {
1534 javaScriptType = rdef.addJavascriptType(new ObjectFactory(), id);
1535 javaScriptType.setFieldId(fieldId);
1536 if(!fieldId.equals("os1") || !fieldId.equals("ol1"))
1537 javaScriptType.setId(rdef.getNextIdForJavaScriptElement(new ObjectFactory(), fieldId));
1539 if(fieldId.equals("os1"))
1540 javaScriptType.setId("os1|1");
1542 javaScriptType.setId("ol1|1");
1544 javaScriptType.setCallText(callableJavascriptText);
1546 javaScriptType = rdef.addJavascriptType(new ObjectFactory(), id);
1547 javaScriptType.setCallText(callableJavascriptText);
1552 private boolean processAddJavascriptElement (HttpServletRequest request) throws Exception {
1553 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1554 AppConstants.SI_REPORT_DEFINITION);
1556 JavascriptItemType javaScriptType = rdef.addJavascriptType(new ObjectFactory(), "");
1557 javaScriptType.setId("");
1558 javaScriptType.setFieldId("");
1559 javaScriptType.setCallText("");
1564 private boolean processDeleteJavascriptElement (HttpServletRequest request) throws Exception {
1565 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1566 AppConstants.SI_REPORT_DEFINITION);
1567 String id = AppUtils.getRequestNvlValue(request, AppConstants.RI_JAVASCRIPT_ITEM_ID);
1568 if(rdef.deleteJavascriptType(id))
1574 private boolean processChart(HttpServletRequest request, String action) throws Exception {
1575 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
1576 AppConstants.SI_REPORT_DEFINITION);
1578 int valueColsCount = rdef.getChartValueColumnsList(AppConstants.CHART_ALL_COLUMNS, null).size();
1580 String chartType = AppUtils.getRequestNvlValue(request, "chartType");
1581 String chartTypeFixed = AppUtils.getRequestValue(request, "chartTypeFixed");
1582 String legendColId = AppUtils.getRequestNvlValue(request, "legendCol");
1583 // String valueColId = AppUtils.getRequestNvlValue(request, "valueCol");
1584 String leftAxisLabel = AppUtils.getRequestValue(request, "leftAxisLabel");
1585 String rightAxisLabel = AppUtils.getRequestValue(request, "rightAxisLabel");
1586 String chartWidth = XSSFilter.filterRequest(AppUtils.getRequestNvlValue(request, "chartWidth"));
1587 String chartHeight = XSSFilter.filterRequest(AppUtils.getRequestNvlValue(request, "chartHeight"));
1588 String chartMultiseries = AppUtils.getRequestNvlValue(request, "multiSeries");
1589 String lastSeriesALineChart = AppUtils.getRequestNvlValue(request, "lastSeriesALineChart");
1590 String lastSeriesABarChart = AppUtils.getRequestNvlValue(request, "lastSeriesABarChart");
1591 String overLayItemLabel = "N";
1592 String chartDisplay = null;
1594 String multiplePieOrder = null;
1595 String multiplePieLabelDisplay = null;
1597 String chartOrientation = null;
1598 String secondaryChartRenderer = null;
1600 String linearRegression = null;
1602 boolean multiplePieOrderInRunPage = false;
1603 boolean multiplePieLabelDisplayInRunPage = false;
1605 boolean chartOrientationInRunPage = false;
1606 boolean secondaryChartRendererInRunPage = false;
1608 boolean chartDisplayInRunPage = false;
1610 String intervalFromdate = null;
1611 String intervalTodate = null;
1612 String intervalLabel = null;
1613 boolean displayIntervalInputInRunPage = false;
1614 boolean animate = false;
1616 animate = AppUtils.getRequestNvlValue(request, "animatedOption").equals("animate");
1617 if(Globals.showAnimatedChartOption())
1618 rdef.setChartAnimate(animate);
1621 String removeColId = "";
1622 if (action.equals(AppConstants.WA_DELETE_USER)) {
1623 removeColId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID);
1624 if(valueColsCount == 2 && !rdef.hasSeriesColumn()) {
1625 rdef.setChartLeftAxisLabel(null);
1626 rdef.setChartRightAxisLabel(null);
1628 if(chartType.equals(AppConstants.GT_TIME_SERIES) || chartType.equals(AppConstants.GT_PIE_MULTIPLE)) {
1629 chartMultiseries = "N";
1634 if(rdef.getChartAdditionalOptions()==null)
1635 rdef.addChartAdditionalOptions(new ObjectFactory());
1637 if(rdef.getChartDrillOptions()==null)
1638 rdef.addChartDrillOptions(new ObjectFactory());
1640 //clearing already added
1641 if(rdef.getChartDrillOptions().getTargetFormfield()!=null)
1642 rdef.getChartDrillOptions().getTargetFormfield().removeAll(rdef.getChartDrillOptions().getTargetFormfield());
1645 if(chartType.equals(AppConstants.GT_PIE_MULTIPLE)) {
1646 multiplePieOrder = AppUtils.getRequestNvlValue(request, "multiplePieOrder");
1647 multiplePieLabelDisplay = AppUtils.getRequestNvlValue(request, "multiplePieLabelDisplay");
1648 chartDisplay = AppUtils.getRequestNvlValue(request, "chartDisplay");
1649 //if(AppUtils.getRequestNvlValue(request, "multiplePieOrderInRunPage").length()>0)
1650 multiplePieOrderInRunPage = AppUtils.getRequestNvlValue(request,"multiplePieOrderInRunPage").equals("Y");
1651 //if(AppUtils.getRequestNvlValue(request, "multiplePieLabelDisplayInRunPage").length()>0)
1652 multiplePieLabelDisplayInRunPage = AppUtils.getRequestNvlValue(request,"multiplePieLabelDisplayInRunPage").equals("Y");
1653 //if(AppUtils.getRequestNvlValue(request, "chartDisplayInRunPage").length()>0)
1654 chartDisplayInRunPage = AppUtils.getRequestNvlValue(request,"chartDisplayInRunPage").equals("Y");
1655 if(rdef.getChartAdditionalOptions()!=null) {
1656 rdef.setChartMultiplePieOrder(multiplePieOrder+(multiplePieOrderInRunPage?"|Y":""));
1657 rdef.setChartMultiplePieLabelDisplay(multiplePieLabelDisplay+(multiplePieLabelDisplayInRunPage?"|Y":""));
1658 rdef.setChartDisplay(chartDisplay+(chartDisplayInRunPage?"|Y":""));
1663 if(chartType.equals(AppConstants.GT_REGRESSION)) {
1664 linearRegression = AppUtils.getRequestNvlValue(request, "regressionType");
1665 rdef.setLinearRegressionColor(AppUtils.getRequestNvlValue(request, "valueLinearRegressionColor"));
1666 rdef.setExponentialRegressionColor(AppUtils.getRequestNvlValue(request, "valueExponentialRegressionColor"));
1667 rdef.setCustomizedRegressionPoint(AppUtils.getRequestNvlValue(request, "regressionPointCustomization"));
1669 if(nvl(linearRegression).length()>0)
1670 rdef.setLinearRegression(linearRegression);
1672 rdef.setLinearRegression("Y");
1675 if(chartType.equals(AppConstants.GT_BAR_3D)) {
1676 chartOrientation = AppUtils.getRequestNvlValue(request, "chartOrientation");
1677 secondaryChartRenderer = AppUtils.getRequestNvlValue(request, "secondaryChartRenderer");
1678 chartDisplay = AppUtils.getRequestNvlValue(request, "chartDisplay");
1679 //if(AppUtils.getRequestNvlValue(request, "chartOrientationInRunPage").length()>0)
1680 chartOrientationInRunPage = AppUtils.getRequestNvlValue(request,"chartOrientationInRunPage").equals("Y");
1681 //if(AppUtils.getRequestNvlValue(request, "secondaryChartRendererInRunPage").length()>0)
1682 secondaryChartRendererInRunPage = AppUtils.getRequestNvlValue(request,"secondaryChartRendererInRunPage").equals("Y");
1683 //if(AppUtils.getRequestNvlValue(request, "chartDisplayInRunPage").length()>0)
1684 chartDisplayInRunPage = AppUtils.getRequestNvlValue(request,"chartDisplayInRunPage").equals("Y");
1685 rdef.setChartOrientation(chartOrientation+(chartOrientationInRunPage?"|Y":""));
1686 rdef.setSecondaryChartRenderer(secondaryChartRenderer+(secondaryChartRendererInRunPage?"|Y":""));
1687 rdef.setChartDisplay(chartDisplay+(chartDisplayInRunPage?"|Y":""));
1688 rdef.setLastSeriesALineChart(nvl(lastSeriesALineChart, "N"));
1691 if(chartType.equals(AppConstants.GT_LINE)) {
1692 chartOrientation = AppUtils.getRequestNvlValue(request, "chartOrientation");
1693 secondaryChartRenderer = AppUtils.getRequestNvlValue(request, "secondaryChartRenderer");
1694 chartDisplay = AppUtils.getRequestNvlValue(request, "chartDisplay");
1695 //if(AppUtils.getRequestNvlValue(request, "chartOrientationInRunPage").length()>0)
1696 chartOrientationInRunPage = AppUtils.getRequestNvlValue(request,"chartOrientationInRunPage").equals("Y");
1697 //if(AppUtils.getRequestNvlValue(request, "secondaryChartRendererInRunPage").length()>0)
1698 secondaryChartRendererInRunPage = AppUtils.getRequestNvlValue(request,"secondaryChartRendererInRunPage").equals("Y");
1699 //if(AppUtils.getRequestNvlValue(request, "chartDisplayInRunPage").length()>0)
1700 chartDisplayInRunPage = AppUtils.getRequestNvlValue(request,"chartDisplayInRunPage").equals("Y");
1701 rdef.setChartOrientation(chartOrientation+(chartOrientationInRunPage?"|Y":""));
1702 rdef.setSecondaryChartRenderer(secondaryChartRenderer+(secondaryChartRendererInRunPage?"|Y":""));
1703 rdef.setChartDisplay(chartDisplay+(chartDisplayInRunPage?"|Y":""));
1704 rdef.setLastSeriesABarChart(nvl(lastSeriesABarChart, "N"));
1706 if(chartType.equals(AppConstants.GT_TIME_DIFFERENCE_CHART)) {
1707 intervalFromdate = AppUtils.getRequestNvlValue(request, "intervalFromDate");
1708 intervalTodate = AppUtils.getRequestNvlValue(request, "intervalToDate");
1709 intervalLabel = AppUtils.getRequestNvlValue(request, "intervalLabel");
1710 displayIntervalInputInRunPage = AppUtils.getRequestNvlValue(request,"intervalInputInRunPage").equals("Y");
1711 rdef.setIntervalFromdate(intervalFromdate+(displayIntervalInputInRunPage?"|Y":""));
1712 rdef.setIntervalTodate(intervalTodate+(displayIntervalInputInRunPage?"|Y":""));
1713 rdef.setIntervalLabel(intervalLabel);
1715 if(chartType.equals(AppConstants.GT_STACKED_VERT_BAR) || chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR) || chartType.equals(AppConstants.GT_STACKED_VERT_BAR_LINES)
1716 || chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR_LINES)) {
1717 overLayItemLabel = AppUtils.getRequestNvlValue(request, "overlayItemValue");
1718 rdef.setOverlayItemValueOnStackBar(nvl(overLayItemLabel, "N"));
1719 animate = AppUtils.getRequestNvlValue(request, "animatedOption").equals("animate");
1720 rdef.setChartAnimate(animate);
1723 rdef.setRangeAxisLowerLimit(AppUtils.getRequestNvlValue(request, "yAxisLowerLimit"));
1724 rdef.setRangeAxisUpperLimit(AppUtils.getRequestNvlValue(request, "yAxisUpperLimit"));
1725 rdef.setLegendLabelAngle(AppUtils.getRequestNvlValue(request,"labelAngle"));
1726 rdef.setLegendPosition(AppUtils.getRequestNvlValue(request,"legendPosition"));
1727 rdef.setMaxLabelsInDomainAxis(AppUtils.getRequestNvlValue(request,"maxLabelsInDomainAxis"));
1728 String chartLegendDisplay = AppUtils.getRequestNvlValue(request,"hideLegend");
1729 boolean showLegendDisplayOptionsInRunPage = false;
1730 showLegendDisplayOptionsInRunPage = AppUtils.getRequestNvlValue(request,"showLegendDisplayOptionsInRunPage").equals("Y");
1731 rdef.setChartLegendDisplay(chartLegendDisplay+(showLegendDisplayOptionsInRunPage?"|Y":""));
1732 rdef.setChartToolTips(AppUtils.getRequestNvlValue(request,"hideTooltips"));
1733 rdef.setDomainAxisValuesAsString(AppUtils.getRequestNvlValue(request,"keepAsString"));
1735 //System.out.println("KeepAsString " + AppUtils.getRequestNvlValue(request,"keepAsString"));
1736 //System.out.println("From ReportDef " + rdef.keepDomainAxisValueInChartAsString());
1737 // boolean reportUpdated = (!
1738 // chartType.equals(nvl(rdef.getChartType())));
1739 rdef.setChartType(chartType);
1740 rdef.setChartTypeFixed(nvl(chartTypeFixed, "N"));
1741 if (nvl(leftAxisLabel).length()>0)
1742 rdef.setChartLeftAxisLabel(leftAxisLabel);
1744 rdef.setChartLeftAxisLabel(null);
1745 if (nvl(rightAxisLabel).length()>0)
1746 rdef.setChartRightAxisLabel(rightAxisLabel);
1748 rdef.setChartRightAxisLabel(null);
1749 rdef.setChartWidth(nvl(chartWidth, "" + Globals.getDefaultChartWidth()));
1750 rdef.setChartHeight(nvl(chartHeight, "" + Globals.getDefaultChartHeight()));
1751 if(chartType.equals(AppConstants.GT_TIME_SERIES) || chartType.equals(AppConstants.GT_PIE_MULTIPLE)) {
1752 rdef.setChartMultiSeries(chartMultiseries);
1754 rdef.setChartMultiSeries("N");
1757 List reportCols = rdef.getAllColumns();
1758 for (Iterator iter = reportCols.iterator(); iter.hasNext();) {
1759 DataColumnType dct = (DataColumnType) iter.next();
1761 if (dct.getColId().equals(legendColId)) {
1762 // reportUpdated = reportUpdated||(!
1763 // nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND));
1764 dct.setColOnChart(AppConstants.GC_LEGEND);
1767 // reportUpdated||nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND);
1768 dct.setColOnChart(null);
1772 * if(dct.getColId().equals(valueColId)) { reportUpdated =
1773 * reportUpdated||(dct.getChartSeq()<=0); dct.setChartSeq(1); }
1774 * else { reportUpdated = reportUpdated||(dct.getChartSeq()>0);
1776 dct.setChartSeq(-1);
1781 List columns = rdef.getAllColumns();
1782 if(chartType.equals(AppConstants.GT_TIME_SERIES)) {
1783 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1784 String chartGroup = AppUtils.getRequestNvlValue(request, "chartGroup");
1785 String yAxis = AppUtils.getRequestNvlValue(request, "yAxis");
1786 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1787 DataColumnType alldct = (DataColumnType) iterator.next();
1788 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1789 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1792 String drillDownReportId = AppUtils.getRequestNvlValue(request, "drillDownReport");
1793 if(!drillDownReportId.equals("-1")) {
1794 ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, drillDownReportId,
1797 request.setAttribute("CHART_FORMFIELDS", ddRr.getReportFormFields());
1799 for(ddRr.getReportFormFields().resetNext(); ddRr.getReportFormFields().hasNext(); ) {
1800 FormField ff = ddRr.getReportFormFields().getNext();
1801 if(!ff.getFieldType().equals(FormField.FFT_BLANK)) {
1802 String value = AppUtils.getRequestNvlValue(request, "drillDown_"+ff.getFieldName());
1803 ChartDrillFormfield cdf = new ObjectFactory().createChartDrillFormfield();
1804 cdf.setFormfield(value);
1805 rdef.getChartDrillOptions().getTargetFormfield().add(cdf);
1811 if(chartType.equals(AppConstants.GT_BAR_3D)) {
1812 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1813 String chartGroup = AppUtils.getRequestNvlValue(request, "chartGroup");
1814 String yAxis = AppUtils.getRequestNvlValue(request, "yAxis");
1815 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1816 DataColumnType alldct = (DataColumnType) iterator.next();
1817 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1818 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1820 String drillDownReportId = AppUtils.getRequestNvlValue(request, "drillDownReport");
1821 rdef.setDrillReportIdForChart(drillDownReportId);
1822 if(drillDownReportId.equals("-1")){
1823 rdef.setDrillReportIdForChart("");
1826 if(!drillDownReportId.equals("-1")) {
1827 ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, drillDownReportId,
1830 request.setAttribute("CHART_FORMFIELDS", ddRr.getReportFormFields());
1832 for(ddRr.getReportFormFields().resetNext(); ddRr.getReportFormFields().hasNext(); ) {
1833 FormField ff = ddRr.getReportFormFields().getNext();
1834 if(!ff.getFieldType().equals(FormField.FFT_BLANK)) {
1835 String value = AppUtils.getRequestNvlValue(request, "drillDown_"+ff.getFieldName());
1836 ChartDrillFormfield cdf = new ObjectFactory().createChartDrillFormfield();
1837 cdf.setFormfield(value);
1838 rdef.getChartDrillOptions().getTargetFormfield().add(cdf);
1842 String xAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownXAxisFormfield");
1843 String yAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownYAxisFormfield");
1844 String seriesAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownSeriesAxisFormfield");
1846 if(!xAxisFormField.equals("-1")){
1847 rdef.setDrillXAxisFormField(xAxisFormField);
1849 if(!yAxisFormField.equals("-1"))
1850 rdef.setDrillYAxisFormField(yAxisFormField);
1851 if(!seriesAxisFormField.equals("-1"))
1852 rdef.setDrillSeriesFormField(seriesAxisFormField);
1854 rdef.setDrillXAxisFormField("");
1855 rdef.setDrillYAxisFormField("");
1856 rdef.setDrillSeriesFormField("");
1860 } else if(chartType.equals(AppConstants.GT_SCATTER)) {
1861 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1862 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1863 DataColumnType alldct = (DataColumnType) iterator.next();
1864 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1865 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1868 }else if(chartType.equals(AppConstants.GT_REGRESSION)) {
1869 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1870 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1871 DataColumnType alldct = (DataColumnType) iterator.next();
1872 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1873 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1875 }else if(chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR) || chartType.equals(AppConstants.GT_STACKED_VERT_BAR)
1876 || chartType.equals(AppConstants.GT_STACKED_VERT_BAR_LINES) || chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR_LINES)) {
1877 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1878 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1879 DataColumnType alldct = (DataColumnType) iterator.next();
1880 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1881 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1883 }else if(chartType.equals(AppConstants.GT_LINE)) {
1884 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1885 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1886 DataColumnType alldct = (DataColumnType) iterator.next();
1887 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1888 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1890 } else if (chartType.equals(AppConstants.GT_TIME_DIFFERENCE_CHART)) {
1891 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1892 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1893 DataColumnType alldct = (DataColumnType) iterator.next();
1894 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1895 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1897 } else if (chartType.equals(AppConstants.GT_COMPARE_PREVYEAR_CHART)) {
1898 String chartSeries = AppUtils.getRequestNvlValue(request, "chartSeries");
1899 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1900 DataColumnType alldct = (DataColumnType) iterator.next();
1901 //debugLogger.debug("**********In " + chartSeries + " " + alldct.getColId());
1902 alldct.setChartSeries((chartSeries.equals(alldct.getColId()))?true : false);
1906 if (rdef.hasSeriesColumn()) {
1907 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1908 DataColumnType alldct = (DataColumnType) iterator.next();
1909 alldct.setChartSeries(false);
1913 String drillDownReportId = AppUtils.getRequestNvlValue(request, "drillDownReport");
1914 rdef.setDrillReportIdForChart(drillDownReportId);
1915 if(drillDownReportId.equals("-1")){
1916 rdef.setDrillReportIdForChart("");
1919 if(!drillDownReportId.equals("-1")) {
1920 ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, drillDownReportId,
1923 request.setAttribute("CHART_FORMFIELDS", ddRr.getReportFormFields());
1924 for(ddRr.getReportFormFields().resetNext(); ddRr.getReportFormFields().hasNext(); ) {
1925 FormField ff = ddRr.getReportFormFields().getNext();
1926 if(!ff.getFieldType().equals(FormField.FFT_BLANK)) {
1927 String value = AppUtils.getRequestNvlValue(request, "drillDown_"+ff.getFieldName());
1928 ChartDrillFormfield cdf = new ObjectFactory().createChartDrillFormfield();
1929 cdf.setFormfield(value);
1930 rdef.getChartDrillOptions().getTargetFormfield().add(cdf);
1934 String xAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownXAxisFormfield");
1935 String yAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownYAxisFormfield");
1936 String seriesAxisFormField = AppUtils.getRequestNvlValue(request, "drillDownSeriesAxisFormfield");
1938 if(!xAxisFormField.equals("-1")){
1939 rdef.setDrillXAxisFormField(xAxisFormField);
1941 if(!yAxisFormField.equals("-1"))
1942 rdef.setDrillYAxisFormField(yAxisFormField);
1943 if(!seriesAxisFormField.equals("-1"))
1944 rdef.setDrillSeriesFormField(seriesAxisFormField);
1946 rdef.setDrillXAxisFormField("");
1947 rdef.setDrillYAxisFormField("");
1948 rdef.setDrillSeriesFormField("");
1955 for (int i = 1; i < Math.max(valueColsCount, 1) + 1; i++) {
1956 //debugLogger.debug("********** " + chartSeries);
1958 /* Range Axis is resetted before adding */
1959 for (Iterator iterator = columns.iterator(); iterator.hasNext();) {
1960 DataColumnType dct = (DataColumnType) iterator.next();
1961 if(!nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND)) {
1962 dct.setChartSeq(-1);
1963 dct.setChartColor(null);
1964 dct.setColOnChart(null);
1965 dct.setCreateInNewChart(false);
1966 dct.setChartGroup(null);
1972 String newChartColAxis = AppUtils.getRequestNvlValue(request, "newChart" + i+"Axis");
1973 String valueColId = AppUtils.getRequestNvlValue(request, "valueCol" + i);
1974 String valueColColor = AppUtils.getRequestNvlValue(request, "valueCol" + i
1976 String valueColAxis = AppUtils
1977 .getRequestNvlValue(request, "valueCol" + valueColId + "Axis");
1978 String chartGroup = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "chartGroup" + valueColId + "Axis"));
1979 String yAxisGroup = "";
1980 yAxisGroup = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "YAxisLabel" + valueColId));
1981 //debugLogger.debug("^^^^^^^^^^^^^^^^^Chart Group " + chartGroup);
1982 //if(chartType.equals(AppConstants.GT_TIME_SERIES)) {
1983 // debugLogger.debug("**********Outer If " + chartSeries);
1986 if (valueColId.length() > 0 && (!valueColId.equals(removeColId))) {
1987 DataColumnType dct = rdef.getColumnById(valueColId);
1988 dct.setChartSeq(idx++);
1989 dct.setChartColor(valueColColor);
1990 dct.setColOnChart(valueColAxis.equals("Y") ? "1" : "0");
1991 if(chartType.equals(AppConstants.GT_TIME_SERIES)) {
1992 dct.setCreateInNewChart(newChartColAxis.equals("Y") ? true : false);
1994 dct.setCreateInNewChart(false);
1996 if(chartGroup!=null && chartGroup.length()>0)
1997 dct.setChartGroup(chartGroup+"|"+valueColId);
1998 else dct.setChartGroup("");
1999 if(chartType.equals(AppConstants.GT_TIME_SERIES))
2000 dct.setYAxis(nvl(yAxisGroup)+"|"+valueColId);
2001 else if (chartType.equals(AppConstants.GT_BAR_3D))
2002 dct.setYAxis(nvl(yAxisGroup)+"|"+valueColId);
2003 else dct.setYAxis("");
2006 //dct.setCreateInNewChart(false);
2007 } else if (valueColId.length() > 0 && (valueColId.equals(removeColId))) {// if
2008 DataColumnType dct = rdef.getColumnById(valueColId);
2009 dct.setChartSeq(-1);
2010 dct.setChartColor(null);
2011 dct.setColOnChart(null);
2012 dct.setCreateInNewChart(false);
2013 dct.setChartGroup(null);
2016 DataColumnType dct = rdef.getColumnById(valueColId);
2017 dct.setChartSeq(-1);
2018 dct.setChartColor(null);
2019 dct.setColOnChart(null);
2020 dct.setCreateInNewChart(false);
2021 dct.setChartGroup(null);
2026 if (action.equals(AppConstants.WA_ADD_USER)) {
2027 String valueColId = AppUtils.getRequestNvlValue(request, "valueColNew");
2028 String valueColColor = AppUtils.getRequestNvlValue(request, "valueColNewColor");
2029 String valueColAxis = AppUtils.getRequestNvlValue(request, "valueColNewAxis");
2031 if (valueColId.length() > 0) {
2032 DataColumnType dct = rdef.getColumnById(valueColId);
2033 dct.setChartSeq(idx++);
2034 dct.setChartColor(valueColColor);
2035 dct.setColOnChart(valueColAxis.equals("Y") ? "1" : "0");
2039 return true; // reportUpdated;
2042 public boolean processAdhocSchedule(HttpServletRequest request, String action)
2044 ReportSchedule reportSchedule = (ReportSchedule) request.getSession().getAttribute(AppConstants.SI_REPORT_SCHEDULE);
2045 reportSchedule.setScheduleUserID(AppUtils.getUserID(request));
2046 reportSchedule.setSchedEnabled(
2047 nvl(AppUtils.getRequestValue(request, "schedEnabled"), "N"));
2048 reportSchedule.setStartDate(
2049 AppUtils.getRequestNvlValue(request, "schedStartDate"));
2050 reportSchedule.setEndDate(
2051 AppUtils.getRequestNvlValue(request, "schedEndDate"));
2052 reportSchedule.setEndHour(AppUtils.getRequestNvlValue(request, "schedEndHour"));
2053 reportSchedule.setEndMin(AppUtils.getRequestNvlValue(request, "schedEndMin"));
2054 reportSchedule.setEndAMPM(AppUtils.getRequestNvlValue(request, "schedEndAMPM"));
2056 reportSchedule.setRunDate(
2057 AppUtils.getRequestNvlValue(request, "schedRunDate").length()>0?AppUtils.getRequestNvlValue(request, "schedRunDate"):AppUtils.getRequestNvlValue(request, "schedStartDate"));
2058 reportSchedule.setRunHour(AppUtils.getRequestNvlValue(request, "schedHour"));
2059 reportSchedule.setRunMin(AppUtils.getRequestNvlValue(request, "schedMin"));
2060 reportSchedule.setRunAMPM(AppUtils.getRequestNvlValue(request, "schedAMPM"));
2061 reportSchedule.setRecurrence(
2062 AppUtils.getRequestNvlValue(request, "schedRecurrence"));
2063 reportSchedule.setConditional(
2064 nvl(AppUtils.getRequestValue(request, "conditional"), "N"));
2065 reportSchedule.setConditionSQL(
2066 AppUtils.getRequestNvlValue(request, "conditionSQL"));
2067 reportSchedule.setNotify_type(
2068 AppUtils.getRequestNvlValue(request, "notify_type"));
2069 reportSchedule.setDownloadLimit(
2070 AppUtils.getRequestNvlValue(request, "downloadLimit"));
2071 reportSchedule.setFormFields(
2072 AppUtils.getRequestNvlValue(request, "formFields"));
2073 reportSchedule.setAttachmentMode(
2074 AppUtils.getRequestNvlValue(request, "sendAttachment"));
2076 String userId = AppUtils.getRequestNvlValue(request, "schedEmailAdd");
2077 String roleId = AppUtils.getRequestNvlValue(request, "schedEmailAddRole");
2079 if ((!(userId.length()>0 || roleId.length()>0) && (reportSchedule.getEmailToUsers().isEmpty() && reportSchedule.getEmailToRoles().isEmpty())) ) {
2083 if (flag == 1 || (action.equals(AppConstants.WA_ADD_USER) || action.equals(AppConstants.WA_ADD_ROLE)) ) {
2084 String loggedInUserId = AppUtils.getUserID(request);
2085 if (Globals.getUseLoginIdInSchedYN().equals("Y")){
2086 reportSchedule.addEmailToUser(loggedInUserId, AppUtils.getUserLoginId(request));
2088 reportSchedule.addEmailToUser(loggedInUserId, (AppUtils.getUserName(loggedInUserId).length()>0?AppUtils.getUserName(loggedInUserId):(AppUtils.getUserLoginId(loggedInUserId).length()>0?AppUtils.getUserLoginId(loggedInUserId):loggedInUserId) ));
2090 if (action.equals(AppConstants.WA_ADD_USER)) {
2091 //String userId = AppUtils.getRequestNvlValue(request, "schedEmailAdd");
2092 String userName = AppUtils.getUserName(userId);
2093 if (Globals.getUseLoginIdInSchedYN().equals("Y")){
2094 String userLoginId = AppUtils.getUserLoginId(userId);
2095 if (userId.length() > 0 && (userLoginId != null && userLoginId.length() > 0))
2096 reportSchedule.addEmailToUser(userId, userLoginId);
2098 if (userId.length() > 0 && (userName != null && userName.length() > 0) )
2099 reportSchedule.addEmailToUser(userId, userName);
2101 reportSchedule.addEmailToUser(userId, userId);
2105 if (userId.length() > 0 && (userName != null && userName.length() > 0) )
2106 reportSchedule.addEmailToUser(userId, userName);
2108 reportSchedule.addEmailToUser(userId, userId);
2112 } else if (action.equals(AppConstants.WA_DELETE_USER))
2113 reportSchedule.removeEmailToUser(
2114 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2115 else if (action.equals(AppConstants.WA_ADD_ROLE)) {
2116 //String roleId = AppUtils.getRequestNvlValue(request, "schedEmailAddRole");
2117 String roleName = AppUtils.getRoleName(roleId);
2118 if (roleId.length() > 0 && roleName != null)
2119 reportSchedule.addEmailToRole(roleId, roleName);
2120 } else if (action.equals(AppConstants.WA_DELETE_ROLE))
2121 reportSchedule.removeEmailToRole(
2122 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2123 request.getSession().setAttribute(AppConstants.SI_REPORT_SCHEDULE, reportSchedule);
2125 } // processAdhocSchedule
2127 private boolean processSchedule(HttpServletRequest request, String action)
2129 // Added for form field chaining in schedule tab so that setParamValues() is called
2130 request.setAttribute(AppConstants.SCHEDULE_ACTION, "Y");
2131 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
2132 AppConstants.SI_REPORT_DEFINITION);
2133 ReportSchedule reportSchedule = rdef.getReportSchedule();
2134 reportSchedule.setScheduleUserID(AppUtils.getUserID(request));
2135 reportSchedule.setSchedEnabled(
2136 nvl(AppUtils.getRequestValue(request, "schedEnabled"), "N"));
2137 reportSchedule.setStartDate(
2138 AppUtils.getRequestNvlValue(request, "schedStartDate"));
2139 reportSchedule.setEndDate(
2140 AppUtils.getRequestNvlValue(request, "schedEndDate"));
2141 reportSchedule.setEndHour(AppUtils.getRequestNvlValue(request, "schedEndHour"));
2142 reportSchedule.setEndMin(AppUtils.getRequestNvlValue(request, "schedEndMin"));
2143 reportSchedule.setEndAMPM(AppUtils.getRequestNvlValue(request, "schedEndAMPM"));
2145 reportSchedule.setRunDate(
2146 AppUtils.getRequestNvlValue(request, "schedRunDate").length()>0?AppUtils.getRequestNvlValue(request, "schedRunDate"):AppUtils.getRequestNvlValue(request, "schedStartDate"));
2147 reportSchedule.setRunHour(AppUtils.getRequestNvlValue(request, "schedHour"));
2148 reportSchedule.setRunMin(AppUtils.getRequestNvlValue(request, "schedMin"));
2149 reportSchedule.setRunAMPM(AppUtils.getRequestNvlValue(request, "schedAMPM"));
2150 reportSchedule.setRecurrence(
2151 AppUtils.getRequestNvlValue(request, "schedRecurrence"));
2152 reportSchedule.setConditional(
2153 nvl(AppUtils.getRequestValue(request, "conditional"), "N"));
2154 reportSchedule.setConditionSQL(
2155 AppUtils.getRequestNvlValue(request, "conditionSQL"));
2156 reportSchedule.setNotify_type(
2157 AppUtils.getRequestNvlValue(request, "notify_type"));
2158 reportSchedule.setDownloadLimit(
2159 AppUtils.getRequestNvlValue(request, "downloadLimit"));
2160 reportSchedule.setFormFields(
2161 AppUtils.getRequestNvlValue(request, "formFields"));
2162 reportSchedule.setAttachmentMode(
2163 AppUtils.getRequestNvlValue(request, "sendAttachment"));
2165 reportSchedule.setEncryptMode(
2166 AppUtils.getRequestNvlValue(request, "encryptMode"));
2167 if (action.equals(AppConstants.WA_ADD_USER)) {
2168 String userId = AppUtils.getRequestNvlValue(request, "schedEmailAdd");
2169 String userName = AppUtils.getUserName(userId);
2170 if (Globals.getUseLoginIdInSchedYN().equals("Y")){
2171 String userLoginId = AppUtils.getUserLoginId(userId);
2172 if (userId.length() > 0 && (userLoginId != null && userLoginId.length() > 0))
2173 reportSchedule.addEmailToUser(userId, userLoginId);
2175 if (userId.length() > 0 && (userName != null && userName.length() > 0) )
2176 reportSchedule.addEmailToUser(userId, userName);
2178 reportSchedule.addEmailToUser(userId, userId);
2182 if (userId.length() > 0 && (userName != null && userName.length() > 0) )
2183 reportSchedule.addEmailToUser(userId, userName);
2185 reportSchedule.addEmailToUser(userId, userId);
2188 } else if (action.equals(AppConstants.WA_DELETE_USER))
2189 reportSchedule.removeEmailToUser(
2190 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2191 else if (action.equals(AppConstants.WA_ADD_ROLE)) {
2192 String roleId = AppUtils.getRequestNvlValue(request, "schedEmailAddRole");
2193 String roleName = AppUtils.getRoleName(roleId);
2194 if (roleId.length() > 0 && roleName != null)
2195 reportSchedule.addEmailToRole(roleId, roleName);
2196 } else if (action.equals(AppConstants.WA_DELETE_ROLE))
2197 reportSchedule.removeEmailToRole(
2198 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2201 } // processSchedule
2203 private boolean processUserAccess(HttpServletRequest request, String action)
2205 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
2206 AppConstants.SI_REPORT_DEFINITION);
2208 String ownerID = AppUtils.getRequestNvlValue(request, "reportOwner");
2209 String rPublic = nvl(AppUtils.getRequestValue(request, "public"), "N");
2211 boolean reportUpdated = (!(ownerID.equals(nvl(rdef.getOwnerID())) && rPublic
2212 .equals(rdef.isPublic() ? "Y" : "N")));
2214 rdef.getReportSecurity().setOwnerID(ownerID);
2215 rdef.setPublic(rPublic.equals("Y"));
2217 if (action.equals(AppConstants.WA_ADD_USER))
2218 rdef.getReportSecurity().addUserAccess(
2219 AppUtils.getRequestNvlValue(request, "newUserId"), "Y");
2220 else if (action.equals(AppConstants.WA_DELETE_USER))
2221 rdef.getReportSecurity().removeUserAccess(
2222 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2223 else if (action.equals(AppConstants.WA_GRANT_USER))
2224 rdef.getReportSecurity().updateUserAccess(
2225 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID), "N");
2226 else if (action.equals(AppConstants.WA_REVOKE_USER))
2227 rdef.getReportSecurity().updateUserAccess(
2228 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID), "Y");
2229 else if (action.equals(AppConstants.WA_ADD_ROLE))
2230 rdef.getReportSecurity().addRoleAccess(
2231 AppUtils.getRequestNvlValue(request, "newRoleId"), "Y");
2232 else if (action.equals(AppConstants.WA_DELETE_ROLE))
2233 rdef.getReportSecurity().removeRoleAccess(
2234 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID));
2235 else if (action.equals(AppConstants.WA_GRANT_ROLE))
2236 rdef.getReportSecurity().updateRoleAccess(
2237 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID), "N");
2238 else if (action.equals(AppConstants.WA_REVOKE_ROLE))
2239 rdef.getReportSecurity().updateRoleAccess(
2240 AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID), "Y");
2242 return reportUpdated;
2243 } // processUserAccess
2245 private boolean processClearLog(HttpServletRequest request) throws Exception {
2246 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
2247 AppConstants.SI_REPORT_DEFINITION);
2248 String user_id = AppUtils.getUserID(request);
2249 // Modified so that only the logged in user entries are erased. - Sundar
2250 ReportLoader.clearReportLogEntries(rdef.getReportID(), user_id);
2252 } // processClearLog
2254 private boolean processValidateSQL(HttpServletRequest request) throws Exception {
2255 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
2256 AppConstants.SI_REPORT_DEFINITION);
2258 String sql = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "reportSQL"));
2259 request.setAttribute("sqlValidated", "N");
2260 rdef.parseReportSQL(sql);
2261 request.setAttribute("sqlValidated", "Y");
2264 } // processValidateSQL
2267 /*****For Report Maps - Start******/
2268 private boolean processMap(HttpServletRequest request, String action) throws Exception {
2269 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(
2270 AppConstants.SI_REPORT_DEFINITION);
2272 org.onap.portalsdk.analytics.xmlobj.ReportMap repMap = rdef.getReportMap();
2273 //clearing already added
2274 if (repMap != null){
2275 repMap.getMarkers().removeAll(repMap.getMarkers());
2277 String addressColumn = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "addressColumn0"));
2278 System.out.println(" #$%#$%#$% -- address col = " + addressColumn);
2279 String dataColumn = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "dataColumn0"));
2280 String legendColumn = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "legendColumn"));
2281 //String legendDisplayName = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "dataHeaderL"));
2282 //if(nvl(legendDisplayName).length()<=0) legendDisplayName = legendColumn;
2283 String color = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "markerColor0"));
2284 String isMapAllowed = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "isMapAllowed"));
2285 String useDefaultSize = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "useDefaultSize"));
2286 String height = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "height"));
2287 String width = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "width"));
2288 System.out.println(" #$%#$%#$% -- useDefaultSize="+ useDefaultSize+" height = " + height+" width="+width);
2290 String addAddress = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "addAddress"));
2291 String latCol = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "latColumn"));
2292 String longCol = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "longColumn"));
2293 String colorCol = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "colorColumn"));
2294 if (isMapAllowed.equals(""))
2296 if (useDefaultSize.equals(""))
2297 useDefaultSize = "N";
2299 rdef.setReportMap(new ObjectFactory().createReportMap());
2301 repMap.setAddressColumn(addressColumn);
2302 repMap.setDataColumn(dataColumn);
2303 repMap.setIsMapAllowedYN(isMapAllowed);
2304 repMap.setUseDefaultSize(useDefaultSize);
2305 repMap.setMarkerColor(color);
2306 repMap.setAddAddressInDataYN(addAddress);
2307 repMap.setLatColumn(latCol);
2308 repMap.setLongColumn(longCol);
2309 repMap.setColorColumn(colorCol);
2310 repMap.setHeight(height.trim());
2311 repMap.setWidth(width.trim());
2312 repMap.setLegendColumn(legendColumn);
2313 //repMap.setLegendDisplayName(legendDisplayName);
2315 Marker m = new ObjectFactory().createMarker();
2316 m.setAddressColumn(addressColumn);
2317 m.setDataColumn(dataColumn);
2318 repMap.getMarkers().add(m);
2319 String markerCountString = AppUtils.getRequestNvlValue(request, "markerCount");
2320 int markerCount = 0;
2321 if (markerCountString != null && markerCountString.equals("") == false){
2322 markerCount = new Integer(markerCountString).intValue();
2324 for (int i = 1; i < markerCount; i ++){
2325 String additionalAddressColumn = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "addressColumn" + i));
2326 String additionalDataHeader = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "dataHeader" + i));
2327 String additionalData = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "dataColumn" + i));
2328 String additionalColor = XSSFilter.filterRequestOnlyScript(AppUtils.getRequestNvlValue(request, "markerColor" + i));
2329 if (additionalAddressColumn.equals("1") == false){
2330 m = new ObjectFactory().createMarker();
2331 m.setAddressColumn(additionalAddressColumn);
2332 m.setDataHeader(additionalDataHeader);
2333 m.setDataColumn(additionalData);
2334 m.setMarkerColor(additionalColor);
2335 repMap.getMarkers().add(m);
2342 /*****For Report Maps - End******/
2345 } // WizardProcessor