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.IdNameBooleanJSON;
82 import org.onap.portalsdk.analytics.model.definition.wizard.ImportJSON;
83 import org.onap.portalsdk.analytics.model.definition.wizard.MessageJSON;
84 import org.onap.portalsdk.analytics.model.definition.wizard.NameBooleanJSON;
85 import org.onap.portalsdk.analytics.model.definition.wizard.QueryJSON;
86 import org.onap.portalsdk.analytics.model.definition.wizard.QueryResultJSON;
87 import org.onap.portalsdk.analytics.model.definition.wizard.RaptorResponse;
88 import org.onap.portalsdk.analytics.model.definition.wizard.SearchFieldJSON;
89 import org.onap.portalsdk.analytics.model.pdf.PdfReportHandler;
90 import org.onap.portalsdk.analytics.model.runtime.CategoryAxisJSON;
91 import org.onap.portalsdk.analytics.model.runtime.ChartJSON;
92 import org.onap.portalsdk.analytics.model.runtime.ErrorJSONRuntime;
93 import org.onap.portalsdk.analytics.model.runtime.FormField;
94 import org.onap.portalsdk.analytics.model.runtime.RangeAxisJSON;
95 import org.onap.portalsdk.analytics.model.runtime.ReportFormFields;
96 import org.onap.portalsdk.analytics.model.runtime.ReportRuntime;
97 import org.onap.portalsdk.analytics.system.AppUtils;
98 import org.onap.portalsdk.analytics.system.ConnectionUtils;
99 import org.onap.portalsdk.analytics.system.DbUtils;
100 import org.onap.portalsdk.analytics.system.Globals;
101 import org.onap.portalsdk.analytics.util.AppConstants;
102 import org.onap.portalsdk.analytics.util.DataSet;
103 import org.onap.portalsdk.analytics.util.Utils;
104 import org.onap.portalsdk.analytics.util.XSSFilter;
105 import org.onap.portalsdk.analytics.view.ReportData;
106 import org.onap.portalsdk.analytics.xmlobj.DataColumnType;
107 import org.onap.portalsdk.analytics.xmlobj.FormFieldType;
108 import org.onap.portalsdk.analytics.xmlobj.ObjectFactory;
109 import org.onap.portalsdk.analytics.xmlobj.PredefinedValueList;
110 import org.onap.portalsdk.core.controller.RestrictedBaseController;
111 import org.onap.portalsdk.core.domain.User;
112 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
113 import org.onap.portalsdk.core.util.SecurityCodecUtil;
114 import org.onap.portalsdk.core.web.support.UserUtils;
115 import org.owasp.esapi.ESAPI;
116 import org.springframework.stereotype.Controller;
117 import org.springframework.web.bind.annotation.PathVariable;
118 import org.springframework.web.bind.annotation.RequestBody;
119 import org.springframework.web.bind.annotation.RequestMapping;
120 import org.springframework.web.bind.annotation.RequestMethod;
121 import org.springframework.web.bind.annotation.ResponseBody;
123 import com.fasterxml.jackson.databind.DeserializationFeature;
124 import com.fasterxml.jackson.databind.ObjectMapper;
125 import com.fasterxml.jackson.databind.SerializationFeature;
129 public class RaptorControllerAsync extends RestrictedBaseController {
131 private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(RaptorControllerAsync.class);
132 private static final String INVALID_ACTION = "[Controller.processRequest]Invalid raptor action [";
133 private static final String UNABLE_INSTANTIATE = "[Controller.processRequest] Unable to instantiate and invoke action handler. Exception: ";
135 private String viewName;
137 @RequestMapping(value = { "/raptor.htm" }, method = RequestMethod.GET)
138 public void RaptorSearch(HttpServletRequest request, HttpServletResponse response)
139 throws IOException, RaptorException {
142 String actionKey = nvl(request.getParameter(AppConstants.RI_ACTION), request.getParameter("action"));
143 actionKey = nvl(actionKey, "report.run");
145 HttpSession session = request.getSession();
146 User user = UserUtils.getUserSession(request);
148 if ("report.download.excel2007.session".equals(actionKey) || "report.download.csv.session".equals(actionKey)
149 || "report.download.excel.session".equals(actionKey)
150 || "report.download.pdf.session".equals(actionKey)) {
151 if (session != null && user != null) {
152 ServletContext servletContext = request.getSession().getServletContext();
153 if (!Globals.isSystemInitialized()) {
154 Globals.initializeSystem(servletContext);
156 ReportRuntime rr = null;
157 ReportData rd = null;
160 if (!"N".equals(nvl(request.getParameter("parent"), "")))
161 parent = nvl(request.getParameter("parent"), "");
162 if (parent.startsWith("parent_"))
164 if (parentFlag == 1) {
165 rr = (ReportRuntime) request.getSession().getAttribute(parent + "_rr");
166 rd = (ReportData) request.getSession().getAttribute(parent + "_rd");
169 boolean isEmbedded = false;
170 Object temp = request.getSession().getAttribute("isEmbedded");
172 isEmbedded = (boolean) temp;
175 String reportID = AppUtils.getRequestValue(request, AppConstants.RI_REPORT_ID);
177 rr = (ReportRuntime) ((HashMap) request.getSession()
178 .getAttribute(AppConstants.EMBEDDED_REPORTRUNTIME_MAP)).get(reportID);
180 rd = (ReportData) ((HashMap) request.getSession()
181 .getAttribute(AppConstants.EMBEDDED_REPORTDATA_MAP)).get(reportID);
184 rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
186 rd = (ReportData) request.getSession().getAttribute(AppConstants.RI_REPORT_DATA);
188 String userId = AppUtils.getUserID(request);
189 int downloadLimit = 0;
191 downloadLimit = (rr.getMaxRowsInExcelDownload() > 0) ? rr.getMaxRowsInExcelDownload()
192 : Globals.getDownloadLimit();
193 if ("report.csv.download".equals(actionKey))
194 downloadLimit = Globals.getCSVDownloadLimit();
196 String sqlWhole = rr.getReportDataSQL(userId, downloadLimit, request);
197 request.setAttribute(AppConstants.RI_REPORT_SQL_WHOLE, sqlWhole);
200 OutputStreamWriter out = new OutputStreamWriter(response.getOutputStream());
202 if ("report.download.pdf.session".equals(actionKey)) {
203 new PdfReportHandler().createPdfFileContent(request, response, 3);
204 } else if ("report.download.csv.session".equals(actionKey)) {
205 (new ReportHandler()).createCSVFileContent(out, rd, rr, request, response);
206 } else if ("report.download.excel.session".equals(actionKey)) {
207 new ReportHandler().createExcelFileContent(out, rd, rr, request, response, userId, 3); // 3
211 new ReportHandler().createExcel2007FileContent(out, rd, rr, request, response, userId, 3); // 3
214 } catch (Exception e) {
215 logger.error(EELFLoggerDelegate.errorLogger,
216 INVALID_ACTION + actionKey + "].", e);
219 response.sendRedirect("login.htm");
222 if (session != null && user != null) {
223 Action action = null;
224 ServletContext servletContext = request.getSession().getServletContext();
225 if (!Globals.isSystemInitialized()) {
226 Globals.initializeSystem(servletContext);
229 action = Globals.getRaptorActionMapping().getAction(actionKey);
231 throw new RaptorRuntimeException("Action not found");
232 } catch (RaptorException e) {
233 logger.error(EELFLoggerDelegate.errorLogger,
234 INVALID_ACTION + actionKey + "].", e);
236 viewName = (new ErrorHandler()).processFatalErrorJSON(request,
237 new RaptorRuntimeException(INVALID_ACTION + actionKey
238 + "]. Exception: " + e.getMessage()));
242 Class[] paramTypes = new Class[2];
243 paramTypes[0] = Class.forName("javax.servlet.http.HttpServletRequest");
244 paramTypes[1] = Class.forName("java.lang.String");
246 Class handlerClass = Class.forName(action.getControllerClass());
247 Object handler = handlerClass.newInstance();
248 Method handlerMethod = handlerClass.getMethod(action.getControllerMethod(), paramTypes);
250 Object[] paramValues = new Object[2];
251 paramValues[0] = request;
252 paramValues[1] = action.getJspName();
255 viewName = (String) handlerMethod.invoke(handler, paramValues);
256 if (!"chart.run".equals(actionKey))
257 response.setContentType("application/json");
259 response.setContentType("text/html");
261 } catch (ClassNotFoundException e) {
262 logger.debug(EELFLoggerDelegate.debugLogger, (INVALID_ACTION
263 + actionKey + "]. ClassNotFoundException: " + e.getMessage()));
264 viewName = (new ErrorHandler()).processFatalErrorJSON(request,
265 new RaptorRuntimeException(UNABLE_INSTANTIATE + e.getMessage()));
266 } catch (IllegalAccessException e) {
267 logger.debug(EELFLoggerDelegate.debugLogger, (INVALID_ACTION
268 + actionKey + "]. IllegalAccessException: " + e.getMessage()));
269 viewName = (new ErrorHandler()).processFatalErrorJSON(request,
270 new RaptorRuntimeException(UNABLE_INSTANTIATE + e.getMessage()));
271 } catch (InstantiationException e) {
272 logger.debug(EELFLoggerDelegate.debugLogger, (INVALID_ACTION
273 + actionKey + "]. InstantiationException: " + e.getMessage()));
274 viewName = (new ErrorHandler()).processFatalErrorJSON(request,
275 new RaptorRuntimeException(UNABLE_INSTANTIATE + e.getMessage()));
276 } catch (NoSuchMethodException e) {
277 logger.debug(EELFLoggerDelegate.debugLogger, (INVALID_ACTION
278 + actionKey + "]. NoSuchMethodException: " + e.getMessage()));
279 viewName = (new ErrorHandler()).processFatalErrorJSON(request,
280 new RaptorRuntimeException(UNABLE_INSTANTIATE + e.getMessage()));
281 } catch (InvocationTargetException e) {
282 logger.debug(EELFLoggerDelegate.debugLogger, (INVALID_ACTION
283 + actionKey + "]. InvocationTargetException: " + e.getMessage()));
284 viewName = (new ErrorHandler()).processFatalErrorJSON(request,
285 new RaptorRuntimeException(UNABLE_INSTANTIATE + e.getMessage()));
287 PrintWriter out = response.getWriter();
291 PrintWriter out = response.getWriter();
292 out.write("session has timed out for user");
298 @RequestMapping(value = "/report/wizard/drill_down_param/{parameter}", method = RequestMethod.GET, produces = "application/json")
299 public @ResponseBody List<DrillDownParamDef> getDrillDownParamDef (@PathVariable("parameter") String parameter, HttpServletRequest request, HttpServletResponse response)
301 List<DrillDownParamDef> list = new ArrayList<>();
302 String[] tmepArray = null;
304 tmepArray = parameter.split("&");
306 for(String str:tmepArray){
307 list.add(new DrillDownParamDef(str));
312 @RequestMapping(value = "/report/wizard/list_columns", method = RequestMethod.GET, produces = "application/json")
313 public @ResponseBody ArrayList<ColumnJSON> listColumns(HttpServletRequest request, HttpServletResponse response)
315 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
316 List<DataColumnType> reportColumnList = rdef.getAllColumns();
317 ArrayList<ColumnJSON> listJSON = new ArrayList<>();
318 ColumnJSON columnJSON;
320 for (DataColumnType reportColumnType : reportColumnList) {
321 columnJSON = new ColumnJSON();
322 columnJSON.setId(reportColumnType.getColId());
323 columnJSON.setName(reportColumnType.getDisplayName());
324 listJSON.add(columnJSON);
329 @RequestMapping(value = "/report/wizard/list_drilldown_reports", method = RequestMethod.GET, produces = "application/json")
330 public @ResponseBody ArrayList<ColumnJSON> list_drilldown_reports(HttpServletRequest request,
331 HttpServletResponse response) throws RaptorException {
332 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
333 Vector<IdNameValue> publicReportIdNames = DataCache.getPublicReportIdNames();
334 Vector groupReportIdNames = DataCache.getGroupAccessibleReportIdNames(AppUtils.getUserID(request),
335 AppUtils.getUserRoles(request));
336 Vector privateReportIdNames = DataCache.getPrivateAccessibleReportIdNames(AppUtils.getUserID(request),
337 AppUtils.getUserRoles(request));
339 ArrayList<ColumnJSON> listJSON = new ArrayList<>();
340 ColumnJSON columnJSON;
342 ServletContext servletContext = request.getSession().getServletContext();
343 if (!Globals.isSystemInitialized()) {
344 Globals.initializeSystem(servletContext);
347 for (int i = 0; i < publicReportIdNames.size(); i++) {
348 IdNameValue reportIdName = publicReportIdNames.get(i);
349 columnJSON = new ColumnJSON();
350 columnJSON.setId(reportIdName.getId());
351 columnJSON.setName("Public Report: " + reportIdName.getName());
352 if (!rdef.getReportID().equals(reportIdName.getId()))
353 listJSON.add(columnJSON);
356 for (int i = 0; i < groupReportIdNames.size(); i++) {
357 IdNameValue reportIdName = (IdNameValue) groupReportIdNames.get(i);
358 columnJSON = new ColumnJSON();
359 columnJSON.setId(reportIdName.getId());
360 columnJSON.setName("Group Report: " + reportIdName.getName());
361 if (!rdef.getReportID().equals(reportIdName.getId()))
362 listJSON.add(columnJSON);
365 for (int i = 0; i < privateReportIdNames.size(); i++) {
366 IdNameValue reportIdName = (IdNameValue) privateReportIdNames.get(i);
367 columnJSON = new ColumnJSON();
368 columnJSON.setId(reportIdName.getId());
369 columnJSON.setName("Private Report: " + reportIdName.getName());
370 if (!rdef.getReportID().equals(reportIdName.getId()))
371 listJSON.add(columnJSON);
377 @RequestMapping(value = "/report/wizard/list_formfields", method = RequestMethod.GET, produces = "application/json")
378 public @ResponseBody ArrayList<SearchFieldJSON> listFormFields(HttpServletRequest request,
379 HttpServletResponse response) {
380 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
381 ArrayList<SearchFieldJSON> listJSON = new ArrayList<>();
382 SearchFieldJSON fieldJSON;
383 if (rdef.getFormFieldList() != null) {
384 for (Iterator iter = rdef.getFormFieldList().getFormField().iterator(); iter.hasNext();) {
385 fieldJSON = new SearchFieldJSON();
386 FormFieldType fft = (FormFieldType) iter.next();
387 String fieldId = fft.getFieldId();
388 String fieldDisplay = fft.getFieldName();
389 fieldJSON.setId(fieldId);
390 fieldJSON.setName(fieldDisplay);
391 fieldJSON.setOrderSeq(fft.getOrderBySeq());
392 listJSON.add(fieldJSON);
399 @RequestMapping(value = "/report/wizard/list_child_report_col/{reportID}", method = RequestMethod.GET, produces = "application/json")
400 public @ResponseBody ArrayList<ColumnJSON> listChildReportCols(@PathVariable("reportID") String reportID,
401 HttpServletRequest request, HttpServletResponse response) throws RaptorException {
402 ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, reportID, false);
404 List<DataColumnType> reportColumnList = ddRr.getAllColumns();
405 ArrayList<ColumnJSON> listJSON = new ArrayList<>();
406 ColumnJSON columnJSON;
408 for (DataColumnType reportColumnType : reportColumnList) {
409 columnJSON = new ColumnJSON();
410 columnJSON.setId(reportColumnType.getColId());
411 columnJSON.setName(reportColumnType.getColName());
412 listJSON.add(columnJSON);
417 @RequestMapping(value = "/report/wizard/list_child_report_ff/{reportID}", method = RequestMethod.GET, produces = "application/json")
418 public @ResponseBody ArrayList<SearchFieldJSON> listChildReportFormFields(@PathVariable("reportID") String reportID,
419 HttpServletRequest request, HttpServletResponse response) throws RaptorException {
420 ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, reportID, false);
421 ArrayList<SearchFieldJSON> listJSON = new ArrayList<>();
422 SearchFieldJSON fieldJSON;
424 ReportFormFields ddReportFormFields = ddRr.getReportFormFields();
425 if (ddReportFormFields != null) {
426 for (ddReportFormFields.resetNext(); ddReportFormFields.hasNext();) {
427 FormField ff = ddReportFormFields.getNext();
428 if (!ff.getFieldType().equals(FormField.FFT_BLANK)) {
429 fieldJSON = new SearchFieldJSON();
430 fieldJSON.setId(ff.getFieldName());
431 fieldJSON.setName(ff.getFieldDisplayName());
432 listJSON.add(fieldJSON);
439 @RequestMapping(value = "report/wizard/copy_report/{reportID}", method = RequestMethod.GET, produces = "application/json")
440 public @ResponseBody MessageJSON copyReport(@PathVariable("reportID") String reportID, HttpServletRequest request,
441 HttpServletResponse response){
442 MessageJSON messageJSON = new MessageJSON();
445 ReportHandler rh = new ReportHandler();
446 ReportDefinition rdef = rh.loadReportDefinition(request, reportID);
447 rdef.setAsCopy(request);
448 request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
449 request.getSession().setAttribute("COPY_REPORT_EVENT", "true");
450 messageJSON.setMessage("Success- Report Copied.");
451 messageJSON.setAnyStacktrace(rdef.getReportID() + " is Modified and added to session and DB.");
453 } catch (RaptorException e) {
454 request.setAttribute("error_extra_msg", "While copying report " + reportID);
455 messageJSON.setMessage("Failed - While copying report " + reportID);
456 messageJSON.setAnyStacktrace(getStackTrace(e));
457 logger.debug(EELFLoggerDelegate.debugLogger,
458 ("[Controller.processRequest]Invalid raptor action [copyReport]. RaptorException: "
466 @RequestMapping(value = "report/wizard/import_report", method = RequestMethod.POST, consumes = "application/json")
467 public @ResponseBody MessageJSON importReport(@RequestBody ImportJSON importJSON, HttpServletRequest request,
468 HttpServletResponse response) {
469 MessageJSON messageJSON = new MessageJSON();
471 String reportXML = importJSON.getReportXML();
473 ReportHandler rh = new ReportHandler();
474 ReportDefinition rdef = rh.createReportDefinition(request, "-1", reportXML);
475 rdef.updateReportDefType();
476 rdef.generateWizardSequence(request);
477 rdef.setReportName("Import: " + rdef.getReportName());
478 rdef.clearAllDrillDowns();
480 request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
482 messageJSON.setMessage("Success- Report imported.");
483 messageJSON.setAnyStacktrace(rdef.getReportID() + " is Modified and added to session and DB.");
485 } catch (RaptorException e) {
486 request.setAttribute("error_extra_msg", "Unable to parse XML. Nested error: ");
487 messageJSON.setMessage("Unable to parse XML. Nested error: ");
488 messageJSON.setAnyStacktrace(getStackTrace(e));
497 @RequestMapping(value = "report/wizard/save_formfield_tab_data", method = RequestMethod.POST)
498 public @ResponseBody MessageJSON saveFFTabWiseData(@RequestBody FormEditJSON formEditJSON,
499 HttpServletRequest request, HttpServletResponse response) {
500 ReportDefinition rdef = null;
501 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
503 MessageJSON messageJSON = new MessageJSON();
507 String fieldId = formEditJSON.getFieldId();
509 if (rdef.getFormFieldList() != null) {
510 for (FormFieldType fft : rdef.getFormFieldList().getFormField()) {
511 if (fft.getFieldId().equals(fieldId)) {
512 fft.setFieldName(formEditJSON.getFieldName());
513 fft.setFieldType(formEditJSON.getFieldType());
514 fft.setVisible(formEditJSON.isVisible() ? "Y" : "N");
515 fft.setDefaultValue(formEditJSON.getDefaultValue());
516 fft.setFieldDefaultSQL(formEditJSON.getFieldDefaultSQL());
517 fft.setFieldSQL(formEditJSON.getFieldSQL());
518 fft.setValidationType(formEditJSON.getValidationType());
519 fft.setGroupFormField(formEditJSON.isGroupFormField());
520 fft.setOrderBySeq(formEditJSON.getOrderSeq());
521 // clear predefined value
522 PredefinedValueList predefinedValueList = new ObjectFactory().createPredefinedValueList();
523 fft.setPredefinedValueList(predefinedValueList);
525 List<IdNameBooleanJSON> predefList = formEditJSON.getPredefinedValueList();
526 if (predefList != null && predefList.size() > 0) {
527 for (IdNameBooleanJSON item : predefList) {
528 fft.getPredefinedValueList().getPredefinedValue().add(item.getId());
536 persistReportDefinition(request, rdef);
537 messageJSON.setMessage("Success formfield Details of given report is saved in session.");
538 messageJSON.setAnyStacktrace(rdef.getReportID() + " is Modified and added to session and DB.");
541 messageJSON.setMessage("Report Definition is not in session");
542 messageJSON.setAnyStacktrace("Report Definition is not in session");
545 } catch (Exception ex) {
546 messageJSON.setMessage("Error occured while formfield details Tab");
547 messageJSON.setAnyStacktrace(getStackTrace(ex));
554 @RequestMapping(value = "report/wizard/add_formfield_tab_data", method = RequestMethod.POST)
555 public @ResponseBody MessageJSON addFFTabWiseData(@RequestBody FormEditJSON formEditJSON,
556 HttpServletRequest request, HttpServletResponse response) {
557 ReportDefinition rdef;
558 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
560 MessageJSON messageJSON = new MessageJSON();
563 FormEditJSON wizardJSON = new FormEditJSON();
564 wizardJSON.setTabId("FormEdit");
565 wizardJSON.setTabName("Form Edit");
567 if(rdef.getFormFieldList()==null || rdef.getFormFieldList().getFormField()==null || rdef.getFormFieldList().getFormField().size()==0)
570 fieldId = "ff"+(rdef.getFormFieldList().getFormField().size()+1);
571 FormFieldType currField = rdef.addFormFieldType(new ObjectFactory(), "", "", "", "", "", "", "", "", null, null, "","");
572 currField.setFieldId(fieldId);
573 currField.setFieldName(formEditJSON.getFieldName());
574 currField.setFieldType(formEditJSON.getFieldType()==null?null:formEditJSON.getFieldType());
575 currField.setVisible(formEditJSON.isVisible()?"Y":"N");
576 currField.setDefaultValue(formEditJSON.getDefaultValue());
577 currField.setFieldDefaultSQL(formEditJSON.getFieldDefaultSQL());
578 currField.setFieldSQL(formEditJSON.getFieldSQL());
579 currField.setValidationType(formEditJSON.getValidationType());
580 currField.setGroupFormField(formEditJSON.isGroupFormField());
581 persistReportDefinition(request, rdef);
583 messageJSON.setMessage("Success formfield Details of given report is saved in session.");
584 messageJSON.setAnyStacktrace(rdef.getReportID() + " is added to session and DB.");
587 messageJSON.setMessage("Report Definition is not in session");
588 messageJSON.setAnyStacktrace("Report Definition is not in session");
591 } catch (Exception ex) {
592 messageJSON.setMessage("Error occured while formfield details Tab");
593 messageJSON.setAnyStacktrace(getStackTrace(ex));
600 @RequestMapping(value = "report/wizard/save_col_tab_data", method = RequestMethod.POST)
601 public @ResponseBody MessageJSON saveColTabWiseData(@RequestBody ColumnEditJSON columnEditJSON,
602 HttpServletRequest request, HttpServletResponse response) {
603 ReportDefinition rdef;
604 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
606 MessageJSON messageJSON = new MessageJSON();
610 String colId = columnEditJSON.getColId();
611 List<DataColumnType> reportColumnList = rdef.getAllColumns();
613 for (DataColumnType reportColumnType : reportColumnList) {
615 if (reportColumnType.getColId().equals(colId)) {
616 reportColumnType.setColName(columnEditJSON.getColName());
617 reportColumnType.setDependsOnFormField(columnEditJSON.getDepeondsOnForField()==null?"":columnEditJSON.getDepeondsOnForField());
618 reportColumnType.setColType(columnEditJSON.getDataType()==null?"":columnEditJSON.getDataType());
619 reportColumnType.setDbColName(columnEditJSON.getDataType()==null?"":columnEditJSON.getDataType());
620 reportColumnType.setGroupByPos(columnEditJSON.getGroupByPos());
621 reportColumnType.setSubTotalCustomText(columnEditJSON.getSubTotalCustomText());
622 reportColumnType.setHideRepeatedKey(columnEditJSON.isHideRepeatedKey());
623 reportColumnType.setLevel(columnEditJSON.getLevel());
624 reportColumnType.setColspan(columnEditJSON.getColspan());
625 reportColumnType.setDisplayName(columnEditJSON.getDisplayName());
626 reportColumnType.setDisplayWidthInPxls(columnEditJSON.getDisplayWidthInPixel()==null?null:String.valueOf(columnEditJSON.getDisplayWidthInPixel()));
627 reportColumnType.setNowrap(columnEditJSON.getNoWrap());
628 reportColumnType.setIndentation(columnEditJSON.getIndentation());
629 reportColumnType.setDisplayAlignment(columnEditJSON.getDisplayAlignment());
630 reportColumnType.setDisplayHeaderAlignment(columnEditJSON.getDisplayHeaderAlignment());
631 reportColumnType.setIsSortable(columnEditJSON.isSortable());
632 reportColumnType.setVisible(columnEditJSON.isVisible());
633 reportColumnType.setDrillDownURL(columnEditJSON.getDrilldownURL());
634 reportColumnType.setDrillDownParams(columnEditJSON.getDrilldownParams());
635 reportColumnType.setDrillDownType(columnEditJSON.getDrilldownType());
636 if(columnEditJSON.getDisplayTotal()!=null)
637 reportColumnType.setDisplayTotal(columnEditJSON.getDisplayTotal());
642 persistReportDefinition(request, rdef);
643 messageJSON.setMessage("Success Column Details of given report is saved in session.");
644 messageJSON.setAnyStacktrace(rdef.getReportID() + " is Modified and added to session and DB.");
647 messageJSON.setMessage("Report Definition is not in session");
648 messageJSON.setAnyStacktrace("");
651 } catch (Exception ex) {
652 messageJSON.setMessage("Error occured while saving column details Tab");
653 messageJSON.setAnyStacktrace(getStackTrace(ex));
661 @RequestMapping(value = "report/wizard/save_def_tab_data/{id}", method = RequestMethod.POST)
662 public @ResponseBody MessageJSON saveDefTabWiseData(@PathVariable("id") String id,
663 @RequestBody DefinitionJSON definitionJSON, HttpServletRequest request, HttpServletResponse response)
665 ReportDefinition rdef;
668 MessageJSON messageJSON = new MessageJSON();
670 String copyReportEvent = (String)request.getSession().getAttribute("COPY_REPORT_EVENT");
671 if (id.equals("InSession") || "true".equals(copyReportEvent)) {
672 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
675 } else if (id.equals("Create")) {
676 removeVariablesFromSession(request);
677 rdef = (new ReportHandler()).loadReportDefinition(request, "-1");
679 System.out.println("&&&&&&&&&&&&&&&&&&&&&& CHECK Report Type "
680 + (AppUtils.nvl(rdef.getReportType()).length() <= 0));
681 if (AppUtils.nvl(rdef.getReportType()).length() <= 0) {
682 rdef.setReportType(AppConstants.RT_LINEAR);
683 System.out.println("&&&&&&&&&&&&&&&&&&&&&& ADDED Report Type in session ");
686 } else if (AppUtils.nvl(id).length() > 0) {
687 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
688 rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
690 if (rdef != null && !rdef.getReportID().equals(id)) {
691 request.getSession().removeAttribute(AppConstants.SI_REPORT_DEFINITION);
692 removeVariablesFromSession(request);
693 rdef = (new ReportHandler()).loadReportDefinition(request, id);
694 } else if (rr != null && !rr.getReportID().equals(id)) {
695 request.getSession().removeAttribute(AppConstants.SI_REPORT_RUNTIME);
696 removeVariablesFromSession(request);
697 rdef = (new ReportHandler()).loadReportDefinition(request, id);
698 } else if (rdef == null) {
699 rdef = (new ReportHandler()).loadReportDefinition(request, id);
704 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
710 String dbInfo = definitionJSON.getDbInfo();
711 rdef.setDBInfo(dbInfo);
713 String schemaSql = Globals.getRemoteDbSchemaSqlWithWhereClause();
714 schemaSql = schemaSql.replace("[schema_id]", dbInfo);
715 String dbType = null;
718 ds = DbUtils.executeQuery(schemaSql);
720 String prefix = "", desc = "";
722 for (int i = 0; i < ds.getRowCount(); i++) {
723 dbType = ds.getItem(i, 2);
726 catch (Exception e) {}
727 rdef.setDBType(dbType);
728 String reportName = definitionJSON.getReportName();
729 rdef.setReportName(reportName);
731 String reportDescr = definitionJSON.getReportDescr();
732 rdef.setReportDescr(reportDescr);
734 String formHelpText = definitionJSON.getFormHelpText();
735 rdef.setFormHelpText(formHelpText);
737 Integer pageSize = definitionJSON.getPageSize();
739 rdef.setPageSize(pageSize);
741 List<IdNameBooleanJSON> menuIds = definitionJSON.getDisplayArea();
743 for (IdNameBooleanJSON menuId : menuIds) {
744 if (menuId.isSelected()) {
745 rdef.setMenuID(menuId.getName());
752 Boolean hideFormFieldsAfterRun = definitionJSON.getHideFormFieldsAfterRun();
753 rdef.setHideFormFieldAfterRun(hideFormFieldsAfterRun==null?false:hideFormFieldsAfterRun);
754 Integer maxRowsInExcelCSVDownload = definitionJSON.getMaxRowsInExcelCSVDownload();
755 if(maxRowsInExcelCSVDownload!=null)
756 rdef.setMaxRowsInExcelDownload(maxRowsInExcelCSVDownload);
757 Integer frozenColumns = definitionJSON.getFrozenColumns();
758 if(frozenColumns!=null)
759 rdef.setFrozenColumns(frozenColumns);
760 String dataGridAlign = definitionJSON.getDataGridAlign();
761 rdef.setDataGridAlign(dataGridAlign);
762 String emptyMessage = definitionJSON.getEmptyMessage();
763 rdef.setEmptyMessage(emptyMessage);
764 String dataContainerHeight = definitionJSON.getDataContainerHeight();
765 rdef.setDataContainerHeight(dataContainerHeight);
766 String dataContainerWidth = definitionJSON.getDataContainerWidth();
767 rdef.setDataContainerWidth(dataContainerWidth);
768 Boolean runtimeColSortDisabled = definitionJSON.getRuntimeColSortDisabled();
769 rdef.setRuntimeColSortDisabled(runtimeColSortDisabled==null?false:runtimeColSortDisabled);
770 Integer numFormCols = definitionJSON.getNumFormCols();
771 if(numFormCols!=null)
772 rdef.setNumFormCols(Integer.toString(numFormCols));
773 String reportTitle = definitionJSON.getReportTitle();
774 rdef.setReportTitle(reportTitle);
775 String reportSubTitle = definitionJSON.getReportSubTitle();
776 rdef.setReportSubTitle(reportSubTitle);
778 List<NameBooleanJSON> displayOptions = definitionJSON.getDisplayOptions();
779 StringBuffer displayOptionStr = new StringBuffer("NNNNNNN");
780 if(displayOptions!=null){
781 for (NameBooleanJSON displayOption : displayOptions) {
782 if (displayOption.isSelected()) {
783 if (displayOption.getName().equals("HideFormFields")) {
784 displayOptionStr.setCharAt(0, 'Y');
785 } else if (displayOption.getName().equals("HideChart")) {
786 displayOptionStr.setCharAt(1, 'Y');
787 } else if (displayOption.getName().equals("HideReportData")) {
788 displayOptionStr.setCharAt(2, 'Y');
789 } else if (displayOption.getName().equals("HideExcel")) {
790 displayOptionStr.setCharAt(5, 'Y');
791 } else if (displayOption.getName().equals("HidePdf")) {
792 displayOptionStr.setCharAt(6, 'Y');
799 if(displayOptionStr!=null)
800 rdef.setDisplayOptions(displayOptionStr.toString());
802 if(definitionJSON.getAllowScheduler()!=null)
803 rdef.setAllowSchedule(definitionJSON.getAllowScheduler().equals("true")?"Y":"N");
804 if(definitionJSON.getSizedByContent()!=null)
805 rdef.setSizedByContent(definitionJSON.getSizedByContent().equals("true")?"Y":"N");
806 if(definitionJSON.getOneTimeRec()!=null)
807 rdef.setIsOneTimeScheduleAllowed(definitionJSON.getOneTimeRec().equals("true")?"Y":"N");
808 if(definitionJSON.getHourlyRec()!=null)
809 rdef.setIsHourlyScheduleAllowed(definitionJSON.getHourlyRec().equals("true")?"Y":"N");
810 if(definitionJSON.getDailyRec()!=null)
811 rdef.setIsDailyScheduleAllowed(definitionJSON.getDailyRec().equals("true")?"Y":"N");
812 if(definitionJSON.getDailyMFRec()!=null)
813 rdef.setIsDailyMFScheduleAllowed(definitionJSON.getDailyMFRec().equals("true")?"Y":"N");
814 if(definitionJSON.getWeeklyRec()!=null)
815 rdef.setIsWeeklyScheduleAllowed(definitionJSON.getWeeklyRec().equals("true")?"Y":"N");
816 if(definitionJSON.getMonthlyRec()!=null)
817 rdef.setIsMonthlyScheduleAllowed(definitionJSON.getMonthlyRec().equals("true")?"Y":"N");
820 if (id.equals("Create")) {
821 rdef.persistReport(request);
823 persistReportDefinition(request, rdef);
824 messageJSON.setMessage("Success Definition of given report is saved in session.");
825 messageJSON.setAnyStacktrace((newReport ? " New Report info is added to Session "
826 : rdef.getReportID() + "- is Modified and added to session and DB."));
828 } catch (Exception ex) {
829 messageJSON.setMessage("Error occured while saving definition Tab");
830 messageJSON.setAnyStacktrace(getStackTrace(ex));
831 logger.error(EELFLoggerDelegate.errorLogger,
832 "[Controller.processRequest]Invalid raptor action [retrieveTabWiseData].", ex);
839 @RequestMapping(value = { "/report/wizard/retrieve_form_tab_wise_data/{id}",
840 "/report/wizard/retrieve_form_tab_wise_data/{id}/{action}" }, method = RequestMethod.GET)
841 public @ResponseBody FormEditJSON retrieveFormTabWiseData(@PathVariable Map<String, String> pathVariables,
842 HttpServletRequest request, HttpServletResponse response) {
843 ReportDefinition rdef;
846 String detailId = "";
847 FormEditJSON wizardJSON = new FormEditJSON();
848 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
850 if (pathVariables.containsKey("id")) {
851 id = pathVariables.get("id");
853 if (pathVariables.containsKey("action")) {
854 action = pathVariables.get("action");
857 ServletContext servletContext = request.getSession().getServletContext();
858 if (!Globals.isSystemInitialized()) {
859 Globals.initializeSystem(servletContext);
861 wizardJSON.setTabId("FormEdit");
862 wizardJSON.setTabName("Form Edit");
863 FormFieldType currField = null;
865 if (id.equals("add")) {
867 currField = rdef.addFormFieldType(new ObjectFactory(), "", "", "", "", "", "", "", "", null, null, "",
869 wizardJSON.setFieldId(currField.getFieldId());
870 wizardJSON.setFieldName(currField.getFieldName());
871 wizardJSON.setFieldType(currField.getFieldType());
872 wizardJSON.setVisible(AppUtils.nvls(currField.getVisible(), "Y").toUpperCase().startsWith("Y"));
873 wizardJSON.setDefaultValue(currField.getDefaultValue());
874 wizardJSON.setFieldDefaultSQL(currField.getFieldDefaultSQL());
875 wizardJSON.setFieldSQL(currField.getFieldSQL());
876 wizardJSON.setValidationType(currField.getValidationType());
877 persistReportDefinition(request, rdef);
879 } else if (action.equals("delete")) {
880 rdef.deleteFormField(id);
881 persistReportDefinition(request, rdef);
882 wizardJSON.setMessage("Formfield " + detailId + " Deleted");
884 if (rdef.getFormFieldList() != null) {
885 for (FormFieldType fft : rdef.getFormFieldList().getFormField()) {
886 if (fft.getFieldId().equals(id)) {
887 wizardJSON.setFieldId(fft.getFieldId());
888 wizardJSON.setFieldName(fft.getFieldName());
889 wizardJSON.setFieldType(fft.getFieldType());
890 wizardJSON.setVisible(fft.getVisible().toUpperCase().startsWith("Y"));
891 wizardJSON.setDefaultValue(fft.getDefaultValue());
892 wizardJSON.setFieldDefaultSQL(fft.getFieldDefaultSQL());
893 wizardJSON.setFieldSQL(fft.getFieldSQL());
894 wizardJSON.setValidationType(fft.getValidationType());
895 wizardJSON.setGroupFormField(fft.isGroupFormField());
896 wizardJSON.setOrderSeq(fft.getOrderBySeq());
897 PredefinedValueList preDefined = fft.getPredefinedValueList();
899 if (preDefined != null) {
900 List<IdNameBooleanJSON> preDefinedList = new ArrayList<>();
901 IdNameBooleanJSON idNameBooleanJSON;
903 for (String v : preDefined.getPredefinedValue()) {
904 idNameBooleanJSON = new IdNameBooleanJSON();
905 idNameBooleanJSON.setId(v);
906 idNameBooleanJSON.setName(v);
907 preDefinedList.add(idNameBooleanJSON);
909 wizardJSON.setPredefinedValueList(preDefinedList);
914 } catch (Exception ex) {
915 logger.error(EELFLoggerDelegate.errorLogger,
916 "[Controller.processRequest]Invalid raptor action [retrieveFormTabWiseData].", ex);
917 ErrorJSONRuntime errorJSONRuntime = new ErrorJSONRuntime();
918 errorJSONRuntime.setErrormessage("Error occured while retreiving formedit definition Tab");
919 errorJSONRuntime.setStacktrace(getStackTrace(ex));
920 wizardJSON.setErrorMessage("Error occured while retreiving formedit definition Tab");
921 wizardJSON.setErrorStackTrace(getStackTrace(ex));
928 @RequestMapping(value = { "/report/wizard/retrieve_col_tab_wise_data/{id}" }, method = RequestMethod.GET)
929 public @ResponseBody ColumnEditJSON retrieveColTabWiseData(@PathVariable Map<String, String> pathVariables,
930 HttpServletRequest request, HttpServletResponse response) {
931 ReportDefinition rdef;
933 ColumnEditJSON wizardJSON = new ColumnEditJSON();
934 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
936 if (pathVariables.containsKey("id")) {
937 id = pathVariables.get("id");
939 ServletContext servletContext = request.getSession().getServletContext();
940 if (!Globals.isSystemInitialized()) {
941 Globals.initializeSystem(servletContext);
944 wizardJSON.setTabId("ColEdit");
945 wizardJSON.setTabName("Column Edit");
947 List<DataColumnType> reportColumnList = rdef.getAllColumns();
949 for (DataColumnType reportColumnType : reportColumnList) {
950 if (reportColumnType.getColId().equals(id)) {
951 wizardJSON.setColId(reportColumnType.getColId());
952 wizardJSON.setColName(reportColumnType.getColName());
953 wizardJSON.setDisplayAlignment(reportColumnType.getDisplayAlignment());
954 wizardJSON.setDisplayHeaderAlignment(reportColumnType.getDisplayHeaderAlignment());
955 wizardJSON.setSortable(
956 reportColumnType.isIsSortable() == null ? false : reportColumnType.isIsSortable());
957 wizardJSON.setVisible(reportColumnType.isVisible());
958 wizardJSON.setDrilldownURL(
959 reportColumnType.getDrillDownURL() == null ? "" : reportColumnType.getDrillDownURL());
960 wizardJSON.setDrilldownParams(
961 reportColumnType.getDrillDownParams() == null ? "" : reportColumnType.getDrillDownParams());
962 wizardJSON.setDrilldownType(
963 reportColumnType.getDrillDownType() == null ? "" : reportColumnType.getDrillDownType());
964 wizardJSON.setDataType(reportColumnType.getDbColType() == null ? "" :reportColumnType.getDbColType());
965 wizardJSON.setGroupByPos(reportColumnType.getGroupByPos());
966 wizardJSON.setLevel(reportColumnType.getLevel());
967 wizardJSON.setDisplayWidth(reportColumnType.getDisplayWidth());
968 wizardJSON.setNoWrap(reportColumnType.getNowrap() == null ? "" : reportColumnType.getNowrap());
969 wizardJSON.setIndentation(reportColumnType.getIndentation());
971 wizardJSON.setDepeondsOnForField(reportColumnType.getDependsOnFormField() ==null?"":reportColumnType.getDependsOnFormField());
972 wizardJSON.setSubTotalCustomText(reportColumnType.getSubTotalCustomText()==null?"":reportColumnType.getSubTotalCustomText());
974 wizardJSON.setHideRepeatedKey(reportColumnType.isHideRepeatedKey()==null?false:reportColumnType.isHideRepeatedKey());
975 wizardJSON.setColspan(reportColumnType.getColspan()==null?null:reportColumnType.getColspan());
976 wizardJSON.setDisplayName(reportColumnType.getDisplayName());
977 wizardJSON.setDisplayTotal(reportColumnType.getDisplayTotal());
981 wizardJSON.setErrorMessage("Report is not in session");
987 @RequestMapping(value = { "/report/wizard/retrieve_sql_tab_wise_data/{id}",
988 "/report/wizard/retrieve_sql_tab_wise_data/" }, method = RequestMethod.GET)
989 public @ResponseBody QueryJSON retrieveSqlTabWiseData(@PathVariable Map<String, String> pathVariables,
990 HttpServletRequest request, HttpServletResponse response) throws RaptorException {
991 ReportDefinition rdef = null;
994 QueryJSON wizardJSON = new QueryJSON();
996 if (pathVariables.containsKey("id")) {
997 id = pathVariables.get("id");
999 ServletContext servletContext = request.getSession().getServletContext();
1000 if (!Globals.isSystemInitialized()) {
1001 Globals.initializeSystem(servletContext);
1003 if (id.equals("InSession") || AppUtils.nvl(id).length() <= 0) {
1004 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1005 } else if (AppUtils.nvl(id).length() > 0) {
1006 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1007 rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
1009 if (rdef != null && !rdef.getReportID().equals(id)) {
1010 request.getSession().removeAttribute(AppConstants.SI_REPORT_DEFINITION);
1011 removeVariablesFromSession(request);
1012 rdef = (new ReportHandler()).loadReportDefinition(request, id);
1013 } else if (rr != null && !rr.getReportID().equals(id)) {
1014 request.getSession().removeAttribute(AppConstants.SI_REPORT_RUNTIME);
1015 removeVariablesFromSession(request);
1016 rdef = (new ReportHandler()).loadReportDefinition(request, id);
1017 } else if (rdef == null) {
1018 rdef = (new ReportHandler()).loadReportDefinition(request, id);
1024 wizardJSON.setTabId("Sql");
1025 wizardJSON.setTabName("Sql");
1026 wizardJSON.setQuery(rdef.getReportSQL());
1031 @RequestMapping(value = { "/report/wizard/retrieveTotalForTheColList" }, method = RequestMethod.GET)
1032 public @ResponseBody List<IdNameValue> getTotalForTheCol(HttpServletRequest request)
1034 IdNameList idNameList = AppConstants.TOTAL_FUNCTIONS;
1035 List<IdNameValue> list = new ArrayList<>();
1036 for(int i=0; i<idNameList.getCount(); i++)
1037 list.add(idNameList.getValue(i));
1042 @RequestMapping(value = { "/report/wizard/security/retrieveReportUserList" }, method = RequestMethod.GET)
1043 public @ResponseBody List<SecurityEntry> getReportUserList(HttpServletRequest request)
1044 throws RaptorException {
1045 List<SecurityEntry> reportUserList = new ArrayList<>();
1046 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1047 Vector reportUsers = rdef.getReportUsers(request);
1048 for(Iterator iter=reportUsers.iterator(); iter.hasNext();) {
1049 SecurityEntry rUser = (SecurityEntry) iter.next();
1050 reportUserList.add(rUser);
1052 return reportUserList;
1055 @RequestMapping(value = { "/report/wizard/security/retrieveReportRoleList" }, method = RequestMethod.GET)
1056 public @ResponseBody List<IdNameValue> getReportRoleList(HttpServletRequest request)
1057 throws RaptorException {
1058 List<IdNameValue> reportRoleList = new ArrayList<>();
1059 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1060 Vector reportRoles = rdef.getReportRoles(request);
1061 Vector remainingRoles = Utils.getRolesNotInList(reportRoles,request);
1062 for(int i=0; i<remainingRoles.size(); i++) {
1063 IdNameValue role = (IdNameValue) remainingRoles.get(i);
1064 reportRoleList.add(role);
1066 return reportRoleList;
1069 @RequestMapping(value = { "/report/wizard/security/retrieveReportUserList_query" }, method = RequestMethod.GET)
1070 public @ResponseBody List<Map<String, String>> getReportUserListQuery(HttpServletRequest request)
1072 List<Map<String, String>> reportUserList = new ArrayList();
1073 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1074 String reportId = rdef.getReportID();
1075 Map<String, Object> params = new HashMap<>();
1076 params.put("report_id", new Long(reportId));
1077 List<ReportUserRole> queriedUserList = getDataAccessService().executeNamedQuery("getReportSecurityUsers", params, null);
1078 for (int i=0; i<queriedUserList.size();i++){
1079 Map<String, String> reportUser = new HashMap<>();
1080 reportUser.put("rep_id", queriedUserList.get(i).toString());
1081 reportUser.put("order_no", queriedUserList.get(i).getOrderNo().toString());
1082 reportUser.put("user_id", queriedUserList.get(i).getUserId().toString());
1083 reportUser.put("role_id", queriedUserList.get(i).getRoleId().toString());
1084 reportUser.put("read_only_yn", queriedUserList.get(i).getReadOnlyYn());
1085 reportUserList.add(reportUser);
1087 return reportUserList;
1092 @RequestMapping(value = "/report/security/addReportUser", method = RequestMethod.POST)
1093 public @ResponseBody Map<String,String> addSelectedReportUser(
1094 @RequestBody String userIdToAdd, HttpServletRequest request, HttpServletResponse response)
1096 Map<String, String> JsonResponse = new HashMap<>();
1097 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1099 JsonResponse.put("status","success");
1100 JsonResponse.put("userId",userIdToAdd);
1101 String action = "Add User";
1102 rdef.getReportSecurity().addUserAccess(userIdToAdd, "Y");
1103 WizardSequence ws = rdef.getWizardSequence();
1104 ws.performAction(action,rdef);
1105 return JsonResponse;
1106 } catch (Exception ex) {
1107 logger.error(EELFLoggerDelegate.errorLogger,
1108 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1113 @RequestMapping(value = "/report/security/removeReportUser", method = RequestMethod.POST)
1114 public @ResponseBody Map<String,String> removeSelectedReportUser(
1115 @RequestBody String userIdToRemove, HttpServletRequest request, HttpServletResponse response)
1117 Map<String, String> JsonResponse = new HashMap<>();
1118 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1120 JsonResponse.put("status","success");
1121 JsonResponse.put("userId",userIdToRemove);
1122 String action = "Delete User";
1123 rdef.getReportSecurity().removeUserAccess(userIdToRemove);
1124 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1125 WizardSequence ws = rdef.getWizardSequence();
1126 ws.performAction(action,rdef);
1127 return JsonResponse;
1128 } catch (Exception ex) {
1129 logger.error(EELFLoggerDelegate.errorLogger,
1130 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1135 @RequestMapping(value = "/report/security/addReportRole", method = RequestMethod.POST)
1136 public @ResponseBody Map<String,String> addSelectedReportRole(
1137 @RequestBody String roleIdToAdd, HttpServletRequest request, HttpServletResponse response) {
1138 Map<String, String> JsonResponse = new HashMap<>();
1139 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1141 JsonResponse.put("status","success");
1142 JsonResponse.put("roleId",roleIdToAdd);
1143 String action = "Add Role";
1144 rdef.getReportSecurity().addRoleAccess(roleIdToAdd, "Y");
1145 WizardSequence ws = rdef.getWizardSequence();
1146 ws.performAction(action,rdef);
1147 return JsonResponse;
1148 } catch (Exception ex) {
1149 logger.error(EELFLoggerDelegate.errorLogger,
1150 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1155 @RequestMapping(value = "/report/security/removeReportRole", method = RequestMethod.POST)
1156 public @ResponseBody Map<String,String> removeSelectedReportRole(
1157 @RequestBody String roleIdToRemove, HttpServletRequest request, HttpServletResponse response)
1159 Map<String, String> JsonResponse = new HashMap<String, String>();
1160 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1162 JsonResponse.put("status","success");
1163 JsonResponse.put("roleId",roleIdToRemove);
1164 String action = "Delete Role";
1165 rdef.getReportSecurity().removeRoleAccess(roleIdToRemove);
1166 WizardSequence ws = rdef.getWizardSequence();
1167 ws.performAction(action,rdef);
1168 return JsonResponse;
1169 } catch (Exception ex) {
1170 logger.error(EELFLoggerDelegate.errorLogger,
1171 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1176 @RequestMapping(value = "/report/security/updateReportSecurityInfo", method = RequestMethod.POST)
1177 public @ResponseBody Map<String,String> updateReportSecurityInfo(
1178 @RequestBody Map<String,String> securityInfo, HttpServletRequest request, HttpServletResponse response)
1181 Map<String, String> JsonResponse = new HashMap<>();
1182 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1184 JsonResponse.put("status","success");
1185 String OwnerUserId = securityInfo.get("userId");
1186 String isPublic = securityInfo.get("isPublic");
1187 boolean rPublic = isPublic.equals("true");
1188 rdef.getReportSecurity().setOwnerID(OwnerUserId);
1189 rdef.setPublic(rPublic);
1190 persistReportDefinition(request, rdef);
1191 return JsonResponse;
1193 } catch (Exception ex) {
1194 logger.error(EELFLoggerDelegate.errorLogger,
1195 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1200 @RequestMapping(value = "/report/security/toggleUserEditAccess/{userID}", method = RequestMethod.POST)
1201 public @ResponseBody Map<String,String> toggleUserEditAccess(
1202 @PathVariable("userID") String userId,
1203 @RequestBody String readOnly, HttpServletRequest request, HttpServletResponse response)
1205 Map<String, String> JsonResponse = new HashMap<>();
1206 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1209 JsonResponse.put("status","success");
1210 if (readOnly.equals("N")) {
1211 action = "Grant User Access";
1213 action = "Revoke User Access";
1215 rdef.getReportSecurity().updateUserAccess(userId, readOnly);
1216 WizardSequence ws = rdef.getWizardSequence();
1217 ws.performAction(action,rdef);
1219 return JsonResponse;
1220 } catch (Exception ex) {
1221 logger.error(EELFLoggerDelegate.errorLogger,
1222 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1227 @RequestMapping(value = "/report/security/toggleRoleEditAccess/{roleID}", method = RequestMethod.POST)
1228 public @ResponseBody Map<String,String> toggleRoleEditAccess(
1229 @PathVariable("roleID") String roleId,
1230 @RequestBody String readOnly, HttpServletRequest request, HttpServletResponse response)
1232 Map<String, String> JsonResponse = new HashMap<String, String>();
1233 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1236 JsonResponse.put("status","success");
1237 if (readOnly.equals("N")) {
1238 action = "Grant Role Access";
1240 action = "Revoke Role Access";
1242 rdef.getReportSecurity().updateRoleAccess(roleId, readOnly);
1243 WizardSequence ws = rdef.getWizardSequence();
1244 ws.performAction(action,rdef);
1246 return JsonResponse;
1247 } catch (Exception ex) {
1248 logger.error(EELFLoggerDelegate.errorLogger,
1249 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1254 @RequestMapping(value = { "/report/wizard/security/retrieveReportOwner" }, method = RequestMethod.GET)
1255 public @ResponseBody List<IdNameValue> getReportOwnerInList(HttpServletRequest request)
1256 throws RaptorException {
1257 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1259 List<IdNameValue> UserList = new ArrayList<>();
1260 List excludeValues = new java.util.ArrayList();
1261 HttpSession session = request.getSession();
1262 String query = Globals.getCustomizedScheduleQueryForUsers();
1263 session.setAttribute("login_id", AppUtils.getUserBackdoorLoginId(request));
1264 String userId = AppUtils.getUserID(request);
1265 session.setAttribute("LOGGED_USERID", userId);
1266 String[] sessionParameters = Globals.getSessionParams().split(",");
1268 for (int i = 0; i < sessionParameters.length; i++) {
1269 param = (String) session.getAttribute(sessionParameters[0]);
1270 query = Utils.replaceInString(query, "[" + sessionParameters[i].toUpperCase() + "]",
1271 (String) session.getAttribute(sessionParameters[i]));
1273 boolean isAdmin = AppUtils.isAdminUser(request);
1274 Vector allUsers = AppUtils.getAllUsers(query, param, isAdmin);
1276 for (Iterator iter = allUsers.iterator(); iter.hasNext();) {
1277 IdNameValue value = (IdNameValue) iter.next();
1279 boolean exclude = false;
1280 for (Iterator iterE = excludeValues.iterator(); iterE.hasNext();)
1281 if (((IdNameValue) iterE.next()).getId().equals(value.getId())) {
1287 UserList.add(value);
1293 @RequestMapping(value = { "/report/wizard/security/getReportSecurityInfo" }, method = RequestMethod.GET)
1294 public @ResponseBody Map<String,String> getReportSecurityInfo(HttpServletRequest request)
1296 Map<String, String> securityInfoMap = new HashMap<>();
1297 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1298 String isPublic = Boolean.toString(rdef.isPublic());
1299 String createUser = AppUtils.getUserName(rdef.getCreateID());
1300 String createDate = rdef.getCreateDate();
1301 String updateUser = AppUtils.getUserName(rdef.getUpdateID());
1302 String updateDate = rdef.getUpdateDate();
1303 String ownerId = rdef.getOwnerID();
1305 securityInfoMap.put("isPublic",isPublic);
1306 securityInfoMap.put("createdUser",createUser);
1307 securityInfoMap.put("createdDate",createDate);
1308 securityInfoMap.put("updateUser",updateUser);
1309 securityInfoMap.put("updatedDate",updateDate);
1310 securityInfoMap.put("ownerId",ownerId);
1312 return securityInfoMap;
1315 @RequestMapping(value = { "/report/wizard/security/getReportSecurityUsers" }, method = RequestMethod.GET)
1316 public @ResponseBody List<SecurityEntry> getReportSecurityUsers(HttpServletRequest request)
1317 throws RaptorException {
1319 List<SecurityEntry> reportUserMapList = new ArrayList<>();
1320 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1321 Vector reportUsers = rdef.getReportUsers(request);
1324 for(Iterator iter=reportUsers.iterator(); iter.hasNext(); iCount++) {
1325 Map<String, String> reportUserMap = new HashMap<String,String>();
1326 SecurityEntry rUser = (SecurityEntry) iter.next();
1327 reportUserMapList.add(rUser);
1330 return reportUserMapList;
1334 @RequestMapping(value = { "/report/wizard/security/getReportSecurityRoles" }, method = RequestMethod.GET)
1335 public @ResponseBody List<SecurityEntry> getReportSecurityRoles(HttpServletRequest request)
1336 throws RaptorException {
1338 List<SecurityEntry> reportRoleList = new ArrayList<>();
1339 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1340 Vector reportRoles = rdef.getReportRoles(request);
1342 for(Iterator iter=reportRoles.iterator(); iter.hasNext(); ) {
1343 SecurityEntry rRole = (SecurityEntry) iter.next();
1344 reportRoleList.add(rRole);
1347 return reportRoleList;
1351 @RequestMapping(value = { "/report/wizard/retrieve_def_tab_wise_data/{id}",
1352 "/report/wizard/retrieve_def_tab_wise_data/{id}/{detailId}" }, method = RequestMethod.GET)
1353 public @ResponseBody DefinitionJSON retrieveDefTabWiseData(@PathVariable Map<String, String> pathVariables,
1354 HttpServletRequest request, HttpServletResponse response) throws RaptorException {
1355 ReportDefinition rdef;
1357 String tabId = "Def";
1360 if (pathVariables.containsKey("id")) {
1361 id = pathVariables.get("id");
1364 ServletContext servletContext = request.getSession().getServletContext();
1365 if (!Globals.isSystemInitialized()) {
1366 Globals.initializeSystem(servletContext);
1368 String copyReportEvent = (String)request.getSession().getAttribute("COPY_REPORT_EVENT");
1369 if (tabId.equals("Def") && id.equals("InSession") || "true".equals(copyReportEvent)) {
1370 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1372 } else if (tabId.equals("Def") && id.equals("Create")) {
1373 removeVariablesFromSession(request);
1374 rdef = (new ReportHandler()).loadReportDefinition(request, "-1");
1375 rdef.setReportType(AppConstants.RT_LINEAR);
1377 } else if (tabId.equals("Def") && AppUtils.nvl(id).length() > 0) {
1378 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1379 rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
1381 if (rdef != null && !rdef.getReportID().equals(id)) {
1382 request.getSession().removeAttribute(AppConstants.SI_REPORT_DEFINITION);
1383 removeVariablesFromSession(request);
1384 rdef = (new ReportHandler()).loadReportDefinition(request, id);
1385 request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
1386 } else if (rr != null && !rr.getReportID().equals(id)) {
1387 request.getSession().removeAttribute(AppConstants.SI_REPORT_RUNTIME);
1388 removeVariablesFromSession(request);
1389 rdef = (new ReportHandler()).loadReportDefinition(request, id);
1390 request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
1391 } else if (rdef == null) {
1392 rdef = (new ReportHandler()).loadReportDefinition(request, id);
1393 request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
1397 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1399 DefinitionJSON wizardJSON = new DefinitionJSON();
1400 if (tabId.equals("Def")) {
1401 wizardJSON.setTabId("Def");
1402 wizardJSON.setTabName("Definition");
1404 wizardJSON.setReportId((rdef != null) ? rdef.getReportID() + "" : "");
1405 wizardJSON.setReportName((rdef != null) ? rdef.getReportName() : "");
1406 wizardJSON.setReportDescr((rdef != null) ? rdef.getReportDescr() : "");
1407 wizardJSON.setReportType((rdef != null) ? rdef.getReportType() : AppConstants.RT_LINEAR);
1408 wizardJSON.setDbInfo((rdef != null) ? rdef.getDBInfo() : "");
1409 wizardJSON.setFormHelpText((rdef != null) ? rdef.getFormHelpText() : "");
1410 wizardJSON.setPageSize((rdef != null) ? rdef.getPageSize() : 50);
1411 List<IdNameBooleanJSON> displayArea = new ArrayList<IdNameBooleanJSON>();
1412 IdNameBooleanJSON idNameJSON = new IdNameBooleanJSON();
1414 for (int i = 0; i < AppUtils.getQuickLinksMenuIDs().size(); i++) {
1415 idNameJSON = new IdNameBooleanJSON();
1416 qMenu = (String) AppUtils.getQuickLinksMenuIDs().get(i);
1417 idNameJSON.setId(qMenu);
1418 idNameJSON.setName(qMenu);
1419 if (rdef != null && (rdef.getMenuID().equals(qMenu))) {
1420 idNameJSON.setSelected(true);
1422 displayArea.add(idNameJSON);
1424 wizardJSON.setDisplayArea(displayArea);
1425 wizardJSON.setHideFormFieldsAfterRun((rdef != null) ? rdef.isHideFormFieldAfterRun() : false);
1426 wizardJSON.setMaxRowsInExcelCSVDownload((rdef != null) ? rdef.getMaxRowsInExcelDownload() : 500);
1427 wizardJSON.setFrozenColumns((rdef != null) ? rdef.getFrozenColumns() : 0);
1428 wizardJSON.setDataGridAlign((rdef != null) ? rdef.getDataGridAlign() : "left");
1429 wizardJSON.setEmptyMessage((rdef != null) ? rdef.getEmptyMessage() : "No records found");
1430 wizardJSON.setDataContainerHeight((rdef != null) ? rdef.getDataContainerHeight() : "600");
1431 wizardJSON.setDataContainerWidth((rdef != null) ? rdef.getDataContainerWidth() : "900");
1432 List<NameBooleanJSON> displayOptions = new ArrayList<NameBooleanJSON>();
1433 NameBooleanJSON nameBooleanJSON = new NameBooleanJSON();
1434 nameBooleanJSON.setName("HideFormFields");
1435 nameBooleanJSON.setSelected((rdef != null) ? rdef.isDisplayOptionHideForm() : false);
1436 displayOptions.add(nameBooleanJSON);
1438 nameBooleanJSON = new NameBooleanJSON();
1439 nameBooleanJSON.setName("HideChart");
1440 nameBooleanJSON.setSelected((rdef != null) ? rdef.isDisplayOptionHideChart() : false);
1441 displayOptions.add(nameBooleanJSON);
1443 nameBooleanJSON = new NameBooleanJSON();
1444 nameBooleanJSON.setName("HideReportData");
1445 nameBooleanJSON.setSelected((rdef != null) ? rdef.isDisplayOptionHideData() : false);
1446 displayOptions.add(nameBooleanJSON);
1448 nameBooleanJSON = new NameBooleanJSON();
1449 nameBooleanJSON.setName("HideExcel");
1450 nameBooleanJSON.setSelected((rdef != null) ? rdef.isDisplayOptionHideExcelIcons() : false);
1451 displayOptions.add(nameBooleanJSON);
1453 nameBooleanJSON = new NameBooleanJSON();
1454 nameBooleanJSON.setName("HidePdf");
1455 nameBooleanJSON.setSelected((rdef != null) ? rdef.isDisplayOptionHidePDFIcons() : false);
1456 displayOptions.add(nameBooleanJSON);
1458 wizardJSON.setDisplayOptions(displayOptions);
1460 wizardJSON.setRuntimeColSortDisabled((rdef != null) ? rdef.isRuntimeColSortDisabled() : false);
1461 wizardJSON.setNumFormCols((rdef != null) ? rdef.getNumFormColsAsInt() : 1);
1462 wizardJSON.setReportTitle((rdef != null) ? rdef.getReportTitle() : "");
1463 wizardJSON.setReportSubTitle((rdef != null) ? rdef.getReportSubTitle() : "");
1466 String schemaSql = Globals.getRemoteDbSchemaSql();
1468 ArrayList<IdNameBooleanJSON> dbInfoList = new ArrayList<IdNameBooleanJSON>();
1470 ds = DbUtils.executeQuery(schemaSql);
1472 String prefix = "", desc = "";
1474 for (int i = 0; i < ds.getRowCount(); i++) {
1475 IdNameBooleanJSON dBNameJSON = new IdNameBooleanJSON();
1476 dBNameJSON.setId(ds.getItem(i, 0));
1477 dBNameJSON.setName(ds.getItem(i, 0));
1478 dBNameJSON.setSelected(false);
1479 dbInfoList.add(dBNameJSON);
1482 catch (Exception e) {}
1483 wizardJSON.setDbInfoList(dbInfoList);
1486 wizardJSON.setOneTimeRec((rdef != null) ? rdef.getIsOneTimeScheduleAllowed() : "false");
1487 wizardJSON.setHourlyRec((rdef != null) ? rdef.getIsHourlyScheduleAllowed() : "false");
1488 wizardJSON.setDailyRec((rdef != null) ? rdef.getIsDailyScheduleAllowed() : "false");
1489 wizardJSON.setDailyMFRec((rdef != null) ? rdef.getIsDailyMFScheduleAllowed() : "false");
1490 wizardJSON.setWeeklyRec((rdef != null) ? rdef.getIsWeeklyScheduleAllowed() : "false");
1491 wizardJSON.setMonthlyRec((rdef != null) ? rdef.getIsMonthlyScheduleAllowed() : "false");
1492 wizardJSON.setAllowScheduler((rdef != null) ? rdef.getAllowSchedule() : "false");
1493 wizardJSON.setSizedByContent((rdef != null) ? rdef.getSizedByContentOption() : "false");
1494 wizardJSON.setRepDefType(rdef.getReportDefType());
1497 ObjectMapper mapper = new ObjectMapper();
1498 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
1499 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
1505 @RequestMapping(value = "/report/wizard/retrieve_data/{validate}", method = RequestMethod.POST)
1506 public @ResponseBody RaptorResponse retrieveDataForGivenQuery(@PathVariable("validate") boolean validate,
1507 @RequestBody QueryJSON queryJSON, HttpServletRequest request, HttpServletResponse response)
1508 throws RaptorException {
1509 RaptorResponse raptorResponse = new RaptorResponse();
1510 String sql = queryJSON.getQuery();
1511 String jsonInString = "";
1513 ServletContext servletContext = request.getSession().getServletContext();
1514 if (!Globals.isSystemInitialized()) {
1515 Globals.initializeSystem(servletContext);
1518 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1520 ErrorJSONRuntime errorJSONRuntime = new ErrorJSONRuntime();
1521 errorJSONRuntime.setErrormessage("Report Definition is not in session;");
1522 errorJSONRuntime.setStacktrace("");
1524 ObjectMapper mapper = new ObjectMapper();
1525 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
1526 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
1529 jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(errorJSONRuntime);
1530 raptorResponse.data().put("elements", jsonInString);
1531 return raptorResponse;
1532 } catch (Exception ex1) {
1533 logger.error(EELFLoggerDelegate.errorLogger,
1534 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex1);
1537 if (!sql.trim().toUpperCase().startsWith("SELECT")) {
1538 ErrorJSONRuntime errorJSONRuntime = new ErrorJSONRuntime();
1539 errorJSONRuntime.setErrormessage("Invalid statement - the SQL must start with the keyword SELECT");
1540 errorJSONRuntime.setStacktrace("SQL Error");
1541 ObjectMapper mapper = new ObjectMapper();
1542 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
1543 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
1546 jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(errorJSONRuntime);
1547 raptorResponse.data().put("elements", jsonInString);
1548 return raptorResponse;
1550 } catch (Exception ex) {
1551 logger.error(EELFLoggerDelegate.errorLogger,
1552 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1556 String remoteDb = request.getParameter("remoteDbPrefix");
1557 // comment below two lines to test
1558 String remoteDbPrefix = (remoteDb != null && !remoteDb.equalsIgnoreCase("null")) ? remoteDb
1560 String userId = AppUtils.getUserID(request);
1562 sql = Utils.replaceInString(sql, "[LOGGED_USERID]", userId);
1563 sql = Utils.replaceInString(sql, "[USERID]", userId);
1564 String[] reqParameters = Globals.getRequestParams().split(",");
1565 String[] sessionParameters = Globals.getSessionParams().split(",");
1566 javax.servlet.http.HttpSession session = request.getSession();
1567 logger.debug(EELFLoggerDelegate.debugLogger, ("B4 testRunSQL " + sql));
1568 if (request != null) {
1569 for (int i = 0; i < reqParameters.length; i++) {
1570 if (!reqParameters[i].startsWith("ff"))
1571 sql = Utils.replaceInString(sql, "[" + reqParameters[i].toUpperCase() + "]",
1572 ESAPI.encoder().encodeForSQL( SecurityCodecUtil.getCodec(),request.getParameter(reqParameters[i].toUpperCase())));
1574 sql = Utils.replaceInString(sql, "[" + reqParameters[i].toUpperCase() + "]",
1575 ESAPI.encoder().encodeForSQL( SecurityCodecUtil.getCodec(),request.getParameter(reqParameters[i])));
1578 if (session != null) {
1579 for (int i = 0; i < sessionParameters.length; i++) {
1580 logger.debug(EELFLoggerDelegate.debugLogger, (" Session " + " sessionParameters[i] "
1581 + sessionParameters[i] + " " + (String) session.getAttribute(sessionParameters[i])));
1582 sql = Utils.replaceInString(sql, "[" + sessionParameters[i].toUpperCase() + "]",
1583 (String) session.getAttribute(sessionParameters[i]));
1586 logger.debug(EELFLoggerDelegate.debugLogger, ("After testRunSQL " + sql));
1589 response.setContentType("application/json");
1590 ds = ConnectionUtils.getDataSet(sql, rdef.getDBInfo(), true);
1592 QueryResultJSON queryResultJSON = new QueryResultJSON();
1593 queryResultJSON.setQuery(queryJSON.getQuery());
1594 String query = XSSFilter.filterRequestOnlyScript(queryJSON.getQuery());
1595 rdef.parseReportSQL(query,validate);
1596 queryResultJSON.setQuery(query);
1598 queryResultJSON.setTotalRows(ds.getRowCount());
1600 Map<String, String> dvJSON;
1601 ArrayList<String> colList = new ArrayList<>();
1602 ArrayList<Map<String, String>> reportDataRows = new ArrayList<>();
1603 if (!ds.isEmpty()) {
1605 for (int i = 0; i < ds.getColumnCount(); i++) {
1606 colList.add(ds.getColumnName(i));
1608 queryResultJSON.setReportDataColumns(colList);
1609 if (queryResultJSON.getTotalRows() > 0) {
1610 for (int r = 0; r < Math.min(ds.getRowCount(), 100); r++) {
1611 dvJSON = new HashMap<>();
1612 for (int c = 0; c < ds.getColumnCount(); c++) {
1614 dvJSON.put(ds.getColumnName(c), ds.getString(r, c));
1615 } catch (Exception ex) {
1616 logger.error(EELFLoggerDelegate.errorLogger,
1617 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].",
1621 reportDataRows.add(dvJSON);
1627 queryResultJSON.setReportDataRows(reportDataRows);
1628 ObjectMapper mapper = new ObjectMapper();
1629 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
1630 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
1632 query = XSSFilter.filterRequestOnlyScript(queryJSON.getQuery());
1633 request.setAttribute("sqlValidated", "N");
1634 rdef.parseReportSQL(query);
1635 request.setAttribute("sqlValidated", "Y");
1636 persistReportDefinition(request, rdef);
1640 jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(queryResultJSON);
1641 raptorResponse.data().put("elements", jsonInString);
1642 return raptorResponse;
1644 } catch (Exception ex) {
1645 logger.error(EELFLoggerDelegate.errorLogger,
1646 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery]. RaptorException: ",
1649 } catch (ReportSQLException ex) {
1650 ErrorJSONRuntime errorJSONRuntime = new ErrorJSONRuntime();
1651 if (sql.contains("[")) {
1652 errorJSONRuntime.setErrormessage(
1653 "Formfield information is present in the query, hence couldn't execute");
1655 .setStacktrace("Formfield information is present in the query, hence couldn't execute");
1657 String query = XSSFilter.filterRequestOnlyScript(queryJSON.getQuery());
1658 request.setAttribute("sqlValidated", "N");
1659 rdef.parseReportSQL(query);
1660 request.setAttribute("sqlValidated", "Y");
1661 persistReportDefinition(request, rdef);
1666 errorJSONRuntime.setErrormessage(ex.getMessage());
1667 errorJSONRuntime.setStacktrace(getStackTrace(ex));
1669 ObjectMapper mapper = new ObjectMapper();
1670 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
1671 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
1674 jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(errorJSONRuntime);
1675 raptorResponse.data().put("elements", jsonInString);
1676 return raptorResponse;
1678 } catch (Exception ex1) {
1679 logger.error(EELFLoggerDelegate.errorLogger,
1680 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex1);
1684 String query = XSSFilter.filterRequestOnlyScript(queryJSON.getQuery());
1685 request.setAttribute("sqlValidated", "N");
1686 rdef.parseReportSQL(query);
1687 request.setAttribute("sqlValidated", "Y");
1688 persistReportDefinition(request, rdef);
1694 raptorResponse.data().put("elements", jsonInString);
1695 return raptorResponse;
1700 @RequestMapping(value = "/report/wizard/get_report_log/{reportID}", method = RequestMethod.GET)
1701 public @ResponseBody ArrayList<ReportLogEntry> getLogs(@PathVariable("reportID") String reportId, HttpServletRequest request,
1702 HttpServletResponse ReportLogEntry) {
1703 ArrayList<ReportLogEntry> arrayList = new ArrayList<>();
1705 Vector<ReportLogEntry> v = ReportLoader.loadReportLogEntries(reportId);
1706 for(ReportLogEntry r:v ){
1709 } catch (RaptorException e) {
1710 logger.error(EELFLoggerDelegate.errorLogger,
1711 "RaptorControllerAsync getLogs.", e);
1716 @RequestMapping(value = "save_chart", method = RequestMethod.POST)
1717 public void reportChartReceive(@RequestBody ChartJSON chartJSON, HttpServletRequest request,
1718 HttpServletResponse response) {
1719 ReportRuntime reportRuntime;
1720 reportRuntime = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME); // changing
1724 String reportID = request.getParameter("c_master");
1725 if (reportRuntime == null && AppUtils.nvl(reportID).length() > 0) {
1727 ReportHandler rh = new ReportHandler();
1728 reportRuntime = rh.loadReportRuntime(request, reportID);
1729 } catch (RaptorException ex) {
1730 logger.error(EELFLoggerDelegate.errorLogger,
1731 "[Controller.processRequest]Invalid raptor action [reportChartReceive].", ex);
1735 if (reportRuntime != null) {
1736 String chartType = chartJSON.getChartType();
1737 reportRuntime.setChartType(chartJSON.getChartType());
1738 reportRuntime.setChartAnimate(chartJSON.isAnimation());
1739 reportRuntime.setChartWidth(chartJSON.getWidth());
1740 reportRuntime.setChartHeight(chartJSON.getHeight());
1741 reportRuntime.setShowChartTitle(chartJSON.isShowTitle());
1743 String domainAxis = null;
1744 domainAxis = chartJSON.getDomainAxis();
1746 List<DataColumnType> reportCols = reportRuntime.getAllColumns();
1748 for (Iterator<DataColumnType> iter = reportCols.iterator(); iter.hasNext();) {
1749 DataColumnType dct = iter.next();
1750 if (dct.getColId().equals(domainAxis)) {
1751 dct.setColOnChart(AppConstants.GC_LEGEND);
1753 dct.setColOnChart(null);
1757 CategoryAxisJSON categoryAxisJSON = chartJSON.getCategoryAxisJSON();
1758 String categoryAxis;
1760 categoryAxis = (categoryAxisJSON != null ? categoryAxisJSON.getValue() : "");
1762 reportCols = reportRuntime.getAllColumns();
1764 for (Iterator<DataColumnType> iter = reportCols.iterator(); iter.hasNext();) {
1765 DataColumnType dct = iter.next();
1766 if (dct.getColId().equals(categoryAxis)) {
1767 dct.setChartSeries(true);
1769 dct.setChartSeries(false);
1773 ArrayList<RangeAxisJSON> rangeAxisList = chartJSON.getRangeAxisList();
1775 HashSet<String> removeRangeAxisMap = new HashSet<>();
1776 for(RangeAxisJSON rangeAxis:chartJSON.getRangeAxisRemoveList()){
1777 removeRangeAxisMap.add(rangeAxis.getRangeAxis());
1779 for (int i = 0; i < rangeAxisList.size(); i++) {
1780 RangeAxisJSON rangeAxisJSON = rangeAxisList.get(i);
1781 String rangeAxis = rangeAxisJSON.getRangeAxis();
1782 String rangeYAxis = AppUtils.nvl(rangeAxisJSON.getRangeYAxis());
1783 String rangeChartGroup = AppUtils.nvl(rangeAxisJSON.getRangeChartGroup());
1784 String rangeColor = AppUtils.nvl(rangeAxisJSON.getRangeColor());
1785 String rangeLineType = AppUtils.nvl(rangeAxisJSON.getRangeLineType());
1787 rangefor: for (Iterator<DataColumnType> iterator = reportCols.iterator(); iterator.hasNext();) {
1788 DataColumnType dct = iterator.next();
1789 if (dct.getColId().equals(rangeAxis)) {
1790 if(removeRangeAxisMap.contains(rangeAxis))
1791 dct.setChartSeq(-1); // if we set it to -1, means this range axis will not be included
1793 dct.setChartSeq(++r);
1795 if (!dct.getColId().equals(domainAxis)) {
1796 dct.setColOnChart("0");
1798 dct.setChartSeq(-1);
1800 dct.setYAxis(rangeYAxis); // +"|"+dct.getColId());
1801 dct.setChartGroup(rangeChartGroup); // +"|"+dct.getColId());
1802 dct.setChartColor(rangeColor);
1803 dct.setChartLineType(rangeLineType);
1805 if (chartType.equals(AppConstants.GT_ANNOTATION_CHART)
1806 || chartType.equals(AppConstants.GT_FLEX_TIME_CHARTS)) {
1807 if (rangeAxisJSON.isShowAsArea()) {
1808 dct.setIsRangeAxisFilled(true);
1810 dct.setIsRangeAxisFilled(false);
1818 reportRuntime.setChartLeftAxisLabel(chartJSON.getPrimaryAxisLabel());
1819 reportRuntime.setChartRightAxisLabel(chartJSON.getSecondaryAxisLabel());
1821 reportRuntime.setRangeAxisLowerLimit(chartJSON.getMinRange());
1822 reportRuntime.setRangeAxisUpperLimit(chartJSON.getMaxRange());
1824 if (chartType.equals(AppConstants.GT_ANNOTATION_CHART)
1825 || chartType.equals(AppConstants.GT_FLEX_TIME_CHARTS)) {
1826 if (chartJSON.getFlexTimeSeriesChartOptions() != null) {
1827 reportRuntime.setZoomIn(chartJSON.getFlexTimeSeriesChartOptions().getZoomIn());
1828 reportRuntime.setTimeAxisType(chartJSON.getFlexTimeSeriesChartOptions().getTimeAxisType());
1833 if (chartType.equals(AppConstants.GT_TIME_SERIES)) {
1834 if (chartJSON.getTimeSeriesChartOptions() != null) {
1835 reportRuntime.setTimeSeriesRender(chartJSON.getTimeSeriesChartOptions().getLineChartRenderer());
1836 reportRuntime.setShowXAxisLabel(chartJSON.getTimeSeriesChartOptions().isShowXAxisLabel());
1837 reportRuntime.setAddXAxisTickers(chartJSON.getTimeSeriesChartOptions().isAddXAxisTicker());
1838 reportRuntime.setTimeAxis(chartJSON.getTimeSeriesChartOptions().isNonTimeAxis());
1839 reportRuntime.setMultiSeries(chartJSON.getTimeSeriesChartOptions().isMultiSeries());
1844 if (chartType.equals(AppConstants.GT_BAR_3D)) {
1845 if (chartJSON.getBarChartOptions() != null) {
1846 reportRuntime.setChartOrientation(
1847 chartJSON.getBarChartOptions().isVerticalOrientation() ? "vertical" : "horizontal");
1848 reportRuntime.setChartStacked(chartJSON.getBarChartOptions().isStackedChart());
1849 reportRuntime.setBarControls(chartJSON.getBarChartOptions().isDisplayBarControls());
1850 reportRuntime.setXAxisDateType(chartJSON.getBarChartOptions().isxAxisDateType());
1851 reportRuntime.setLessXaxisTickers(chartJSON.getBarChartOptions().isMinimizeXAxisTickers());
1852 reportRuntime.setTimeAxis(chartJSON.getBarChartOptions().isTimeAxis());
1853 reportRuntime.setLogScale(chartJSON.getBarChartOptions().isyAxisLogScale());
1857 reportRuntime.setLegendLabelAngle(chartJSON.getCommonChartOptions().getLegendLabelAngle());
1858 reportRuntime.setLegendPosition(chartJSON.getCommonChartOptions().getLegendPosition());
1859 reportRuntime.setChartLegendDisplay(chartJSON.getCommonChartOptions().isHideLegend() ? "Y" : "N");
1860 reportRuntime.setAnimateAnimatedChart(chartJSON.getCommonChartOptions().isAnimateAnimatedChart());
1862 reportRuntime.setTopMargin(chartJSON.getCommonChartOptions().getTopMargin());
1863 reportRuntime.setBottomMargin(chartJSON.getCommonChartOptions().getBottomMargin());
1864 reportRuntime.setLeftMargin(chartJSON.getCommonChartOptions().getLeftMargin());
1865 reportRuntime.setRightMargin(chartJSON.getCommonChartOptions().getRightMargin());
1867 for (Iterator<DataColumnType> iterator = reportCols.iterator(); iterator.hasNext();) {
1868 DataColumnType dct = iterator.next();
1869 if (!(AppUtils.nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND)
1870 || (dct.getChartSeq() != null && dct.getChartSeq() > 0) || dct.isChartSeries())) {
1871 dct.setChartSeq(-1);
1872 dct.setChartColor(null);
1873 dct.setColOnChart(null);
1874 dct.setCreateInNewChart(false);
1875 dct.setChartGroup(null);
1881 reportRuntime.persistLinearReport(request);
1882 } catch (Exception ex) {
1883 logger.error(EELFLoggerDelegate.errorLogger,
1884 "[Controller.processRequest]Invalid raptor action [reportChartReceive].", ex);
1890 public String getViewName() {
1894 public void setViewName(String viewName) {
1895 this.viewName = viewName;
1898 public String nvl(String s) {
1899 return (s == null) ? "" : s;
1902 public String nvl(String s, String sDefault) {
1903 return nvl(s).equals("") ? sDefault : s;
1906 public static String getStackTrace(Throwable aThrowable) {
1907 Writer result = new StringWriter();
1908 PrintWriter printWriter = new PrintWriter(result);
1909 aThrowable.printStackTrace(printWriter);
1910 return result.toString();
1913 public void persistReportDefinition(HttpServletRequest request, ReportDefinition rdef) throws RaptorException {
1914 ReportRuntime rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
1915 if (rr != null && rr.getReportID().equals(rdef.getReportID()))
1916 request.getSession().removeAttribute(AppConstants.SI_REPORT_RUNTIME);
1917 rdef.persistReport(request);
1918 } // persistReportDefinition
1920 // Remove from session
1921 private void removeVariablesFromSession(HttpServletRequest request) {
1922 HttpSession session = request.getSession();
1923 session.removeAttribute(AppConstants.DRILLDOWN_REPORTS_LIST);
1924 session.removeAttribute(AppConstants.DRILLDOWN_INDEX);
1925 session.removeAttribute(AppConstants.FORM_DRILLDOWN_INDEX);
1926 session.removeAttribute(AppConstants.SI_BACKUP_FOR_REP_ID);
1927 session.removeAttribute(AppConstants.SI_COLUMN_LOOKUP);
1928 session.removeAttribute(AppConstants.SI_DASHBOARD_REP_ID);
1929 session.removeAttribute(AppConstants.SI_DASHBOARD_REPORTRUNTIME_MAP);
1930 session.removeAttribute(AppConstants.SI_DASHBOARD_REPORTRUNTIME);
1931 session.removeAttribute(AppConstants.SI_DASHBOARD_REPORTDATA_MAP);
1932 session.removeAttribute(AppConstants.SI_DASHBOARD_CHARTDATA_MAP);
1933 session.removeAttribute(AppConstants.SI_DASHBOARD_DISPLAYTYPE_MAP);
1934 session.removeAttribute(AppConstants.SI_DATA_SIZE_FOR_TEXTFIELD_POPUP);
1935 session.removeAttribute(AppConstants.SI_MAP);
1936 session.removeAttribute(AppConstants.SI_MAP_OBJECT);
1937 session.removeAttribute(AppConstants.SI_REPORT_DEFINITION);
1938 session.removeAttribute(AppConstants.SI_REPORT_RUNTIME);
1939 session.removeAttribute(AppConstants.SI_REPORT_RUN_BACKUP);
1940 session.removeAttribute(AppConstants.SI_REPORT_SCHEDULE);
1941 session.removeAttribute(AppConstants.RI_REPORT_DATA);
1942 session.removeAttribute(AppConstants.RI_CHART_DATA);
1943 session.removeAttribute(AppConstants.SI_FORMFIELD_INFO);
1944 session.removeAttribute(AppConstants.SI_FORMFIELD_DOWNLOAD_INFO);
1945 session.removeAttribute(AppConstants.EMBEDDED_REPORTRUNTIME_MAP);
1946 session.removeAttribute(AppConstants.EMBEDDED_REPORTDATA_MAP);
1947 Enumeration<String> enum1 = session.getAttributeNames();
1948 String attributeName = "";
1949 while (enum1.hasMoreElements()) {
1950 attributeName = enum1.nextElement();
1951 if (attributeName.startsWith("parent_")) {
1952 session.removeAttribute(attributeName);