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.CachingUtils;
104 import org.onap.portalsdk.analytics.util.DataSet;
105 import org.onap.portalsdk.analytics.util.Utils;
106 import org.onap.portalsdk.analytics.util.XSSFilter;
107 import org.onap.portalsdk.analytics.view.ReportData;
108 import org.onap.portalsdk.analytics.xmlobj.DataColumnType;
109 import org.onap.portalsdk.analytics.xmlobj.FormFieldType;
110 import org.onap.portalsdk.analytics.xmlobj.ObjectFactory;
111 import org.onap.portalsdk.analytics.xmlobj.PredefinedValueList;
112 import org.onap.portalsdk.analytics.xmlobj.SemaphoreList;
113 import org.onap.portalsdk.core.controller.RestrictedBaseController;
114 import org.onap.portalsdk.core.domain.User;
115 import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
116 import org.onap.portalsdk.core.util.SecurityCodecUtil;
117 import org.onap.portalsdk.core.web.support.UserUtils;
118 import org.owasp.esapi.ESAPI;
119 import org.springframework.stereotype.Controller;
120 import org.springframework.web.bind.annotation.CrossOrigin;
121 import org.springframework.web.bind.annotation.PathVariable;
122 import org.springframework.web.bind.annotation.RequestBody;
123 import org.springframework.web.bind.annotation.RequestMapping;
124 import org.springframework.web.bind.annotation.GetMapping;
125 import org.springframework.web.bind.annotation.PostMapping;
126 import org.springframework.web.bind.annotation.PutMapping;
127 import org.springframework.web.bind.annotation.RequestMethod;
128 import org.springframework.web.bind.annotation.ResponseBody;
130 import com.fasterxml.jackson.databind.DeserializationFeature;
131 import com.fasterxml.jackson.databind.ObjectMapper;
132 import com.fasterxml.jackson.databind.SerializationFeature;
136 public class RaptorControllerAsync extends RestrictedBaseController {
138 private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(RaptorControllerAsync.class);
139 private static final String INVALID_ACTION = "[Controller.processRequest]Invalid raptor action [";
140 private static final String UNABLE_INSTANTIATE = "[Controller.processRequest] Unable to instantiate and invoke action handler. Exception: ";
142 private String viewName;
144 @GetMapping(value = { "/raptor.htm" })
145 public void RaptorSearch(HttpServletRequest request, HttpServletResponse response)
146 throws IOException, RaptorException {
149 String actionKey = nvl(request.getParameter(AppConstants.RI_ACTION), request.getParameter("action"));
150 actionKey = nvl(actionKey, "report.run");
152 HttpSession session = request.getSession();
153 User user = UserUtils.getUserSession(request);
154 boolean isPageDownload = Boolean.valueOf(request.getParameter(AppConstants.PAGE_DOWNLOAD));
155 boolean isGoBackAction = AppUtils.getRequestFlag(request, AppConstants.RI_GO_BACK);
156 if ("report.download.excel2007.session".equals(actionKey) || "report.download.csv.session".equals(actionKey)
157 || "report.download.excel.session".equals(actionKey)
158 || "report.download.pdf.session".equals(actionKey)) {
159 if (session != null && user != null) {
160 long currentTime = System.currentTimeMillis();
161 request.setAttribute("triggeredStartTime", new Long(currentTime));
163 ServletContext servletContext = request.getSession().getServletContext();
164 if (!Globals.isSystemInitialized()) {
165 Globals.initializeSystem(servletContext);
167 ReportRuntime rr = null;
168 ReportData rd = null;
171 if (!"N".equals(nvl(request.getParameter("parent"), "")))
172 parent = nvl(request.getParameter("parent"), "");
173 if (parent.startsWith("parent_"))
175 if (parentFlag == 1) {
176 rr = (ReportRuntime) request.getSession().getAttribute(parent + "_rr");
177 rd = (ReportData) request.getSession().getAttribute(parent + "_rd");
180 boolean isEmbedded = false;
181 Object temp = request.getSession().getAttribute("isEmbedded");
183 isEmbedded = (boolean) temp;
186 String reportID = AppUtils.getRequestValue(request, AppConstants.RI_REPORT_ID);
188 rr = (ReportRuntime) ((HashMap) request.getSession()
189 .getAttribute(AppConstants.EMBEDDED_REPORTRUNTIME_MAP)).get(reportID);
191 rd = (ReportData) ((HashMap) request.getSession()
192 .getAttribute(AppConstants.EMBEDDED_REPORTDATA_MAP)).get(reportID);
195 rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
197 rd = (ReportData) request.getSession().getAttribute(AppConstants.RI_REPORT_DATA);
200 String reportID = AppUtils.getRequestValue(request, AppConstants.RI_REPORT_ID);
201 if(CachingUtils.isReportRuntimeAvailable(reportID)) {
202 rr = (ReportRuntime) CachingUtils.getSavedReportRuntime(reportID);
204 if(CachingUtils.isReportDataAvailable(reportID)) {
205 rd = (ReportData) CachingUtils.getSavedReportData(reportID);
208 String userId = AppUtils.getUserID(request);
209 int downloadLimit = 0;
211 downloadLimit = (rr.getMaxRowsInExcelDownload() > 0 && (rr.getMaxRowsInExcelDownload() < Globals.getDownloadLimit())) ? rr.getMaxRowsInExcelDownload()
212 : Globals.getDownloadLimit();
213 if ("report.download.csv.download".equals(actionKey))
214 downloadLimit = Globals.getCSVDownloadLimit();
216 final boolean isDashboard = (session.getAttribute(AppConstants.SI_DASHBOARD_REP_ID) != null) &&
217 (((String) session.getAttribute(AppConstants.SI_DASHBOARD_REP_ID)).equals(rr.getReportID()));
221 String sql_whole = rr.getReportDataSQL(userId, downloadLimit, request);
222 request.setAttribute(AppConstants.RI_REPORT_SQL_WHOLE, sql_whole);
226 OutputStreamWriter out = new OutputStreamWriter(response.getOutputStream());
227 String formFields = "";
229 rr.setSinglePageDownload(isPageDownload);
230 if ("report.download.pdf.session".equals(actionKey)) {
231 new PdfReportHandler().createPdfFileContent(request, response, 3);
232 long totalTime = System.currentTimeMillis() - currentTime;
233 rr.logReportExecutionTime(userId, String.valueOf(totalTime), AppConstants.RLA_DOWNLOAD_PDF,
235 } else if ("report.download.csv.session".equals(actionKey)) {
236 (new ReportHandler()).createCSVFileContent(out, rd, rr, request, response);
237 long totalTime = System.currentTimeMillis() - currentTime;
238 rr.logReportExecutionTime(userId, String.valueOf(totalTime), AppConstants.RLA_DOWNLOAD_CSV,
240 } else if ("report.download.excel.session".equals(actionKey)) {
241 new ReportHandler().createExcelXlsContent(out, rd, rr, request, response, userId, 3);
242 long totalTime = System.currentTimeMillis() - currentTime;
243 rr.logReportExecutionTime(userId, String.valueOf(totalTime), AppConstants.RLA_DOWNLOAD_EXCEL,
246 new ReportHandler().createExcel2007FileContent(out, rd, rr, request, response, userId, 3);
247 long totalTime = System.currentTimeMillis() - currentTime;
248 rr.logReportExecutionTime(userId, String.valueOf(totalTime), AppConstants.RLA_DOWNLOAD_EXCELX,
251 } catch (Exception e) {
252 logger.error(EELFLoggerDelegate.errorLogger,
253 INVALID_ACTION + actionKey + "].", e);
256 response.sendRedirect("login.htm");
259 if (session != null && user != null) {
260 Action action = null;
261 ServletContext servletContext = request.getSession().getServletContext();
262 if (!Globals.isSystemInitialized()) {
263 Globals.initializeSystem(servletContext);
266 action = Globals.getRaptorActionMapping().getAction(actionKey);
268 throw new RaptorRuntimeException("Action not found");
269 } catch (RaptorException e) {
270 logger.error(EELFLoggerDelegate.errorLogger,
271 INVALID_ACTION + actionKey + "].", e);
273 viewName = (new ErrorHandler()).processFatalErrorJSON(request,
274 new RaptorRuntimeException(INVALID_ACTION + actionKey
275 + "]. Exception: " + e.getMessage()));
279 Class[] paramTypes = new Class[2];
280 paramTypes[0] = Class.forName("javax.servlet.http.HttpServletRequest");
281 paramTypes[1] = Class.forName("java.lang.String");
283 Class handlerClass = Class.forName(action.getControllerClass());
284 Object handler = handlerClass.newInstance();
285 Method handlerMethod = handlerClass.getMethod(action.getControllerMethod(), paramTypes);
287 Object[] paramValues = new Object[2];
288 paramValues[0] = request;
289 paramValues[1] = action.getJspName();
292 viewName = (String) handlerMethod.invoke(handler, paramValues);
293 if (!"chart.run".equals(actionKey))
294 response.setContentType("application/json");
296 response.setContentType("text/html");
298 } catch (ClassNotFoundException e) {
299 logger.debug(EELFLoggerDelegate.debugLogger, (INVALID_ACTION
300 + actionKey + "]. ClassNotFoundException: " + e.getMessage()));
301 viewName = (new ErrorHandler()).processFatalErrorJSON(request,
302 new RaptorRuntimeException(UNABLE_INSTANTIATE + e.getMessage()));
303 } catch (IllegalAccessException e) {
304 logger.debug(EELFLoggerDelegate.debugLogger, (INVALID_ACTION
305 + actionKey + "]. IllegalAccessException: " + e.getMessage()));
306 viewName = (new ErrorHandler()).processFatalErrorJSON(request,
307 new RaptorRuntimeException(UNABLE_INSTANTIATE + e.getMessage()));
308 } catch (InstantiationException e) {
309 logger.debug(EELFLoggerDelegate.debugLogger, (INVALID_ACTION
310 + actionKey + "]. InstantiationException: " + e.getMessage()));
311 viewName = (new ErrorHandler()).processFatalErrorJSON(request,
312 new RaptorRuntimeException(UNABLE_INSTANTIATE + e.getMessage()));
313 } catch (NoSuchMethodException e) {
314 logger.debug(EELFLoggerDelegate.debugLogger, (INVALID_ACTION
315 + actionKey + "]. NoSuchMethodException: " + e.getMessage()));
316 viewName = (new ErrorHandler()).processFatalErrorJSON(request,
317 new RaptorRuntimeException(UNABLE_INSTANTIATE + e.getMessage()));
318 } catch (InvocationTargetException e) {
319 logger.debug(EELFLoggerDelegate.debugLogger, (INVALID_ACTION
320 + actionKey + "]. InvocationTargetException: " + e.getMessage()));
321 viewName = (new ErrorHandler()).processFatalErrorJSON(request,
322 new RaptorRuntimeException(UNABLE_INSTANTIATE + e.getMessage()));
324 PrintWriter out = response.getWriter();
328 PrintWriter out = response.getWriter();
329 out.write("session has timed out for user");
335 @GetMapping(value = "/report/wizard/drill_down_param/{parameter}", produces = "application/json")
336 public @ResponseBody List<DrillDownParamDef> getDrillDownParamDef (@PathVariable("parameter") String parameter, HttpServletRequest request, HttpServletResponse response)
338 List<DrillDownParamDef> list = new ArrayList<>();
339 String[] tmepArray = null;
341 tmepArray = parameter.split("&");
343 for(String str:tmepArray){
344 list.add(new DrillDownParamDef(str));
349 @GetMapping(value = "/report/wizard/list_columns", produces = "application/json")
350 public @ResponseBody ArrayList<ColumnJSON> listColumns(HttpServletRequest request, HttpServletResponse response)
352 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
353 List<DataColumnType> reportColumnList = rdef.getAllColumns();
354 ArrayList<ColumnJSON> listJSON = new ArrayList<>();
355 ColumnJSON columnJSON;
357 for (DataColumnType reportColumnType : reportColumnList) {
358 columnJSON = new ColumnJSON();
359 columnJSON.setId(reportColumnType.getColId());
360 columnJSON.setName(reportColumnType.getDisplayName());
361 listJSON.add(columnJSON);
366 @GetMapping(value = "/report/wizard/list_drilldown_reports", produces = "application/json")
367 public @ResponseBody ArrayList<ColumnJSON> list_drilldown_reports(HttpServletRequest request,
368 HttpServletResponse response) throws RaptorException {
369 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
370 Vector<IdNameValue> publicReportIdNames = DataCache.getPublicReportIdNames();
371 Vector groupReportIdNames = DataCache.getGroupAccessibleReportIdNames(AppUtils.getUserID(request),
372 AppUtils.getUserRoles(request));
373 Vector privateReportIdNames = DataCache.getPrivateAccessibleReportIdNames(AppUtils.getUserID(request),
374 AppUtils.getUserRoles(request));
376 ArrayList<ColumnJSON> listJSON = new ArrayList<>();
377 ColumnJSON columnJSON;
379 ServletContext servletContext = request.getSession().getServletContext();
380 if (!Globals.isSystemInitialized()) {
381 Globals.initializeSystem(servletContext);
384 for (int i = 0; i < publicReportIdNames.size(); i++) {
385 IdNameValue reportIdName = publicReportIdNames.get(i);
386 columnJSON = new ColumnJSON();
387 columnJSON.setId(reportIdName.getId());
388 columnJSON.setName("Public Report: " + reportIdName.getName());
389 if (!rdef.getReportID().equals(reportIdName.getId()))
390 listJSON.add(columnJSON);
393 for (int i = 0; i < groupReportIdNames.size(); i++) {
394 IdNameValue reportIdName = (IdNameValue) groupReportIdNames.get(i);
395 columnJSON = new ColumnJSON();
396 columnJSON.setId(reportIdName.getId());
397 columnJSON.setName("Group Report: " + reportIdName.getName());
398 if (!rdef.getReportID().equals(reportIdName.getId()))
399 listJSON.add(columnJSON);
402 for (int i = 0; i < privateReportIdNames.size(); i++) {
403 IdNameValue reportIdName = (IdNameValue) privateReportIdNames.get(i);
404 columnJSON = new ColumnJSON();
405 columnJSON.setId(reportIdName.getId());
406 columnJSON.setName("Private Report: " + reportIdName.getName());
407 if (!rdef.getReportID().equals(reportIdName.getId()))
408 listJSON.add(columnJSON);
414 @GetMapping(value = "/report/wizard/list_formfields", produces = "application/json")
415 public @ResponseBody ArrayList<SearchFieldJSON> listFormFields(HttpServletRequest request,
416 HttpServletResponse response) {
417 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
418 ArrayList<SearchFieldJSON> listJSON = new ArrayList<>();
419 SearchFieldJSON fieldJSON;
420 if (rdef.getFormFieldList() != null) {
421 for (Iterator iter = rdef.getFormFieldList().getFormField().iterator(); iter.hasNext();) {
422 fieldJSON = new SearchFieldJSON();
423 FormFieldType fft = (FormFieldType) iter.next();
424 String fieldId = fft.getFieldId();
425 String fieldDisplay = fft.getFieldName();
426 fieldJSON.setId(fieldId);
427 fieldJSON.setName(fieldDisplay);
428 fieldJSON.setOrderSeq(fft.getOrderBySeq());
429 listJSON.add(fieldJSON);
436 @GetMapping(value = "/report/wizard/list_child_report_col/{reportID}", produces = "application/json")
437 public @ResponseBody ArrayList<ColumnJSON> listChildReportCols(@PathVariable("reportID") String reportID,
438 HttpServletRequest request, HttpServletResponse response) throws RaptorException {
439 ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, reportID, false);
441 List<DataColumnType> reportColumnList = ddRr.getAllColumns();
442 ArrayList<ColumnJSON> listJSON = new ArrayList<>();
443 ColumnJSON columnJSON;
445 for (DataColumnType reportColumnType : reportColumnList) {
446 columnJSON = new ColumnJSON();
447 columnJSON.setId(reportColumnType.getColId());
448 columnJSON.setName(reportColumnType.getColName());
449 listJSON.add(columnJSON);
454 @GetMapping(value = "/report/wizard/list_child_report_ff/{reportID}", produces = "application/json")
455 public @ResponseBody ArrayList<SearchFieldJSON> listChildReportFormFields(@PathVariable("reportID") String reportID,
456 HttpServletRequest request, HttpServletResponse response) throws RaptorException {
457 ReportRuntime ddRr = (new ReportHandler()).loadReportRuntime(request, reportID, false);
458 ArrayList<SearchFieldJSON> listJSON = new ArrayList<>();
459 SearchFieldJSON fieldJSON;
461 ReportFormFields ddReportFormFields = ddRr.getReportFormFields();
462 if (ddReportFormFields != null) {
463 for (ddReportFormFields.resetNext(); ddReportFormFields.hasNext();) {
464 FormField ff = ddReportFormFields.getNext();
465 if (!ff.getFieldType().equals(FormField.FFT_BLANK)) {
466 fieldJSON = new SearchFieldJSON();
467 fieldJSON.setId(ff.getFieldName());
468 fieldJSON.setName(ff.getFieldDisplayName());
469 listJSON.add(fieldJSON);
476 @GetMapping(value = "report/wizard/copy_report/{reportID}", produces = "application/json")
477 public @ResponseBody MessageJSON copyReport(@PathVariable("reportID") String reportID, HttpServletRequest request,
478 HttpServletResponse response){
479 MessageJSON messageJSON = new MessageJSON();
482 ReportHandler rh = new ReportHandler();
483 ReportDefinition rdef = rh.loadReportDefinition(request, reportID);
484 rdef.setAsCopy(request);
485 request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
486 request.getSession().setAttribute("COPY_REPORT_EVENT", "true");
487 messageJSON.setMessage("Success- Report Copied.");
488 messageJSON.setAnyStacktrace(rdef.getReportID() + " is Modified and added to session and DB.");
490 } catch (RaptorException e) {
491 request.setAttribute("error_extra_msg", "While copying report " + reportID);
492 messageJSON.setMessage("Failed - While copying report " + reportID);
493 messageJSON.setAnyStacktrace(getStackTrace(e));
494 logger.debug(EELFLoggerDelegate.debugLogger,
495 ("[Controller.processRequest]Invalid raptor action [copyReport]. RaptorException: "
503 @PostMapping(value = "report/wizard/import_report", consumes = "application/json")
504 public @ResponseBody MessageJSON importReport(@RequestBody ImportJSON importJSON, HttpServletRequest request,
505 HttpServletResponse response) {
506 MessageJSON messageJSON = new MessageJSON();
508 String reportXML = importJSON.getReportXML();
510 ReportHandler rh = new ReportHandler();
511 ReportDefinition rdef = rh.createReportDefinition(request, "-1", reportXML);
512 rdef.updateReportDefType();
513 rdef.generateWizardSequence(request);
514 rdef.setReportName("Import: " + rdef.getReportName());
515 rdef.clearAllDrillDowns();
517 request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
519 messageJSON.setMessage("Success- Report imported.");
520 messageJSON.setAnyStacktrace(rdef.getReportID() + " is Modified and added to session and DB.");
522 } catch (RaptorException e) {
523 request.setAttribute("error_extra_msg", "Unable to parse XML. Nested error: ");
524 messageJSON.setMessage("Unable to parse XML. Nested error: ");
525 messageJSON.setAnyStacktrace(getStackTrace(e));
534 @GetMapping(value = "report/wizard/get_formfield_groups_data/{id}")
535 public @ResponseBody FormFieldGroupsJSON getFFGroupsData(@PathVariable Map<String, String> pathVariables,
536 HttpServletRequest request, HttpServletResponse response) throws IOException, RaptorException {
538 FormFieldGroupsJSON formFieldGroupsJSON = new FormFieldGroupsJSON();
539 if (pathVariables.containsKey("id")) {
540 formFieldGroupsJSON.setReportId(pathVariables.get("id"));
541 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
542 ReportRuntime rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
544 if (rdef != null && !rdef.getReportID().equals(formFieldGroupsJSON.getReportId())) {
545 removeVariablesFromSession(request);
546 rdef = (new ReportHandler()).loadReportDefinition(request, formFieldGroupsJSON.getReportId());
547 } else if (rr != null && !rr.getReportID().equals(formFieldGroupsJSON.getReportId())) {
548 removeVariablesFromSession(request);
549 rdef = (new ReportHandler()).loadReportDefinition(request, formFieldGroupsJSON.getReportId());
550 } else if (rdef == null) {
551 rdef = (new ReportHandler()).loadReportDefinition(request, formFieldGroupsJSON.getReportId());
554 formFieldGroupsJSON.setFormFieldGroupsJSON(rdef.getCustomReport().getFormFieldGroupsJSON());
555 formFieldGroupsJSON.setMessage("Success");
557 formFieldGroupsJSON.setErrorMessage("Unable to load report definition for Report ID:"+formFieldGroupsJSON.getReportId());
560 formFieldGroupsJSON.setErrorMessage("Report ID missing in the URL");
562 return formFieldGroupsJSON;
565 @GetMapping(value = "report/wizard/clearSession")
566 public @ResponseBody MessageJSON clearSession(HttpServletRequest request, HttpServletResponse response) {
567 MessageJSON messageJSON = new MessageJSON();
568 removeVariablesFromSession(request);
569 request.getSession().setAttribute("COPY_REPORT_EVENT", "");
570 messageJSON.setMessage("CopyReport Cancelled");
576 @PostMapping(value = "report/wizard/save_formfield_groups_data")
577 public @ResponseBody MessageJSON saveFFGroupsData(@RequestBody FormFieldGroupsJSON formFieldGroupsJSON,
578 HttpServletRequest request, HttpServletResponse response) throws IOException, RaptorException {
580 MessageJSON messageJSON = new MessageJSON();
581 if(formFieldGroupsJSON != null && formFieldGroupsJSON.getReportId() != null) {
582 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
583 ReportRuntime rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
584 if (rdef != null && !rdef.getReportID().equals(formFieldGroupsJSON.getReportId())) {
585 removeVariablesFromSession(request);
586 rdef = (new ReportHandler()).loadReportDefinition(request, formFieldGroupsJSON.getReportId());
587 } else if (rr != null && !rr.getReportID().equals(formFieldGroupsJSON.getReportId())) {
588 removeVariablesFromSession(request);
589 rdef = (new ReportHandler()).loadReportDefinition(request, formFieldGroupsJSON.getReportId());
590 } else if (rdef == null) {
591 rdef = (new ReportHandler()).loadReportDefinition(request, formFieldGroupsJSON.getReportId());
594 rdef.getCustomReport().setFormFieldGroupsJSON(formFieldGroupsJSON.getFormFieldGroupsJSON());
596 persistReportDefinition(request, rdef);
597 messageJSON.setMessage("Success: formfield groups have been updated for report ID:"+rdef.getReportID() +" and added to session and DB.");
598 } catch (Exception ex) {
599 messageJSON.setMessage("Error occured while saving formfield groups data");
600 messageJSON.setAnyStacktrace(getStackTrace(ex));
603 messageJSON.setMessage("Unable to load report definition for Report ID:"+formFieldGroupsJSON.getReportId());
606 messageJSON.setMessage("Report ID missing in the request body.");
611 @PostMapping(value = "report/wizard/save_formfield_tab_data")
612 public @ResponseBody MessageJSON saveFFTabWiseData(@RequestBody FormEditJSON formEditJSON,
613 HttpServletRequest request, HttpServletResponse response) {
614 ReportDefinition rdef = null;
615 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
617 MessageJSON messageJSON = new MessageJSON();
621 String fieldId = formEditJSON.getFieldId();
623 boolean lastUpdateIdFlag = false;
625 if (rdef.getFormFieldList() != null) {
628 // fft.getlastUpdatedFieldId()
630 for (FormFieldType fft : rdef.getFormFieldList().getFormField()) {
632 System.out.println(fft.getFieldId() + " " + fft.getFieldName() + " " + fft.getlastUpdatedFieldId() + " " + formEditJSON.getLastUpdatedFieldId() );
633 if (fft.getFieldId().equals(fieldId) && !lastUpdateIdFlag) {
634 fft.setFieldId(formEditJSON.getLastUpdatedFieldId() != null ? formEditJSON.getLastUpdatedFieldId() : fft.getFieldId());
635 fft.setFieldName(formEditJSON.getFieldName());
636 fft.setFieldType(formEditJSON.getFieldType());
637 fft.setVisible(formEditJSON.isVisible() ? "Y" : "N");
638 fft.setDefaultValue(formEditJSON.getDefaultValue());
639 fft.setFieldDefaultSQL(formEditJSON.getFieldDefaultSQL());
640 fft.setFieldSQL(formEditJSON.getFieldSQL());
641 fft.setValidationType(formEditJSON.getValidationType());
642 fft.setGroupFormField(formEditJSON.isGroupFormField());
643 fft.setOrderBySeq(formEditJSON.getOrderSeq());
644 // clear predefined value
645 PredefinedValueList predefinedValueList = new ObjectFactory().createPredefinedValueList();
646 fft.setPredefinedValueList(predefinedValueList);
648 fft.setlastUpdatedFieldId("Y");
649 lastUpdateIdFlag = true;
651 List<IdNameBooleanJSON> predefList = formEditJSON.getPredefinedValueList();
652 if (predefList != null && predefList.size() > 0) {
653 for (IdNameBooleanJSON item : predefList) {
654 fft.getPredefinedValueList().getPredefinedValue().add(item.getId());
658 for (FormFieldType fft1 : rdef.getFormFieldList().getFormField()) {
660 if(fft1.getlastUpdatedFieldId().equals("Y"))
667 for (FormFieldType fft2 : rdef.getFormFieldList().getFormField()) {
668 fft2.setlastUpdatedFieldId("N");
675 System.out.println(fft.getFieldId() + " " + fft.getFieldName() + " " + fft.getlastUpdatedFieldId() + " " + formEditJSON.getLastUpdatedFieldId() );
679 persistReportDefinition(request, rdef);
680 messageJSON.setMessage("Success formfield Details of given report is saved in session.");
681 messageJSON.setAnyStacktrace(rdef.getReportID() + " is Modified and added to session and DB.");
684 messageJSON.setMessage("Report Definition is not in session");
685 messageJSON.setAnyStacktrace("Report Definition is not in session");
688 } catch (Exception ex) {
689 messageJSON.setMessage("Error occured while formfield details Tab");
690 messageJSON.setAnyStacktrace(getStackTrace(ex));
697 @PostMapping(value = "report/wizard/add_formfield_tab_data")
698 public @ResponseBody MessageJSON addFFTabWiseData(@RequestBody FormEditJSON formEditJSON,
699 HttpServletRequest request, HttpServletResponse response) {
700 ReportDefinition rdef;
701 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
703 MessageJSON messageJSON = new MessageJSON();
706 FormEditJSON wizardJSON = new FormEditJSON();
707 wizardJSON.setTabId("FormEdit");
708 wizardJSON.setTabName("Form Edit");
710 if(rdef.getFormFieldList()==null || rdef.getFormFieldList().getFormField()==null || rdef.getFormFieldList().getFormField().size()==0)
714 int maxFormFieldSeq = 0;
715 for(FormFieldType ffType : rdef.getFormFieldList().getFormField())
717 if(Integer.parseInt(ffType.getFieldId().substring(2)) > maxFormFieldSeq)
719 maxFormFieldSeq = Integer.parseInt(ffType.getFieldId().substring(2));
723 fieldId = "ff"+ maxFormFieldSeq;
725 FormFieldType currField = rdef.addFormFieldType(new ObjectFactory(), "", "", "", "", "", "", "", "", null, null, "","");
726 currField.setFieldId(fieldId);
727 currField.setFieldName(formEditJSON.getFieldName());
728 currField.setFieldType(formEditJSON.getFieldType()==null?null:formEditJSON.getFieldType());
729 currField.setVisible(formEditJSON.isVisible()?"Y":"N");
730 currField.setDefaultValue(formEditJSON.getDefaultValue());
731 currField.setFieldDefaultSQL(formEditJSON.getFieldDefaultSQL());
732 currField.setFieldSQL(formEditJSON.getFieldSQL());
733 currField.setValidationType(formEditJSON.getValidationType());
734 currField.setGroupFormField(formEditJSON.isGroupFormField());
735 persistReportDefinition(request, rdef);
737 messageJSON.setMessage("Success formfield Details of given report is saved in session.");
738 messageJSON.setAnyStacktrace(rdef.getReportID() + " is added to session and DB.");
741 messageJSON.setMessage("Report Definition is not in session");
742 messageJSON.setAnyStacktrace("Report Definition is not in session");
745 } catch (Exception ex) {
746 messageJSON.setMessage("Error occured while formfield details Tab");
747 messageJSON.setAnyStacktrace(getStackTrace(ex));
754 @PostMapping(value = "report/wizard/save_col_tab_data")
755 public @ResponseBody MessageJSON saveColTabWiseData(@RequestBody ColumnEditJSON columnEditJSON,
756 HttpServletRequest request, HttpServletResponse response) {
757 ReportDefinition rdef;
758 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
760 MessageJSON messageJSON = new MessageJSON();
764 String colId = columnEditJSON.getColId();
765 List<DataColumnType> reportColumnList = rdef.getAllColumns();
766 rdef.setSemaphoreList(columnEditJSON.getSemaphoreList());
769 for (DataColumnType reportColumnType : reportColumnList) {
771 if (reportColumnType.getColId().equals(colId)) {
772 reportColumnType.setColName(columnEditJSON.getColName());
773 reportColumnType.setDependsOnFormField(columnEditJSON.getDepeondsOnForField()==null?"":columnEditJSON.getDepeondsOnForField());
774 reportColumnType.setColType(columnEditJSON.getDataType()==null?"":columnEditJSON.getDataType());
775 reportColumnType.setDbColName(columnEditJSON.getDataType()==null?"":columnEditJSON.getDataType());
776 reportColumnType.setGroupByPos(columnEditJSON.getGroupByPos());
777 reportColumnType.setSubTotalCustomText(columnEditJSON.getSubTotalCustomText());
778 reportColumnType.setHideRepeatedKey(columnEditJSON.isHideRepeatedKey());
779 reportColumnType.setLevel(columnEditJSON.getLevel());
780 reportColumnType.setColspan(columnEditJSON.getColspan());
781 reportColumnType.setDisplayName(columnEditJSON.getDisplayName());
782 reportColumnType.setDisplayWidthInPxls(columnEditJSON.getDisplayWidthInPixel()==null?null:String.valueOf(columnEditJSON.getDisplayWidthInPixel()));
783 reportColumnType.setNowrap(columnEditJSON.getNoWrap());
784 reportColumnType.setIndentation(columnEditJSON.getIndentation());
785 reportColumnType.setDisplayAlignment(columnEditJSON.getDisplayAlignment());
786 reportColumnType.setDisplayHeaderAlignment(columnEditJSON.getDisplayHeaderAlignment());
787 reportColumnType.setIsSortable(columnEditJSON.isSortable());
788 reportColumnType.setVisible(columnEditJSON.isVisible());
789 reportColumnType.setDrillDownURL(columnEditJSON.getDrilldownURL());
790 reportColumnType.setDrillDownParams(columnEditJSON.getDrilldownParams());
791 reportColumnType.setDrillDownType(columnEditJSON.getDrilldownType());
792 if(columnEditJSON.getDisplayTotal()!=null)
793 reportColumnType.setDisplayTotal(columnEditJSON.getDisplayTotal());
794 reportColumnType.setSemaphoreId(columnEditJSON.getSemaphoreId());
800 persistReportDefinition(request, rdef);
801 messageJSON.setMessage("Success Column Details of given report is saved in session.");
802 messageJSON.setAnyStacktrace(rdef.getReportID() + " is Modified and added to session and DB.");
805 messageJSON.setMessage("Report Definition is not in session");
806 messageJSON.setAnyStacktrace("");
809 } catch (Exception ex) {
810 messageJSON.setMessage("Error occured while saving column details Tab");
811 messageJSON.setAnyStacktrace(getStackTrace(ex));
819 @PostMapping(value = "report/wizard/save_def_tab_data/{id}")
820 public @ResponseBody MessageJSON saveDefTabWiseData(@PathVariable("id") String id,
821 @RequestBody DefinitionJSON definitionJSON, HttpServletRequest request, HttpServletResponse response)
823 ReportDefinition rdef;
826 MessageJSON messageJSON = new MessageJSON();
828 String copyReportEvent = (String)request.getSession().getAttribute("COPY_REPORT_EVENT");
829 if (id.equals("InSession") || "true".equals(copyReportEvent)) {
830 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
833 } else if (id.equals("Create")) {
834 removeVariablesFromSession(request);
835 rdef = (new ReportHandler()).loadReportDefinition(request, "-1");
837 System.out.println("&&&&&&&&&&&&&&&&&&&&&& CHECK Report Type "
838 + (AppUtils.nvl(rdef.getReportType()).length() <= 0));
840 rdef.setReportType(definitionJSON.getReportType());
842 if (AppUtils.nvl(rdef.getReportType()).length() <= 0) {
843 rdef.setReportType(AppConstants.RT_LINEAR);
844 System.out.println("&&&&&&&&&&&&&&&&&&&&&& ADDED Report Type in session ");
847 } else if (AppUtils.nvl(id).length() > 0) {
848 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
849 rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
851 if (rdef != null && !rdef.getReportID().equals(id)) {
852 request.getSession().removeAttribute(AppConstants.SI_REPORT_DEFINITION);
853 removeVariablesFromSession(request);
854 rdef = (new ReportHandler()).loadReportDefinition(request, id);
855 } else if (rr != null && !rr.getReportID().equals(id)) {
856 request.getSession().removeAttribute(AppConstants.SI_REPORT_RUNTIME);
857 removeVariablesFromSession(request);
858 rdef = (new ReportHandler()).loadReportDefinition(request, id);
859 } else if (rdef == null) {
860 rdef = (new ReportHandler()).loadReportDefinition(request, id);
865 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
871 String reportName = definitionJSON.getReportName();
872 String errorString = "";
873 if (AppUtils.nvl(reportName).length() <= 0)
874 errorString = "ReportName cannot be null;";
875 rdef.setReportName(reportName);
876 rdef.setReportDescr(definitionJSON.getReportDescr());
877 rdef.setReportType(definitionJSON.getReportType());
878 rdef.setDataContainerHeight(definitionJSON.getDataContainerHeight());
879 rdef.setDataContainerWidth(definitionJSON.getDataContainerWidth());
880 if(definitionJSON.getAllowScheduler()!=null)
881 rdef.setAllowSchedule(definitionJSON.getAllowScheduler().equals("Y")?"Y":"N");
884 if(rdef.getReportType().equals(AppConstants.RT_DASHBOARD)){
885 rdef.setDashboardLayoutHTML(definitionJSON.getDashboardLayoutHTML());
886 rdef.getCustomReport().setDashboardLayoutJSON(definitionJSON.getDashboardLayoutJSON());
887 rdef.getCustomReport().setDashBoardReports(definitionJSON.getDashboardReports());
889 String dbInfo = definitionJSON.getDbInfo();
890 rdef.setDBInfo(dbInfo);
892 String schemaSql = Globals.getRemoteDbSchemaSqlWithWhereClause();
893 schemaSql = schemaSql.replace("[schema_id]", dbInfo);
894 String dbType = null;
897 ds = DbUtils.executeQuery(schemaSql);
899 String prefix = "", desc = "";
901 for (int i = 0; i < ds.getRowCount(); i++) {
902 dbType = ds.getItem(i, 2);
905 catch (Exception e) {}
906 rdef.setDBType(dbType);
908 String formHelpText = definitionJSON.getFormHelpText();
909 rdef.setFormHelpText(formHelpText);
911 Integer pageSize = definitionJSON.getPageSize();
913 rdef.setPageSize(pageSize);
915 List<IdNameBooleanJSON> menuIds = definitionJSON.getDisplayArea();
917 for (IdNameBooleanJSON menuId : menuIds) {
918 if (menuId.isSelected()) {
919 rdef.setMenuID(menuId.getName());
926 Boolean hideFormFieldsAfterRun = definitionJSON.getHideFormFieldsAfterRun();
927 rdef.setHideFormFieldAfterRun(hideFormFieldsAfterRun==null?false:hideFormFieldsAfterRun);
928 Integer maxRowsInExcelCSVDownload = definitionJSON.getMaxRowsInExcelCSVDownload();
929 if(maxRowsInExcelCSVDownload!=null)
930 rdef.setMaxRowsInExcelDownload(maxRowsInExcelCSVDownload);
931 Integer frozenColumns = definitionJSON.getFrozenColumns();
932 if(frozenColumns!=null)
933 rdef.setFrozenColumns(frozenColumns);
934 String dataGridAlign = definitionJSON.getDataGridAlign();
935 rdef.setDataGridAlign(dataGridAlign);
936 String emptyMessage = definitionJSON.getEmptyMessage();
937 rdef.setEmptyMessage(emptyMessage);
938 Boolean runtimeColSortDisabled = definitionJSON.getRuntimeColSortDisabled();
939 rdef.setRuntimeColSortDisabled(runtimeColSortDisabled==null?false:runtimeColSortDisabled);
940 Integer numFormCols = definitionJSON.getNumFormCols();
941 if(numFormCols!=null)
942 rdef.setNumFormCols(Integer.toString(numFormCols));
943 String reportTitle = definitionJSON.getReportTitle();
944 rdef.setReportTitle(reportTitle);
945 String reportSubTitle = definitionJSON.getReportSubTitle();
946 rdef.setReportSubTitle(reportSubTitle);
948 List<NameBooleanJSON> displayOptions = definitionJSON.getDisplayOptions();
949 StringBuffer displayOptionStr = new StringBuffer("NNNNNNN");
950 if(displayOptions!=null){
951 for (NameBooleanJSON displayOption : displayOptions) {
952 if (displayOption.isSelected()) {
953 if (displayOption.getName().equals("HideFormFields")) {
954 displayOptionStr.setCharAt(0, 'Y');
955 } else if (displayOption.getName().equals("HideChart")) {
956 displayOptionStr.setCharAt(1, 'Y');
957 } else if (displayOption.getName().equals("HideReportData")) {
958 displayOptionStr.setCharAt(2, 'Y');
959 } else if (displayOption.getName().equals("HideExcel")) {
960 displayOptionStr.setCharAt(5, 'Y');
961 } else if (displayOption.getName().equals("HidePdf")) {
962 displayOptionStr.setCharAt(6, 'Y');
969 if(displayOptionStr!=null)
970 rdef.setDisplayOptions(displayOptionStr.toString());
972 if(definitionJSON.getSizedByContent()!=null)
973 rdef.setSizedByContent(definitionJSON.getSizedByContent().equals("Y")?"Y":"N");
974 if(definitionJSON.getOneTimeRec()!=null)
975 rdef.setIsOneTimeScheduleAllowed(definitionJSON.getOneTimeRec().equals("true")?"Y":"N");
976 if(definitionJSON.getHourlyRec()!=null)
977 rdef.setIsHourlyScheduleAllowed(definitionJSON.getHourlyRec().equals("true")?"Y":"N");
978 if(definitionJSON.getDailyRec()!=null)
979 rdef.setIsDailyScheduleAllowed(definitionJSON.getDailyRec().equals("true")?"Y":"N");
980 if(definitionJSON.getDailyMFRec()!=null)
981 rdef.setIsDailyMFScheduleAllowed(definitionJSON.getDailyMFRec().equals("true")?"Y":"N");
982 if(definitionJSON.getWeeklyRec()!=null)
983 rdef.setIsWeeklyScheduleAllowed(definitionJSON.getWeeklyRec().equals("true")?"Y":"N");
984 if(definitionJSON.getMonthlyRec()!=null)
985 rdef.setIsMonthlyScheduleAllowed(definitionJSON.getMonthlyRec().equals("true")?"Y":"N");
988 //Start - Added new code
989 request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
990 //End - Added new code
991 if (id.equals("Create")) {
992 rdef.persistReport(request);
994 persistReportDefinition(request, rdef);
995 messageJSON.setMessage("Success Definition of given report is saved in session.");
996 messageJSON.setAnyStacktrace((newReport ? " New Report info is added to Session "
997 : rdef.getReportID() + "- is Modified and added to session and DB."));
999 if(rdef.getReportType() != null) {
1000 if(rdef.getReportType().equals("Dashboard") && id.equals("Create")) {
1001 messageJSON.setAnyStacktrace(rdef.getReportID() + "- is Modified and added to session and DB.");
1004 if(request.getSession().getAttribute("COPY_REPORT_EVENT") == "true" || (rdef.getReportType().equals("Dashboard") && id.equals("Create")) ) {
1005 removeVariablesFromSession(request);
1006 request.getSession().setAttribute("COPY_REPORT_EVENT", "");
1009 } catch (Exception ex) {
1010 messageJSON.setMessage("Error occured while saving definition Tab");
1011 messageJSON.setAnyStacktrace(getStackTrace(ex));
1012 logger.error(EELFLoggerDelegate.errorLogger,
1013 "[Controller.processRequest]Invalid raptor action [retrieveTabWiseData].", ex);
1020 @GetMapping(value = { "/report/wizard/retrieve_form_tab_wise_data/{id}",
1021 "/report/wizard/retrieve_form_tab_wise_data/{id}/{action}" })
1022 public @ResponseBody FormEditJSON retrieveFormTabWiseData(@PathVariable Map<String, String> pathVariables,
1023 HttpServletRequest request, HttpServletResponse response) {
1024 ReportDefinition rdef;
1027 String detailId = "";
1028 FormEditJSON wizardJSON = new FormEditJSON();
1029 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1031 if (pathVariables.containsKey("id")) {
1032 id = pathVariables.get("id");
1034 if (pathVariables.containsKey("action")) {
1035 action = pathVariables.get("action");
1038 ServletContext servletContext = request.getSession().getServletContext();
1039 if (!Globals.isSystemInitialized()) {
1040 Globals.initializeSystem(servletContext);
1042 wizardJSON.setTabId("FormEdit");
1043 wizardJSON.setTabName("Form Edit");
1044 FormFieldType currField = null;
1046 if (id.equals("add")) {
1048 currField = rdef.addFormFieldType(new ObjectFactory(), "", "", "", "", "", "", "", "", null, null, "",
1050 wizardJSON.setFieldId(currField.getFieldId());
1051 wizardJSON.setFieldName(currField.getFieldName());
1052 wizardJSON.setFieldType(currField.getFieldType());
1053 wizardJSON.setVisible(AppUtils.nvls(currField.getVisible(), "Y").toUpperCase().startsWith("Y"));
1054 wizardJSON.setDefaultValue(currField.getDefaultValue());
1055 wizardJSON.setFieldDefaultSQL(currField.getFieldDefaultSQL());
1056 wizardJSON.setFieldSQL(currField.getFieldSQL());
1057 wizardJSON.setValidationType(currField.getValidationType());
1058 persistReportDefinition(request, rdef);
1060 } else if (action.equals("delete")) {
1061 rdef.deleteFormField(id);
1062 persistReportDefinition(request, rdef);
1063 wizardJSON.setMessage("Formfield " + detailId + " Deleted");
1065 if (rdef.getFormFieldList() != null) {
1066 for (FormFieldType fft : rdef.getFormFieldList().getFormField()) {
1067 if (fft.getFieldId().equals(id)) {
1068 wizardJSON.setFieldId(fft.getFieldId());
1069 wizardJSON.setFieldName(fft.getFieldName());
1070 wizardJSON.setFieldType(fft.getFieldType());
1071 wizardJSON.setVisible(fft.getVisible().toUpperCase().startsWith("Y"));
1072 wizardJSON.setDefaultValue(fft.getDefaultValue());
1073 wizardJSON.setFieldDefaultSQL(fft.getFieldDefaultSQL());
1074 wizardJSON.setFieldSQL(fft.getFieldSQL());
1075 wizardJSON.setValidationType(fft.getValidationType());
1076 wizardJSON.setGroupFormField(fft.isGroupFormField());
1077 wizardJSON.setOrderSeq(fft.getOrderBySeq());
1078 PredefinedValueList preDefined = fft.getPredefinedValueList();
1080 if (preDefined != null) {
1081 List<IdNameBooleanJSON> preDefinedList = new ArrayList<>();
1082 IdNameBooleanJSON idNameBooleanJSON;
1084 for (String v : preDefined.getPredefinedValue()) {
1085 idNameBooleanJSON = new IdNameBooleanJSON();
1086 idNameBooleanJSON.setId(v);
1087 idNameBooleanJSON.setName(v);
1088 preDefinedList.add(idNameBooleanJSON);
1090 wizardJSON.setPredefinedValueList(preDefinedList);
1095 } catch (Exception ex) {
1096 logger.error(EELFLoggerDelegate.errorLogger,
1097 "[Controller.processRequest]Invalid raptor action [retrieveFormTabWiseData].", ex);
1098 ErrorJSONRuntime errorJSONRuntime = new ErrorJSONRuntime();
1099 errorJSONRuntime.setErrormessage("Error occured while retreiving formedit definition Tab");
1100 errorJSONRuntime.setStacktrace(getStackTrace(ex));
1101 wizardJSON.setErrorMessage("Error occured while retreiving formedit definition Tab");
1102 wizardJSON.setErrorStackTrace(getStackTrace(ex));
1109 @GetMapping(value = { "/report/wizard/retrieve_col_tab_wise_data/{id}" })
1110 public @ResponseBody ColumnEditJSON retrieveColTabWiseData(@PathVariable Map<String, String> pathVariables,
1111 HttpServletRequest request, HttpServletResponse response) {
1112 ReportDefinition rdef;
1114 ColumnEditJSON wizardJSON = new ColumnEditJSON();
1115 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1117 if (pathVariables.containsKey("id")) {
1118 id = pathVariables.get("id");
1120 ServletContext servletContext = request.getSession().getServletContext();
1121 if (!Globals.isSystemInitialized()) {
1122 Globals.initializeSystem(servletContext);
1125 if(rdef.getSemaphoreList() != null) {
1126 wizardJSON.setSemaphoreList(rdef.getSemaphoreList());
1127 }else { wizardJSON.setSemaphoreList(new SemaphoreList()); }
1129 wizardJSON.setTabId("ColEdit");
1130 wizardJSON.setTabName("Column Edit");
1132 List<DataColumnType> reportColumnList = rdef.getAllColumns();
1134 for (DataColumnType reportColumnType : reportColumnList) {
1135 if (reportColumnType.getColId().equals(id)) {
1136 wizardJSON.setColId(reportColumnType.getColId());
1137 wizardJSON.setColName(reportColumnType.getColName());
1138 wizardJSON.setDisplayAlignment(reportColumnType.getDisplayAlignment());
1139 wizardJSON.setDisplayHeaderAlignment(reportColumnType.getDisplayHeaderAlignment());
1140 wizardJSON.setSortable(
1141 reportColumnType.isIsSortable() == null ? false : reportColumnType.isIsSortable());
1142 wizardJSON.setVisible(reportColumnType.isVisible());
1143 wizardJSON.setDrilldownURL(
1144 reportColumnType.getDrillDownURL() == null ? "" : reportColumnType.getDrillDownURL());
1145 wizardJSON.setDrilldownParams(
1146 reportColumnType.getDrillDownParams() == null ? "" : reportColumnType.getDrillDownParams());
1147 wizardJSON.setDrilldownType(
1148 reportColumnType.getDrillDownType() == null ? "" : reportColumnType.getDrillDownType());
1149 wizardJSON.setDataType(reportColumnType.getDbColType() == null ? "" :reportColumnType.getDbColType());
1150 wizardJSON.setGroupByPos(reportColumnType.getGroupByPos());
1151 wizardJSON.setLevel(reportColumnType.getLevel());
1152 wizardJSON.setDisplayWidth(reportColumnType.getDisplayWidth());
1153 wizardJSON.setNoWrap(reportColumnType.getNowrap() == null ? "" : reportColumnType.getNowrap());
1154 wizardJSON.setIndentation(reportColumnType.getIndentation());
1156 wizardJSON.setDepeondsOnForField(reportColumnType.getDependsOnFormField() ==null?"":reportColumnType.getDependsOnFormField());
1157 wizardJSON.setSubTotalCustomText(reportColumnType.getSubTotalCustomText()==null?"":reportColumnType.getSubTotalCustomText());
1159 wizardJSON.setHideRepeatedKey(reportColumnType.isHideRepeatedKey()==null?false:reportColumnType.isHideRepeatedKey());
1160 wizardJSON.setColspan(reportColumnType.getColspan()==null?null:reportColumnType.getColspan());
1161 wizardJSON.setDisplayName(reportColumnType.getDisplayName());
1162 wizardJSON.setDisplayTotal(reportColumnType.getDisplayTotal());
1163 wizardJSON.setSemaphoreId(reportColumnType.getSemaphoreId());
1168 wizardJSON.setErrorMessage("Report is not in session");
1174 @GetMapping(value = { "/report/wizard/retrieve_sql_tab_wise_data/{id}",
1175 "/report/wizard/retrieve_sql_tab_wise_data/" })
1176 public @ResponseBody QueryJSON retrieveSqlTabWiseData(@PathVariable Map<String, String> pathVariables,
1177 HttpServletRequest request, HttpServletResponse response) throws RaptorException {
1178 ReportDefinition rdef = null;
1181 QueryJSON wizardJSON = new QueryJSON();
1183 if (pathVariables.containsKey("id")) {
1184 id = pathVariables.get("id");
1186 ServletContext servletContext = request.getSession().getServletContext();
1187 if (!Globals.isSystemInitialized()) {
1188 Globals.initializeSystem(servletContext);
1190 if (id.equals("InSession") || AppUtils.nvl(id).length() <= 0) {
1191 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1192 } else if (AppUtils.nvl(id).length() > 0) {
1193 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1194 rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
1196 if (rdef != null && !rdef.getReportID().equals(id)) {
1197 request.getSession().removeAttribute(AppConstants.SI_REPORT_DEFINITION);
1198 removeVariablesFromSession(request);
1199 rdef = (new ReportHandler()).loadReportDefinition(request, id);
1200 } else if (rr != null && !rr.getReportID().equals(id)) {
1201 request.getSession().removeAttribute(AppConstants.SI_REPORT_RUNTIME);
1202 removeVariablesFromSession(request);
1203 rdef = (new ReportHandler()).loadReportDefinition(request, id);
1204 } else if (rdef == null) {
1205 rdef = (new ReportHandler()).loadReportDefinition(request, id);
1211 wizardJSON.setTabId("Sql");
1212 wizardJSON.setTabName("Sql");
1213 wizardJSON.setQuery(rdef.getReportSQL());
1218 @GetMapping(value = { "/report/wizard/retrieveTotalForTheColList" })
1219 public @ResponseBody List<IdNameValue> getTotalForTheCol(HttpServletRequest request)
1221 IdNameList idNameList = AppConstants.TOTAL_FUNCTIONS;
1222 List<IdNameValue> list = new ArrayList<>();
1223 for(int i=0; i<idNameList.getCount(); i++)
1224 list.add(idNameList.getValue(i));
1229 @GetMapping(value = { "/report/wizard/security/retrieveReportUserList" })
1230 public @ResponseBody List<SecurityEntry> getReportUserList(HttpServletRequest request)
1231 throws RaptorException {
1232 List<SecurityEntry> reportUserList = new ArrayList<>();
1233 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1234 Vector reportUsers = rdef.getReportUsers(request);
1235 for(Iterator iter=reportUsers.iterator(); iter.hasNext();) {
1236 SecurityEntry rUser = (SecurityEntry) iter.next();
1237 reportUserList.add(rUser);
1239 return reportUserList;
1242 @GetMapping(value = { "/report/wizard/security/retrieveReportRoleList" })
1243 public @ResponseBody List<IdNameValue> getReportRoleList(HttpServletRequest request)
1244 throws RaptorException {
1245 List<IdNameValue> reportRoleList = new ArrayList<>();
1246 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1247 Vector reportRoles = rdef.getReportRoles(request);
1248 Vector remainingRoles = Utils.getRolesNotInList(reportRoles,request);
1249 for(int i=0; i<remainingRoles.size(); i++) {
1250 IdNameValue role = (IdNameValue) remainingRoles.get(i);
1251 reportRoleList.add(role);
1253 return reportRoleList;
1256 @GetMapping(value = { "/report/wizard/security/retrieveReportUserList_query" })
1257 public @ResponseBody List<Map<String, String>> getReportUserListQuery(HttpServletRequest request)
1259 List<Map<String, String>> reportUserList = new ArrayList();
1260 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1261 String reportId = rdef.getReportID();
1262 Map<String, Object> params = new HashMap<>();
1263 params.put("report_id", new Long(reportId));
1264 List<ReportUserRole> queriedUserList = getDataAccessService().executeNamedQuery("getReportSecurityUsers", params, null);
1265 for (int i=0; i<queriedUserList.size();i++){
1266 Map<String, String> reportUser = new HashMap<>();
1267 reportUser.put("rep_id", queriedUserList.get(i).toString());
1268 reportUser.put("order_no", queriedUserList.get(i).getOrderNo().toString());
1269 reportUser.put("user_id", queriedUserList.get(i).getUserId().toString());
1270 reportUser.put("role_id", queriedUserList.get(i).getRoleId().toString());
1271 reportUser.put("read_only_yn", queriedUserList.get(i).getReadOnlyYn());
1272 reportUserList.add(reportUser);
1274 return reportUserList;
1279 @PostMapping(value = "/report/security/addReportUser")
1280 public @ResponseBody Map<String,String> addSelectedReportUser(
1281 @RequestBody String userIdToAdd, HttpServletRequest request, HttpServletResponse response)
1283 Map<String, String> JsonResponse = new HashMap<>();
1284 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1286 JsonResponse.put("status","success");
1287 JsonResponse.put("userId",userIdToAdd);
1288 String action = "Add User";
1289 rdef.getReportSecurity().addUserAccess(userIdToAdd, "Y");
1290 WizardSequence ws = rdef.getWizardSequence();
1291 ws.performAction(action,rdef);
1292 return JsonResponse;
1293 } catch (Exception ex) {
1294 logger.error(EELFLoggerDelegate.errorLogger,
1295 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1300 @PostMapping(value = "/report/security/removeReportUser")
1301 public @ResponseBody Map<String,String> removeSelectedReportUser(
1302 @RequestBody String userIdToRemove, HttpServletRequest request, HttpServletResponse response)
1304 Map<String, String> JsonResponse = new HashMap<>();
1305 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1307 JsonResponse.put("status","success");
1308 JsonResponse.put("userId",userIdToRemove);
1309 String action = "Delete User";
1310 rdef.getReportSecurity().removeUserAccess(userIdToRemove);
1311 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1312 WizardSequence ws = rdef.getWizardSequence();
1313 ws.performAction(action,rdef);
1314 return JsonResponse;
1315 } catch (Exception ex) {
1316 logger.error(EELFLoggerDelegate.errorLogger,
1317 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1322 @PostMapping(value = "/report/security/addReportRole")
1323 public @ResponseBody Map<String,String> addSelectedReportRole(
1324 @RequestBody String roleIdToAdd, HttpServletRequest request, HttpServletResponse response) {
1325 Map<String, String> JsonResponse = new HashMap<>();
1326 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1328 JsonResponse.put("status","success");
1329 JsonResponse.put("roleId",roleIdToAdd);
1330 String action = "Add Role";
1331 rdef.getReportSecurity().addRoleAccess(roleIdToAdd, "Y");
1332 WizardSequence ws = rdef.getWizardSequence();
1333 ws.performAction(action,rdef);
1334 return JsonResponse;
1335 } catch (Exception ex) {
1336 logger.error(EELFLoggerDelegate.errorLogger,
1337 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1342 @PostMapping(value = "/report/security/removeReportRole")
1343 public @ResponseBody Map<String,String> removeSelectedReportRole(
1344 @RequestBody String roleIdToRemove, HttpServletRequest request, HttpServletResponse response)
1346 Map<String, String> JsonResponse = new HashMap<>();
1347 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1349 JsonResponse.put("status","success");
1350 JsonResponse.put("roleId",roleIdToRemove);
1351 String action = "Delete Role";
1352 rdef.getReportSecurity().removeRoleAccess(roleIdToRemove);
1353 WizardSequence ws = rdef.getWizardSequence();
1354 ws.performAction(action,rdef);
1355 return JsonResponse;
1356 } catch (Exception ex) {
1357 logger.error(EELFLoggerDelegate.errorLogger,
1358 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1363 @PostMapping(value = "/report/security/updateReportSecurityInfo")
1364 public @ResponseBody Map<String,String> updateReportSecurityInfo(
1365 @RequestBody Map<String,String> securityInfo, HttpServletRequest request, HttpServletResponse response)
1368 Map<String, String> JsonResponse = new HashMap<>();
1369 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1371 JsonResponse.put("status","success");
1372 String OwnerUserId = securityInfo.get("userId");
1373 String isPublic = securityInfo.get("isPublic");
1374 boolean rPublic = isPublic.equals("true");
1375 rdef.getReportSecurity().setOwnerID(OwnerUserId);
1376 rdef.setPublic(rPublic);
1377 persistReportDefinition(request, rdef);
1378 return JsonResponse;
1380 } catch (Exception ex) {
1381 logger.error(EELFLoggerDelegate.errorLogger,
1382 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1387 @PostMapping(value = "/report/security/toggleUserEditAccess/{userID}")
1388 public @ResponseBody Map<String,String> toggleUserEditAccess(
1389 @PathVariable("userID") String userId,
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 User Access";
1400 action = "Revoke User Access";
1402 rdef.getReportSecurity().updateUserAccess(userId, 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 @PostMapping(value = "/report/security/toggleRoleEditAccess/{roleID}")
1415 public @ResponseBody Map<String,String> toggleRoleEditAccess(
1416 @PathVariable("roleID") String roleId,
1417 @RequestBody String readOnly, HttpServletRequest request, HttpServletResponse response)
1419 Map<String, String> JsonResponse = new HashMap<>();
1420 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1423 JsonResponse.put("status","success");
1424 if (readOnly.equals("N")) {
1425 action = "Grant Role Access";
1427 action = "Revoke Role Access";
1429 rdef.getReportSecurity().updateRoleAccess(roleId, readOnly);
1430 WizardSequence ws = rdef.getWizardSequence();
1431 ws.performAction(action,rdef);
1433 return JsonResponse;
1434 } catch (Exception ex) {
1435 logger.error(EELFLoggerDelegate.errorLogger,
1436 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1441 @GetMapping(value = { "/report/wizard/security/retrieveReportOwner" })
1442 public @ResponseBody List<IdNameValue> getReportOwnerInList(HttpServletRequest request)
1443 throws RaptorException {
1444 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1446 List<IdNameValue> UserList = new ArrayList<>();
1447 List excludeValues = new java.util.ArrayList();
1448 HttpSession session = request.getSession();
1449 String query = Globals.getCustomizedScheduleQueryForUsers();
1450 session.setAttribute("login_id", AppUtils.getUserBackdoorLoginId(request));
1451 String userId = AppUtils.getUserID(request);
1452 session.setAttribute("LOGGED_USERID", userId);
1453 String[] sessionParameters = Globals.getSessionParams().split(",");
1455 for (int i = 0; i < sessionParameters.length; i++) {
1456 param = (String) session.getAttribute(sessionParameters[0]);
1457 query = Utils.replaceInString(query, "[" + sessionParameters[i].toUpperCase() + "]",
1458 (String) session.getAttribute(sessionParameters[i]));
1460 boolean isAdmin = AppUtils.isAdminUser(request);
1461 Vector allUsers = AppUtils.getAllUsers(query, param, isAdmin);
1463 for (Iterator iter = allUsers.iterator(); iter.hasNext();) {
1464 IdNameValue value = (IdNameValue) iter.next();
1466 boolean exclude = false;
1467 for (Iterator iterE = excludeValues.iterator(); iterE.hasNext();)
1468 if (((IdNameValue) iterE.next()).getId().equals(value.getId())) {
1474 UserList.add(value);
1480 @GetMapping(value = { "/report/wizard/security/getReportSecurityInfo" })
1481 public @ResponseBody Map<String,String> getReportSecurityInfo(HttpServletRequest request)
1483 Map<String, String> securityInfoMap = new HashMap<>();
1484 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1485 String isPublic = Boolean.toString(rdef.isPublic());
1486 String createUser = AppUtils.getUserName(rdef.getCreateID());
1487 String createDate = rdef.getCreateDate();
1488 String updateUser = AppUtils.getUserName(rdef.getUpdateID());
1489 String updateDate = rdef.getUpdateDate();
1490 String ownerId = rdef.getOwnerID();
1492 securityInfoMap.put("isPublic",isPublic);
1493 securityInfoMap.put("createdUser",createUser);
1494 securityInfoMap.put("createdDate",createDate);
1495 securityInfoMap.put("updateUser",updateUser);
1496 securityInfoMap.put("updatedDate",updateDate);
1497 securityInfoMap.put("ownerId",ownerId);
1499 return securityInfoMap;
1502 @GetMapping(value = { "/report/wizard/security/getReportSecurityUsers" })
1503 public @ResponseBody List<SecurityEntry> getReportSecurityUsers(HttpServletRequest request)
1504 throws RaptorException {
1506 List<SecurityEntry> reportUserMapList = new ArrayList<>();
1507 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1508 Vector reportUsers = rdef.getReportUsers(request);
1511 for(Iterator iter=reportUsers.iterator(); iter.hasNext(); iCount++) {
1512 Map<String, String> reportUserMap = new HashMap<>();
1513 SecurityEntry rUser = (SecurityEntry) iter.next();
1514 reportUserMapList.add(rUser);
1517 return reportUserMapList;
1521 @GetMapping(value = { "/report/wizard/security/getReportSecurityRoles" })
1522 public @ResponseBody List<SecurityEntry> getReportSecurityRoles(HttpServletRequest request)
1523 throws RaptorException {
1525 List<SecurityEntry> reportRoleList = new ArrayList<>();
1526 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1527 Vector reportRoles = rdef.getReportRoles(request);
1529 for(Iterator iter=reportRoles.iterator(); iter.hasNext(); ) {
1530 SecurityEntry rRole = (SecurityEntry) iter.next();
1531 reportRoleList.add(rRole);
1534 return reportRoleList;
1538 @GetMapping(value = { "/report/wizard/retrieve_def_tab_wise_data/{id}",
1539 "/report/wizard/retrieve_def_tab_wise_data/{id}/{detailId}" })
1540 public @ResponseBody DefinitionJSON retrieveDefTabWiseData(@PathVariable Map<String, String> pathVariables,
1541 HttpServletRequest request, HttpServletResponse response) throws RaptorException {
1542 ReportDefinition rdef;
1544 String tabId = "Def";
1547 if (pathVariables.containsKey("id")) {
1548 id = pathVariables.get("id");
1551 ServletContext servletContext = request.getSession().getServletContext();
1552 if (!Globals.isSystemInitialized()) {
1553 Globals.initializeSystem(servletContext);
1555 String copyReportEvent = (String)request.getSession().getAttribute("COPY_REPORT_EVENT");
1556 if (tabId.equals("Def") && id.equals("InSession") || "true".equals(copyReportEvent)) {
1557 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1559 } else if (tabId.equals("Def") && id.equals("Create")) {
1560 removeVariablesFromSession(request);
1561 rdef = (new ReportHandler()).loadReportDefinition(request, "-1");
1562 rdef.setReportType(AppConstants.RT_LINEAR);
1564 } else if (tabId.equals("Def") && AppUtils.nvl(id).length() > 0) {
1565 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1566 rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
1568 if (rdef != null && !rdef.getReportID().equals(id)) {
1569 request.getSession().removeAttribute(AppConstants.SI_REPORT_DEFINITION);
1570 removeVariablesFromSession(request);
1571 rdef = (new ReportHandler()).loadReportDefinition(request, id);
1572 request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
1573 } else if (rr != null && !rr.getReportID().equals(id)) {
1574 request.getSession().removeAttribute(AppConstants.SI_REPORT_RUNTIME);
1575 removeVariablesFromSession(request);
1576 rdef = (new ReportHandler()).loadReportDefinition(request, id);
1577 request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
1578 } else if (rdef == null) {
1579 rdef = (new ReportHandler()).loadReportDefinition(request, id);
1580 String session_id = request.getSession().getId();
1581 Object obj = request.getAttributeNames();
1582 request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef);
1586 rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1588 DefinitionJSON wizardJSON = new DefinitionJSON();
1589 if (tabId.equals("Def")) {
1590 wizardJSON.setTabId("Def");
1591 wizardJSON.setTabName("Definition");
1592 wizardJSON.setChartType(rdef.getChartType());
1593 wizardJSON.setReportId((rdef != null) ? rdef.getReportID() + "" : "");
1594 wizardJSON.setReportName((rdef != null) ? rdef.getReportName() : "");
1595 wizardJSON.setReportDescr((rdef != null) ? rdef.getReportDescr() : "");
1596 wizardJSON.setReportType((rdef != null) ? rdef.getReportType() : AppConstants.RT_LINEAR);
1597 wizardJSON.setDataContainerHeight((rdef != null) ? rdef.getDataContainerHeight() : "600");
1598 wizardJSON.setDataContainerWidth((rdef != null) ? rdef.getDataContainerWidth() : "900");
1599 wizardJSON.setAllowScheduler((rdef != null) ? rdef.getAllowSchedule() : "false");
1601 if(wizardJSON.getReportType().equals(AppConstants.RT_LINEAR)) {
1602 wizardJSON.setDbInfo((rdef != null) ? rdef.getDBInfo() : "");
1603 wizardJSON.setFormHelpText((rdef != null) ? rdef.getFormHelpText() : "");
1604 wizardJSON.setPageSize((rdef != null) ? rdef.getPageSize() : 50);
1605 List<IdNameBooleanJSON> displayArea = new ArrayList<>();
1606 IdNameBooleanJSON idNameJSON = new IdNameBooleanJSON();
1608 for (int i = 0; i < AppUtils.getQuickLinksMenuIDs().size(); i++) {
1609 idNameJSON = new IdNameBooleanJSON();
1610 qMenu = (String) AppUtils.getQuickLinksMenuIDs().get(i);
1611 idNameJSON.setId(qMenu);
1612 idNameJSON.setName(qMenu);
1613 if (rdef != null && (rdef.getMenuID().equals(qMenu))) {
1614 idNameJSON.setSelected(true);
1616 displayArea.add(idNameJSON);
1618 wizardJSON.setDisplayArea(displayArea);
1619 wizardJSON.setHideFormFieldsAfterRun((rdef != null) ? rdef.isHideFormFieldAfterRun() : false);
1620 wizardJSON.setMaxRowsInExcelCSVDownload((rdef != null) ? rdef.getMaxRowsInExcelDownload() : 500);
1621 wizardJSON.setFrozenColumns((rdef != null) ? rdef.getFrozenColumns() : 0);
1622 wizardJSON.setDataGridAlign((rdef != null) ? rdef.getDataGridAlign() : "left");
1623 wizardJSON.setEmptyMessage((rdef != null) ? rdef.getEmptyMessage() : "No records found");
1624 List<NameBooleanJSON> displayOptions = new ArrayList<>();
1625 NameBooleanJSON nameBooleanJSON = new NameBooleanJSON();
1626 nameBooleanJSON.setName("HideFormFields");
1627 nameBooleanJSON.setSelected((rdef != null) ? rdef.isDisplayOptionHideForm() : false);
1628 displayOptions.add(nameBooleanJSON);
1630 nameBooleanJSON = new NameBooleanJSON();
1631 nameBooleanJSON.setName("HideChart");
1632 nameBooleanJSON.setSelected((rdef != null) ? rdef.isDisplayOptionHideChart() : false);
1633 displayOptions.add(nameBooleanJSON);
1635 nameBooleanJSON = new NameBooleanJSON();
1636 nameBooleanJSON.setName("HideReportData");
1637 nameBooleanJSON.setSelected((rdef != null) ? rdef.isDisplayOptionHideData() : false);
1638 displayOptions.add(nameBooleanJSON);
1640 nameBooleanJSON = new NameBooleanJSON();
1641 nameBooleanJSON.setName("HideExcel");
1642 nameBooleanJSON.setSelected((rdef != null) ? rdef.isDisplayOptionHideExcelIcons() : false);
1643 displayOptions.add(nameBooleanJSON);
1645 nameBooleanJSON = new NameBooleanJSON();
1646 nameBooleanJSON.setName("HidePdf");
1647 nameBooleanJSON.setSelected((rdef != null) ? rdef.isDisplayOptionHidePDFIcons() : false);
1648 displayOptions.add(nameBooleanJSON);
1650 wizardJSON.setDisplayOptions(displayOptions);
1652 wizardJSON.setRuntimeColSortDisabled((rdef != null) ? rdef.isRuntimeColSortDisabled() : false);
1653 wizardJSON.setNumFormCols((rdef != null) ? rdef.getNumFormColsAsInt() : 1);
1654 wizardJSON.setReportTitle((rdef != null) ? rdef.getReportTitle() : "");
1655 wizardJSON.setReportSubTitle((rdef != null) ? rdef.getReportSubTitle() : "");
1658 String schemaSql = Globals.getRemoteDbSchemaSql();
1660 ArrayList<IdNameBooleanJSON> dbInfoList = new ArrayList<>();
1662 ds = DbUtils.executeQuery(schemaSql);
1664 String prefix = "", desc = "";
1666 for (int i = 0; i < ds.getRowCount(); i++) {
1667 IdNameBooleanJSON dBNameJSON = new IdNameBooleanJSON();
1668 dBNameJSON.setId(ds.getItem(i, 0));
1669 dBNameJSON.setName(ds.getItem(i, 0));
1670 dBNameJSON.setSelected(false);
1671 dbInfoList.add(dBNameJSON);
1674 catch (Exception e) {}
1675 wizardJSON.setDbInfoList(dbInfoList);
1678 wizardJSON.setOneTimeRec((rdef != null) ? rdef.getIsOneTimeScheduleAllowed() : "false");
1679 wizardJSON.setHourlyRec((rdef != null) ? rdef.getIsHourlyScheduleAllowed() : "false");
1680 wizardJSON.setDailyRec((rdef != null) ? rdef.getIsDailyScheduleAllowed() : "false");
1681 wizardJSON.setDailyMFRec((rdef != null) ? rdef.getIsDailyMFScheduleAllowed() : "false");
1682 wizardJSON.setWeeklyRec((rdef != null) ? rdef.getIsWeeklyScheduleAllowed() : "false");
1683 wizardJSON.setMonthlyRec((rdef != null) ? rdef.getIsMonthlyScheduleAllowed() : "false");
1684 wizardJSON.setSizedByContent((rdef != null) ? rdef.getSizedByContentOption() : "false");
1685 wizardJSON.setRepDefType(rdef.getReportDefType());
1686 } else if(wizardJSON.getReportType().equals(AppConstants.RT_DASHBOARD)){
1687 wizardJSON.setDashboardLayoutHTML((rdef != null) ? rdef.getCustomReport().getDashboardLayoutHTML() : null);
1688 wizardJSON.setDashboardLayoutJSON((rdef != null) ? rdef.getCustomReport().getDashboardLayoutJSON() : null);
1689 wizardJSON.setDashboardReports((rdef != null) ? rdef.getCustomReport().getDashBoardReports() : null);
1693 ObjectMapper mapper = new ObjectMapper();
1694 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
1695 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
1697 String session_id = request.getSession().getId();
1698 Object obj = request.getAttributeNames();
1699 ReportDefinition report_def = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1705 @PostMapping(value = "/report/wizard/retrieve_data/{validate}")
1706 public @ResponseBody RaptorResponse retrieveDataForGivenQuery(@PathVariable("validate") boolean validate,
1707 @RequestBody QueryJSON queryJSON, HttpServletRequest request, HttpServletResponse response)
1708 throws RaptorException {
1709 RaptorResponse raptorResponse = new RaptorResponse();
1710 String sql = queryJSON.getQuery();
1711 String jsonInString = "";
1713 ServletContext servletContext = request.getSession().getServletContext();
1714 if (!Globals.isSystemInitialized()) {
1715 Globals.initializeSystem(servletContext);
1718 String session_id = request.getSession().getId();
1719 Object obj = request.getAttributeNames();
1720 ReportDefinition rdef = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION);
1722 ErrorJSONRuntime errorJSONRuntime = new ErrorJSONRuntime();
1723 errorJSONRuntime.setErrormessage("Report Definition is not in session;");
1724 errorJSONRuntime.setStacktrace("");
1726 ObjectMapper mapper = new ObjectMapper();
1727 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
1728 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
1731 jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(errorJSONRuntime);
1732 raptorResponse.data().put("elements", jsonInString);
1733 return raptorResponse;
1734 } catch (Exception ex1) {
1735 logger.error(EELFLoggerDelegate.errorLogger,
1736 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex1);
1739 if (!sql.trim().toUpperCase().startsWith("SELECT")) {
1740 ErrorJSONRuntime errorJSONRuntime = new ErrorJSONRuntime();
1741 errorJSONRuntime.setErrormessage("Invalid statement - the SQL must start with the keyword SELECT");
1742 errorJSONRuntime.setStacktrace("SQL Error");
1743 ObjectMapper mapper = new ObjectMapper();
1744 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
1745 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
1748 jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(errorJSONRuntime);
1749 raptorResponse.data().put("elements", jsonInString);
1750 return raptorResponse;
1752 } catch (Exception ex) {
1753 logger.error(EELFLoggerDelegate.errorLogger,
1754 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex);
1758 String remoteDb = request.getParameter("remoteDbPrefix");
1759 // comment below two lines to test
1760 String remoteDbPrefix = (remoteDb != null && !remoteDb.equalsIgnoreCase("null")) ? remoteDb
1762 String userId = AppUtils.getUserID(request);
1764 sql = Utils.replaceInString(sql, "[LOGGED_USERID]", userId);
1765 sql = Utils.replaceInString(sql, "[USERID]", userId);
1766 String[] reqParameters = Globals.getRequestParams().split(",");
1767 String[] sessionParameters = Globals.getSessionParams().split(",");
1768 javax.servlet.http.HttpSession session = request.getSession();
1769 logger.debug(EELFLoggerDelegate.debugLogger, ("B4 testRunSQL " + sql));
1770 if (request != null) {
1771 for (int i = 0; i < reqParameters.length; i++) {
1772 if (!reqParameters[i].startsWith("ff"))
1773 sql = Utils.replaceInString(sql, "[" + reqParameters[i].toUpperCase() + "]",
1774 ESAPI.encoder().encodeForSQL( SecurityCodecUtil.getCodec(),request.getParameter(reqParameters[i].toUpperCase())));
1776 sql = Utils.replaceInString(sql, "[" + reqParameters[i].toUpperCase() + "]",
1777 ESAPI.encoder().encodeForSQL( SecurityCodecUtil.getCodec(),request.getParameter(reqParameters[i])));
1780 if (session != null) {
1781 for (int i = 0; i < sessionParameters.length; i++) {
1782 logger.debug(EELFLoggerDelegate.debugLogger, (" Session " + " sessionParameters[i] "
1783 + sessionParameters[i] + " " + (String) session.getAttribute(sessionParameters[i])));
1784 sql = Utils.replaceInString(sql, "[" + sessionParameters[i].toUpperCase() + "]",
1785 (String) session.getAttribute(sessionParameters[i]));
1788 logger.debug(EELFLoggerDelegate.debugLogger, ("After testRunSQL " + sql));
1791 response.setContentType("application/json");
1792 ds = ConnectionUtils.getDataSet(sql, rdef.getDBInfo(), true);
1794 QueryResultJSON queryResultJSON = new QueryResultJSON();
1795 queryResultJSON.setQuery(queryJSON.getQuery());
1796 String query = XSSFilter.filterRequestOnlyScript(queryJSON.getQuery());
1798 rdef.parseReportSQL(query,validate);
1800 queryResultJSON.setQuery(query);
1802 queryResultJSON.setTotalRows(ds.getRowCount());
1804 Map<String, String> dvJSON;
1805 ArrayList<String> colList = new ArrayList<>();
1806 ArrayList<Map<String, String>> reportDataRows = new ArrayList<>();
1807 if (!ds.isEmpty()) {
1809 for (int i = 0; i < ds.getColumnCount(); i++) {
1810 colList.add(ds.getColumnName(i));
1812 queryResultJSON.setReportDataColumns(colList);
1813 if (queryResultJSON.getTotalRows() > 0) {
1814 for (int r = 0; r < Math.min(ds.getRowCount(), 100); r++) {
1815 dvJSON = new HashMap<>();
1816 for (int c = 0; c < ds.getColumnCount(); c++) {
1818 dvJSON.put(ds.getColumnName(c), ds.getString(r, c));
1819 } catch (Exception ex) {
1820 logger.error(EELFLoggerDelegate.errorLogger,
1821 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].",
1825 reportDataRows.add(dvJSON);
1831 queryResultJSON.setReportDataRows(reportDataRows);
1832 ObjectMapper mapper = new ObjectMapper();
1833 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
1834 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
1836 query = XSSFilter.filterRequestOnlyScript(queryJSON.getQuery());
1837 request.setAttribute("sqlValidated", "N");
1838 rdef.parseReportSQL(query);
1839 request.setAttribute("sqlValidated", "Y");
1840 persistReportDefinition(request, rdef);
1844 jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(queryResultJSON);
1845 raptorResponse.data().put("elements", jsonInString);
1846 return raptorResponse;
1848 } catch (Exception ex) {
1849 logger.error(EELFLoggerDelegate.errorLogger,
1850 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery]. RaptorException: ",
1853 } catch (ReportSQLException ex) {
1854 ErrorJSONRuntime errorJSONRuntime = new ErrorJSONRuntime();
1855 if (sql.contains("[")) {
1856 errorJSONRuntime.setErrormessage(
1857 "Formfield information is present in the query, hence couldn't execute");
1859 .setStacktrace("Formfield information is present in the query, hence couldn't execute");
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);
1870 errorJSONRuntime.setErrormessage(ex.getMessage());
1871 errorJSONRuntime.setStacktrace(getStackTrace(ex));
1873 ObjectMapper mapper = new ObjectMapper();
1874 mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
1875 mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
1878 jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(errorJSONRuntime);
1879 raptorResponse.data().put("elements", jsonInString);
1880 return raptorResponse;
1882 } catch (Exception ex1) {
1883 logger.error(EELFLoggerDelegate.errorLogger,
1884 "[Controller.processRequest]Invalid raptor action [retrieveDataForGivenQuery].", ex1);
1888 String query = XSSFilter.filterRequestOnlyScript(queryJSON.getQuery());
1889 request.setAttribute("sqlValidated", "N");
1890 rdef.parseReportSQL(query);
1891 request.setAttribute("sqlValidated", "Y");
1892 persistReportDefinition(request, rdef);
1898 raptorResponse.data().put("elements", jsonInString);
1899 return raptorResponse;
1904 @GetMapping(value = "/report/wizard/get_report_log/{reportID}")
1905 public @ResponseBody ArrayList<ReportLogEntry> getLogs(@PathVariable("reportID") String reportId, HttpServletRequest request,
1906 HttpServletResponse ReportLogEntry) {
1907 ArrayList<ReportLogEntry> arrayList = new ArrayList<>();
1909 Vector<ReportLogEntry> v = ReportLoader.loadReportLogEntries(reportId);
1910 for(ReportLogEntry r:v ){
1913 } catch (RaptorException e) {
1914 logger.error(EELFLoggerDelegate.errorLogger,
1915 "RaptorControllerAsync getLogs.", e);
1920 @PostMapping(value = "save_chart")
1921 public void reportChartReceive(@RequestBody ChartJSON chartJSON, HttpServletRequest request,
1922 HttpServletResponse response) {
1923 ReportDefinition reportDefn;
1924 String action = request.getParameter("action");
1925 reportDefn = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION); // session
1927 String reportID = request.getParameter("c_master");
1928 if (reportDefn != null) {
1929 String chartType = chartJSON.getChartType();
1930 reportDefn.setChartType((action.equalsIgnoreCase("save"))? chartJSON.getChartType() : "none");
1931 reportDefn.setChartAnimate((action.equalsIgnoreCase("save")) ? chartJSON.isAnimation() : false);
1932 reportDefn.setChartWidth((action.equalsIgnoreCase("save")) ? chartJSON.getWidth() : "");
1933 reportDefn.setChartHeight((action.equalsIgnoreCase("save")) ? chartJSON.getHeight() : "");
1934 reportDefn.setShowChartTitle((action.equalsIgnoreCase("save")) ? chartJSON.isShowTitle() : false);
1936 String domainAxis = null;
1937 domainAxis = chartJSON.getDomainAxis();
1939 List<DataColumnType> reportCols = reportDefn.getAllColumns();
1941 for (Iterator<DataColumnType> iter = reportCols.iterator(); iter.hasNext();) {
1942 DataColumnType dct = iter.next();
1943 if (dct.getColId().equals(domainAxis)) {
1944 dct.setColOnChart(AppConstants.GC_LEGEND);
1946 dct.setColOnChart(null);
1950 CategoryAxisJSON categoryAxisJSON = chartJSON.getCategoryAxisJSON();
1951 String categoryAxis;
1953 categoryAxis = (categoryAxisJSON != null ? categoryAxisJSON.getValue() : "");
1955 reportCols = reportDefn.getAllColumns();
1957 for (Iterator<DataColumnType> iter = reportCols.iterator(); iter.hasNext();) {
1958 DataColumnType dct = iter.next();
1959 if (dct.getColId().equals(categoryAxis)) {
1960 dct.setChartSeries(true);
1962 dct.setChartSeries(false);
1966 ArrayList<RangeAxisJSON> rangeAxisList = chartJSON.getRangeAxisList();
1968 HashSet<String> removeRangeAxisMap = new HashSet<>();
1969 for(RangeAxisJSON rangeAxis:chartJSON.getRangeAxisRemoveList()){
1970 removeRangeAxisMap.add(rangeAxis.getRangeAxis());
1972 for (int i = 0; i < rangeAxisList.size(); i++) {
1973 RangeAxisJSON rangeAxisJSON = rangeAxisList.get(i);
1974 String rangeAxis = rangeAxisJSON.getRangeAxis();
1975 String rangeYAxis = AppUtils.nvl(rangeAxisJSON.getRangeYAxis());
1976 String rangeChartGroup = AppUtils.nvl(rangeAxisJSON.getRangeChartGroup());
1977 String rangeColor = AppUtils.nvl(rangeAxisJSON.getRangeColor());
1978 String rangeLineType = AppUtils.nvl(rangeAxisJSON.getRangeLineType());
1980 rangefor: for (Iterator<DataColumnType> iterator = reportCols.iterator(); iterator.hasNext();) {
1981 DataColumnType dct = iterator.next();
1982 if (dct.getColId().equals(rangeAxis)) {
1983 if(removeRangeAxisMap.contains(rangeAxis))
1984 dct.setChartSeq(-1);
1986 dct.setChartSeq(++r);
1988 if (!dct.getColId().equals(domainAxis)) {
1989 dct.setColOnChart("0");
1991 dct.setChartSeq(-1);
1993 dct.setYAxis(rangeYAxis);
1994 dct.setChartGroup(rangeChartGroup);
1995 dct.setChartColor(rangeColor);
1996 dct.setChartLineType(rangeLineType);
1998 if (chartType.equals(AppConstants.GT_ANNOTATION_CHART)
1999 || chartType.equals(AppConstants.GT_FLEX_TIME_CHARTS)) {
2000 if (rangeAxisJSON.isShowAsArea()) {
2001 dct.setIsRangeAxisFilled(true);
2003 dct.setIsRangeAxisFilled(false);
2011 reportDefn.setChartLeftAxisLabel((action.equalsIgnoreCase("save")) ? chartJSON.getPrimaryAxisLabel() : "");
2012 reportDefn.setChartRightAxisLabel((action.equalsIgnoreCase("save")) ? chartJSON.getSecondaryAxisLabel() : "");
2014 reportDefn.setRangeAxisLowerLimit((action.equalsIgnoreCase("save")) ? chartJSON.getMinRange() : "");
2015 reportDefn.setRangeAxisUpperLimit((action.equalsIgnoreCase("save")) ? chartJSON.getMaxRange() : "");
2017 if (chartType.equals(AppConstants.GT_ANNOTATION_CHART)
2018 || chartType.equals(AppConstants.GT_FLEX_TIME_CHARTS)) {
2019 if (chartJSON.getFlexTimeSeriesChartOptions() != null) {
2020 reportDefn.setZoomIn(chartJSON.getFlexTimeSeriesChartOptions().getZoomIn());
2021 reportDefn.setTimeAxisType(chartJSON.getFlexTimeSeriesChartOptions().getTimeAxisType());
2026 if (chartType.equals(AppConstants.GT_TIME_SERIES)) {
2027 if (chartJSON.getTimeSeriesChartOptions() != null) {
2028 reportDefn.setTimeSeriesRender(chartJSON.getTimeSeriesChartOptions().getLineChartRenderer());
2029 reportDefn.setShowXAxisLabel(chartJSON.getTimeSeriesChartOptions().isShowXAxisLabel());
2030 reportDefn.setAddXAxisTickers(chartJSON.getTimeSeriesChartOptions().isAddXAxisTicker());
2031 reportDefn.setTimeAxis(chartJSON.getTimeSeriesChartOptions().isNonTimeAxis());
2032 reportDefn.setMultiSeries(chartJSON.getTimeSeriesChartOptions().isMultiSeries());
2037 if (chartType.equals(AppConstants.GT_BAR_3D)) {
2038 if (chartJSON.getBarChartOptions() != null) {
2039 reportDefn.setChartOrientation(
2040 chartJSON.getBarChartOptions().isVerticalOrientation() ? "vertical" : "horizontal");
2041 reportDefn.setChartStacked(chartJSON.getBarChartOptions().isStackedChart());
2042 reportDefn.setBarControls(chartJSON.getBarChartOptions().isDisplayBarControls());
2043 reportDefn.setXAxisDateType(chartJSON.getBarChartOptions().isxAxisDateType());
2044 reportDefn.setLessXaxisTickers(chartJSON.getBarChartOptions().isMinimizeXAxisTickers());
2045 reportDefn.setTimeAxis(chartJSON.getBarChartOptions().isTimeAxis());
2046 reportDefn.setLogScale(chartJSON.getBarChartOptions().isyAxisLogScale());
2050 reportDefn.setLegendLabelAngle((action.equalsIgnoreCase("save")) ? chartJSON.getCommonChartOptions().getLegendLabelAngle() : "");
2051 reportDefn.setLegendPosition((action.equalsIgnoreCase("save")) ? chartJSON.getCommonChartOptions().getLegendPosition() : "");
2052 reportDefn.setChartLegendDisplay(chartJSON.getCommonChartOptions().isHideLegend() ? "Y" : "N");
2053 reportDefn.setAnimateAnimatedChart((action.equalsIgnoreCase("save")) ? chartJSON.getCommonChartOptions().isAnimateAnimatedChart() : false);
2055 reportDefn.setTopMargin((action.equalsIgnoreCase("save")) ? chartJSON.getCommonChartOptions().getTopMargin() : 0);
2056 reportDefn.setBottomMargin((action.equalsIgnoreCase("save")) ? chartJSON.getCommonChartOptions().getBottomMargin() : 0);
2057 reportDefn.setLeftMargin((action.equalsIgnoreCase("save")) ? chartJSON.getCommonChartOptions().getLeftMargin(): 0);
2058 reportDefn.setRightMargin((action.equalsIgnoreCase("save")) ? chartJSON.getCommonChartOptions().getRightMargin(): 0);
2060 for (Iterator<DataColumnType> iterator = reportCols.iterator(); iterator.hasNext();) {
2061 DataColumnType dct = iterator.next();
2062 if (!(AppUtils.nvl(dct.getColOnChart()).equals(AppConstants.GC_LEGEND)
2063 || (dct.getChartSeq() != null && dct.getChartSeq() > 0) || dct.isChartSeries())) {
2064 dct.setChartSeq(-1);
2065 dct.setChartColor(null);
2066 dct.setColOnChart(null);
2067 dct.setCreateInNewChart(false);
2068 dct.setChartGroup(null);
2074 persistReportDefinition(request, reportDefn);
2075 } catch (Exception ex) {
2076 logger.error(EELFLoggerDelegate.errorLogger,
2077 "[Controller.processRequest]Invalid raptor action [reportChartReceive].", ex);
2082 public String getViewName() {
2086 public void setViewName(String viewName) {
2087 this.viewName = viewName;
2090 public String nvl(String s) {
2091 return (s == null) ? "" : s;
2094 public String nvl(String s, String sDefault) {
2095 return nvl(s).equals("") ? sDefault : s;
2098 public static String getStackTrace(Throwable aThrowable) {
2099 Writer result = new StringWriter();
2100 PrintWriter printWriter = new PrintWriter(result);
2101 aThrowable.printStackTrace(printWriter);
2102 return result.toString();
2105 public void persistReportDefinition(HttpServletRequest request, ReportDefinition rdef) throws RaptorException {
2106 ReportRuntime rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
2107 if (rr != null && rr.getReportID().equals(rdef.getReportID()))
2108 request.getSession().removeAttribute(AppConstants.SI_REPORT_RUNTIME);
2109 rdef.persistReport(request);
2110 } // persistReportDefinition
2112 // Remove from session
2113 private void removeVariablesFromSession(HttpServletRequest request) {
2114 HttpSession session = request.getSession();
2115 session.removeAttribute(AppConstants.DRILLDOWN_REPORTS_LIST);
2116 session.removeAttribute(AppConstants.DRILLDOWN_INDEX);
2117 session.removeAttribute(AppConstants.FORM_DRILLDOWN_INDEX);
2118 session.removeAttribute(AppConstants.SI_BACKUP_FOR_REP_ID);
2119 session.removeAttribute(AppConstants.SI_COLUMN_LOOKUP);
2120 session.removeAttribute(AppConstants.SI_DASHBOARD_REP_ID);
2121 session.removeAttribute(AppConstants.SI_DASHBOARD_REPORTRUNTIME_MAP);
2122 session.removeAttribute(AppConstants.SI_DASHBOARD_REPORTRUNTIME);
2123 session.removeAttribute(AppConstants.SI_DASHBOARD_REPORTDATA_MAP);
2124 session.removeAttribute(AppConstants.SI_DASHBOARD_CHARTDATA_MAP);
2125 session.removeAttribute(AppConstants.SI_DASHBOARD_DISPLAYTYPE_MAP);
2126 session.removeAttribute(AppConstants.SI_DATA_SIZE_FOR_TEXTFIELD_POPUP);
2127 session.removeAttribute(AppConstants.SI_MAP);
2128 session.removeAttribute(AppConstants.SI_MAP_OBJECT);
2129 session.removeAttribute(AppConstants.SI_REPORT_DEFINITION);
2130 session.removeAttribute(AppConstants.SI_REPORT_RUNTIME);
2131 session.removeAttribute(AppConstants.SI_REPORT_RUN_BACKUP);
2132 session.removeAttribute(AppConstants.SI_REPORT_SCHEDULE);
2133 session.removeAttribute(AppConstants.RI_REPORT_DATA);
2134 session.removeAttribute(AppConstants.RI_CHART_DATA);
2135 session.removeAttribute(AppConstants.SI_FORMFIELD_INFO);
2136 session.removeAttribute(AppConstants.SI_FORMFIELD_DOWNLOAD_INFO);
2137 session.removeAttribute(AppConstants.EMBEDDED_REPORTRUNTIME_MAP);
2138 session.removeAttribute(AppConstants.EMBEDDED_REPORTDATA_MAP);
2139 Enumeration<String> enum1 = session.getAttributeNames();
2140 String attributeName = "";
2141 while (enum1.hasMoreElements()) {
2142 attributeName = enum1.nextElement();
2143 if (attributeName.startsWith("parent_")) {
2144 session.removeAttribute(attributeName);