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.system.fusion.web;
40 import java.io.IOException;
41 import java.io.OutputStreamWriter;
42 import java.io.PrintWriter;
43 import java.io.StringWriter;
44 import java.io.Writer;
45 import java.lang.reflect.InvocationTargetException;
46 import java.lang.reflect.Method;
47 import java.util.ArrayList;
48 import java.util.Enumeration;
49 import java.util.HashMap;
50 import java.util.HashSet;
51 import java.util.Iterator;
52 import java.util.List;
54 import java.util.Vector;
56 import javax.servlet.ServletContext;
57 import javax.servlet.http.HttpServletRequest;
58 import javax.servlet.http.HttpServletResponse;
59 import javax.servlet.http.HttpSession;
61 import org.onap.portalsdk.analytics.controller.Action;
62 import org.onap.portalsdk.analytics.controller.ErrorHandler;
63 import org.onap.portalsdk.analytics.controller.WizardSequence;
64 import org.onap.portalsdk.analytics.error.RaptorException;
65 import org.onap.portalsdk.analytics.error.RaptorRuntimeException;
66 import org.onap.portalsdk.analytics.error.ReportSQLException;
67 import org.onap.portalsdk.analytics.model.DataCache;
68 import org.onap.portalsdk.analytics.model.ReportHandler;
69 import org.onap.portalsdk.analytics.model.ReportLoader;
70 import org.onap.portalsdk.analytics.model.base.IdNameList;
71 import org.onap.portalsdk.analytics.model.base.IdNameValue;
72 import org.onap.portalsdk.analytics.model.base.ReportUserRole;
73 import org.onap.portalsdk.analytics.model.definition.DrillDownParamDef;
74 import org.onap.portalsdk.analytics.model.definition.ReportDefinition;
75 import org.onap.portalsdk.analytics.model.definition.ReportLogEntry;
76 import org.onap.portalsdk.analytics.model.definition.SecurityEntry;
77 import org.onap.portalsdk.analytics.model.definition.wizard.ColumnEditJSON;
78 import org.onap.portalsdk.analytics.model.definition.wizard.ColumnJSON;
79 import org.onap.portalsdk.analytics.model.definition.wizard.DefinitionJSON;
80 import org.onap.portalsdk.analytics.model.definition.wizard.FormEditJSON;
81 import org.onap.portalsdk.analytics.model.definition.wizard.FormFieldGroupsJSON;
82 import org.onap.portalsdk.analytics.model.definition.wizard.IdNameBooleanJSON;
83 import org.onap.portalsdk.analytics.model.definition.wizard.ImportJSON;
84 import org.onap.portalsdk.analytics.model.definition.wizard.MessageJSON;
85 import org.onap.portalsdk.analytics.model.definition.wizard.NameBooleanJSON;
86 import org.onap.portalsdk.analytics.model.definition.wizard.QueryJSON;
87 import org.onap.portalsdk.analytics.model.definition.wizard.QueryResultJSON;
88 import org.onap.portalsdk.analytics.model.definition.wizard.RaptorResponse;
89 import org.onap.portalsdk.analytics.model.definition.wizard.SearchFieldJSON;
90 import org.onap.portalsdk.analytics.model.pdf.PdfReportHandler;
91 import org.onap.portalsdk.analytics.model.runtime.CategoryAxisJSON;
92 import org.onap.portalsdk.analytics.model.runtime.ChartJSON;
93 import org.onap.portalsdk.analytics.model.runtime.ErrorJSONRuntime;
94 import org.onap.portalsdk.analytics.model.runtime.FormField;
95 import org.onap.portalsdk.analytics.model.runtime.RangeAxisJSON;
96 import org.onap.portalsdk.analytics.model.runtime.ReportFormFields;
97 import org.onap.portalsdk.analytics.model.runtime.ReportRuntime;
98 import org.onap.portalsdk.analytics.system.AppUtils;
99 import org.onap.portalsdk.analytics.system.ConnectionUtils;
100 import org.onap.portalsdk.analytics.system.DbUtils;
101 import org.onap.portalsdk.analytics.system.Globals;
102 import org.onap.portalsdk.analytics.util.AppConstants;
103 import org.onap.portalsdk.analytics.util.DataSet;
104 import org.onap.portalsdk.analytics.util.Utils;
105 import org.onap.portalsdk.analytics.util.XSSFilter;
106 import org.onap.portalsdk.analytics.view.ReportData;
107 import org.onap.portalsdk.analytics.xmlobj.DataColumnType;
108 import org.onap.portalsdk.analytics.xmlobj.FormFieldType;
109 import org.onap.portalsdk.analytics.xmlobj.ObjectFactory;
110 import org.onap.portalsdk.analytics.xmlobj.PredefinedValueList;
111 import org.onap.portalsdk.analytics.xmlobj.SemaphoreList;
112 import org.onap.portalsdk.core.controller.RestrictedBaseController;
113 import org.onap.portalsdk.core.domain.User;
114 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
115 import org.onap.portalsdk.core.util.SecurityCodecUtil;
116 import org.onap.portalsdk.core.web.support.UserUtils;
117 import org.owasp.esapi.ESAPI;
118 import org.springframework.stereotype.Controller;
119 import org.springframework.web.bind.annotation.CrossOrigin;
120 import org.springframework.web.bind.annotation.PathVariable;
121 import org.springframework.web.bind.annotation.RequestBody;
122 import org.springframework.web.bind.annotation.RequestMapping;
123 import org.springframework.web.bind.annotation.GetMapping;
124 import org.springframework.web.bind.annotation.PostMapping;
125 import org.springframework.web.bind.annotation.PutMapping;
126 import org.springframework.web.bind.annotation.RequestMethod;
127 import org.springframework.web.bind.annotation.ResponseBody;
129 import com.fasterxml.jackson.databind.DeserializationFeature;
130 import com.fasterxml.jackson.databind.ObjectMapper;
131 import com.fasterxml.jackson.databind.SerializationFeature;
135 public class RaptorControllerAsync extends RestrictedBaseController {
137 private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(RaptorControllerAsync.class);
138 private static final String INVALID_ACTION = "[Controller.processRequest]Invalid raptor action [";
139 private static final String UNABLE_INSTANTIATE = "[Controller.processRequest] Unable to instantiate and invoke action handler. Exception: ";
141 private String viewName;
143 @GetMapping(value = { "/raptor.htm" })
144 public void RaptorSearch(HttpServletRequest request, HttpServletResponse response)
145 throws IOException, RaptorException {
148 String actionKey = nvl(request.getParameter(AppConstants.RI_ACTION), request.getParameter("action"));
149 actionKey = nvl(actionKey, "report.run");
151 HttpSession session = request.getSession();
152 User user = UserUtils.getUserSession(request);
153 boolean isPageDownload = Boolean.valueOf(request.getParameter(AppConstants.PAGE_DOWNLOAD));
154 if ("report.download.excel2007.session".equals(actionKey) || "report.download.csv.session".equals(actionKey)
155 || "report.download.excel.session".equals(actionKey)
156 || "report.download.pdf.session".equals(actionKey)) {
157 if (session != null && user != null) {
158 ServletContext servletContext = request.getSession().getServletContext();
159 if (!Globals.isSystemInitialized()) {
160 Globals.initializeSystem(servletContext);
162 ReportRuntime rr = null;
163 ReportData rd = null;
166 if (!"N".equals(nvl(request.getParameter("parent"), "")))
167 parent = nvl(request.getParameter("parent"), "");
168 if (parent.startsWith("parent_"))
170 if (parentFlag == 1) {
171 rr = (ReportRuntime) request.getSession().getAttribute(parent + "_rr");
172 rd = (ReportData) request.getSession().getAttribute(parent + "_rd");
175 boolean isEmbedded = false;
176 Object temp = request.getSession().getAttribute("isEmbedded");
178 isEmbedded = (boolean) temp;
181 String reportID = AppUtils.getRequestValue(request, AppConstants.RI_REPORT_ID);
183 rr = (ReportRuntime) ((HashMap) request.getSession()
184 .getAttribute(AppConstants.EMBEDDED_REPORTRUNTIME_MAP)).get(reportID);
186 rd = (ReportData) ((HashMap) request.getSession()
187 .getAttribute(AppConstants.EMBEDDED_REPORTDATA_MAP)).get(reportID);
190 rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
192 rd = (ReportData) request.getSession().getAttribute(AppConstants.RI_REPORT_DATA);
194 String userId = AppUtils.getUserID(request);
195 int downloadLimit = 0;
197 downloadLimit = (rr.getMaxRowsInExcelDownload() > 0) ? rr.getMaxRowsInExcelDownload()
198 : Globals.getDownloadLimit();
199 if ("report.csv.download".equals(actionKey))
200 downloadLimit = Globals.getCSVDownloadLimit();
202 final boolean isDashboard = (session.getAttribute(AppConstants.SI_DASHBOARD_REP_ID) != null) &&
203 (((String) session.getAttribute(AppConstants.SI_DASHBOARD_REP_ID)).equals(rr.getReportID()));
207 String sql_whole = rr.getReportDataSQL(userId, downloadLimit, request);
208 request.setAttribute(AppConstants.RI_REPORT_SQL_WHOLE, sql_whole);
212 OutputStreamWriter out = new OutputStreamWriter(response.getOutputStream());
214 rr.setSinglePageDownload(isPageDownload);
215 if ("report.download.pdf.session".equals(actionKey)) {
216 new PdfReportHandler().createPdfFileContent(request, response, 3);
217 } else if ("report.download.csv.session".equals(actionKey)) {
218 (new ReportHandler()).createCSVFileContent(out, rd, rr, request, response);
219 } else if ("report.download.excel.session".equals(actionKey)) {
220 new ReportHandler().createExcelFileContent(out, rd, rr, request, response, userId, 3);
222 new ReportHandler().createExcel2007FileContent(out, rd, rr, request, response, userId, 3);
224 } catch (Exception e) {
225 logger.error(EELFLoggerDelegate.errorLogger,
226 INVALID_ACTION + actionKey + "].", e);
229 response.sendRedirect("login.htm");
232 if (session != null && user != null) {
233 Action action = null;
234 ServletContext servletContext = request.getSession().getServletContext();
235 if (!Globals.isSystemInitialized()) {
236 Globals.initializeSystem(servletContext);
239 action = Globals.getRaptorActionMapping().getAction(actionKey);
241 throw new RaptorRuntimeException("Action not found");
242 } catch (RaptorException e) {
243 logger.error(EELFLoggerDelegate.errorLogger,
244 INVALID_ACTION + actionKey + "].", e);
246 viewName = (new ErrorHandler()).processFatalErrorJSON(request,
247 new RaptorRuntimeException(INVALID_ACTION + actionKey
248 + "]. Exception: " + e.getMessage()));
252 Class[] paramTypes = new Class[2];
253 paramTypes[0] = Class.forName("javax.servlet.http.HttpServletRequest");
254 paramTypes[1] = Class.forName("java.lang.String");
256 Class handlerClass = Class.forName(action.getControllerClass());
257 Object handler = handlerClass.newInstance();
258 Method handlerMethod = handlerClass.getMethod(action.getControllerMethod(), paramTypes);
260 Object[] paramValues = new Object[2];
261 paramValues[0] = request;
262 paramValues[1] = action.getJspName();
265 viewName = (String) handlerMethod.invoke(handler, paramValues);
266 if (!"chart.run".equals(actionKey))
267 response.setContentType("application/json");
269 response.setContentType("text/html");
271 } catch (ClassNotFoundException e) {
272 logger.debug(EELFLoggerDelegate.debugLogger, (INVALID_ACTION
273 + actionKey + "]. ClassNotFoundException: " + e.getMessage()));
274 viewName = (new ErrorHandler()).processFatalErrorJSON(request,
275 new RaptorRuntimeException(UNABLE_INSTANTIATE + e.getMessage()));
276 } catch (IllegalAccessException e) {
277 logger.debug(EELFLoggerDelegate.debugLogger, (INVALID_ACTION
278 + actionKey + "]. IllegalAccessException: " + e.getMessage()));
279 viewName = (new ErrorHandler()).processFatalErrorJSON(request,
280 new RaptorRuntimeException(UNABLE_INSTANTIATE + e.getMessage()));
281 } catch (InstantiationException e) {
282 logger.debug(EELFLoggerDelegate.debugLogger, (INVALID_ACTION
283 + actionKey + "]. InstantiationException: " + e.getMessage()));
284 viewName = (new ErrorHandler()).processFatalErrorJSON(request,
285 new RaptorRuntimeException(UNABLE_INSTANTIATE + e.getMessage()));
286 } catch (NoSuchMethodException e) {
287 logger.debug(EELFLoggerDelegate.debugLogger, (INVALID_ACTION
288 + actionKey + "]. NoSuchMethodException: " + e.getMessage()));
289 viewName = (new ErrorHandler()).processFatalErrorJSON(request,
290 new RaptorRuntimeException(UNABLE_INSTANTIATE + e.getMessage()));
291 } catch (InvocationTargetException e) {
292 logger.debug(EELFLoggerDelegate.debugLogger, (INVALID_ACTION
293 + actionKey + "]. InvocationTargetException: " + e.getMessage()));
294 viewName = (new ErrorHandler()).processFatalErrorJSON(request,
295 new RaptorRuntimeException(UNABLE_INSTANTIATE + e.getMessage()));
297 PrintWriter out = response.getWriter();
301 PrintWriter out = response.getWriter();
302 out.write("session has timed out for user");
308 @GetMapping(value = "/report/wizard/drill_down_param/{parameter}", produces = "application/json")
309 public @ResponseBody List<DrillDownParamDef> getDrillDownParamDef (@PathVariable("parameter") String parameter, HttpServletRequest request, HttpServletResponse response)
311 List<DrillDownParamDef> list = new ArrayList<>();
312 String[] tmepArray = null;
314 tmepArray = parameter.split("&");
316 for(String str:tmepArray){
317 list.add(new DrillDownParamDef(str));
322 @GetMapping(value = "/report/wizard/list_columns", produces = "application/json")
323 public @ResponseBody ArrayList<ColumnJSON> listColumns(HttpServletRequest request, HttpServletResponse response)
325 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
326 List<DataColumnType> reportColumnList = rdef.getAllColumns();
327 ArrayList<ColumnJSON> listJSON = new ArrayList<>();
328 ColumnJSON columnJSON;
330 for (DataColumnType reportColumnType : reportColumnList) {
331 columnJSON = new ColumnJSON();
332 columnJSON.setId(reportColumnType.getColId());
333 columnJSON.setName(reportColumnType.getDisplayName());
334 listJSON.add(columnJSON);
339 @GetMapping(value = "/report/wizard/list_drilldown_reports", produces = "application/json")
340 public @ResponseBody ArrayList<ColumnJSON> list_drilldown_reports(HttpServletRequest request,
341 HttpServletResponse response) throws RaptorException {
342 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
343 Vector<IdNameValue> publicReportIdNames = DataCache.getPublicReportIdNames();
344 Vector groupReportIdNames = DataCache.getGroupAccessibleReportIdNames(AppUtils.getUserID(request),
345 AppUtils.getUserRoles(request));
346 Vector privateReportIdNames = DataCache.getPrivateAccessibleReportIdNames(AppUtils.getUserID(request),
347 AppUtils.getUserRoles(request));
349 ArrayList<ColumnJSON> listJSON = new ArrayList<>();
350 ColumnJSON columnJSON;
352 ServletContext servletContext = request.getSession().getServletContext();
353 if (!Globals.isSystemInitialized()) {
354 Globals.initializeSystem(servletContext);
357 for (int i = 0; i < publicReportIdNames.size(); i++) {
358 IdNameValue reportIdName = publicReportIdNames.get(i);
359 columnJSON = new ColumnJSON();
360 columnJSON.setId(reportIdName.getId());
361 columnJSON.setName("Public Report: " + reportIdName.getName());
362 if (!rdef.getReportID().equals(reportIdName.getId()))
363 listJSON.add(columnJSON);
366 for (int i = 0; i < groupReportIdNames.size(); i++) {
367 IdNameValue reportIdName = (IdNameValue) groupReportIdNames.get(i);
368 columnJSON = new ColumnJSON();
369 columnJSON.setId(reportIdName.getId());
370 columnJSON.setName("Group Report: " + reportIdName.getName());
371 if (!rdef.getReportID().equals(reportIdName.getId()))
372 listJSON.add(columnJSON);
375 for (int i = 0; i < privateReportIdNames.size(); i++) {
376 IdNameValue reportIdName = (IdNameValue) privateReportIdNames.get(i);
377 columnJSON = new ColumnJSON();
378 columnJSON.setId(reportIdName.getId());
379 columnJSON.setName("Private Report: " + reportIdName.getName());
380 if (!rdef.getReportID().equals(reportIdName.getId()))
381 listJSON.add(columnJSON);
387 @GetMapping(value = "/report/wizard/list_formfields", produces = "application/json")
388 public @ResponseBody ArrayList<SearchFieldJSON> listFormFields(HttpServletRequest request,
389 HttpServletResponse response) {
390 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
391 ArrayList<SearchFieldJSON> listJSON = new ArrayList<>();
392 SearchFieldJSON fieldJSON;
393 if (rdef.getFormFieldList() != null) {
394 for (Iterator iter = rdef.getFormFieldList().getFormField().iterator(); iter.hasNext();) {
395 fieldJSON = new SearchFieldJSON();
396 FormFieldType fft = (FormFieldType) iter.next();
397 String fieldId = fft.getFieldId();
398 String fieldDisplay = fft.getFieldName();
399 fieldJSON.setId(fieldId);
400 fieldJSON.setName(fieldDisplay);
401 fieldJSON.setOrderSeq(fft.getOrderBySeq());
402 listJSON.add(fieldJSON);
409 @GetMapping(value = "/report/wizard/list_child_report_col/{reportID}", produces = "application/json")
410 public @ResponseBody ArrayList<ColumnJSON> listChildReportCols(@PathVariable("reportID") String reportID,
411 HttpServletRequest request, HttpServletResponse response) throws RaptorException {
412 ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, reportID, false);
414 List<DataColumnType> reportColumnList = ddRr.getAllColumns();
415 ArrayList<ColumnJSON> listJSON = new ArrayList<>();
416 ColumnJSON columnJSON;
418 for (DataColumnType reportColumnType : reportColumnList) {
419 columnJSON = new ColumnJSON();
420 columnJSON.setId(reportColumnType.getColId());
421 columnJSON.setName(reportColumnType.getColName());
422 listJSON.add(columnJSON);
427 @GetMapping(value = "/report/wizard/list_child_report_ff/{reportID}", produces = "application/json")
428 public @ResponseBody ArrayList<SearchFieldJSON> listChildReportFormFields(@PathVariable("reportID") String reportID,
429 HttpServletRequest request, HttpServletResponse response) throws RaptorException {
430 ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, reportID, false);
431 ArrayList<SearchFieldJSON> listJSON = new ArrayList<>();
432 SearchFieldJSON fieldJSON;
434 ReportFormFields ddReportFormFields = ddRr.getReportFormFields();
435 if (ddReportFormFields != null) {
436 for (ddReportFormFields.resetNext(); ddReportFormFields.hasNext();) {
437 FormField ff = ddReportFormFields.getNext();
438 if (!ff.getFieldType().equals(FormField.FFT_BLANK)) {
439 fieldJSON = new SearchFieldJSON();
440 fieldJSON.setId(ff.getFieldName());
441 fieldJSON.setName(ff.getFieldDisplayName());
442 listJSON.add(fieldJSON);
449 @GetMapping(value = "report/wizard/copy_report/{reportID}", produces = "application/json")
450 public @ResponseBody MessageJSON copyReport(@PathVariable("reportID") String reportID, HttpServletRequest request,
451 HttpServletResponse response){
452 MessageJSON messageJSON = new MessageJSON();
455 ReportHandler rh = new ReportHandler();
456 ReportDefinition rdef = rh.loadReportDefinition(request, reportID);
457 rdef.setAsCopy(request);
458 request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
459 request.getSession().setAttribute("COPY_REPORT_EVENT", "true");
460 messageJSON.setMessage("Success- Report Copied.");
461 messageJSON.setAnyStacktrace(rdef.getReportID() + " is Modified and added to session and DB.");
463 } catch (RaptorException e) {
464 request.setAttribute("error_extra_msg", "While copying report " + reportID);
465 messageJSON.setMessage("Failed - While copying report " + reportID);
466 messageJSON.setAnyStacktrace(getStackTrace(e));
467 logger.debug(EELFLoggerDelegate.debugLogger,
468 ("[Controller.processRequest]Invalid raptor action [copyReport]. RaptorException: "
476 @PostMapping(value = "report/wizard/import_report", consumes = "application/json")
477 public @ResponseBody MessageJSON importReport(@RequestBody ImportJSON importJSON, HttpServletRequest request,
478 HttpServletResponse response) {
479 MessageJSON messageJSON = new MessageJSON();
481 String reportXML = importJSON.getReportXML();
483 ReportHandler rh = new ReportHandler();
484 ReportDefinition rdef = rh.createReportDefinition(request, "-1", reportXML);
485 rdef.updateReportDefType();
486 rdef.generateWizardSequence(request);
487 rdef.setReportName("Import: " + rdef.getReportName());
488 rdef.clearAllDrillDowns();
490 request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
492 messageJSON.setMessage("Success- Report imported.");
493 messageJSON.setAnyStacktrace(rdef.getReportID() + " is Modified and added to session and DB.");
495 } catch (RaptorException e) {
496 request.setAttribute("error_extra_msg", "Unable to parse XML. Nested error: ");
497 messageJSON.setMessage("Unable to parse XML. Nested error: ");
498 messageJSON.setAnyStacktrace(getStackTrace(e));
507 @GetMapping(value = "report/wizard/get_formfield_groups_data/{id}")
508 public @ResponseBody FormFieldGroupsJSON getFFGroupsData(@PathVariable Map<String, String> pathVariables,
509 HttpServletRequest request, HttpServletResponse response) throws IOException, RaptorException {
511 FormFieldGroupsJSON formFieldGroupsJSON = new FormFieldGroupsJSON();
512 if (pathVariables.containsKey("id")) {
513 formFieldGroupsJSON.setReportId(pathVariables.get("id"));
514 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
515 ReportRuntime rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
517 if (rdef != null && !rdef.getReportID().equals(formFieldGroupsJSON.getReportId())) {
518 removeVariablesFromSession(request);
519 rdef = (new ReportHandler()).loadReportDefinition(request, formFieldGroupsJSON.getReportId());
520 } else if (rr != null && !rr.getReportID().equals(formFieldGroupsJSON.getReportId())) {
521 removeVariablesFromSession(request);
522 rdef = (new ReportHandler()).loadReportDefinition(request, formFieldGroupsJSON.getReportId());
523 } else if (rdef == null) {
524 rdef = (new ReportHandler()).loadReportDefinition(request, formFieldGroupsJSON.getReportId());
527 formFieldGroupsJSON.setFormFieldGroupsJSON(rdef.getCustomReport().getFormFieldGroupsJSON());
528 formFieldGroupsJSON.setMessage("Success");
530 formFieldGroupsJSON.setErrorMessage("Unable to load report definition for Report ID:"+formFieldGroupsJSON.getReportId());
533 formFieldGroupsJSON.setErrorMessage("Report ID missing in the URL");
535 return formFieldGroupsJSON;
538 @GetMapping(value = "report/wizard/clearSession")
539 public @ResponseBody MessageJSON clearSession(HttpServletRequest request, HttpServletResponse response) {
540 MessageJSON messageJSON = new MessageJSON();
541 removeVariablesFromSession(request);
542 request.getSession().setAttribute("COPY_REPORT_EVENT", "");
543 messageJSON.setMessage("CopyReport Cancelled");
549 @PostMapping(value = "report/wizard/save_formfield_groups_data")
550 public @ResponseBody MessageJSON saveFFGroupsData(@RequestBody FormFieldGroupsJSON formFieldGroupsJSON,
551 HttpServletRequest request, HttpServletResponse response) throws IOException, RaptorException {
553 MessageJSON messageJSON = new MessageJSON();
554 if(formFieldGroupsJSON != null && formFieldGroupsJSON.getReportId() != null) {
555 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
556 ReportRuntime rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
557 if (rdef != null && !rdef.getReportID().equals(formFieldGroupsJSON.getReportId())) {
558 removeVariablesFromSession(request);
559 rdef = (new ReportHandler()).loadReportDefinition(request, formFieldGroupsJSON.getReportId());
560 } else if (rr != null && !rr.getReportID().equals(formFieldGroupsJSON.getReportId())) {
561 removeVariablesFromSession(request);
562 rdef = (new ReportHandler()).loadReportDefinition(request, formFieldGroupsJSON.getReportId());
563 } else if (rdef == null) {
564 rdef = (new ReportHandler()).loadReportDefinition(request, formFieldGroupsJSON.getReportId());
567 rdef.getCustomReport().setFormFieldGroupsJSON(formFieldGroupsJSON.getFormFieldGroupsJSON());
569 persistReportDefinition(request, rdef);
570 messageJSON.setMessage("Success: formfield groups have been updated for report ID:"+rdef.getReportID() +" and added to session and DB.");
571 } catch (Exception ex) {
572 messageJSON.setMessage("Error occured while saving formfield groups data");
573 messageJSON.setAnyStacktrace(getStackTrace(ex));
576 messageJSON.setMessage("Unable to load report definition for Report ID:"+formFieldGroupsJSON.getReportId());
579 messageJSON.setMessage("Report ID missing in the request body.");
584 @PostMapping(value = "report/wizard/save_formfield_tab_data")
585 public @ResponseBody MessageJSON saveFFTabWiseData(@RequestBody FormEditJSON formEditJSON,
586 HttpServletRequest request, HttpServletResponse response) {
587 ReportDefinition rdef = null;
588 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
590 MessageJSON messageJSON = new MessageJSON();
594 String fieldId = formEditJSON.getFieldId();
596 boolean lastUpdateIdFlag = false;
598 if (rdef.getFormFieldList() != null) {
601 // fft.getlastUpdatedFieldId()
603 for (FormFieldType fft : rdef.getFormFieldList().getFormField()) {
605 System.out.println(fft.getFieldId() + " " + fft.getFieldName() + " " + fft.getlastUpdatedFieldId() + " " + formEditJSON.getLastUpdatedFieldId() );
606 if (fft.getFieldId().equals(fieldId) && !lastUpdateIdFlag) {
607 fft.setFieldId(formEditJSON.getLastUpdatedFieldId() != null ? formEditJSON.getLastUpdatedFieldId() : fft.getFieldId());
608 fft.setFieldName(formEditJSON.getFieldName());
609 fft.setFieldType(formEditJSON.getFieldType());
610 fft.setVisible(formEditJSON.isVisible() ? "Y" : "N");
611 fft.setDefaultValue(formEditJSON.getDefaultValue());
612 fft.setFieldDefaultSQL(formEditJSON.getFieldDefaultSQL());
613 fft.setFieldSQL(formEditJSON.getFieldSQL());
614 fft.setValidationType(formEditJSON.getValidationType());
615 fft.setGroupFormField(formEditJSON.isGroupFormField());
616 fft.setOrderBySeq(formEditJSON.getOrderSeq());
617 // clear predefined value
618 PredefinedValueList predefinedValueList = new ObjectFactory().createPredefinedValueList();
619 fft.setPredefinedValueList(predefinedValueList);
621 fft.setlastUpdatedFieldId("Y");
622 lastUpdateIdFlag = true;
624 List<IdNameBooleanJSON> predefList = formEditJSON.getPredefinedValueList();
625 if (predefList != null && predefList.size() > 0) {
626 for (IdNameBooleanJSON item : predefList) {
627 fft.getPredefinedValueList().getPredefinedValue().add(item.getId());
631 for (FormFieldType fft1 : rdef.getFormFieldList().getFormField()) {
633 if(fft1.getlastUpdatedFieldId().equals("Y"))
640 for (FormFieldType fft2 : rdef.getFormFieldList().getFormField()) {
641 fft2.setlastUpdatedFieldId("N");
648 System.out.println(fft.getFieldId() + " " + fft.getFieldName() + " " + fft.getlastUpdatedFieldId() + " " + formEditJSON.getLastUpdatedFieldId() );
652 persistReportDefinition(request, rdef);
653 messageJSON.setMessage("Success formfield Details of given report is saved in session.");
654 messageJSON.setAnyStacktrace(rdef.getReportID() + " is Modified and added to session and DB.");
657 messageJSON.setMessage("Report Definition is not in session");
658 messageJSON.setAnyStacktrace("Report Definition is not in session");
661 } catch (Exception ex) {
662 messageJSON.setMessage("Error occured while formfield details Tab");
663 messageJSON.setAnyStacktrace(getStackTrace(ex));
670 @PostMapping(value = "report/wizard/add_formfield_tab_data")
671 public @ResponseBody MessageJSON addFFTabWiseData(@RequestBody FormEditJSON formEditJSON,
672 HttpServletRequest request, HttpServletResponse response) {
673 ReportDefinition rdef;
674 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
676 MessageJSON messageJSON = new MessageJSON();
679 FormEditJSON wizardJSON = new FormEditJSON();
680 wizardJSON.setTabId("FormEdit");
681 wizardJSON.setTabName("Form Edit");
683 if(rdef.getFormFieldList()==null || rdef.getFormFieldList().getFormField()==null || rdef.getFormFieldList().getFormField().size()==0)
687 int maxFormFieldSeq = 0;
688 for(FormFieldType ffType : rdef.getFormFieldList().getFormField())
690 if(Integer.parseInt(ffType.getFieldId().substring(2)) > maxFormFieldSeq)
692 maxFormFieldSeq = Integer.parseInt(ffType.getFieldId().substring(2));
696 fieldId = "ff"+ maxFormFieldSeq;
698 FormFieldType currField = rdef.addFormFieldType(new ObjectFactory(), "", "", "", "", "", "", "", "", null, null, "","");
699 currField.setFieldId(fieldId);
700 currField.setFieldName(formEditJSON.getFieldName());
701 currField.setFieldType(formEditJSON.getFieldType()==null?null:formEditJSON.getFieldType());
702 currField.setVisible(formEditJSON.isVisible()?"Y":"N");
703 currField.setDefaultValue(formEditJSON.getDefaultValue());
704 currField.setFieldDefaultSQL(formEditJSON.getFieldDefaultSQL());
705 currField.setFieldSQL(formEditJSON.getFieldSQL());
706 currField.setValidationType(formEditJSON.getValidationType());
707 currField.setGroupFormField(formEditJSON.isGroupFormField());
708 persistReportDefinition(request, rdef);
710 messageJSON.setMessage("Success formfield Details of given report is saved in session.");
711 messageJSON.setAnyStacktrace(rdef.getReportID() + " is added to session and DB.");
714 messageJSON.setMessage("Report Definition is not in session");
715 messageJSON.setAnyStacktrace("Report Definition is not in session");
718 } catch (Exception ex) {
719 messageJSON.setMessage("Error occured while formfield details Tab");
720 messageJSON.setAnyStacktrace(getStackTrace(ex));
727 @PostMapping(value = "report/wizard/save_col_tab_data")
728 public @ResponseBody MessageJSON saveColTabWiseData(@RequestBody ColumnEditJSON columnEditJSON,
729 HttpServletRequest request, HttpServletResponse response) {
730 ReportDefinition rdef;
731 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
733 MessageJSON messageJSON = new MessageJSON();
737 String colId = columnEditJSON.getColId();
738 List<DataColumnType> reportColumnList = rdef.getAllColumns();
739 rdef.setSemaphoreList(columnEditJSON.getSemaphoreList());
742 for (DataColumnType reportColumnType : reportColumnList) {
744 if (reportColumnType.getColId().equals(colId)) {
745 reportColumnType.setColName(columnEditJSON.getColName());
746 reportColumnType.setDependsOnFormField(columnEditJSON.getDepeondsOnForField()==null?"":columnEditJSON.getDepeondsOnForField());
747 reportColumnType.setColType(columnEditJSON.getDataType()==null?"":columnEditJSON.getDataType());
748 reportColumnType.setDbColName(columnEditJSON.getDataType()==null?"":columnEditJSON.getDataType());
749 reportColumnType.setGroupByPos(columnEditJSON.getGroupByPos());
750 reportColumnType.setSubTotalCustomText(columnEditJSON.getSubTotalCustomText());
751 reportColumnType.setHideRepeatedKey(columnEditJSON.isHideRepeatedKey());
752 reportColumnType.setLevel(columnEditJSON.getLevel());
753 reportColumnType.setColspan(columnEditJSON.getColspan());
754 reportColumnType.setDisplayName(columnEditJSON.getDisplayName());
755 reportColumnType.setDisplayWidthInPxls(columnEditJSON.getDisplayWidthInPixel()==null?null:String.valueOf(columnEditJSON.getDisplayWidthInPixel()));
756 reportColumnType.setNowrap(columnEditJSON.getNoWrap());
757 reportColumnType.setIndentation(columnEditJSON.getIndentation());
758 reportColumnType.setDisplayAlignment(columnEditJSON.getDisplayAlignment());
759 reportColumnType.setDisplayHeaderAlignment(columnEditJSON.getDisplayHeaderAlignment());
760 reportColumnType.setIsSortable(columnEditJSON.isSortable());
761 reportColumnType.setVisible(columnEditJSON.isVisible());
762 reportColumnType.setDrillDownURL(columnEditJSON.getDrilldownURL());
763 reportColumnType.setDrillDownParams(columnEditJSON.getDrilldownParams());
764 reportColumnType.setDrillDownType(columnEditJSON.getDrilldownType());
765 if(columnEditJSON.getDisplayTotal()!=null)
766 reportColumnType.setDisplayTotal(columnEditJSON.getDisplayTotal());
767 reportColumnType.setSemaphoreId(columnEditJSON.getSemaphoreId());
773 persistReportDefinition(request, rdef);
774 messageJSON.setMessage("Success Column Details of given report is saved in session.");
775 messageJSON.setAnyStacktrace(rdef.getReportID() + " is Modified and added to session and DB.");
778 messageJSON.setMessage("Report Definition is not in session");
779 messageJSON.setAnyStacktrace("");
782 } catch (Exception ex) {
783 messageJSON.setMessage("Error occured while saving column details Tab");
784 messageJSON.setAnyStacktrace(getStackTrace(ex));
792 @PostMapping(value = "report/wizard/save_def_tab_data/{id}")
793 public @ResponseBody MessageJSON saveDefTabWiseData(@PathVariable("id") String id,
794 @RequestBody DefinitionJSON definitionJSON, HttpServletRequest request, HttpServletResponse response)
796 ReportDefinition rdef;
799 MessageJSON messageJSON = new MessageJSON();
801 String copyReportEvent = (String)request.getSession().getAttribute("COPY_REPORT_EVENT");
802 if (id.equals("InSession") || "true".equals(copyReportEvent)) {
803 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
806 } else if (id.equals("Create")) {
807 removeVariablesFromSession(request);
808 rdef = (new ReportHandler()).loadReportDefinition(request, "-1");
810 System.out.println("&&&&&&&&&&&&&&&&&&&&&& CHECK Report Type "
811 + (AppUtils.nvl(rdef.getReportType()).length() <= 0));
813 rdef.setReportType(definitionJSON.getReportType());
815 if (AppUtils.nvl(rdef.getReportType()).length() <= 0) {
816 rdef.setReportType(AppConstants.RT_LINEAR);
817 System.out.println("&&&&&&&&&&&&&&&&&&&&&& ADDED Report Type in session ");
820 } else if (AppUtils.nvl(id).length() > 0) {
821 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
822 rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
824 if (rdef != null && !rdef.getReportID().equals(id)) {
825 request.getSession().removeAttribute(AppConstants.SI_REPORT_DEFINITION);
826 removeVariablesFromSession(request);
827 rdef = (new ReportHandler()).loadReportDefinition(request, id);
828 } else if (rr != null && !rr.getReportID().equals(id)) {
829 request.getSession().removeAttribute(AppConstants.SI_REPORT_RUNTIME);
830 removeVariablesFromSession(request);
831 rdef = (new ReportHandler()).loadReportDefinition(request, id);
832 } else if (rdef == null) {
833 rdef = (new ReportHandler()).loadReportDefinition(request, id);
838 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
844 String reportName = definitionJSON.getReportName();
845 String errorString = "";
846 if (AppUtils.nvl(reportName).length() <= 0)
847 errorString = "ReportName cannot be null;";
848 rdef.setReportName(reportName);
849 rdef.setReportDescr(definitionJSON.getReportDescr());
850 rdef.setReportType(definitionJSON.getReportType());
851 rdef.setDataContainerHeight(definitionJSON.getDataContainerHeight());
852 rdef.setDataContainerWidth(definitionJSON.getDataContainerWidth());
853 if(definitionJSON.getAllowScheduler()!=null)
854 rdef.setAllowSchedule(definitionJSON.getAllowScheduler().equals("Y")?"Y":"N");
857 if(rdef.getReportType().equals(AppConstants.RT_DASHBOARD)){
858 rdef.setDashboardLayoutHTML(definitionJSON.getDashboardLayoutHTML());
859 rdef.getCustomReport().setDashboardLayoutJSON(definitionJSON.getDashboardLayoutJSON());
860 rdef.getCustomReport().setDashBoardReports(definitionJSON.getDashboardReports());
862 String dbInfo = definitionJSON.getDbInfo();
863 rdef.setDBInfo(dbInfo);
865 String schemaSql = Globals.getRemoteDbSchemaSqlWithWhereClause();
866 schemaSql = schemaSql.replace("[schema_id]", dbInfo);
867 String dbType = null;
870 ds = DbUtils.executeQuery(schemaSql);
872 String prefix = "", desc = "";
874 for (int i = 0; i < ds.getRowCount(); i++) {
875 dbType = ds.getItem(i, 2);
878 catch (Exception e) {}
879 rdef.setDBType(dbType);
881 String formHelpText = definitionJSON.getFormHelpText();
882 rdef.setFormHelpText(formHelpText);
884 Integer pageSize = definitionJSON.getPageSize();
886 rdef.setPageSize(pageSize);
888 List<IdNameBooleanJSON> menuIds = definitionJSON.getDisplayArea();
890 for (IdNameBooleanJSON menuId : menuIds) {
891 if (menuId.isSelected()) {
892 rdef.setMenuID(menuId.getName());
899 Boolean hideFormFieldsAfterRun = definitionJSON.getHideFormFieldsAfterRun();
900 rdef.setHideFormFieldAfterRun(hideFormFieldsAfterRun==null?false:hideFormFieldsAfterRun);
901 Integer maxRowsInExcelCSVDownload = definitionJSON.getMaxRowsInExcelCSVDownload();
902 if(maxRowsInExcelCSVDownload!=null)
903 rdef.setMaxRowsInExcelDownload(maxRowsInExcelCSVDownload);
904 Integer frozenColumns = definitionJSON.getFrozenColumns();
905 if(frozenColumns!=null)
906 rdef.setFrozenColumns(frozenColumns);
907 String dataGridAlign = definitionJSON.getDataGridAlign();
908 rdef.setDataGridAlign(dataGridAlign);
909 String emptyMessage = definitionJSON.getEmptyMessage();
910 rdef.setEmptyMessage(emptyMessage);
911 Boolean runtimeColSortDisabled = definitionJSON.getRuntimeColSortDisabled();
912 rdef.setRuntimeColSortDisabled(runtimeColSortDisabled==null?false:runtimeColSortDisabled);
913 Integer numFormCols = definitionJSON.getNumFormCols();
914 if(numFormCols!=null)
915 rdef.setNumFormCols(Integer.toString(numFormCols));
916 String reportTitle = definitionJSON.getReportTitle();
917 rdef.setReportTitle(reportTitle);
918 String reportSubTitle = definitionJSON.getReportSubTitle();
919 rdef.setReportSubTitle(reportSubTitle);
921 List<NameBooleanJSON> displayOptions = definitionJSON.getDisplayOptions();
922 StringBuffer displayOptionStr = new StringBuffer("NNNNNNN");
923 if(displayOptions!=null){
924 for (NameBooleanJSON displayOption : displayOptions) {
925 if (displayOption.isSelected()) {
926 if (displayOption.getName().equals("HideFormFields")) {
927 displayOptionStr.setCharAt(0, 'Y');
928 } else if (displayOption.getName().equals("HideChart")) {
929 displayOptionStr.setCharAt(1, 'Y');
930 } else if (displayOption.getName().equals("HideReportData")) {
931 displayOptionStr.setCharAt(2, 'Y');
932 } else if (displayOption.getName().equals("HideExcel")) {
933 displayOptionStr.setCharAt(5, 'Y');
934 } else if (displayOption.getName().equals("HidePdf")) {
935 displayOptionStr.setCharAt(6, 'Y');
942 if(displayOptionStr!=null)
943 rdef.setDisplayOptions(displayOptionStr.toString());
945 if(definitionJSON.getSizedByContent()!=null)
946 rdef.setSizedByContent(definitionJSON.getSizedByContent().equals("Y")?"Y":"N");
947 if(definitionJSON.getOneTimeRec()!=null)
948 rdef.setIsOneTimeScheduleAllowed(definitionJSON.getOneTimeRec().equals("true")?"Y":"N");
949 if(definitionJSON.getHourlyRec()!=null)
950 rdef.setIsHourlyScheduleAllowed(definitionJSON.getHourlyRec().equals("true")?"Y":"N");
951 if(definitionJSON.getDailyRec()!=null)
952 rdef.setIsDailyScheduleAllowed(definitionJSON.getDailyRec().equals("true")?"Y":"N");
953 if(definitionJSON.getDailyMFRec()!=null)
954 rdef.setIsDailyMFScheduleAllowed(definitionJSON.getDailyMFRec().equals("true")?"Y":"N");
955 if(definitionJSON.getWeeklyRec()!=null)
956 rdef.setIsWeeklyScheduleAllowed(definitionJSON.getWeeklyRec().equals("true")?"Y":"N");
957 if(definitionJSON.getMonthlyRec()!=null)
958 rdef.setIsMonthlyScheduleAllowed(definitionJSON.getMonthlyRec().equals("true")?"Y":"N");
961 //Start - Added new code
962 request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
963 //End - Added new code
964 if (id.equals("Create")) {
965 rdef.persistReport(request);
967 persistReportDefinition(request, rdef);
968 messageJSON.setMessage("Success Definition of given report is saved in session.");
969 messageJSON.setAnyStacktrace((newReport ? " New Report info is added to Session "
970 : rdef.getReportID() + "- is Modified and added to session and DB."));
972 if(rdef.getReportType() != null) {
973 if(rdef.getReportType().equals("Dashboard") && id.equals("Create")) {
974 messageJSON.setAnyStacktrace(rdef.getReportID() + "- is Modified and added to session and DB.");
977 if(request.getSession().getAttribute("COPY_REPORT_EVENT") == "true" || (rdef.getReportType().equals("Dashboard") && id.equals("Create")) ) {
978 removeVariablesFromSession(request);
979 request.getSession().setAttribute("COPY_REPORT_EVENT", "");
982 } catch (Exception ex) {
983 messageJSON.setMessage("Error occured while saving definition Tab");
984 messageJSON.setAnyStacktrace(getStackTrace(ex));
985 logger.error(EELFLoggerDelegate.errorLogger,
986 "[Controller.processRequest]Invalid raptor action [retrieveTabWiseData].", ex);
993 @GetMapping(value = { "/report/wizard/retrieve_form_tab_wise_data/{id}",
994 "/report/wizard/retrieve_form_tab_wise_data/{id}/{action}" })
995 public @ResponseBody FormEditJSON retrieveFormTabWiseData(@PathVariable Map<String, String> pathVariables,
996 HttpServletRequest request, HttpServletResponse response) {
997 ReportDefinition rdef;
1000 String detailId = "";
1001 FormEditJSON wizardJSON = new FormEditJSON();
1002 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1004 if (pathVariables.containsKey("id")) {
1005 id = pathVariables.get("id");
1007 if (pathVariables.containsKey("action")) {
1008 action = pathVariables.get("action");
1011 ServletContext servletContext = request.getSession().getServletContext();
1012 if (!Globals.isSystemInitialized()) {
1013 Globals.initializeSystem(servletContext);
1015 wizardJSON.setTabId("FormEdit");
1016 wizardJSON.setTabName("Form Edit");
1017 FormFieldType currField = null;
1019 if (id.equals("add")) {
1021 currField = rdef.addFormFieldType(new ObjectFactory(), "", "", "", "", "", "", "", "", null, null, "",
1023 wizardJSON.setFieldId(currField.getFieldId());
1024 wizardJSON.setFieldName(currField.getFieldName());
1025 wizardJSON.setFieldType(currField.getFieldType());
1026 wizardJSON.setVisible(AppUtils.nvls(currField.getVisible(), "Y").toUpperCase().startsWith("Y"));
1027 wizardJSON.setDefaultValue(currField.getDefaultValue());
1028 wizardJSON.setFieldDefaultSQL(currField.getFieldDefaultSQL());
1029 wizardJSON.setFieldSQL(currField.getFieldSQL());
1030 wizardJSON.setValidationType(currField.getValidationType());
1031 persistReportDefinition(request, rdef);
1033 } else if (action.equals("delete")) {
1034 rdef.deleteFormField(id);
1035 persistReportDefinition(request, rdef);
1036 wizardJSON.setMessage("Formfield " + detailId + " Deleted");
1038 if (rdef.getFormFieldList() != null) {
1039 for (FormFieldType fft : rdef.getFormFieldList().getFormField()) {
1040 if (fft.getFieldId().equals(id)) {
1041 wizardJSON.setFieldId(fft.getFieldId());
1042 wizardJSON.setFieldName(fft.getFieldName());
1043 wizardJSON.setFieldType(fft.getFieldType());
1044 wizardJSON.setVisible(fft.getVisible().toUpperCase().startsWith("Y"));
1045 wizardJSON.setDefaultValue(fft.getDefaultValue());
1046 wizardJSON.setFieldDefaultSQL(fft.getFieldDefaultSQL());
1047 wizardJSON.setFieldSQL(fft.getFieldSQL());
1048 wizardJSON.setValidationType(fft.getValidationType());
1049 wizardJSON.setGroupFormField(fft.isGroupFormField());
1050 wizardJSON.setOrderSeq(fft.getOrderBySeq());
1051 PredefinedValueList preDefined = fft.getPredefinedValueList();
1053 if (preDefined != null) {
1054 List<IdNameBooleanJSON> preDefinedList = new ArrayList<>();
1055 IdNameBooleanJSON idNameBooleanJSON;
1057 for (String v : preDefined.getPredefinedValue()) {
1058 idNameBooleanJSON = new IdNameBooleanJSON();
1059 idNameBooleanJSON.setId(v);
1060 idNameBooleanJSON.setName(v);
1061 preDefinedList.add(idNameBooleanJSON);
1063 wizardJSON.setPredefinedValueList(preDefinedList);
1068 } catch (Exception ex) {
1069 logger.error(EELFLoggerDelegate.errorLogger,
1070 "[Controller.processRequest]Invalid raptor action [retrieveFormTabWiseData].", ex);
1071 ErrorJSONRuntime errorJSONRuntime = new ErrorJSONRuntime();
1072 errorJSONRuntime.setErrormessage("Error occured while retreiving formedit definition Tab");
1073 errorJSONRuntime.setStacktrace(getStackTrace(ex));
1074 wizardJSON.setErrorMessage("Error occured while retreiving formedit definition Tab");
1075 wizardJSON.setErrorStackTrace(getStackTrace(ex));
1082 @GetMapping(value = { "/report/wizard/retrieve_col_tab_wise_data/{id}" })
1083 public @ResponseBody ColumnEditJSON retrieveColTabWiseData(@PathVariable Map<String, String> pathVariables,
1084 HttpServletRequest request, HttpServletResponse response) {
1085 ReportDefinition rdef;
1087 ColumnEditJSON wizardJSON = new ColumnEditJSON();
1088 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1090 if (pathVariables.containsKey("id")) {
1091 id = pathVariables.get("id");
1093 ServletContext servletContext = request.getSession().getServletContext();
1094 if (!Globals.isSystemInitialized()) {
1095 Globals.initializeSystem(servletContext);
1098 if(rdef.getSemaphoreList() != null) {
1099 wizardJSON.setSemaphoreList(rdef.getSemaphoreList());
1100 }else { wizardJSON.setSemaphoreList(new SemaphoreList()); }
1102 wizardJSON.setTabId("ColEdit");
1103 wizardJSON.setTabName("Column Edit");
1105 List<DataColumnType> reportColumnList = rdef.getAllColumns();
1107 for (DataColumnType reportColumnType : reportColumnList) {
1108 if (reportColumnType.getColId().equals(id)) {
1109 wizardJSON.setColId(reportColumnType.getColId());
1110 wizardJSON.setColName(reportColumnType.getColName());
1111 wizardJSON.setDisplayAlignment(reportColumnType.getDisplayAlignment());
1112 wizardJSON.setDisplayHeaderAlignment(reportColumnType.getDisplayHeaderAlignment());
1113 wizardJSON.setSortable(
1114 reportColumnType.isIsSortable() == null ? false : reportColumnType.isIsSortable());
1115 wizardJSON.setVisible(reportColumnType.isVisible());
1116 wizardJSON.setDrilldownURL(
1117 reportColumnType.getDrillDownURL() == null ? "" : reportColumnType.getDrillDownURL());
1118 wizardJSON.setDrilldownParams(
1119 reportColumnType.getDrillDownParams() == null ? "" : reportColumnType.getDrillDownParams());
1120 wizardJSON.setDrilldownType(
1121 reportColumnType.getDrillDownType() == null ? "" : reportColumnType.getDrillDownType());
1122 wizardJSON.setDataType(reportColumnType.getDbColType() == null ? "" :reportColumnType.getDbColType());
1123 wizardJSON.setGroupByPos(reportColumnType.getGroupByPos());
1124 wizardJSON.setLevel(reportColumnType.getLevel());
1125 wizardJSON.setDisplayWidth(reportColumnType.getDisplayWidth());
1126 wizardJSON.setNoWrap(reportColumnType.getNowrap() == null ? "" : reportColumnType.getNowrap());
1127 wizardJSON.setIndentation(reportColumnType.getIndentation());
1129 wizardJSON.setDepeondsOnForField(reportColumnType.getDependsOnFormField() ==null?"":reportColumnType.getDependsOnFormField());
1130 wizardJSON.setSubTotalCustomText(reportColumnType.getSubTotalCustomText()==null?"":reportColumnType.getSubTotalCustomText());
1132 wizardJSON.setHideRepeatedKey(reportColumnType.isHideRepeatedKey()==null?false:reportColumnType.isHideRepeatedKey());
1133 wizardJSON.setColspan(reportColumnType.getColspan()==null?null:reportColumnType.getColspan());
1134 wizardJSON.setDisplayName(reportColumnType.getDisplayName());
1135 wizardJSON.setDisplayTotal(reportColumnType.getDisplayTotal());
1136 wizardJSON.setSemaphoreId(reportColumnType.getSemaphoreId());
1141 wizardJSON.setErrorMessage("Report is not in session");
1147 @GetMapping(value = { "/report/wizard/retrieve_sql_tab_wise_data/{id}",
1148 "/report/wizard/retrieve_sql_tab_wise_data/" })
1149 public @ResponseBody QueryJSON retrieveSqlTabWiseData(@PathVariable Map<String, String> pathVariables,
1150 HttpServletRequest request, HttpServletResponse response) throws RaptorException {
1151 ReportDefinition rdef = null;
1154 QueryJSON wizardJSON = new QueryJSON();
1156 if (pathVariables.containsKey("id")) {
1157 id = pathVariables.get("id");
1159 ServletContext servletContext = request.getSession().getServletContext();
1160 if (!Globals.isSystemInitialized()) {
1161 Globals.initializeSystem(servletContext);
1163 if (id.equals("InSession") || AppUtils.nvl(id).length() <= 0) {
1164 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1165 } else if (AppUtils.nvl(id).length() > 0) {
1166 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1167 rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
1169 if (rdef != null && !rdef.getReportID().equals(id)) {
1170 request.getSession().removeAttribute(AppConstants.SI_REPORT_DEFINITION);
1171 removeVariablesFromSession(request);
1172 rdef = (new ReportHandler()).loadReportDefinition(request, id);
1173 } else if (rr != null && !rr.getReportID().equals(id)) {
1174 request.getSession().removeAttribute(AppConstants.SI_REPORT_RUNTIME);
1175 removeVariablesFromSession(request);
1176 rdef = (new ReportHandler()).loadReportDefinition(request, id);
1177 } else if (rdef == null) {
1178 rdef = (new ReportHandler()).loadReportDefinition(request, id);
1184 wizardJSON.setTabId("Sql");
1185 wizardJSON.setTabName("Sql");
1186 wizardJSON.setQuery(rdef.getReportSQL());
1191 @GetMapping(value = { "/report/wizard/retrieveTotalForTheColList" })
1192 public @ResponseBody List<IdNameValue> getTotalForTheCol(HttpServletRequest request)
1194 IdNameList idNameList = AppConstants.TOTAL_FUNCTIONS;
1195 List<IdNameValue> list = new ArrayList<>();
1196 for(int i=0; i<idNameList.getCount(); i++)
1197 list.add(idNameList.getValue(i));
1202 @GetMapping(value = { "/report/wizard/security/retrieveReportUserList" })
1203 public @ResponseBody List<SecurityEntry> getReportUserList(HttpServletRequest request)
1204 throws RaptorException {
1205 List<SecurityEntry> reportUserList = new ArrayList<>();
1206 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1207 Vector reportUsers = rdef.getReportUsers(request);
1208 for(Iterator iter=reportUsers.iterator(); iter.hasNext();) {
1209 SecurityEntry rUser = (SecurityEntry) iter.next();
1210 reportUserList.add(rUser);
1212 return reportUserList;
1215 @GetMapping(value = { "/report/wizard/security/retrieveReportRoleList" })
1216 public @ResponseBody List<IdNameValue> getReportRoleList(HttpServletRequest request)
1217 throws RaptorException {
1218 List<IdNameValue> reportRoleList = new ArrayList<>();
1219 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1220 Vector reportRoles = rdef.getReportRoles(request);
1221 Vector remainingRoles = Utils.getRolesNotInList(reportRoles,request);
1222 for(int i=0; i<remainingRoles.size(); i++) {
1223 IdNameValue role = (IdNameValue) remainingRoles.get(i);
1224 reportRoleList.add(role);
1226 return reportRoleList;
1229 @GetMapping(value = { "/report/wizard/security/retrieveReportUserList_query" })
1230 public @ResponseBody List<Map<String, String>> getReportUserListQuery(HttpServletRequest request)
1232 List<Map<String, String>> reportUserList = new ArrayList();
1233 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1234 String reportId = rdef.getReportID();
1235 Map<String, Object> params = new HashMap<>();
1236 params.put("report_id", new Long(reportId));
1237 List<ReportUserRole> queriedUserList = getDataAccessService().executeNamedQuery("getReportSecurityUsers", params, null);
1238 for (int i=0; i<queriedUserList.size();i++){
1239 Map<String, String> reportUser = new HashMap<>();
1240 reportUser.put("rep_id", queriedUserList.get(i).toString());
1241 reportUser.put("order_no", queriedUserList.get(i).getOrderNo().toString());
1242 reportUser.put("user_id", queriedUserList.get(i).getUserId().toString());
1243 reportUser.put("role_id", queriedUserList.get(i).getRoleId().toString());
1244 reportUser.put("read_only_yn", queriedUserList.get(i).getReadOnlyYn());
1245 reportUserList.add(reportUser);
1247 return reportUserList;
1252 @PostMapping(value = "/report/security/addReportUser")
1253 public @ResponseBody Map<String,String> addSelectedReportUser(
1254 @RequestBody String userIdToAdd, HttpServletRequest request, HttpServletResponse response)
1256 Map<String, String> JsonResponse = new HashMap<>();
1257 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1259 JsonResponse.put("status","success");
1260 JsonResponse.put("userId",userIdToAdd);
1261 String action = "Add User";
1262 rdef.getReportSecurity().addUserAccess(userIdToAdd, "Y");
1263 WizardSequence ws = rdef.getWizardSequence();
1264 ws.performAction(action,rdef);
1265 return JsonResponse;
1266 } catch (Exception ex) {
1267 logger.error(EELFLoggerDelegate.errorLogger,
1268 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1273 @PostMapping(value = "/report/security/removeReportUser")
1274 public @ResponseBody Map<String,String> removeSelectedReportUser(
1275 @RequestBody String userIdToRemove, HttpServletRequest request, HttpServletResponse response)
1277 Map<String, String> JsonResponse = new HashMap<>();
1278 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1280 JsonResponse.put("status","success");
1281 JsonResponse.put("userId",userIdToRemove);
1282 String action = "Delete User";
1283 rdef.getReportSecurity().removeUserAccess(userIdToRemove);
1284 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1285 WizardSequence ws = rdef.getWizardSequence();
1286 ws.performAction(action,rdef);
1287 return JsonResponse;
1288 } catch (Exception ex) {
1289 logger.error(EELFLoggerDelegate.errorLogger,
1290 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1295 @PostMapping(value = "/report/security/addReportRole")
1296 public @ResponseBody Map<String,String> addSelectedReportRole(
1297 @RequestBody String roleIdToAdd, HttpServletRequest request, HttpServletResponse response) {
1298 Map<String, String> JsonResponse = new HashMap<>();
1299 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1301 JsonResponse.put("status","success");
1302 JsonResponse.put("roleId",roleIdToAdd);
1303 String action = "Add Role";
1304 rdef.getReportSecurity().addRoleAccess(roleIdToAdd, "Y");
1305 WizardSequence ws = rdef.getWizardSequence();
1306 ws.performAction(action,rdef);
1307 return JsonResponse;
1308 } catch (Exception ex) {
1309 logger.error(EELFLoggerDelegate.errorLogger,
1310 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1315 @PostMapping(value = "/report/security/removeReportRole")
1316 public @ResponseBody Map<String,String> removeSelectedReportRole(
1317 @RequestBody String roleIdToRemove, HttpServletRequest request, HttpServletResponse response)
1319 Map<String, String> JsonResponse = new HashMap<>();
1320 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1322 JsonResponse.put("status","success");
1323 JsonResponse.put("roleId",roleIdToRemove);
1324 String action = "Delete Role";
1325 rdef.getReportSecurity().removeRoleAccess(roleIdToRemove);
1326 WizardSequence ws = rdef.getWizardSequence();
1327 ws.performAction(action,rdef);
1328 return JsonResponse;
1329 } catch (Exception ex) {
1330 logger.error(EELFLoggerDelegate.errorLogger,
1331 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1336 @PostMapping(value = "/report/security/updateReportSecurityInfo")
1337 public @ResponseBody Map<String,String> updateReportSecurityInfo(
1338 @RequestBody Map<String,String> securityInfo, HttpServletRequest request, HttpServletResponse response)
1341 Map<String, String> JsonResponse = new HashMap<>();
1342 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1344 JsonResponse.put("status","success");
1345 String OwnerUserId = securityInfo.get("userId");
1346 String isPublic = securityInfo.get("isPublic");
1347 boolean rPublic = isPublic.equals("true");
1348 rdef.getReportSecurity().setOwnerID(OwnerUserId);
1349 rdef.setPublic(rPublic);
1350 persistReportDefinition(request, rdef);
1351 return JsonResponse;
1353 } catch (Exception ex) {
1354 logger.error(EELFLoggerDelegate.errorLogger,
1355 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1360 @PostMapping(value = "/report/security/toggleUserEditAccess/{userID}")
1361 public @ResponseBody Map<String,String> toggleUserEditAccess(
1362 @PathVariable("userID") String userId,
1363 @RequestBody String readOnly, HttpServletRequest request, HttpServletResponse response)
1365 Map<String, String> JsonResponse = new HashMap<>();
1366 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1369 JsonResponse.put("status","success");
1370 if (readOnly.equals("N")) {
1371 action = "Grant User Access";
1373 action = "Revoke User Access";
1375 rdef.getReportSecurity().updateUserAccess(userId, readOnly);
1376 WizardSequence ws = rdef.getWizardSequence();
1377 ws.performAction(action,rdef);
1379 return JsonResponse;
1380 } catch (Exception ex) {
1381 logger.error(EELFLoggerDelegate.errorLogger,
1382 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1387 @PostMapping(value = "/report/security/toggleRoleEditAccess/{roleID}")
1388 public @ResponseBody Map<String,String> toggleRoleEditAccess(
1389 @PathVariable("roleID") String roleId,
1390 @RequestBody String readOnly, HttpServletRequest request, HttpServletResponse response)
1392 Map<String, String> JsonResponse = new HashMap<>();
1393 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1396 JsonResponse.put("status","success");
1397 if (readOnly.equals("N")) {
1398 action = "Grant Role Access";
1400 action = "Revoke Role Access";
1402 rdef.getReportSecurity().updateRoleAccess(roleId, readOnly);
1403 WizardSequence ws = rdef.getWizardSequence();
1404 ws.performAction(action,rdef);
1406 return JsonResponse;
1407 } catch (Exception ex) {
1408 logger.error(EELFLoggerDelegate.errorLogger,
1409 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1414 @GetMapping(value = { "/report/wizard/security/retrieveReportOwner" })
1415 public @ResponseBody List<IdNameValue> getReportOwnerInList(HttpServletRequest request)
1416 throws RaptorException {
1417 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1419 List<IdNameValue> UserList = new ArrayList<>();
1420 List excludeValues = new java.util.ArrayList();
1421 HttpSession session = request.getSession();
1422 String query = Globals.getCustomizedScheduleQueryForUsers();
1423 session.setAttribute("login_id", AppUtils.getUserBackdoorLoginId(request));
1424 String userId = AppUtils.getUserID(request);
1425 session.setAttribute("LOGGED_USERID", userId);
1426 String[] sessionParameters = Globals.getSessionParams().split(",");
1428 for (int i = 0; i < sessionParameters.length; i++) {
1429 param = (String) session.getAttribute(sessionParameters[0]);
1430 query = Utils.replaceInString(query, "[" + sessionParameters[i].toUpperCase() + "]",
1431 (String) session.getAttribute(sessionParameters[i]));
1433 boolean isAdmin = AppUtils.isAdminUser(request);
1434 Vector allUsers = AppUtils.getAllUsers(query, param, isAdmin);
1436 for (Iterator iter = allUsers.iterator(); iter.hasNext();) {
1437 IdNameValue value = (IdNameValue) iter.next();
1439 boolean exclude = false;
1440 for (Iterator iterE = excludeValues.iterator(); iterE.hasNext();)
1441 if (((IdNameValue) iterE.next()).getId().equals(value.getId())) {
1447 UserList.add(value);
1453 @GetMapping(value = { "/report/wizard/security/getReportSecurityInfo" })
1454 public @ResponseBody Map<String,String> getReportSecurityInfo(HttpServletRequest request)
1456 Map<String, String> securityInfoMap = new HashMap<>();
1457 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1458 String isPublic = Boolean.toString(rdef.isPublic());
1459 String createUser = AppUtils.getUserName(rdef.getCreateID());
1460 String createDate = rdef.getCreateDate();
1461 String updateUser = AppUtils.getUserName(rdef.getUpdateID());
1462 String updateDate = rdef.getUpdateDate();
1463 String ownerId = rdef.getOwnerID();
1465 securityInfoMap.put("isPublic",isPublic);
1466 securityInfoMap.put("createdUser",createUser);
1467 securityInfoMap.put("createdDate",createDate);
1468 securityInfoMap.put("updateUser",updateUser);
1469 securityInfoMap.put("updatedDate",updateDate);
1470 securityInfoMap.put("ownerId",ownerId);
1472 return securityInfoMap;
1475 @GetMapping(value = { "/report/wizard/security/getReportSecurityUsers" })
1476 public @ResponseBody List<SecurityEntry> getReportSecurityUsers(HttpServletRequest request)
1477 throws RaptorException {
1479 List<SecurityEntry> reportUserMapList = new ArrayList<>();
1480 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1481 Vector reportUsers = rdef.getReportUsers(request);
1484 for(Iterator iter=reportUsers.iterator(); iter.hasNext(); iCount++) {
1485 Map<String, String> reportUserMap = new HashMap<>();
1486 SecurityEntry rUser = (SecurityEntry) iter.next();
1487 reportUserMapList.add(rUser);
1490 return reportUserMapList;
1494 @GetMapping(value = { "/report/wizard/security/getReportSecurityRoles" })
1495 public @ResponseBody List<SecurityEntry> getReportSecurityRoles(HttpServletRequest request)
1496 throws RaptorException {
1498 List<SecurityEntry> reportRoleList = new ArrayList<>();
1499 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1500 Vector reportRoles = rdef.getReportRoles(request);
1502 for(Iterator iter=reportRoles.iterator(); iter.hasNext(); ) {
1503 SecurityEntry rRole = (SecurityEntry) iter.next();
1504 reportRoleList.add(rRole);
1507 return reportRoleList;
1511 @GetMapping(value = { "/report/wizard/retrieve_def_tab_wise_data/{id}",
1512 "/report/wizard/retrieve_def_tab_wise_data/{id}/{detailId}" })
1513 public @ResponseBody DefinitionJSON retrieveDefTabWiseData(@PathVariable Map<String, String> pathVariables,
1514 HttpServletRequest request, HttpServletResponse response) throws RaptorException {
1515 ReportDefinition rdef;
1517 String tabId = "Def";
1520 if (pathVariables.containsKey("id")) {
1521 id = pathVariables.get("id");
1524 ServletContext servletContext = request.getSession().getServletContext();
1525 if (!Globals.isSystemInitialized()) {
1526 Globals.initializeSystem(servletContext);
1528 String copyReportEvent = (String)request.getSession().getAttribute("COPY_REPORT_EVENT");
1529 if (tabId.equals("Def") && id.equals("InSession") || "true".equals(copyReportEvent)) {
1530 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1532 } else if (tabId.equals("Def") && id.equals("Create")) {
1533 removeVariablesFromSession(request);
1534 rdef = (new ReportHandler()).loadReportDefinition(request, "-1");
1535 rdef.setReportType(AppConstants.RT_LINEAR);
1537 } else if (tabId.equals("Def") && AppUtils.nvl(id).length() > 0) {
1538 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1539 rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
1541 if (rdef != null && !rdef.getReportID().equals(id)) {
1542 request.getSession().removeAttribute(AppConstants.SI_REPORT_DEFINITION);
1543 removeVariablesFromSession(request);
1544 rdef = (new ReportHandler()).loadReportDefinition(request, id);
1545 request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
1546 } else if (rr != null && !rr.getReportID().equals(id)) {
1547 request.getSession().removeAttribute(AppConstants.SI_REPORT_RUNTIME);
1548 removeVariablesFromSession(request);
1549 rdef = (new ReportHandler()).loadReportDefinition(request, id);
1550 request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
1551 } else if (rdef == null) {
1552 rdef = (new ReportHandler()).loadReportDefinition(request, id);
1553 String session_id = request.getSession().getId();
1554 Object obj = request.getAttributeNames();
1555 request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
1559 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1561 DefinitionJSON wizardJSON = new DefinitionJSON();
1562 if (tabId.equals("Def")) {
1563 wizardJSON.setTabId("Def");
1564 wizardJSON.setTabName("Definition");
1565 wizardJSON.setChartType(rdef.getChartType());
1566 wizardJSON.setReportId((rdef != null) ? rdef.getReportID() + "" : "");
1567 wizardJSON.setReportName((rdef != null) ? rdef.getReportName() : "");
1568 wizardJSON.setReportDescr((rdef != null) ? rdef.getReportDescr() : "");
1569 wizardJSON.setReportType((rdef != null) ? rdef.getReportType() : AppConstants.RT_LINEAR);
1570 wizardJSON.setDataContainerHeight((rdef != null) ? rdef.getDataContainerHeight() : "600");
1571 wizardJSON.setDataContainerWidth((rdef != null) ? rdef.getDataContainerWidth() : "900");
1572 wizardJSON.setAllowScheduler((rdef != null) ? rdef.getAllowSchedule() : "false");
1574 if(wizardJSON.getReportType().equals(AppConstants.RT_LINEAR)) {
1575 wizardJSON.setDbInfo((rdef != null) ? rdef.getDBInfo() : "");
1576 wizardJSON.setFormHelpText((rdef != null) ? rdef.getFormHelpText() : "");
1577 wizardJSON.setPageSize((rdef != null) ? rdef.getPageSize() : 50);
1578 List<IdNameBooleanJSON> displayArea = new ArrayList<>();
1579 IdNameBooleanJSON idNameJSON = new IdNameBooleanJSON();
1581 for (int i = 0; i < AppUtils.getQuickLinksMenuIDs().size(); i++) {
1582 idNameJSON = new IdNameBooleanJSON();
1583 qMenu = (String) AppUtils.getQuickLinksMenuIDs().get(i);
1584 idNameJSON.setId(qMenu);
1585 idNameJSON.setName(qMenu);
1586 if (rdef != null && (rdef.getMenuID().equals(qMenu))) {
1587 idNameJSON.setSelected(true);
1589 displayArea.add(idNameJSON);
1591 wizardJSON.setDisplayArea(displayArea);
1592 wizardJSON.setHideFormFieldsAfterRun((rdef != null) ? rdef.isHideFormFieldAfterRun() : false);
1593 wizardJSON.setMaxRowsInExcelCSVDownload((rdef != null) ? rdef.getMaxRowsInExcelDownload() : 500);
1594 wizardJSON.setFrozenColumns((rdef != null) ? rdef.getFrozenColumns() : 0);
1595 wizardJSON.setDataGridAlign((rdef != null) ? rdef.getDataGridAlign() : "left");
1596 wizardJSON.setEmptyMessage((rdef != null) ? rdef.getEmptyMessage() : "No records found");
1597 List<NameBooleanJSON> displayOptions = new ArrayList<>();
1598 NameBooleanJSON nameBooleanJSON = new NameBooleanJSON();
1599 nameBooleanJSON.setName("HideFormFields");
1600 nameBooleanJSON.setSelected((rdef != null) ? rdef.isDisplayOptionHideForm() : false);
1601 displayOptions.add(nameBooleanJSON);
1603 nameBooleanJSON = new NameBooleanJSON();
1604 nameBooleanJSON.setName("HideChart");
1605 nameBooleanJSON.setSelected((rdef != null) ? rdef.isDisplayOptionHideChart() : false);
1606 displayOptions.add(nameBooleanJSON);
1608 nameBooleanJSON = new NameBooleanJSON();
1609 nameBooleanJSON.setName("HideReportData");
1610 nameBooleanJSON.setSelected((rdef != null) ? rdef.isDisplayOptionHideData() : false);
1611 displayOptions.add(nameBooleanJSON);
1613 nameBooleanJSON = new NameBooleanJSON();
1614 nameBooleanJSON.setName("HideExcel");
1615 nameBooleanJSON.setSelected((rdef != null) ? rdef.isDisplayOptionHideExcelIcons() : false);
1616 displayOptions.add(nameBooleanJSON);
1618 nameBooleanJSON = new NameBooleanJSON();
1619 nameBooleanJSON.setName("HidePdf");
1620 nameBooleanJSON.setSelected((rdef != null) ? rdef.isDisplayOptionHidePDFIcons() : false);
1621 displayOptions.add(nameBooleanJSON);
1623 wizardJSON.setDisplayOptions(displayOptions);
1625 wizardJSON.setRuntimeColSortDisabled((rdef != null) ? rdef.isRuntimeColSortDisabled() : false);
1626 wizardJSON.setNumFormCols((rdef != null) ? rdef.getNumFormColsAsInt() : 1);
1627 wizardJSON.setReportTitle((rdef != null) ? rdef.getReportTitle() : "");
1628 wizardJSON.setReportSubTitle((rdef != null) ? rdef.getReportSubTitle() : "");
1631 String schemaSql = Globals.getRemoteDbSchemaSql();
1633 ArrayList<IdNameBooleanJSON> dbInfoList = new ArrayList<>();
1635 ds = DbUtils.executeQuery(schemaSql);
1637 String prefix = "", desc = "";
1639 for (int i = 0; i < ds.getRowCount(); i++) {
1640 IdNameBooleanJSON dBNameJSON = new IdNameBooleanJSON();
1641 dBNameJSON.setId(ds.getItem(i, 0));
1642 dBNameJSON.setName(ds.getItem(i, 0));
1643 dBNameJSON.setSelected(false);
1644 dbInfoList.add(dBNameJSON);
1647 catch (Exception e) {}
1648 wizardJSON.setDbInfoList(dbInfoList);
1651 wizardJSON.setOneTimeRec((rdef != null) ? rdef.getIsOneTimeScheduleAllowed() : "false");
1652 wizardJSON.setHourlyRec((rdef != null) ? rdef.getIsHourlyScheduleAllowed() : "false");
1653 wizardJSON.setDailyRec((rdef != null) ? rdef.getIsDailyScheduleAllowed() : "false");
1654 wizardJSON.setDailyMFRec((rdef != null) ? rdef.getIsDailyMFScheduleAllowed() : "false");
1655 wizardJSON.setWeeklyRec((rdef != null) ? rdef.getIsWeeklyScheduleAllowed() : "false");
1656 wizardJSON.setMonthlyRec((rdef != null) ? rdef.getIsMonthlyScheduleAllowed() : "false");
1657 wizardJSON.setSizedByContent((rdef != null) ? rdef.getSizedByContentOption() : "false");
1658 wizardJSON.setRepDefType(rdef.getReportDefType());
1659 } else if(wizardJSON.getReportType().equals(AppConstants.RT_DASHBOARD)){
1660 wizardJSON.setDashboardLayoutHTML((rdef != null) ? rdef.getCustomReport().getDashboardLayoutHTML() : null);
1661 wizardJSON.setDashboardLayoutJSON((rdef != null) ? rdef.getCustomReport().getDashboardLayoutJSON() : null);
1662 wizardJSON.setDashboardReports((rdef != null) ? rdef.getCustomReport().getDashBoardReports() : null);
1666 ObjectMapper mapper = new ObjectMapper();
1667 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
1668 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
1670 String session_id = request.getSession().getId();
1671 Object obj = request.getAttributeNames();
1672 ReportDefinition report_def = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1678 @PostMapping(value = "/report/wizard/retrieve_data/{validate}")
1679 public @ResponseBody RaptorResponse retrieveDataForGivenQuery(@PathVariable("validate") boolean validate,
1680 @RequestBody QueryJSON queryJSON, HttpServletRequest request, HttpServletResponse response)
1681 throws RaptorException {
1682 RaptorResponse raptorResponse = new RaptorResponse();
1683 String sql = queryJSON.getQuery();
1684 String jsonInString = "";
1686 ServletContext servletContext = request.getSession().getServletContext();
1687 if (!Globals.isSystemInitialized()) {
1688 Globals.initializeSystem(servletContext);
1691 String session_id = request.getSession().getId();
1692 Object obj = request.getAttributeNames();
1693 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1695 ErrorJSONRuntime errorJSONRuntime = new ErrorJSONRuntime();
1696 errorJSONRuntime.setErrormessage("Report Definition is not in session;");
1697 errorJSONRuntime.setStacktrace("");
1699 ObjectMapper mapper = new ObjectMapper();
1700 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
1701 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
1704 jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(errorJSONRuntime);
1705 raptorResponse.data().put("elements", jsonInString);
1706 return raptorResponse;
1707 } catch (Exception ex1) {
1708 logger.error(EELFLoggerDelegate.errorLogger,
1709 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex1);
1712 if (!sql.trim().toUpperCase().startsWith("SELECT")) {
1713 ErrorJSONRuntime errorJSONRuntime = new ErrorJSONRuntime();
1714 errorJSONRuntime.setErrormessage("Invalid statement - the SQL must start with the keyword SELECT");
1715 errorJSONRuntime.setStacktrace("SQL Error");
1716 ObjectMapper mapper = new ObjectMapper();
1717 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
1718 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
1721 jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(errorJSONRuntime);
1722 raptorResponse.data().put("elements", jsonInString);
1723 return raptorResponse;
1725 } catch (Exception ex) {
1726 logger.error(EELFLoggerDelegate.errorLogger,
1727 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1731 String remoteDb = request.getParameter("remoteDbPrefix");
1732 // comment below two lines to test
1733 String remoteDbPrefix = (remoteDb != null && !remoteDb.equalsIgnoreCase("null")) ? remoteDb
1735 String userId = AppUtils.getUserID(request);
1737 sql = Utils.replaceInString(sql, "[LOGGED_USERID]", userId);
1738 sql = Utils.replaceInString(sql, "[USERID]", userId);
1739 String[] reqParameters = Globals.getRequestParams().split(",");
1740 String[] sessionParameters = Globals.getSessionParams().split(",");
1741 javax.servlet.http.HttpSession session = request.getSession();
1742 logger.debug(EELFLoggerDelegate.debugLogger, ("B4 testRunSQL " + sql));
1743 if (request != null) {
1744 for (int i = 0; i < reqParameters.length; i++) {
1745 if (!reqParameters[i].startsWith("ff"))
1746 sql = Utils.replaceInString(sql, "[" + reqParameters[i].toUpperCase() + "]",
1747 ESAPI.encoder().encodeForSQL( SecurityCodecUtil.getCodec(),request.getParameter(reqParameters[i].toUpperCase())));
1749 sql = Utils.replaceInString(sql, "[" + reqParameters[i].toUpperCase() + "]",
1750 ESAPI.encoder().encodeForSQL( SecurityCodecUtil.getCodec(),request.getParameter(reqParameters[i])));
1753 if (session != null) {
1754 for (int i = 0; i < sessionParameters.length; i++) {
1755 logger.debug(EELFLoggerDelegate.debugLogger, (" Session " + " sessionParameters[i] "
1756 + sessionParameters[i] + " " + (String) session.getAttribute(sessionParameters[i])));
1757 sql = Utils.replaceInString(sql, "[" + sessionParameters[i].toUpperCase() + "]",
1758 (String) session.getAttribute(sessionParameters[i]));
1761 logger.debug(EELFLoggerDelegate.debugLogger, ("After testRunSQL " + sql));
1764 response.setContentType("application/json");
1765 ds = ConnectionUtils.getDataSet(sql, rdef.getDBInfo(), true);
1767 QueryResultJSON queryResultJSON = new QueryResultJSON();
1768 queryResultJSON.setQuery(queryJSON.getQuery());
1769 String query = XSSFilter.filterRequestOnlyScript(queryJSON.getQuery());
1771 rdef.parseReportSQL(query,validate);
1773 queryResultJSON.setQuery(query);
1775 queryResultJSON.setTotalRows(ds.getRowCount());
1777 Map<String, String> dvJSON;
1778 ArrayList<String> colList = new ArrayList<>();
1779 ArrayList<Map<String, String>> reportDataRows = new ArrayList<>();
1780 if (!ds.isEmpty()) {
1782 for (int i = 0; i < ds.getColumnCount(); i++) {
1783 colList.add(ds.getColumnName(i));
1785 queryResultJSON.setReportDataColumns(colList);
1786 if (queryResultJSON.getTotalRows() > 0) {
1787 for (int r = 0; r < Math.min(ds.getRowCount(), 100); r++) {
1788 dvJSON = new HashMap<>();
1789 for (int c = 0; c < ds.getColumnCount(); c++) {
1791 dvJSON.put(ds.getColumnName(c), ds.getString(r, c));
1792 } catch (Exception ex) {
1793 logger.error(EELFLoggerDelegate.errorLogger,
1794 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].",
1798 reportDataRows.add(dvJSON);
1804 queryResultJSON.setReportDataRows(reportDataRows);
1805 ObjectMapper mapper = new ObjectMapper();
1806 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
1807 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
1809 query = XSSFilter.filterRequestOnlyScript(queryJSON.getQuery());
1810 request.setAttribute("sqlValidated", "N");
1811 rdef.parseReportSQL(query);
1812 request.setAttribute("sqlValidated", "Y");
1813 persistReportDefinition(request, rdef);
1817 jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(queryResultJSON);
1818 raptorResponse.data().put("elements", jsonInString);
1819 return raptorResponse;
1821 } catch (Exception ex) {
1822 logger.error(EELFLoggerDelegate.errorLogger,
1823 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery]. RaptorException: ",
1826 } catch (ReportSQLException ex) {
1827 ErrorJSONRuntime errorJSONRuntime = new ErrorJSONRuntime();
1828 if (sql.contains("[")) {
1829 errorJSONRuntime.setErrormessage(
1830 "Formfield information is present in the query, hence couldn't execute");
1832 .setStacktrace("Formfield information is present in the query, hence couldn't execute");
1834 String query = XSSFilter.filterRequestOnlyScript(queryJSON.getQuery());
1835 request.setAttribute("sqlValidated", "N");
1836 rdef.parseReportSQL(query);
1837 request.setAttribute("sqlValidated", "Y");
1838 persistReportDefinition(request, rdef);
1843 errorJSONRuntime.setErrormessage(ex.getMessage());
1844 errorJSONRuntime.setStacktrace(getStackTrace(ex));
1846 ObjectMapper mapper = new ObjectMapper();
1847 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
1848 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
1851 jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(errorJSONRuntime);
1852 raptorResponse.data().put("elements", jsonInString);
1853 return raptorResponse;
1855 } catch (Exception ex1) {
1856 logger.error(EELFLoggerDelegate.errorLogger,
1857 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex1);
1861 String query = XSSFilter.filterRequestOnlyScript(queryJSON.getQuery());
1862 request.setAttribute("sqlValidated", "N");
1863 rdef.parseReportSQL(query);
1864 request.setAttribute("sqlValidated", "Y");
1865 persistReportDefinition(request, rdef);
1871 raptorResponse.data().put("elements", jsonInString);
1872 return raptorResponse;
1877 @GetMapping(value = "/report/wizard/get_report_log/{reportID}")
1878 public @ResponseBody ArrayList<ReportLogEntry> getLogs(@PathVariable("reportID") String reportId, HttpServletRequest request,
1879 HttpServletResponse ReportLogEntry) {
1880 ArrayList<ReportLogEntry> arrayList = new ArrayList<>();
1882 Vector<ReportLogEntry> v = ReportLoader.loadReportLogEntries(reportId);
1883 for(ReportLogEntry r:v ){
1886 } catch (RaptorException e) {
1887 logger.error(EELFLoggerDelegate.errorLogger,
1888 "RaptorControllerAsync getLogs.", e);
1893 @PostMapping(value = "save_chart")
1894 public void reportChartReceive(@RequestBody ChartJSON chartJSON, HttpServletRequest request,
1895 HttpServletResponse response) {
1896 //ReportRuntime reportRuntime;
1897 //reportRuntime = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME); // changing
1898 ReportDefinition reportDefn;
1899 reportDefn = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION); // session
1902 String reportID = request.getParameter("c_master");
1903 /* if (reportRuntime == null && AppUtils.nvl(reportID).length() > 0) {
1905 ReportHandler rh = new ReportHandler();
1906 reportRuntime = rh.loadReportRuntime(request, reportID);
1907 } catch (RaptorException ex) {
1908 logger.error(EELFLoggerDelegate.errorLogger,
1909 "[Controller.processRequest]Invalid raptor action [reportChartReceive].", ex);
1913 if (reportDefn != null) {
1914 String chartType = chartJSON.getChartType();
1915 reportDefn.setChartType(chartJSON.getChartType());
1916 reportDefn.setChartAnimate(chartJSON.isAnimation());
1917 reportDefn.setChartWidth(chartJSON.getWidth());
1918 reportDefn.setChartHeight(chartJSON.getHeight());
1919 reportDefn.setShowChartTitle(chartJSON.isShowTitle());
1921 String domainAxis = null;
1922 domainAxis = chartJSON.getDomainAxis();
1924 List<DataColumnType> reportCols = reportDefn.getAllColumns();
1926 for (Iterator<DataColumnType> iter = reportCols.iterator(); iter.hasNext();) {
1927 DataColumnType dct = iter.next();
1928 if (dct.getColId().equals(domainAxis)) {
1929 dct.setColOnChart(AppConstants.GC_LEGEND);
1931 dct.setColOnChart(null);
1935 CategoryAxisJSON categoryAxisJSON = chartJSON.getCategoryAxisJSON();
1936 String categoryAxis;
1938 categoryAxis = (categoryAxisJSON != null ? categoryAxisJSON.getValue() : "");
1940 reportCols = reportDefn.getAllColumns();
1942 for (Iterator<DataColumnType> iter = reportCols.iterator(); iter.hasNext();) {
1943 DataColumnType dct = iter.next();
1944 if (dct.getColId().equals(categoryAxis)) {
1945 dct.setChartSeries(true);
1947 dct.setChartSeries(false);
1951 ArrayList<RangeAxisJSON> rangeAxisList = chartJSON.getRangeAxisList();
1953 HashSet<String> removeRangeAxisMap = new HashSet<>();
1954 for(RangeAxisJSON rangeAxis:chartJSON.getRangeAxisRemoveList()){
1955 removeRangeAxisMap.add(rangeAxis.getRangeAxis());
1957 for (int i = 0; i < rangeAxisList.size(); i++) {
1958 RangeAxisJSON rangeAxisJSON = rangeAxisList.get(i);
1959 String rangeAxis = rangeAxisJSON.getRangeAxis();
1960 String rangeYAxis = AppUtils.nvl(rangeAxisJSON.getRangeYAxis());
1961 String rangeChartGroup = AppUtils.nvl(rangeAxisJSON.getRangeChartGroup());
1962 String rangeColor = AppUtils.nvl(rangeAxisJSON.getRangeColor());
1963 String rangeLineType = AppUtils.nvl(rangeAxisJSON.getRangeLineType());
1965 rangefor: for (Iterator<DataColumnType> iterator = reportCols.iterator(); iterator.hasNext();) {
1966 DataColumnType dct = iterator.next();
1967 if (dct.getColId().equals(rangeAxis)) {
1968 if(removeRangeAxisMap.contains(rangeAxis))
1969 dct.setChartSeq(-1); // if we set it to -1, means this range axis will not be included
1971 dct.setChartSeq(++r);
1973 if (!dct.getColId().equals(domainAxis)) {
1974 dct.setColOnChart("0");
1976 dct.setChartSeq(-1);
1978 dct.setYAxis(rangeYAxis); // +"|"+dct.getColId());
1979 dct.setChartGroup(rangeChartGroup); // +"|"+dct.getColId());
1980 dct.setChartColor(rangeColor);
1981 dct.setChartLineType(rangeLineType);
1983 if (chartType.equals(AppConstants.GT_ANNOTATION_CHART)
1984 || chartType.equals(AppConstants.GT_FLEX_TIME_CHARTS)) {
1985 if (rangeAxisJSON.isShowAsArea()) {
1986 dct.setIsRangeAxisFilled(true);
1988 dct.setIsRangeAxisFilled(false);
1996 reportDefn.setChartLeftAxisLabel(chartJSON.getPrimaryAxisLabel());
1997 reportDefn.setChartRightAxisLabel(chartJSON.getSecondaryAxisLabel());
1999 reportDefn.setRangeAxisLowerLimit(chartJSON.getMinRange());
2000 reportDefn.setRangeAxisUpperLimit(chartJSON.getMaxRange());
2002 if (chartType.equals(AppConstants.GT_ANNOTATION_CHART)
2003 || chartType.equals(AppConstants.GT_FLEX_TIME_CHARTS)) {
2004 if (chartJSON.getFlexTimeSeriesChartOptions() != null) {
2005 reportDefn.setZoomIn(chartJSON.getFlexTimeSeriesChartOptions().getZoomIn());
2006 reportDefn.setTimeAxisType(chartJSON.getFlexTimeSeriesChartOptions().getTimeAxisType());
2011 if (chartType.equals(AppConstants.GT_TIME_SERIES)) {
2012 if (chartJSON.getTimeSeriesChartOptions() != null) {
2013 reportDefn.setTimeSeriesRender(chartJSON.getTimeSeriesChartOptions().getLineChartRenderer());
2014 reportDefn.setShowXAxisLabel(chartJSON.getTimeSeriesChartOptions().isShowXAxisLabel());
2015 reportDefn.setAddXAxisTickers(chartJSON.getTimeSeriesChartOptions().isAddXAxisTicker());
2016 reportDefn.setTimeAxis(chartJSON.getTimeSeriesChartOptions().isNonTimeAxis());
2017 reportDefn.setMultiSeries(chartJSON.getTimeSeriesChartOptions().isMultiSeries());
2022 if (chartType.equals(AppConstants.GT_BAR_3D)) {
2023 if (chartJSON.getBarChartOptions() != null) {
2024 reportDefn.setChartOrientation(
2025 chartJSON.getBarChartOptions().isVerticalOrientation() ? "vertical" : "horizontal");
2026 reportDefn.setChartStacked(chartJSON.getBarChartOptions().isStackedChart());
2027 reportDefn.setBarControls(chartJSON.getBarChartOptions().isDisplayBarControls());
2028 reportDefn.setXAxisDateType(chartJSON.getBarChartOptions().isxAxisDateType());
2029 reportDefn.setLessXaxisTickers(chartJSON.getBarChartOptions().isMinimizeXAxisTickers());
2030 reportDefn.setTimeAxis(chartJSON.getBarChartOptions().isTimeAxis());
2031 reportDefn.setLogScale(chartJSON.getBarChartOptions().isyAxisLogScale());
2035 reportDefn.setLegendLabelAngle(chartJSON.getCommonChartOptions().getLegendLabelAngle());
2036 reportDefn.setLegendPosition(chartJSON.getCommonChartOptions().getLegendPosition());
2037 reportDefn.setChartLegendDisplay(chartJSON.getCommonChartOptions().isHideLegend() ? "Y" : "N");
2038 reportDefn.setAnimateAnimatedChart(chartJSON.getCommonChartOptions().isAnimateAnimatedChart());
2040 reportDefn.setTopMargin(chartJSON.getCommonChartOptions().getTopMargin());
2041 reportDefn.setBottomMargin(chartJSON.getCommonChartOptions().getBottomMargin());
2042 reportDefn.setLeftMargin(chartJSON.getCommonChartOptions().getLeftMargin());
2043 reportDefn.setRightMargin(chartJSON.getCommonChartOptions().getRightMargin());
2045 for (Iterator<DataColumnType> iterator = reportCols.iterator(); iterator.hasNext();) {
2046 DataColumnType dct = iterator.next();
2047 if (!(AppUtils.nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND)
2048 || (dct.getChartSeq() != null && dct.getChartSeq() > 0) || dct.isChartSeries())) {
2049 dct.setChartSeq(-1);
2050 dct.setChartColor(null);
2051 dct.setColOnChart(null);
2052 dct.setCreateInNewChart(false);
2053 dct.setChartGroup(null);
2059 //reportRuntime.persistLinearReport(request);
2060 //reportRuntime.persistReport(request);
2061 persistReportDefinition(request, reportDefn);
2062 } catch (Exception ex) {
2063 logger.error(EELFLoggerDelegate.errorLogger,
2064 "[Controller.processRequest]Invalid raptor action [reportChartReceive].", ex);
2069 public String getViewName() {
2073 public void setViewName(String viewName) {
2074 this.viewName = viewName;
2077 public String nvl(String s) {
2078 return (s == null) ? "" : s;
2081 public String nvl(String s, String sDefault) {
2082 return nvl(s).equals("") ? sDefault : s;
2085 public static String getStackTrace(Throwable aThrowable) {
2086 Writer result = new StringWriter();
2087 PrintWriter printWriter = new PrintWriter(result);
2088 aThrowable.printStackTrace(printWriter);
2089 return result.toString();
2092 public void persistReportDefinition(HttpServletRequest request, ReportDefinition rdef) throws RaptorException {
2093 ReportRuntime rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
2094 if (rr != null && rr.getReportID().equals(rdef.getReportID()))
2095 request.getSession().removeAttribute(AppConstants.SI_REPORT_RUNTIME);
2096 rdef.persistReport(request);
2097 } // persistReportDefinition
2099 // Remove from session
2100 private void removeVariablesFromSession(HttpServletRequest request) {
2101 HttpSession session = request.getSession();
2102 session.removeAttribute(AppConstants.DRILLDOWN_REPORTS_LIST);
2103 session.removeAttribute(AppConstants.DRILLDOWN_INDEX);
2104 session.removeAttribute(AppConstants.FORM_DRILLDOWN_INDEX);
2105 session.removeAttribute(AppConstants.SI_BACKUP_FOR_REP_ID);
2106 session.removeAttribute(AppConstants.SI_COLUMN_LOOKUP);
2107 session.removeAttribute(AppConstants.SI_DASHBOARD_REP_ID);
2108 session.removeAttribute(AppConstants.SI_DASHBOARD_REPORTRUNTIME_MAP);
2109 session.removeAttribute(AppConstants.SI_DASHBOARD_REPORTRUNTIME);
2110 session.removeAttribute(AppConstants.SI_DASHBOARD_REPORTDATA_MAP);
2111 session.removeAttribute(AppConstants.SI_DASHBOARD_CHARTDATA_MAP);
2112 session.removeAttribute(AppConstants.SI_DASHBOARD_DISPLAYTYPE_MAP);
2113 session.removeAttribute(AppConstants.SI_DATA_SIZE_FOR_TEXTFIELD_POPUP);
2114 session.removeAttribute(AppConstants.SI_MAP);
2115 session.removeAttribute(AppConstants.SI_MAP_OBJECT);
2116 session.removeAttribute(AppConstants.SI_REPORT_DEFINITION);
2117 session.removeAttribute(AppConstants.SI_REPORT_RUNTIME);
2118 session.removeAttribute(AppConstants.SI_REPORT_RUN_BACKUP);
2119 session.removeAttribute(AppConstants.SI_REPORT_SCHEDULE);
2120 session.removeAttribute(AppConstants.RI_REPORT_DATA);
2121 session.removeAttribute(AppConstants.RI_CHART_DATA);
2122 session.removeAttribute(AppConstants.SI_FORMFIELD_INFO);
2123 session.removeAttribute(AppConstants.SI_FORMFIELD_DOWNLOAD_INFO);
2124 session.removeAttribute(AppConstants.EMBEDDED_REPORTRUNTIME_MAP);
2125 session.removeAttribute(AppConstants.EMBEDDED_REPORTDATA_MAP);
2126 Enumeration<String> enum1 = session.getAttributeNames();
2127 String attributeName = "";
2128 while (enum1.hasMoreElements()) {
2129 attributeName = enum1.nextElement();
2130 if (attributeName.startsWith("parent_")) {
2131 session.removeAttribute(attributeName);