From 220a25a2566c90bc540e7190342f73824d2ff54a Mon Sep 17 00:00:00 2001 From: mravula Date: Mon, 31 Aug 2020 12:29:32 -0400 Subject: Raptor UI Changes, user profile, folder restructure Issue-ID: PORTAL-902 Change-Id: Ib76bb3fce7efe55504b75d2fc4764bafb9f8e908 Signed-off-by: mravula --- .../analytics/controller/ActionHandler.java | 252 +- .../portalsdk/analytics/model/ReportHandler.java | 3106 +++++++++++++++----- .../analytics/model/base/ReportWrapper.java | 14 +- .../analytics/model/runtime/FormField.java | 2 +- .../analytics/model/runtime/ReportJSONRuntime.java | 7 + .../runtime/ReportParamValuesForPDFExcel.java | 9 + .../analytics/model/runtime/ReportRuntime.java | 74 +- .../system/fusion/web/RaptorControllerAsync.java | 89 +- .../portalsdk/analytics/util/AppConstants.java | 2 + .../portalsdk/analytics/util/CachingUtils.java | 49 + .../portalsdk/analytics/util/HtmlStripper.java | 6 +- .../org/onap/portalsdk/analytics/util/Utils.java | 117 +- .../portalsdk/analytics/view/HtmlFormatter.java | 1 + .../onap/portalsdk/analytics/view/ReportData.java | 6 +- 14 files changed, 2711 insertions(+), 1023 deletions(-) (limited to 'ecomp-sdk/epsdk-analytics/src/main') diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/controller/ActionHandler.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/controller/ActionHandler.java index b660ca95..b1e02fbc 100644 --- a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/controller/ActionHandler.java +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/controller/ActionHandler.java @@ -68,6 +68,8 @@ import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.io.Writer; +import java.net.URLDecoder; +import java.nio.charset.StandardCharsets; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; @@ -122,6 +124,7 @@ import org.onap.portalsdk.analytics.system.DbUtils; import org.onap.portalsdk.analytics.system.Globals; import org.onap.portalsdk.analytics.system.fusion.domain.QuickLink; import org.onap.portalsdk.analytics.util.AppConstants; +import org.onap.portalsdk.analytics.util.CachingUtils; import org.onap.portalsdk.analytics.util.DataSet; import org.onap.portalsdk.analytics.util.Utils; import org.onap.portalsdk.analytics.view.DataRow; @@ -145,7 +148,7 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { private static final String PARENT = "parent_"; private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ActionHandler.class); - private static final String REPORT_DOWNLOAD_PDF = "report.download.pdf"; + private static final String REPORT_DOWNLOAD_PDF = "report.download.pdf"; private static final String REPORT_TEXT_DOWNLOAD = "report.text.download"; private static final String REPORT_CSV_DOWNLOAD = "report.csv.download"; private static final String REPORT_DOWNLOAD_EXCEL2007 = "report.download.excel2007"; @@ -221,8 +224,7 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { boolean fromDashboard = AppUtils.getRequestFlag(request,"fromDashboard"); request.getSession().setAttribute("login_id", AppUtils.getUserBackdoorLoginId(request)); - boolean rDisplayContent = AppUtils.getRequestFlag(request, - AppConstants.RI_DISPLAY_CONTENT) + boolean rDisplayContent = AppUtils.getRequestFlag(request, AppConstants.RI_DISPLAY_CONTENT) || AppUtils.getRequestFlag(request, "noFormFields"); try { @@ -231,19 +233,17 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { removeVariablesFromSession(request); } - long currentTime = System.currentTimeMillis(); + long totalTime; request.setAttribute("triggeredStartTime", new Long(currentTime)); String actionKey = nvl(request.getParameter(AppConstants.RI_ACTION), request.getParameter("action")); String pdfAttachmentKey = AppUtils.getRequestNvlValue(request, "pdfAttachmentKey"); String parent = ""; int parentFlag = 0; - if(!"N".equals(nvl(request.getParameter("parent"), ""))) - { + if (!"N".equals(nvl(request.getParameter("parent"), ""))) { parent = nvl(request.getParameter("parent"), ""); } - if(parent.startsWith(PARENT)) - { + if (parent.startsWith(PARENT)) { parentFlag = 1; } @@ -251,13 +251,17 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { if(parentFlag == 1) rr = (ReportRuntime) request.getSession().getAttribute(parent+"_rr"); if(rr==null) - rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME); //changing session to request + rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME); // changing + // session + // to + // request if(!(rr!=null && fromDashboard)) { userId = AppUtils.getUserID(request); boolean isFromReportLog = AppUtils.getRequestFlag(request, "fromReportLog"); int downloadLimit = 0; if(rr!=null) - downloadLimit = (rr.getMaxRowsInExcelDownload()>0)?rr.getMaxRowsInExcelDownload():Globals.getDownloadLimit(); + downloadLimit = (rr.getMaxRowsInExcelDownload() > 0) ? rr.getMaxRowsInExcelDownload() + : Globals.getDownloadLimit(); if(REPORT_CSV_DOWNLOAD.equals(actionKey)) downloadLimit = Globals.getCSVDownloadLimit(); @@ -265,17 +269,21 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { String sqlWhole = rr.getReportDataSQL(userId, downloadLimit, request); request.setAttribute(AppConstants.RI_REPORT_SQL_WHOLE, sqlWhole); } else if(rr!=null && rr.getReportType().equals(AppConstants.RT_CROSSTAB)) { - rd = rr.loadReportData(-1, userId, downloadLimit,request, false); /* TODO: should be changed to true */ + rd = rr.loadReportData(-1, userId, downloadLimit, request, + false); /* TODO: should be changed to true */ request.getSession().setAttribute(AppConstants.RI_REPORT_DATA, rd); } if(!isFromReportLog) { if(pdfAttachmentKey!=null && pdfAttachmentKey.length()>0) { if(REPORT_DOWNLOAD.equals(actionKey)) { - rr.logReportExecutionTime(userId, "",AppConstants.RLA_SCHEDULED_DOWNLOAD_EXCEL, formFields); + rr.logReportExecutionTime(userId, "", AppConstants.RLA_SCHEDULED_DOWNLOAD_EXCEL, + formFields); } else if (REPORT_DOWNLOAD_PDF.equals(actionKey)) { - rr.logReportExecutionTime(userId, "",AppConstants.RLA_SCHEDULED_DOWNLOAD_PDF, formFields); + rr.logReportExecutionTime(userId, "", AppConstants.RLA_SCHEDULED_DOWNLOAD_PDF, + formFields); } else if (REPORT_DOWNLOAD_EXCEL2007.equals(actionKey)) { - rr.logReportExecutionTime(userId, "",AppConstants.RLA_SCHEDULED_DOWNLOAD_EXCELX, formFields); + rr.logReportExecutionTime(userId, "", AppConstants.RLA_SCHEDULED_DOWNLOAD_EXCELX, + formFields); } } else { if(REPORT_DOWNLOAD.equals(actionKey) ) { @@ -299,13 +307,15 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { }// pdfAttachmentKey String reportID = AppUtils.getRequestValue(request, AppConstants.RI_REPORT_ID); - rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME); //changing session to request + rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME); // changing session + // to request String reportIDFromSession = (rr!=null)?rr.getReportID():""; - logger.debug(EELFLoggerDelegate.debugLogger, ("in Action Handler ********** " + reportID + " " + reportIDFromSession + " "+ actionKey)); - - logger.debug(EELFLoggerDelegate.debugLogger, ("^^^^^^^^^^^^^^report ID from session " + ((rr!=null)?rr.getReportID():"no report id in session"))); + logger.debug(EELFLoggerDelegate.debugLogger, + ("in Action Handler ********** " + reportID + " " + reportIDFromSession + " " + actionKey)); + logger.debug(EELFLoggerDelegate.debugLogger, ("^^^^^^^^^^^^^^report ID from session " + + ((rr != null) ? rr.getReportID() : "no report id in session"))); ReportHandler rh1 = new ReportHandler(); ReportRuntime rr1 = null; @@ -331,13 +341,12 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { TreeMap treeMap = getListOfReportsFromDashBoardJson(strJson); TreeMap treeMapHtml = getListOfReportsFromDashBoardHTML(strHTML); Set set = treeMap.entrySet(); - HashMap reportsRuntimeMap = new HashMap(); HashMap reportDataMap = new HashMap(); HashMap reportChartDataMap = new HashMap(); - // displayTypeMap differentiates whether report need to be displayed as data or chart + // displayTypeMap differentiates whether report need to be displayed as data or + // chart HashMap reportDisplayTypeMap = new HashMap(); - userId = null; userId = AppUtils.getUserID(request); int pageNo = -1; @@ -373,7 +382,8 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { } downloadLimit = (rrDashboardReports.getMaxRowsInExcelDownload() > 0) - ? rrDashboardReports.getMaxRowsInExcelDownload() : Globals.getDownloadLimit(); + ? rrDashboardReports.getMaxRowsInExcelDownload() + : Globals.getDownloadLimit(); if(record == 1) { if (rrDashboardReports.getReportFormFields() != null @@ -385,6 +395,7 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { } if(buildReportdata) { + rrDashboardReports.setFromDashBoard(true); if(similiarReportRuntime != null ) { rd = (ReportData) reportDataMap.get(intObj); ds = (DataSet) reportChartDataMap.get(intObj); @@ -399,16 +410,10 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { } } - long totalTime = System.currentTimeMillis() - currentTime; + totalTime = System.currentTimeMillis() - currentTime; formFields = AppUtils.getRequestNvlValue(request, FORM_FIELDS); - if(buildReportdata) { - /* - * rrDashboardReports.logReportRun(userId, String.valueOf(totalTime), - * formFields); rrDashboardReports.logReportExecutionTime(userId, - * String.valueOf(totalTime), AppConstants.RLA_EXECUTION_TIME, formFields); - */ - } - if(!entry.getValue().toString().toLowerCase().startsWith("c")) { + + //if (!entry.getValue().toString().toLowerCase().startsWith("c")) { reportsRuntimeMap.put( new Integer(entry.getKey().toString()) + "_" + rrDashboardReports.getReportID(), rrDashboardReports); @@ -417,24 +422,31 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { entry.getValue().toString().substring(0, 1)); if(buildReportdata) { reportDataMap.put( - new Integer(entry.getKey().toString()) + "_" + rrDashboardReports.getReportID(), rd); + new Integer(entry.getKey().toString()) + "_" + rrDashboardReports.getReportID(), + rd); reportChartDataMap.put( - new Integer(entry.getKey().toString()) + "_" + rrDashboardReports.getReportID(), ds); - } + new Integer(entry.getKey().toString()) + "_" + rrDashboardReports.getReportID(), + ds); } + //} } - request.getSession().setAttribute(AppConstants.SI_DASHBOARD_REPORTRUNTIME_MAP, new TreeMap(reportsRuntimeMap)); - request.getSession().setAttribute(AppConstants.SI_DASHBOARD_DISPLAYTYPE_MAP, new TreeMap(reportDisplayTypeMap)); + request.getSession().setAttribute(AppConstants.SI_DASHBOARD_REPORTRUNTIME_MAP, + new TreeMap(reportsRuntimeMap)); + request.getSession().setAttribute(AppConstants.SI_DASHBOARD_DISPLAYTYPE_MAP, + new TreeMap(reportDisplayTypeMap)); if(buildReportdata) { - request.getSession().setAttribute(AppConstants.SI_DASHBOARD_REPORTDATA_MAP, new TreeMap(reportDataMap)); - request.getSession().setAttribute(AppConstants.SI_DASHBOARD_CHARTDATA_MAP, new TreeMap(reportChartDataMap)); + request.getSession().setAttribute(AppConstants.SI_DASHBOARD_REPORTDATA_MAP, + new TreeMap(reportDataMap)); + request.getSession().setAttribute(AppConstants.SI_DASHBOARD_CHARTDATA_MAP, + new TreeMap(reportChartDataMap)); } request.getSession().setAttribute(AppConstants.SI_REPORT_RUNTIME, rr1); //changing session to request - if((String) request.getSession().getAttribute(AppConstants.SI_DASHBOARD_REP_ID)!= null || rr1.getReportType().equals(AppConstants.RT_DASHBOARD)) { + if ((String) request.getSession().getAttribute(AppConstants.SI_DASHBOARD_REP_ID) != null + || rr1.getReportType().equals(AppConstants.RT_DASHBOARD)) { request.getSession().setAttribute(AppConstants.SI_DASHBOARD_REPORTRUNTIME, rr1); } @@ -455,8 +467,10 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { request.getSession().removeAttribute(AppConstants.EMBEDDED_REPORTDATA_MAP); } - String reportEmailSentLogId = ESAPI.encoder().encodeForSQL( SecurityCodecUtil.getCodec(),AppUtils.getRequestValue(request, "log_id")); - logger.debug(EELFLoggerDelegate.debugLogger, ("Email PDF" + pdfAttachmentKey+" "+ reportEmailSentLogId)); + String reportEmailSentLogId = ESAPI.encoder().encodeForSQL(SecurityCodecUtil.getCodec(), + AppUtils.getRequestValue(request, "log_id")); + logger.debug(EELFLoggerDelegate.debugLogger, + ("Email PDF" + pdfAttachmentKey + " " + reportEmailSentLogId)); //email pdf attachment specific if(nvl(pdfAttachmentKey).length()>0 && reportEmailSentLogId !=null) @@ -472,7 +486,8 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { reportID = ds.getString(0, "rep_id"); request.setAttribute("schedule_email_userId", userId); } else { - request.setAttribute(MESSAGE, "This link has expired, please login and regenerate the report"); + request.setAttribute(MESSAGE, + "This link has expired, please login and regenerate the report"); return "raptor/message.jsp"; } } else @@ -481,7 +496,8 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { // Scheduling Dashoard report if(reportID !=null && nvl(pdfAttachmentKey).length()>0) rr = rh1.loadReportRuntime(request, reportID, true, 1); - if(rr!=null && rr.getReportType().equals(AppConstants.RT_DASHBOARD) && nvl(pdfAttachmentKey).length()>0) { + if (rr != null && rr.getReportType().equals(AppConstants.RT_DASHBOARD) + && nvl(pdfAttachmentKey).length() > 0) { int DASH=7; int requestFlag = DASH; ReportHandler rh = new ReportHandler(); @@ -527,14 +543,20 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { rrDashboardReports = rh.loadReportRuntime(request, reportIDFromMap, true, requestFlag); } - downloadLimit = (rrDashboardReports.getMaxRowsInExcelDownload()>0)?rrDashboardReports.getMaxRowsInExcelDownload():Globals.getDownloadLimit(); + downloadLimit = (rrDashboardReports.getMaxRowsInExcelDownload() > 0) + ? rrDashboardReports.getMaxRowsInExcelDownload() + : Globals.getDownloadLimit(); - if (new Integer(nvl(rrDashboardReports.getDataContainerWidth(),"100")).intValue() >100) widthFlag = 1; - if (new Integer(nvl(rrDashboardReports.getDataContainerHeight(),"100")).intValue() >100) heightFlag = 1; + if (new Integer(nvl(rrDashboardReports.getDataContainerWidth(), "100")).intValue() > 100) + widthFlag = 1; + if (new Integer(nvl(rrDashboardReports.getDataContainerHeight(), "100")).intValue() > 100) + heightFlag = 1; if(record == 1) { - if(rrDashboardReports.getReportFormFields()!=null && rrDashboardReports.getReportFormFields().size()>0) { + if (rrDashboardReports.getReportFormFields() != null + && rrDashboardReports.getReportFormFields().size() > 0) { buildReportdata = false; - if(rDisplayContent) buildReportdata = true; + if (rDisplayContent) + buildReportdata = true; } } if(buildReportdata) { @@ -544,35 +566,48 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { } else { if (!rrDashboardReports.getReportType().equals(AppConstants.RT_HIVE)) - rd = rrDashboardReports.loadReportData(pageNo, userId, downloadLimit,request, false /*download*/); + rd = rrDashboardReports.loadReportData(pageNo, userId, downloadLimit, request, + false /* download */); else - rd = rrDashboardReports.loadHiveLinearReportData(rrDashboardReports.getReportSQL(), userId, 2,request); + rd = rrDashboardReports.loadHiveLinearReportData(rrDashboardReports.getReportSQL(), + userId, 2, request); ds = rrDashboardReports.loadChartData(userId,request); } } - - - long totalTime = System.currentTimeMillis() - currentTime; + totalTime = System.currentTimeMillis() - currentTime; formFields = AppUtils.getRequestNvlValue(request, FORM_FIELDS); rrDashboardReports.logReportRun(userId, String.valueOf(totalTime),formFields); - rrDashboardReports.logReportExecutionTime(userId, String.valueOf(totalTime),AppConstants.RLA_EXECUTION_TIME, formFields); + rrDashboardReports.logReportExecutionTime(userId, String.valueOf(totalTime), + AppConstants.RLA_EXECUTION_TIME, formFields); reportsRuntimeMap.put(new Integer(entry.getKey().toString()), rrDashboardReports); - reportDisplayTypeMap.put(new Integer(entry.getKey().toString()), entry.getValue().toString().substring(0,1)); + reportDisplayTypeMap.put(new Integer(entry.getKey().toString()), + entry.getValue().toString().substring(0, 1)); if(buildReportdata) { reportDataMap.put(new Integer(entry.getKey().toString()), rd); reportChartDataMap.put(new Integer(entry.getKey().toString()), ds); } } - request.getSession().setAttribute(AppConstants.SI_DASHBOARD_REPORTRUNTIME_MAP, new TreeMap(reportsRuntimeMap)); - request.getSession().setAttribute(AppConstants.SI_REPORT_RUNTIME, rr); //changing session to request + /* + * if(widthFlag ==1) request.getSession().setAttribute("extendedWidth", "Y"); + * else request.getSession().removeAttribute("extendedWidth"); if(heightFlag + * ==1) request.getSession().setAttribute("extendedHeight", "Y"); else + * request.getSession().removeAttribute("extendedHeight"); + */ + request.getSession().setAttribute(AppConstants.SI_DASHBOARD_REPORTRUNTIME_MAP, + new TreeMap(reportsRuntimeMap)); + request.getSession().setAttribute(AppConstants.SI_REPORT_RUNTIME, rr); // changing session to + // request if(buildReportdata) { - request.getSession().setAttribute(AppConstants.SI_DASHBOARD_DISPLAYTYPE_MAP, new TreeMap(reportDisplayTypeMap)); - request.getSession().setAttribute(AppConstants.SI_DASHBOARD_REPORTDATA_MAP, new TreeMap(reportDataMap)); - request.getSession().setAttribute(AppConstants.SI_DASHBOARD_CHARTDATA_MAP, new TreeMap(reportChartDataMap)); + request.getSession().setAttribute(AppConstants.SI_DASHBOARD_DISPLAYTYPE_MAP, + new TreeMap(reportDisplayTypeMap)); + request.getSession().setAttribute(AppConstants.SI_DASHBOARD_REPORTDATA_MAP, + new TreeMap(reportDataMap)); + request.getSession().setAttribute(AppConstants.SI_DASHBOARD_CHARTDATA_MAP, + new TreeMap(reportChartDataMap)); } } else { @@ -581,10 +616,8 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { ReportHandler rh = new ReportHandler(); //rr = null; // COMMENT THIS LINE - boolean resetParams = AppUtils.getRequestFlag(request, - AppConstants.RI_RESET_PARAMS); - boolean resetAction = AppUtils.getRequestFlag(request, - AppConstants.RI_RESET_ACTION); + boolean resetParams = AppUtils.getRequestFlag(request, AppConstants.RI_RESET_PARAMS); + boolean resetAction = AppUtils.getRequestFlag(request, AppConstants.RI_RESET_ACTION); boolean refresh = false; if (resetAction) { rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME); @@ -624,14 +657,13 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { pageNo = rr.getCachedPageNo(); else { try { - pageNo = Integer.parseInt(AppUtils.getRequestNvlValue(request, AppConstants.RI_NEXT_PAGE)); + pageNo = Integer + .parseInt(AppUtils.getRequestNvlValue(request, AppConstants.RI_NEXT_PAGE)); } catch (Exception e) { } - String vAction = AppUtils.getRequestNvlValue(request, - AppConstants.RI_VISUAL_ACTION); - String vCoId = AppUtils.getRequestNvlValue(request, - AppConstants.RI_DETAIL_ID); + String vAction = AppUtils.getRequestNvlValue(request, AppConstants.RI_VISUAL_ACTION); + String vCoId = AppUtils.getRequestNvlValue(request, AppConstants.RI_DETAIL_ID); if (vAction.equals(AppConstants.VA_HIDE)) rr.hideColVisual(vCoId); else if (vAction.equals(AppConstants.VA_SHOW)) @@ -642,7 +674,8 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { } // else } // else - int downloadLimit = (rr.getMaxRowsInExcelDownload()>0)?rr.getMaxRowsInExcelDownload():Globals.getDownloadLimit(); + int downloadLimit = (rr.getMaxRowsInExcelDownload() > 0) ? rr.getMaxRowsInExcelDownload() + : Globals.getDownloadLimit(); if(isEmailAttachment) { String limit = nvl(request.getParameter("download_limit"),"1000"); downloadLimit = Integer.parseInt(limit); @@ -652,11 +685,12 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { rd = rr.loadReportData(pageNo, userId, downloadLimit,request,false /*download*/); else rd = rr.loadHiveLinearReportData(rr.getReportSQL(), userId, 2,request); - logger.debug(EELFLoggerDelegate.debugLogger, ("[DEBUG MESSAGE FROM RAPTOR] ------->Time Taken for the loading report data --- " + (System.currentTimeMillis() - reportTime))); + logger.debug(EELFLoggerDelegate.debugLogger, + ("[DEBUG MESSAGE FROM RAPTOR] ------->Time Taken for the loading report data --- " + + (System.currentTimeMillis() - reportTime))); ReportData rd_whole = null; - boolean hideReportMap = rr.isDisplayOptionHideMap()||AppUtils.getRequestNvlValue(request, "noMap").equals("Y"); - - + boolean hideReportMap = rr.isDisplayOptionHideMap() + || AppUtils.getRequestNvlValue(request, "noMap").equals("Y"); request.getSession().setAttribute(AppConstants.RI_REPORT_DATA, rd); if(rr!=null && rr.getReportType().equals(AppConstants.RT_LINEAR)) { String sqlWhole = rr.getReportDataSQL(userId, downloadLimit, request); @@ -669,38 +703,50 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { long currentChartTime = System.currentTimeMillis(); DataSet chartDS = rr.loadChartData(userId,request); if(chartDS != null) - request.getSession().setAttribute(AppConstants.RI_CHART_DATA, rr.loadChartData(userId,request)); + request.getSession().setAttribute(AppConstants.RI_CHART_DATA, + rr.loadChartData(userId, request)); else request.getSession().removeAttribute(AppConstants.RI_CHART_DATA); - logger.debug(EELFLoggerDelegate.debugLogger, ("[DEBUG MESSAGE FROM RAPTOR] ------->Time Taken for the loading chart data --- " + (System.currentTimeMillis() - currentChartTime))); + logger.debug(EELFLoggerDelegate.debugLogger, + ("[DEBUG MESSAGE FROM RAPTOR] ------->Time Taken for the loading chart data --- " + + (System.currentTimeMillis() - currentChartTime))); } } - request.getSession().setAttribute(AppConstants.SI_REPORT_RUNTIME, rr); //changing session to request + request.getSession().setAttribute(AppConstants.SI_REPORT_RUNTIME, rr); // changing session to + // request request.getSession().setAttribute(AppConstants.RI_REPORT_DATA, rd); } // else - long totalTime = System.currentTimeMillis() - currentTime; + totalTime = System.currentTimeMillis() - currentTime; formFields = AppUtils.getRequestNvlValue(request, FORM_FIELDS); request.setAttribute(AppConstants.RLA_EXECUTION_TIME, "" + totalTime); - - boolean isFromReportLog = AppUtils.getRequestFlag(request, "fromReportLog"); - if(!isFromReportLog) { + String isFromReportLog = request.getParameter("fromReportLog"); + if (isFromReportLog == null || isFromReportLog == "N") { if(pdfAttachmentKey!=null && pdfAttachmentKey.length()>0) { if(actionKey.equals(REPORT_DOWNLOAD)) { - rr.logReportExecutionTime(userId, String.valueOf(totalTime),AppConstants.RLA_SCHEDULED_DOWNLOAD_EXCEL, formFields); + rr.logReportExecutionTime(userId, String.valueOf(totalTime), + AppConstants.RLA_SCHEDULED_DOWNLOAD_EXCEL, formFields); } else if (actionKey.equals(REPORT_DOWNLOAD_PDF)) { - rr.logReportExecutionTime(userId, String.valueOf(totalTime),AppConstants.RLA_SCHEDULED_DOWNLOAD_PDF, formFields); + rr.logReportExecutionTime(userId, String.valueOf(totalTime), + AppConstants.RLA_SCHEDULED_DOWNLOAD_PDF, formFields); } } else { if(actionKey.equals(REPORT_DOWNLOAD) ) { - rr.logReportExecutionTime(userId, String.valueOf(totalTime),AppConstants.RLA_DOWNLOAD_EXCEL, formFields); + rr.logReportExecutionTime(userId, String.valueOf(totalTime), + AppConstants.RLA_DOWNLOAD_EXCEL, formFields); } else if (actionKey.equals(REPORT_DOWNLOAD_PDF)) { - rr.logReportExecutionTime(userId, String.valueOf(totalTime),AppConstants.RLA_DOWNLOAD_PDF, formFields); + rr.logReportExecutionTime(userId, String.valueOf(totalTime), AppConstants.RLA_DOWNLOAD_PDF, + formFields); } else if (actionKey.equals(REPORT_CSV_DOWNLOAD)) { - rr.logReportExecutionTime(userId, String.valueOf(totalTime),AppConstants.RLA_DOWNLOAD_CSV, formFields); + rr.logReportExecutionTime(userId, String.valueOf(totalTime), AppConstants.RLA_DOWNLOAD_CSV, + formFields); } else if (actionKey.equals(REPORT_TEXT_DOWNLOAD)) { - rr.logReportExecutionTime(userId, String.valueOf(totalTime),AppConstants.RLA_DOWNLOAD_TEXT, formFields); + rr.logReportExecutionTime(userId, String.valueOf(totalTime), AppConstants.RLA_DOWNLOAD_TEXT, + formFields); } else { + if (rd != null && !action.equals("report.run.container")) + rr.logReportExecutionTime(userId, String.valueOf(totalTime), + AppConstants.RLA_EXECUTION_TIME, formFields); if(rd!=null && !action.equals("report.run.container")) rr.logReportExecutionTime(userId, String.valueOf(totalTime),AppConstants.RLA_EXECUTION_TIME, formFields); @@ -731,12 +777,14 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { HashMap embeddedReportsRuntimeMap = null; HashMap embeddedReportsDataMap = null; if(request.getSession().getAttribute(AppConstants.EMBEDDED_REPORTRUNTIME_MAP)!= null){ - embeddedReportsRuntimeMap = (HashMap)request.getSession().getAttribute(AppConstants.EMBEDDED_REPORTRUNTIME_MAP); + embeddedReportsRuntimeMap = (HashMap) request.getSession() + .getAttribute(AppConstants.EMBEDDED_REPORTRUNTIME_MAP); } else { embeddedReportsRuntimeMap = new HashMap(); } if(request.getSession().getAttribute(AppConstants.EMBEDDED_REPORTDATA_MAP)!= null){ - embeddedReportsDataMap = (HashMap)request.getSession().getAttribute(AppConstants.EMBEDDED_REPORTDATA_MAP); + embeddedReportsDataMap = (HashMap) request.getSession() + .getAttribute(AppConstants.EMBEDDED_REPORTDATA_MAP); } else { embeddedReportsDataMap = new HashMap(); } @@ -750,10 +798,33 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { } ReportJSONRuntime reportJSONRuntime = rr.createReportJSONRuntime(request, rd); + Set keys = rr.getReportParamValues().keySet(); + String ffValue = ""; + for (String key : keys) { + ffValue = ffValue + '&' + key + "=" + rr.getReportParamValues().get(key); + } + if (ffValue != "") { + String groupSelectValue = request.getParameter("groupSelectValue"); + groupSelectValue = "&groupSelectValue=" + groupSelectValue; + formFields = ffValue + groupSelectValue; + } else { + formFields = ""; + } + String fromReportLog = request.getParameter("fromReportLog"); + if (action.equals("report.run.container") && reportJSONRuntime.getReportTotalDataRows() != null + && fromReportLog == null) { + rr.logReportExecutionTime(userId, String.valueOf(totalTime), AppConstants.RLA_EXECUTION_TIME, + formFields); + } + if(rr.getWholeSQL() != null) { + CachingUtils.saveReportRuntime(rr.getReportID(), rr); + CachingUtils.saveReportData(rr.getReportID(), rd); + } ObjectMapper mapper = new ObjectMapper(); mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); String jsonInString = ""; + reportJSONRuntime.setTotalRunTime(totalTime); try { jsonInString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(reportJSONRuntime); } catch (Exception ex) { @@ -765,7 +836,8 @@ public class ActionHandler extends org.onap.portalsdk.analytics.RaptorObject { try { logger.error(EELFLoggerDelegate.errorLogger,"reportRun", e); - if(rr!=null) { // when user tries report they don't have access this should not throw exception that's why this if is added. + if (rr != null) { // when user tries report they don't have access this should not throw exception + // that's why this if is added. if(isEmailAttachment) rr.logReportExecutionTime(userId, "", "Scheduled: " + AppConstants.RLA_ERROR, formFields); else diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/ReportHandler.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/ReportHandler.java index b8f3284c..e89bac58 100644 --- a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/ReportHandler.java +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/ReportHandler.java @@ -114,6 +114,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.io.FilenameUtils; +import org.apache.commons.lang.StringUtils; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFDateUtil; @@ -126,6 +127,7 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.CreationHelper; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.FillPatternType; @@ -135,6 +137,10 @@ import org.apache.poi.ss.usermodel.HorizontalAlignment; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.ss.util.CellReference; +import org.apache.poi.xssf.streaming.SXSSFCell; +import org.apache.poi.xssf.streaming.SXSSFRow; +import org.apache.poi.xssf.streaming.SXSSFSheet; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFCellStyle; import org.apache.poi.xssf.usermodel.XSSFDataFormat; @@ -578,7 +584,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { for (rd.reportColumnHeaderRows.resetNext(); rd.reportColumnHeaderRows.hasNext();) { XSSFRow row = sheet.createRow(rowNum); cellNum = -1; - chr = rd.reportColumnHeaderRows.getNext(); if (nvl(sql_whole).length() <= 0 || (!rr.getReportType().equals(AppConstants.RT_LINEAR))) { @@ -603,11 +608,8 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { cellWidth.add(cellNum, new Integer(title.length())); row.getCell((short) cellNum).setCellStyle(styleDataHeader); } - - } // for - } - + } firstPass = false; @@ -769,7 +771,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { firstPass = true; XSSFRow row = null; XSSFCell cell = null; - SimpleDateFormat MMDDYYYYFormat = new SimpleDateFormat("MM/dd/yyyy"); SimpleDateFormat YYYYMMDDFormat = new SimpleDateFormat("yyyy/MM/dd"); SimpleDateFormat MONYYYYFormat = new SimpleDateFormat("MMM yyyy"); @@ -821,16 +822,20 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { j = 0; firstPass = false; + DataValue dv = new DataValue(); for (dr.resetNext(); dr.hasNext(); j++) { styleCell = null; - DataValue dv = dr.getNext(); + dv = dr.getNext(); HtmlFormatter htmlFormat = dv.getCellFormatter(); if ((dr.isRowFormat() && !dv.isCellFormat()) && styles != null) styleCell = (XSSFCellStyle) styles.get(nvl(dr.getFormatId(), DEFAULT)); if (htmlFormat != null && dv.getFormatId() != null && styles != null) styleCell = (XSSFCellStyle) styles.get(nvl(dv.getFormatId(), DEFAULT)); String value = nvl((String) colHash.get(dv.getColId().toUpperCase())); - + if(value.contains("linkTo")) { + String reverseLinkToValue = Utils.removeLinkToForDownload(value); + value = StringUtils.substringBefore(reverseLinkToValue, ","); + } boolean bold = false; if (dv.isVisible()) { @@ -1222,7 +1227,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { if ((tempInt.indexOf(",")) != -1) { tempInt = tempInt.replaceAll(",", ""); } - Long tempIntDollar = 0L; try { @@ -1325,7 +1329,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { int cw = 0; for (int i = 0; i < cellWidth.size(); i++) { cw = ((Integer) cellWidth.get(i)).intValue() + 12; - sheet.setColumnWidth((short) (i), (short) ((cw * 8) / ((double) 1 / 20))); } @@ -1344,10 +1347,11 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { drTotal.resetNext(); drTotal.getNext(); + DataValue dv = new DataValue(); for (; drTotal.hasNext();) { cellNum += 1; cell = row.createCell((short) cellNum); - DataValue dv = drTotal.getNext(); + dv = drTotal.getNext(); String value = dv.getDisplayValue(); cell.setCellValue(value); boolean bold = false; @@ -1379,13 +1383,12 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { if (!(ex.getCause() instanceof java.net.SocketException)) throw new RaptorException(ex); } - - } else { if (rr.getReportType().equals(AppConstants.RT_LINEAR)) { int rowCount = 0; + DataRow dr = new DataRow(); for (rd.reportDataRows.resetNext(); rd.reportDataRows.hasNext();) { - DataRow dr = rd.reportDataRows.getNext(); + dr = rd.reportDataRows.getNext(); rowCount++; row = sheet.createRow(rowNum); @@ -1414,13 +1417,12 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { cellWidth.set(cellNum, new Integer(rh.getRowTitle().length())); } else cellWidth.add(cellNum, new Integer(rh.getRowTitle().length())); - - } // for + } firstPass = false; int j = 0; - + DataValue dv = new DataValue(); for (dr.resetNext(); dr.hasNext(); j++) { - DataValue dv = dr.getNext(); + dv = dr.getNext(); styleCell = null; boolean bold = false; String value = nvl(dv.getDisplayValue()); @@ -1435,7 +1437,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { cellNum += 1; cell = row.createCell((short) cellNum); String dataType = (String) (dataTypeMap.get(dv.getColId())); - if (dataType != null && dataType.equals("NUMBER")) { int zInt = 0; if (value.equals("null")) { @@ -1539,7 +1540,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { } } - } } } @@ -1743,13 +1743,7 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { if (date != null) { cell.setCellValue(HSSFDateUtil.getExcelDate(date)); - try { - String str = cell.getStringCellValue(); - } catch (IllegalStateException ex) { - logger.error(EELFLoggerDelegate.errorLogger, "IllegalStateException occured", - ex); cell.setCellValue(value); - } } else { cell.setCellValue(value); } @@ -1866,7 +1860,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { cell.setCellValue(tempStr); } } - } else { if (styleCell != null) { styleCell.setWrapText(true); @@ -1898,7 +1891,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { (value.length() <= Globals.getMaxCellWidthInExcel()) ? new Integer(value.length()) : new Integer(Globals.getMaxCellWidthInExcel())); - if (dv.isBold()) { if ((dv.getDisplayTotal() != null && dv.getDisplayTotal().equals("SUM(")) || (dv.getColName() != null && dv.getColName().indexOf("999") != -1)) { @@ -1920,9 +1912,7 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { && styles != null) { } } - } // for - - + } rowNum += 1; int cw = 0; for (int i = 0; i < cellWidth.size(); i++) { @@ -1931,8 +1921,7 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { } - } // for - + } // To Display Total Values for Linear report if (rd.reportDataTotalRow != null) { row = sheet.createRow(rowNum); @@ -1949,10 +1938,11 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { drTotal.resetNext(); drTotal.getNext(); + DataValue dv = new DataValue(); for (; drTotal.hasNext();) { cellNum += 1; cell = row.createCell((short) cellNum); - DataValue dv = drTotal.getNext(); + dv = drTotal.getNext(); String value = dv.getDisplayValue(); cell.setCellValue(value); boolean bold = false; @@ -1972,15 +1962,12 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { } } } - - - } else if (rr.getReportType().equals(AppConstants.RT_CROSSTAB)) { // Linear int rowCount = 0; List l = rd.getReportDataList(); boolean first = true; for (int dataRow = 0; dataRow < l.size(); dataRow++) { - + DataValue dv = new DataValue(); DataRow dr = (DataRow) l.get(dataRow); row = sheet.createRow(rowNum); @@ -1991,7 +1978,7 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { if (first) { if (rowNames != null) { for (int i = 0; i < rowNames.size(); i++) { - DataValue dv = rowNames.get(i); + dv = rowNames.get(i); cellNum += 1; row.createCell((short) cellNum).setCellValue(strip.stripHtml(dv.getDisplayValue())); row.getCell((short) cellNum).setCellStyle(styleDefault); @@ -1999,8 +1986,7 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { } } first = false; - - DataValue dv = dr.getNext(); + dv = dr.getNext(); if (dv.isVisible()) { String value = dv.getDisplayValue(); if (value.indexOf("|#") != -1) @@ -2040,15 +2026,11 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { for (int i = 0; i < cellWidth.size(); i++) { cw = ((Integer) cellWidth.get(i)).intValue() + 12; sheet.setColumnWidth((short) (i), (short) ((cw * 8) / ((double) 1 / 20))); - } - - } // for - } } - + } String footer = (String) session.getAttribute("FOOTER_" + index); if (nvl(footer).length() > 0) { footer = Utils.replaceInString(footer, "
", " "); @@ -2094,7 +2076,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { HSSFRow row1 = null; row = sheet.createRow(rowNum); - // Header Style XSSFCellStyle styleHeader = wb.createCellStyle(); styleHeader.setAlignment(HorizontalAlignment.CENTER); XSSFFont font = wb.createFont(); @@ -2163,9 +2144,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { public String saveAsExcelFile(HttpServletRequest request, ReportData rd, ArrayList reportParamNameValues, String reportTitle, String reportDescr) { return saveAsExcelFile(request, rd, reportParamNameValues, reportTitle, reportDescr, 2); // 2 denotes - // ReportRuntime object - // should be taken from - // session. } public String saveAsExcelFile(HttpServletRequest request, ReportData rd, @@ -2191,9 +2169,7 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { + xlsFName)); try (FileOutputStream xlsOut = new FileOutputStream(FilenameUtils.normalize(AppUtils.getTempFolderPath() + xlsFName))) { - int col = 0; - if (!rd.reportRowHeaderCols.hasNext()) col = rd.getTotalColumnCount(); else @@ -2228,399 +2204,117 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { + e.getMessage()); return null; } - } // saveAsExcelFile + } - public void createExcelFileContent(final Writer out, ReportData rd, final ReportRuntime rr, - final HttpServletRequest request, final HttpServletResponse response, final String user_id, final int type) - throws IOException, RaptorException { - // Adding utility for downloading Dashboard reports. + public void createFlatFileContent(Writer out, ReportData rd, ReportRuntime rr, + HttpServletRequest request, HttpServletResponse response, String user_id) + throws IOException, Exception { + ReportHandler rephandler = new ReportHandler(); + String reportID = rr.getReportID(); + rr = rephandler.loadReportRuntime(request, reportID); + String query = rr.getWholeSQL(); + String dbInfo = rr.getDbInfo(); + DataSet ds = ConnectionUtils.getDataSet(query, dbInfo); + List l = rr.getAllColumns(); + StringBuffer allColumnsBuffer = new StringBuffer(); + DataColumnType dct = null; - Map styles = new HashMap(); - final HttpSession session = request.getSession(); + for (Iterator iter = l.iterator(); iter.hasNext();) { + dct = (DataColumnType) iter.next(); + allColumnsBuffer.append(dct.getDisplayName()); + if (iter.hasNext()) + allColumnsBuffer.append("|"); + } + rd = rr.loadReportData(-1, user_id, -1, request, true); - XSSFWorkbook wb = null; + ServletOutputStream sos = response.getOutputStream(); - int returnValue = 0; - final boolean isDashboard = (session.getAttribute(AppConstants.SI_DASHBOARD_REP_ID) != null) && - (((String) session.getAttribute(AppConstants.SI_DASHBOARD_REP_ID)).equals(rr.getReportID())); - if (isDashboard) { - final String formattedDate = new SimpleDateFormat("MMddyyyyHHmm").format(new Date()); - final String xlsFName = "./Dashboard.xlsx"; - try { - FileInputStream xlsIn = null; + boolean firstPass = true; + DataRow dr = new DataRow(); + for (rd.reportDataRows.resetNext(); rd.reportDataRows.hasNext();) { + dr = rd.reportDataRows.getNext(); + for (rd.reportRowHeaderCols.resetNext(1); rd.reportRowHeaderCols.hasNext();) { + RowHeaderCol rhc = rd.reportRowHeaderCols.getNext(); + if (firstPass) + rhc.resetNext(); + RowHeader rh = rhc.getNext(); - final Map reportRuntimeMap = (TreeMap) request.getSession() - .getAttribute(AppConstants.SI_DASHBOARD_REPORTRUNTIME_MAP); - final Map reportDataMap = (TreeMap) request.getSession() - .getAttribute(AppConstants.SI_DASHBOARD_REPORTDATA_MAP); - if (reportRuntimeMap != null) { - final Set setReportRuntime = reportRuntimeMap.entrySet(); - final Set setReportDataMap = reportDataMap.entrySet(); - final Iterator iter2 = setReportDataMap.iterator(); - int count = 0; + sos.print(rh.getRowTitle()); + if (rhc.hasNext()) + sos.print("|"); + } + firstPass = false; + DataValue dv = new DataValue(); + for (dr.resetNext(); dr.hasNext();) { + dv = dr.getNext(); - for (Iterator iter = setReportRuntime.iterator(); iter.hasNext();) { - count++; - try { - xlsIn = - new FileInputStream(xlsFName); - } catch (final FileNotFoundException e) { - logger.error(EELFLoggerDelegate.errorLogger, "File not found in the specified path.", e); - } - if (xlsIn != null) { - wb = new XSSFWorkbook(xlsIn); - } else { - wb = new XSSFWorkbook(); - } + sos.print(dv.getDisplayValue()); + if (dr.hasNext()) + sos.print("|"); + } + sos.println(); + } + sos.close(); + } - final Map.Entry entryData = (Entry) iter2.next(); - final Map.Entry entry = (Entry) iter.next(); - final ReportRuntime rrDashRep = (ReportRuntime) entry.getValue(); - final ReportData rdDashRep = (ReportData) entryData.getValue(); - int col = 0; - final String reportTitle = (nvl(rrDashRep.getReportTitle()).length() > 0 ? rrDashRep - .getReportTitle() - : rrDashRep.getReportName()); - final String reportDescr = rrDashRep.getReportDescr(); - if (rdDashRep != null) { - if (!rdDashRep.reportRowHeaderCols.hasNext()) { - col = rdDashRep.getTotalColumnCount(); - } else { - col = rdDashRep.getTotalColumnCount(); - } - }else { - continue; - } - if (col == 0) { - col = 10; - } - int rowNum = 0; - final String formattedReportName = - new HtmlStripper().stripSpecialCharacters(rrDashRep.getReportName()); + public void createExcel2007FileContent(Writer out, ReportData rd, ReportRuntime rr, HttpServletRequest request, + HttpServletResponse response, String user_id, int type) + throws Exception { + int mb = 1024 * 1024; + Runtime runtime = Runtime.getRuntime(); - XSSFSheet sheet = null; - try { - sheet = wb.createSheet(formattedReportName); - sheet.getPrintSetup().setLandscape(true); - styles = loadStyles(rrDashRep, wb); - } catch (final IllegalArgumentException ex) { - logger.warn("IllegalArgumentException occured", ex); - try (final FileOutputStream xlsOut = new FileOutputStream(xlsFName)) { - wb.write(xlsOut); - xlsOut.flush(); - } catch (final IOException e) { - logger.warn("Failed to open FileOutputStream", e); - } - continue; - } + logger.debug(EELFLoggerDelegate.debugLogger, ("STARTING.EXCELX DOWNLOAD....")); + logger.debug(EELFLoggerDelegate.debugLogger, ("##### Heap utilization statistics [MB] #####")); + logger.debug(EELFLoggerDelegate.debugLogger, ("Used Memory:" + + (runtime.totalMemory() - runtime.freeMemory()) / mb)); + logger.debug(EELFLoggerDelegate.debugLogger, ("Free Memory:" + + runtime.freeMemory() / mb)); + logger.debug(EELFLoggerDelegate.debugLogger, ("Total Memory:" + runtime.totalMemory() / mb)); + logger.debug(EELFLoggerDelegate.debugLogger, ("Max Memory:" + runtime.maxMemory() / mb)); + logger.debug(EELFLoggerDelegate.debugLogger, ("##### END #####")); + Map styles = new HashMap(); + HttpSession session = request.getSession(); + XSSFWorkbook wb = null; + String formattedReportName = new HtmlStripper().stripSpecialCharacters(rr.getReportName()); + String formattedDate = new SimpleDateFormat("MMddyyyyHHmm").format(new Date()); + boolean isDashboard = false; + if ((session.getAttribute(AppConstants.SI_DASHBOARD_REP_ID) != null) + && (((String) session.getAttribute(AppConstants.SI_DASHBOARD_REP_ID)).equals(rr.getReportID()))) { + isDashboard = true; + } + ArrayList sheetArrayList = new ArrayList(); - if (Globals.getPrintTitleInDownload() && reportTitle != null) { - paintExcelHeader(wb, rowNum, col, reportTitle, reportDescr, sheet); - rowNum = sheet.getLastRowNum(); - } else { - rowNum = 0; - } - // getting ReportRuntime object from session - if (Globals.getPrintParamsInDownload() - && rrDashRep.getParamNameValuePairsforPDFExcel(request, 1) != null) { - if (count > 1 && Globals.showParamsInAllDashboardReports()) { - paintExcelParams(wb, rowNum, col, - rrDashRep.getParamNameValuePairsforPDFExcel(request, 1), - rrDashRep.getFormFieldComments(request), sheet, reportTitle, reportDescr); - } else if (count == 1) { - paintExcelParams(wb, rowNum, col, - rrDashRep.getParamNameValuePairsforPDFExcel(request, 1), - rrDashRep.getFormFieldComments(request), sheet, reportTitle, reportDescr); - } - } // if - rowNum = sheet.getLastRowNum(); - final String sql_whole = rrDashRep.getWholeSQL(); - returnValue = paintExcelData(wb, rowNum, rdDashRep, styles, rrDashRep, sheet, sql_whole, - request); - if (returnValue == 0) { - if (Globals.getPrintFooterInDownload()) { - rowNum = sheet.getLastRowNum(); - rowNum += 2; - paintExcelFooter(wb, rowNum, col, sheet); - } - try (final FileOutputStream xlsOut = new FileOutputStream(xlsFName)) { - wb.write(xlsOut); - // TODO Remove comment - xlsOut.flush(); - } catch (final IOException e) { - logger.warn("Failed to open FileOutputStream", e); - } - wb = null; - } - } + Map reportRuntimeMap = null; + Map reportDataMap = null; - response.reset(); - response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); - response.setHeader("Content-disposition", - "attachment;filename=" + "dashboard" + formattedDate + user_id + ".xlsx"); + ArrayList reportIDList = new ArrayList(); - xlsIn = new FileInputStream(xlsFName); + if (isDashboard) { + reportRuntimeMap = (TreeMap) request.getSession().getAttribute(AppConstants.SI_DASHBOARD_REPORTRUNTIME_MAP); + reportDataMap = (TreeMap) request.getSession().getAttribute(AppConstants.SI_DASHBOARD_REPORTDATA_MAP); - int readBytes = 0; - final byte[] bOut = new byte[4096]; - try (final BufferedInputStream buf = new BufferedInputStream(xlsIn); - final ServletOutputStream sos = response.getOutputStream();) { - // read from the file; write to the ServletOutputStream - while ((readBytes = buf.read(bOut, 0, 4096)) > 0) { - buf.available(); - sos.write(bOut, 0, readBytes); - } - } catch (final IOException e) { - logger.warn("Failed to open BufferedInputStream", e); - } + if (reportRuntimeMap != null) { + Set setReportRuntime = reportRuntimeMap.entrySet(); + for (Iterator iter = setReportRuntime.iterator(); iter.hasNext();) { + Map.Entry entry = (Entry) iter.next(); + ReportRuntime rrDashRep = (ReportRuntime) entry.getValue(); + reportIDList.add(rrDashRep.getReportID()); } - } catch (final IOException ex) { - logger.warn("Failed to open Stream", ex); - throw ex; } + } - final File f = new File(xlsFName); - if (f.exists()) { - f.delete(); - } + int col = 0; + String reportTitle = (nvl(rr.getReportTitle()).length() > 0 ? rr.getReportTitle() : rr.getReportName()); + String reportDescr = rr.getReportDescr(); - } else { - wb = new XSSFWorkbook (); - setSheetName(Globals.getSheetName()); - if (rr != null) { - styles = loadStyles(rr, wb); - } + int rowNum = 0; - final String reportTitle = (nvl(rr.getReportTitle()).length() > 0 ? rr.getReportTitle() - : rr.getReportName()); - final String reportDescr = rr.getReportDescr(); + XSSFSheet sheet = null; + String filename = ""; + String extension = ""; - final int col = getColumnCountForDownloadFile(rr, rd); - int rowNum = 0; - final XSSFSheet sheet = wb.createSheet(getSheetName()); - sheet.getPrintSetup().setLandscape(true); - - if (Globals.getPrintTitleInDownload() && reportTitle != null) { - paintExcelHeader(wb, rowNum, col, reportTitle, reportDescr, sheet); - rowNum = sheet.getLastRowNum(); - } else { - rowNum = 0; - } - if (Globals.getPrintParamsInDownload() && rr.getParamNameValuePairsforPDFExcel(request, 1) != null) { - List paramsList = rr.getParamNameValuePairsforPDFExcel(request, 1); - if (paramsList.size() <= 0) { - paramsList = (ArrayList) request.getSession().getAttribute(AppConstants.SI_FORMFIELD_DOWNLOAD_INFO); - } - - paintExcelParams(wb, rowNum, col, paramsList, rr.getFormFieldComments(request), sheet, reportTitle, - reportDescr); - } // if - - rowNum = sheet.getLastRowNum(); - if(rowNum<0) - rowNum = 0; - - final String formattedReportName = new HtmlStripper().stripSpecialCharacters(rr.getReportName()); - final String formattedDate = new SimpleDateFormat("MMddyyyyHHmm").format(new Date()); - response.reset(); - response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); - response.setHeader("Content-disposition", - "attachment;filename=" + formattedReportName + formattedDate + user_id + ".xlsx"); - if (type == 3 && rr.getSemaphoreList() == null && !(rr.getReportType() - .equals(AppConstants.RT_CROSSTAB))) { // type = 3 is whole - String sql_whole = ""; - sql_whole = (String) request.getAttribute(AppConstants.RI_REPORT_SQL_WHOLE); - - if (sql_whole == null) { - if (!rr.getReportType().equals(AppConstants.RT_HIVE)) { - sql_whole = rr.getWholeSQL(); - } else { - sql_whole = rr.getReportSQL(); - } - } - if(rr.isSinglePageDownload()) - sql_whole = rr.getCachedSQL(); - returnValue = paintExcelData(wb, rowNum, rd, styles, rr, sheet, sql_whole, request); - rr.setSinglePageDownload(false); - } else if (type == 2) { - returnValue = paintExcelData(wb, rowNum, rd, styles, rr, sheet, "", request); - } else { - int downloadLimit = - (rr.getMaxRowsInExcelDownload() > 0) ? rr.getMaxRowsInExcelDownload() - : Globals.getDownloadLimit(); - String action = request.getParameter(AppConstants.RI_ACTION); - if (!(rr.getReportType().equals(AppConstants.RT_CROSSTAB)) && !action.endsWith("session")) { - rd = rr.loadReportData(-1, AppUtils.getUserID(request), downloadLimit, request, - false /* download */); - } - if (rr.getSemaphoreList() != null) { - if (rr.getReportType().equals(AppConstants.RT_CROSSTAB)) { - returnValue = paintExcelData(wb, rowNum, rd, styles, rr, sheet, "", request); - } else { - rd = rr.loadReportData(-1, AppUtils.getUserID(request), downloadLimit, request, true); - returnValue = paintExcelData(wb, rowNum, rd, styles, rr, sheet, "", request); - } - } else { - String sql_whole = ""; - sql_whole = (String) request.getAttribute(AppConstants.RI_REPORT_SQL_WHOLE); - - if (sql_whole == null) { - if (!rr.getReportType().equals(AppConstants.RT_HIVE)) { - sql_whole = rr.getWholeSQL(); - } else { - sql_whole = rr.getReportSQL(); - } - } - - returnValue = paintExcelData(wb, rowNum, rd, styles, rr, sheet, sql_whole, request); - } - } - if (returnValue == 0) { - if (Globals.getPrintFooterInDownload()) { - rowNum = sheet.getLastRowNum(); - rowNum += 2; - paintExcelFooter(wb, rowNum, col, sheet); - } - // Alternatively: - wb.setPrintArea( - 0, // sheet index - 0, // start column - col, // end column - 0, // start row - rowNum // end row - ); - // TODO Remove comment - try (final ServletOutputStream sos = response.getOutputStream();) { - wb.write(sos); - sos.flush(); - } catch (final IOException e) { - logger.warn("Failed to get OutputStream", e); - } - wb = null; - } - } - } - - public void createFlatFileContent(Writer out, ReportData rd, ReportRuntime rr, - HttpServletRequest request, HttpServletResponse response, String user_id) - throws IOException, Exception { - ReportHandler rephandler = new ReportHandler(); - String reportID = rr.getReportID(); - rr = rephandler.loadReportRuntime(request, reportID); - String query = rr.getWholeSQL(); - String dbInfo = rr.getDbInfo(); - DataSet ds = ConnectionUtils.getDataSet(query, dbInfo); - - // Writing Column names to the file - List l = rr.getAllColumns(); - StringBuffer allColumnsBuffer = new StringBuffer(); - DataColumnType dct = null; - - for (Iterator iter = l.iterator(); iter.hasNext();) { - dct = (DataColumnType) iter.next(); - allColumnsBuffer.append(dct.getDisplayName()); - if (iter.hasNext()) - allColumnsBuffer.append("|"); - } - rd = rr.loadReportData(-1, user_id, -1, request, true); - - ServletOutputStream sos = response.getOutputStream(); - - - boolean firstPass = true; - for (rd.reportDataRows.resetNext(); rd.reportDataRows.hasNext();) { - DataRow dr = rd.reportDataRows.getNext(); - for (rd.reportRowHeaderCols.resetNext(1); rd.reportRowHeaderCols.hasNext();) { - RowHeaderCol rhc = rd.reportRowHeaderCols.getNext(); - if (firstPass) - rhc.resetNext(); - RowHeader rh = rhc.getNext(); - - sos.print(rh.getRowTitle()); - if (rhc.hasNext()) - sos.print("|"); - } // for - firstPass = false; - - for (dr.resetNext(); dr.hasNext();) { - DataValue dv = dr.getNext(); - - sos.print(dv.getDisplayValue()); - if (dr.hasNext()) - sos.print("|"); - } // for - - sos.println(); - } // for - sos.close(); - } // createFlatFileContent - - public void createExcel2007FileContent(Writer out, ReportData rd, ReportRuntime rr, HttpServletRequest request, - HttpServletResponse response, String user_id, int type) - throws Exception { - - // to check performance - int mb = 1024 * 1024; - Runtime runtime = Runtime.getRuntime(); - - logger.debug(EELFLoggerDelegate.debugLogger, ("STARTING.EXCELX DOWNLOAD....")); - logger.debug(EELFLoggerDelegate.debugLogger, ("##### Heap utilization statistics [MB] #####")); - logger.debug(EELFLoggerDelegate.debugLogger, ("Used Memory:" - + (runtime.totalMemory() - runtime.freeMemory()) / mb)); - logger.debug(EELFLoggerDelegate.debugLogger, ("Free Memory:" - + runtime.freeMemory() / mb)); - logger.debug(EELFLoggerDelegate.debugLogger, ("Total Memory:" + runtime.totalMemory() / mb)); - logger.debug(EELFLoggerDelegate.debugLogger, ("Max Memory:" + runtime.maxMemory() / mb)); - logger.debug(EELFLoggerDelegate.debugLogger, ("##### END #####")); - - // Adding utility for downloading Dashboard reports. - - Map styles = new HashMap(); - HttpSession session = request.getSession(); - XSSFWorkbook wb = null; - String formattedReportName = new HtmlStripper().stripSpecialCharacters(rr.getReportName()); - String formattedDate = new SimpleDateFormat("MMddyyyyHHmm").format(new Date()); - // Sheet name to be filled is taken from property. How would this be called if it is Dashboard? - // commented out since application will create and leave it blank. - boolean isDashboard = false; - if ((session.getAttribute(AppConstants.SI_DASHBOARD_REP_ID) != null) - && (((String) session.getAttribute(AppConstants.SI_DASHBOARD_REP_ID)).equals(rr.getReportID()))) { - isDashboard = true; - } - ArrayList sheetArrayList = new ArrayList(); - - Map reportRuntimeMap = null; - Map reportDataMap = null; - - ArrayList reportIDList = new ArrayList(); - - if (isDashboard) { - reportRuntimeMap = (TreeMap) request.getSession().getAttribute(AppConstants.SI_DASHBOARD_REPORTRUNTIME_MAP); - reportDataMap = (TreeMap) request.getSession().getAttribute(AppConstants.SI_DASHBOARD_REPORTDATA_MAP); - - if (reportRuntimeMap != null) { - Set setReportRuntime = reportRuntimeMap.entrySet(); - for (Iterator iter = setReportRuntime.iterator(); iter.hasNext();) { - Map.Entry entry = (Entry) iter.next(); - ReportRuntime rrDashRep = (ReportRuntime) entry.getValue(); - reportIDList.add(rrDashRep.getReportID()); - } - } - } - - int col = 0; - String reportTitle = (nvl(rr.getReportTitle()).length() > 0 ? rr.getReportTitle() : rr.getReportName()); - String reportDescr = rr.getReportDescr(); - - int rowNum = 0; - - XSSFSheet sheet = null; - // save the template - String filename = ""; - String extension = ""; - - String sheetRef = null; + String sheetRef = null; File templateFile = null; @@ -2628,10 +2322,7 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { if (reportRuntimeMap != null) { FileInputStream readTemplate = null; - // Load customized styles int count = 0; - - // If template supplied by Application String templateFilename = rr.getTemplateFile(); extension = templateFilename.substring(templateFilename.lastIndexOf(".") + 1); filename = formattedReportName + formattedDate + user_id; @@ -2651,7 +2342,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { + rr.getTemplateFile()); wb = new XSSFWorkbook(readTemplate); } else { - // copy the os file to new file and open new file in below line wb = new XSSFWorkbook(); } } else { @@ -2711,8 +2401,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { reportSheetName = reportSheetName.substring(0, 28); sheet = wb.getSheet(count + "-" + reportSheetName); sheetRef = sheet.getPackagePart().getPartName().getName(); - - // Step 2. Generate XML file. File tmp = File.createTempFile("sheet", ".xml"); try (FileOutputStream fileOutTemp = new FileOutputStream(tmp); Writer fw = new OutputStreamWriter(fileOutTemp, XML_ENCODING)) { @@ -2729,9 +2417,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { fw.flush(); fileOutTemp.flush(); } - - // Step 3. Substitute the template entry with the generated data - try (FileOutputStream outF = new FileOutputStream( AppUtils.getTempFolderPath() + filename + "." + nvls(extension, "xlsx"))) { templateFile = @@ -2750,13 +2435,10 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { } } } else { - // If template supplied by Application if (nvl(rr.getTemplateFile()).length() > 0) { String templateFilename = rr.getTemplateFile(); extension = templateFilename.substring(templateFilename.lastIndexOf(".") + 1); filename = formattedReportName + formattedDate + user_id; - // filename = templateFilename.substring(0, - // templateFilename.lastIndexOf("."))+"_"+formattedDate+user_id; } else { filename = formattedReportName + formattedDate + user_id; } @@ -2765,10 +2447,8 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { try (FileOutputStream os = new FileOutputStream( AppUtils.getTempFolderPath() + "template" + formattedDate + user_id + ".xlsx")) { wb = new XSSFWorkbook(); - // Load customized styles if (rr != null) styles = loadXSSFStyles(rr, wb, styles); - // create data sheet if (isDashboard) { } else { @@ -2778,13 +2458,10 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { if (nvl(reportSheetName).length() > 28) reportSheetName = reportSheetName.substring(0, 28); sheet = wb.createSheet(reportSheetName); - - // customized mode if (!Globals.printExcelInLandscapeMode()) sheet.getPrintSetup().setLandscape(false); else sheet.getPrintSetup().setLandscape(true); - // get data sheet name sheetRef = sheet.getPackagePart().getPartName().getName(); wb.write(os); os.flush(); @@ -2809,8 +2486,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { os.flush(); } } - - // Step 2. Generate XML file. File tmp = File.createTempFile("sheet", ".xml"); try (FileOutputStream fileOutTemp = new FileOutputStream(tmp); Writer fw = new OutputStreamWriter(fileOutTemp, XML_ENCODING)) { @@ -2841,8 +2516,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { fw.flush(); fileOutTemp.flush(); } - // Step 3. Substitute the template entry with the generated data - try (FileOutputStream outF = new FileOutputStream(AppUtils.getTempFolderPath() + filename + "." + nvls(extension, "xlsx"))) { @@ -2857,8 +2530,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { } } - // get servlet output stream - response.reset(); try (BufferedInputStream buf = new BufferedInputStream( new FileInputStream(AppUtils.getTempFolderPath() + filename + "." + nvls(extension, "xlsx"))); @@ -2873,8 +2544,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { "attachment;filename=" + filename + "." + nvls(extension, "xlsx")); int readBytes = 0; - - // read from the file; write to the ServletOutputStream while ((readBytes = buf.read()) != -1) sos.write(readBytes); @@ -3043,10 +2712,10 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { csvOut.print(","); } } - } // for + } csvOut.println(); - } // for + } int rowCount = 0; while (rs.next()) { rowCount++; @@ -3082,7 +2751,7 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { if (dv.isVisible()) { csvOut.print("\"" + strip.stripCSVHtml(dv.getDisplayValue()) + "\","); } - } // for + } csvOut.println(); } @@ -3140,11 +2809,9 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { csvOut.print(","); } } - } // for - + } csvOut.println(); - } // for - + } firstPass = true; int rowCount = 0; for (rd.reportDataRows.resetNext(); rd.reportDataRows.hasNext();) { @@ -3163,31 +2830,32 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { final RowHeader rh = rhc.getNext(); csvOut.print("\"" + strip.stripCSVHtml(rh.getRowTitle()) + "\","); - } // for + } firstPass = false; - + DataValue dv = new DataValue(); for (dr.resetNext(); dr.hasNext();) { - DataValue dv = dr.getNext(); + dv = dr.getNext(); if (dv.isVisible()) { csvOut.print("\"" + strip.stripCSVHtml(dv.getDisplayValue()) + "\","); } - } // for + } csvOut.println(); - } // for + } if (rd.reportDataTotalRow != null) { + DataRow dr = new DataRow(); + DataValue dv = new DataValue(); for (rd.reportDataTotalRow.resetNext(); rd.reportDataTotalRow.hasNext();) { - DataRow dr = rd.reportDataTotalRow.getNext(); + dr = rd.reportDataTotalRow.getNext(); csvOut.print("\"" + "Total" + "\","); firstPass = false; for (dr.resetNext(); dr.hasNext();) { - DataValue dv = dr.getNext(); + dv = dr.getNext(); if (dv.isVisible()) { csvOut.print("\"" + strip.stripCSVHtml(dv.getDisplayValue()) + "\","); } - } // for - + } csvOut.println(); } } @@ -3223,9 +2891,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { final ZipEntry entry = new ZipEntry(csvFName); zos.putNextEntry(entry); - - // read data to the end of the source file and write it to the zip - // output stream. while ((size = fis.read(buffer, 0, buffer.length)) > 0) { zos.write(buffer, 0, size); } @@ -3254,7 +2919,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { final BufferedInputStream buf = new BufferedInputStream(fileIn);) { final byte[] bOut = new byte[4096]; - // read from the file; write to the ServletOutputStream int readBytes = 0; while ((readBytes = buf.read(bOut, 0, 4096)) > 0) { buf.available(); @@ -3278,7 +2942,7 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { logger.debug(EELFLoggerDelegate.debugLogger, ("Total Memory:" + runtime.totalMemory() / mb)); logger.debug(EELFLoggerDelegate.debugLogger, ("Max Memory:" + runtime.maxMemory() / mb)); - } // createCSVFileContent + } public String saveXMLFile(HttpServletRequest request, String reportName, String reportXML) { try { @@ -3297,12 +2961,12 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { "Exception saving XML source to file system: " + e.getMessage()); return null; } - } // saveXMLFile + } public ReportRuntime loadReportRuntime(HttpServletRequest request, String reportID) throws RaptorException { return loadReportRuntime(request, reportID, true); - } // loadReportRuntime + } public ReportRuntime loadReportRuntime(HttpServletRequest request, String reportID, boolean prepareForExecution) throws RaptorException { @@ -3320,13 +2984,13 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { AppConstants.SI_REPORT_RUNTIME); boolean inSchedule = AppUtils.getRequestFlag(request, AppConstants.SCHEDULE_ACTION); if (rr != null) { - if (requestFlag == 7) { // DASH + if (requestFlag == 7) { String reportXML = ReportLoader.loadCustomReportXML(reportID); logger.debug(EELFLoggerDelegate.debugLogger, ("[DEBUG MESSAGE FROM RAPTOR] Report [" + reportID + "]: XML loaded")); rr = ReportRuntime.unmarshal(reportXML, reportID, request); rr.setParamValues(request, false, refresh); - rr.setDisplayFlags(true, true); // show content even at the first time + rr.setDisplayFlags(true, true); return rr; } else { logger.debug(EELFLoggerDelegate.debugLogger, ("[DEBUG MESSAGE FROM RAPTOR] Load Report Runtime " @@ -3342,23 +3006,13 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { rr.resetVisualSettings(); rr.setDisplayFlags(nvl(request.getParameter(AppConstants.RI_SOURCE_PAGE)) .length() == 0, rDisplayContent || rr.isDisplayOptionHideForm()); - } // if + } return rr; - } // if + } } } - /* - * Cannot convert the definition => XML file not saved for preview also, commented code not - * maintained up to date ReportDefinition rdef = (ReportDefinition) - * request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION); if(rdef!=null) - * if(reportID.equals(rdef.getReportID())) { // The report definition is in the session => create - * report runtime from it rr = new ReportRuntime(rdef, request); if(prepareForExecution) { - * request.getSession().setAttribute(AppConstants.SI_REPORT_RUNTIME, rr); - * rr.setDisplayFlags(request.getParameter(AppConstants.RI_SOURCE_PAGE)==null); } // if return rr; } - * // if - */ String reportXML = ReportLoader.loadCustomReportXML(reportID); logger.debug(EELFLoggerDelegate.debugLogger, @@ -3381,7 +3035,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { else rr.checkUserReadAccess(request); } - // TODO ON Demand if (rDisplayContent) { rr.setParamValues(request, false, true); request.getSession().setAttribute(AppConstants.SI_REPORT_RUNTIME, rr); @@ -3389,7 +3042,7 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { if (inSchedule) { rr.setParamValues(request, false, false); } - if (requestFlag == 7) { // DASH + if (requestFlag == 7) { rr.setDisplayFlags(true, true); } else { rr.setDisplayFlags(request.getParameter(AppConstants.RI_SOURCE_PAGE) == null, @@ -3405,10 +3058,10 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { } - } // if + } return rr; - } // loadReportRuntime + } private boolean isReportAddedAsDashboard(HttpServletRequest request, String dashboardId, String reportId) throws RaptorException { @@ -3431,7 +3084,7 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { ReportDefinition rdef = ReportDefinition.unmarshal(reportXML, reportID, request); rdef.generateWizardSequence(request); return rdef; - } // createReportDefinition + } public ReportDefinition loadReportDefinition(HttpServletRequest request, String reportID) throws RaptorException { @@ -3458,7 +3111,7 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef); return rdef; - } // if + } if (isReportIDBlank) rdef = ReportDefinition.createBlank(request); @@ -3467,11 +3120,11 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { logger.debug(EELFLoggerDelegate.debugLogger, ("[DEBUG MESSAGE FROM RAPTOR] Report [" + reportID + "]: XML loaded")); rdef = createReportDefinition(request, reportID, reportXML); - } // else + } request.getSession().setAttribute(AppConstants.SI_REPORT_DEFINITION, rdef); return rdef; - } // loadReportDefinition + } public void setSheetName(String sheet_name) { sheetName = sheet_name; @@ -3670,8 +3323,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { XSSFCellStyle styleDefaultCell = null; styleDefaultCell = (XSSFCellStyle) styles.get(DEFAULT); - - // to check performance int mb = 1024 * 1024; Runtime runtime = Runtime.getRuntime(); @@ -3736,7 +3387,7 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { title = Utils.replaceInString(title, "_nl_", " \n"); sw.createCell(cellNum, Utils.excelEncode(title), styles.get("header").getIndex()); - } // for + } } @@ -3757,12 +3408,10 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { if (colSpan > 0) cellNum += colSpan; } - } // for + } rowNum += 1; - } // for - + } sw.endRow(); - // All the possible combinations of date format CreationHelper createHelper = wb.getCreationHelper(); HashMap dateFormatMap = new HashMap<>(); @@ -3855,7 +3504,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { rowCount++; if (rowCount % 10000 == 0) { - // to check performance logger.debug(EELFLoggerDelegate.debugLogger, ("Performance check for " + rowCount + " starting**************")); logger.debug(EELFLoggerDelegate.debugLogger, ("##### Heap utilization statistics [MB] #####")); @@ -3867,7 +3515,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { logger.debug(EELFLoggerDelegate.debugLogger, ("Max Memory:" + runtime.maxMemory() / mb)); System.out.println(rowCount + "TH ROW****##### END #####"); - // } sw.insertRow(rowNum); cellNum = -1; @@ -3882,9 +3529,10 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { styleRowCell = (XSSFCellStyle) styles.get(nvl(/* dr.getFormatId(), */"", DEFAULT)); j = 0; firstPass = false; + DataValue dv = new DataValue(); for (dr.resetNext(); dr.hasNext(); j++) { styleCell = null; - DataValue dv = dr.getNext(); + dv = dr.getNext(); HtmlFormatter htmlFormat = dv.getCellFormatter(); if (htmlFormat != null && dv.getFormatId() != null && styles != null) @@ -4412,8 +4060,9 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { if (drTotal != null) { drTotal.resetNext(); drTotal.getNext(); + DataValue dv = new DataValue(); for (; drTotal.hasNext();) { - DataValue dv = drTotal.getNext(); + dv = drTotal.getNext(); if (dv.isVisible()) { cellNum += 1; styleCell = null; @@ -4427,24 +4076,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { sw.endRow(); } - /* - * // To Display Total Values for Linear report if(rd.reportDataTotalRow!=null) { row = - * sheet.createRow(rowNum); cellNum = -1; rd.reportTotalRowHeaderCols.resetNext(); //for - * (rd.reportTotalRowHeaderCols.resetNext(); rd.reportTotalRowHeaderCols.hasNext();) { cellNum += 1; - * RowHeaderCol rhc = rd.reportTotalRowHeaderCols.getNext(); RowHeader rh = rhc.getRowHeader(0); - * row.createCell((short) cellNum).setCellValue(strip.stripHtml(rh.getRowTitle())); - * row.getCell((short) cellNum).setCellStyle(styleDefaultTotal); //} - * - * DataRow drTotal = rd.reportDataTotalRow.getNext(); //cellNum = -1; for (drTotal.resetNext(); - * drTotal.hasNext();j++) { cellNum += 1; cell = row.createCell((short) cellNum); DataValue dv = - * drTotal.getNext(); String value = dv.getDisplayValue(); cell.setCellValue(value); boolean bold = - * false; if (dv.isBold()) { if((dv.getDisplayTotal()!=null && dv.getDisplayTotal().equals("SUM(")) - * || (dv.getColName()!=null && dv.getColName().indexOf("999")!=-1)){ if (value!=null && - * (value.trim().startsWith("$")) || (value.trim().startsWith("-$") )) { - * cell.setCellStyle(styleCurrencyTotal); } else { cell.setCellStyle(styleTotal); } } else { - * cell.setCellStyle(styleDefaultTotal); } bold = true; } } } - */ - } catch (SQLException ex) { throw new RaptorException(ex); } catch (ReportSQLException ex) { @@ -4507,9 +4138,9 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { } firstPass = false; int j = 0; - + DataValue dv = new DataValue(); for (dr.resetNext(); dr.hasNext(); j++) { - DataValue dv = dr.getNext(); + dv = dr.getNext(); styleCell = null; boolean bold = false; String value = nvl(dv.getDisplayValue()); @@ -4955,31 +4586,17 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { sw.createCell(cellNum, strip.stripHtml(Utils.excelEncode(value)), styles.get(nvl(/* dv.getFormatId(), */"", DEFAULT)).getIndex()); } - - // if (!(value.equals(""))){ - // int temp = Integer.parseInt(value.trim()); - // cell.setCellValue(temp); - // }else{ - // cell.setCellValue(strip.stripHtml(value)); - // } - // HSSFCellStyle styleFormat = null; - // HSSFCellStyle numberStyle = null; - // HSSFFont formatFont = null; - // short fgcolor = 0; - // short fillpattern = 0; - // System.out.println("1IF "+ (dv.isBold()) + " "+ value + " " + dv.getDisplayTotal() + " " + - // dv.getColName() ); if (dv.isBold()) { if ((dv.getDisplayTotal() != null && dv.getDisplayTotal().equals("SUM(")) || (dv.getColName() != null && dv.getColName().indexOf("999") != -1)) { if (value != null && (value.trim().startsWith("$")) || (value.trim().startsWith("-$"))) { - // cell.setCellStyle(styleCurrencyTotal); + } else { - // cell.setCellStyle(styleTotal); + } } else { - // cell.setCellStyle(styleDefaultTotal); + } bold = true; } @@ -4989,26 +4606,15 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { } if (htmlFormat != null && dv.getFormatId() != null && bold == false && styles != null) { - // cell.setCellStyle((HSSFCellStyle) styles.get(nvl(/*dv.getFormatId()*/"",DEFAULT))); - } // else if (bold == false) - // cell.setCellStyle(styleDefault); - } // if (dv.isVisible) - } // for + } + + } + } + - /* - * for (int tmp=0; tmp 0 && (!nvl(value.getId()).trim().equals("BLANK"))) { - paramSeq += 1; - if (paramSeq <= 1) { - row = sheet.createRow(++rowNum); - cell = row.createCell((short) 0); - sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, s1, s2)); - cellDescr = row.createCell((short) 0); - cellDescr.setCellValue(RUNTIME_PARAMETERS); - cellDescr.setCellStyle(styleDescription); - - strBuf.append(reportTitle + "\n"); - } - row = sheet.createRow(++rowNum); - cellNum = 0; - cell = row.createCell((short) cellNum); - cell.setCellValue(value.getId()); - cell.setCellStyle(styleName); - cellNum += 1; - cell = row.createCell((short) cellNum); - cell.setCellValue(value.getName().replaceAll("~", ",")); - cell.setCellStyle(styleValue); - - } - } // for - } else { - strBuf.append(reportTitle + "\n"); - Document document = new Document(); - document.open(); - HTMLWorker worker = new HTMLWorker(document); - StyleSheet style = new StyleSheet(); - style.loadTagStyle("body", "leading", "16,0"); - ArrayList p = HTMLWorker.parseToList(new StringReader(customizedParamInfo), style); - String name = ""; - String token = ""; - String value = ""; - String s = ""; - PdfPTable pdfTable = null; - for (int k = 0; k < p.size(); ++k) { - if (p.get(k) instanceof Paragraph) - s = ((Paragraph) p.get(k)).toString(); - else { - pdfTable = ((PdfPTable) p.get(k)); - } - // todo: Logic for parsing pdfTable should be added after upgrading to iText 5.0.0 - s = s.replaceAll(",", "|"); - s = s.replaceAll("~", ","); - if (s.indexOf(":") != -1) { - row = sheet.createRow(++rowNum); - cell = row.createCell((short) 0); - sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, s1, s2)); - cellDescr = row.createCell((short) 0); - cellDescr.setCellValue(RUNTIME_PARAMETERS); - cellDescr.setCellStyle(styleDescription); - - StringTokenizer st = new StringTokenizer(s.trim(), "|"); - while (st.hasMoreTokens()) { - token = st.nextToken(); - token = token.trim(); - if (!(token.trim().equals("|") || token.trim().equals("]]") || token.trim().equals("]") - || token.trim().equals("["))) { - if (token.endsWith(":")) { - name = token; - name = name.substring(0, name.length() - 1); - if (name.startsWith("[")) - name = name.substring(1); - value = st.nextToken(); - if (nvl(value).endsWith("]")) - value = nvl(value).substring(0, nvl(value).length() - 1); - } - if (name != null && name.trim().length() > 0) { - row = sheet.createRow((short) ++rowNum); - cellNum = 0; - cell = row.createCell((short) cellNum); - cell.setCellValue(name.trim()); - cell.setCellStyle(styleName); - cellNum += 1; - cell = row.createCell((short) cellNum); - cell.setCellValue(value.trim()); - cell.setCellStyle(styleValue); - } - /* - * if(token.endsWith(":") && (value!=null && value.trim().length()<=0) && (name!=null && - * name.trim().length()>0 && name.endsWith(":"))) { name = name.substring(0, - * name.indexOf(":")+1); //value = token.substring(token.indexOf(":")+1); row = - * sheet.createRow((short) ++rowNum); cellNum = 0; cell = row.createCell((short) cellNum); - * cell.setCellValue(name.trim()); cell.setCellStyle(styleName); cellNum += 1; cell = - * row.createCell((short) cellNum); cell.setCellValue(value.trim()); - * cell.setCellStyle(styleValue); - * - * //strBuf.append(name.trim()+": "+ value.trim()+"\n"); value = ""; name = ""; } - */ } - int cw = 0; - cw = name.trim().length() + 12; - if (sheet.getColumnWidth((short) 0) < (short) name.trim().length()) - sheet.setColumnWidth((short) 0, (short) name.trim().length()); - if (sheet.getColumnWidth((short) 1) < (short) value.trim().length()) - sheet.setColumnWidth((short) 1, (short) value.trim().length()); - name = ""; - value = ""; - - } - - try { - SimpleDateFormat oracleDateFormat = new SimpleDateFormat("MM/dd/yyyy kk:mm:ss"); - Date sysdate = oracleDateFormat.parse(ReportLoader.getSystemDateTime()); - SimpleDateFormat dtimestamp = new SimpleDateFormat(Globals.getScheduleDatePattern()); - - row = sheet.createRow((short) ++rowNum); - cellNum = 0; - cell = row.createCell((short) cellNum); - cell.setCellValue("Report Date/Time"); - cell.setCellStyle(styleName); - cellNum += 1; - cell = row.createCell((short) cellNum); - - cell.setCellValue(dtimestamp.format(sysdate) + " " + Globals.getTimeZone()); - cell.setCellStyle(styleValue); - - } catch (Exception ex) { - logger.error(EELFLoggerDelegate.errorLogger, "Excetion occured", ex); - } - - } - } - - /* - * Iterator iter1 = paramsList.iterator(); s1 = 0; s2 = (short)10; if(iter1.hasNext()) { row = - * sheet.createRow((short) ++rowNum); cellNum = 0; cell = row.createCell((short) cellNum); - * sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, s1, s2)); - * cell.setCellValue(strip.stripHtml(customizedParamInfo)); } - */ - - } // if - Iterator iterCheck = paramsList.iterator(); - if (iterCheck.hasNext()) { - rowNum += 2; - row = sheet.createRow(rowNum); - } - header.setCenter(HSSFHeader.font(FONT_TAHOMA, "") + HSSFHeader.fontSize((short) FONT_HEADER_TITLE_SIZE) - + strBuf.toString()); - } - - // Trying different --> - public void createHTMLFileContent(Writer out, ReportData rd, - ReportRuntime rr, String sql_whole, HttpServletRequest request, HttpServletResponse response) - throws RaptorException, IOException { - - PrintWriter csvOut = response.getWriter(); + public void createHTMLFileContent(Writer out, ReportData rd, + ReportRuntime rr, String sql_whole, HttpServletRequest request, HttpServletResponse response) + throws RaptorException, IOException { + + PrintWriter csvOut = response.getWriter(); HtmlStripper strip = new HtmlStripper(); ResultSet rs = null; Connection conn = null; @@ -5320,7 +4722,7 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { csvOut.println(""); } - } // for + } csvOut.println("  "); csvOut.println("  "); System.out.println("HTML-Excel: Header Rendering complete " + new java.util.Date()); @@ -5360,18 +4762,14 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { csvOut.print("" + ch.getColumnTitle() + ""); } - } // for + } } csvOut.println(""); - } // for + } while (rs.next()) { csvOut.println(""); - /* - * if(runtime.freeMemory()/mb <= ((runtime.maxMemory()/mb)*Globals.getMemoryThreshold()/100) ) { - * csvOut.print(Globals.getUserDefinedMessageForMemoryLimitReached() + " " + rowCount - * +"records out of " + rr.getReportDataSize() + " were downloaded to CSV."); break; } - */ rowCount++; + rowCount++; colHash = new HashMap(); for (int i = 1; i <= numberOfColumns; i++) { colHash.put(rsmd.getColumnName(i), rs.getString(i)); @@ -5415,6 +4813,7 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { logger.error(EELFLoggerDelegate.errorLogger, "SQLException occured", ex); } } + // csvOut.flush(); } else { boolean firstPass = true; int numberOfColumns = 0; @@ -5429,7 +4828,8 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { numberOfColumns++; csvOut.print("" + rhc.getColumnTitle() + ""); } - } // for + + } for (chr.resetNext(); chr.hasNext();) { ColumnHeader ch = chr.getNext(); @@ -5438,14 +4838,15 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { numberOfColumns++; csvOut.print("" + ch.getColumnTitle() + ""); } - } // for + } firstPass = false; csvOut.println(""); - } // for + } firstPass = true; + DataRow dr = new DataRow(); for (rd.reportDataRows.resetNext(); rd.reportDataRows.hasNext();) { - DataRow dr = rd.reportDataRows.getNext(); + dr = rd.reportDataRows.getNext(); csvOut.println(""); for (rd.reportRowHeaderCols.resetNext(1); rd.reportRowHeaderCols.hasNext();) { RowHeaderCol rhc = rd.reportRowHeaderCols.getNext(); @@ -5454,19 +4855,19 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { RowHeader rh = rhc.getNext(); csvOut.print("" + strip.stripCSVHtml(rh.getRowTitle()) + ""); - } // for + } firstPass = false; - + DataValue dv = new DataValue(); for (dr.resetNext(); dr.hasNext();) { - DataValue dv = dr.getNext(); + dv = dr.getNext(); if (dv.isVisible()) csvOut.print( "" + strip.stripCSVHtml(dv.getDisplayValue()) + ""); - } // for + } csvOut.println(""); - } // for + } } else { csvOut.println("No Data Found"); } @@ -5481,7 +4882,7 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { System.out.println("Total Memory:" + runtime.totalMemory() / mb); System.out.println("Max Memory:" + runtime.maxMemory() / mb); - } // createCSVFileContent + } /** * Checking if every row and cell in merging region exists, and create those which are not @@ -5507,4 +4908,2123 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject { } } } -} // ReportHandler + + //XLS RELATED METHODS + public void createExcelXlsContent(final Writer out, ReportData rd, final ReportRuntime rr, + final HttpServletRequest request, final HttpServletResponse response, final String user_id, final int type) + throws IOException, RaptorException { + Map styles = new HashMap(); + final HttpSession session = request.getSession(); + HSSFWorkbook wb = null; + SXSSFWorkbook wb1 = null; + int returnValue = 0; + final boolean isDashboard = (session.getAttribute(AppConstants.SI_DASHBOARD_REP_ID) != null) && + (((String) session.getAttribute(AppConstants.SI_DASHBOARD_REP_ID)).equals(rr.getReportID())); + if (isDashboard) { + final String formattedDate = new SimpleDateFormat("MMddyyyyHHmm").format(new Date()); + final String xlsFName = "./Dashboard.xls"; + try { + FileInputStream xlsIn = null; + final Map reportRuntimeMap = (TreeMap) request.getSession() + .getAttribute(AppConstants.SI_DASHBOARD_REPORTRUNTIME_MAP); + final Map reportDataMap = (TreeMap) request.getSession() + .getAttribute(AppConstants.SI_DASHBOARD_REPORTDATA_MAP); + if (reportRuntimeMap != null) { + final Set setReportRuntime = reportRuntimeMap.entrySet(); + final Set setReportDataMap = reportDataMap.entrySet(); + final Iterator iter2 = setReportDataMap.iterator(); + int count = 0; + for (Iterator iter = setReportRuntime.iterator(); iter.hasNext();) { + count++; + try { + xlsIn = + new FileInputStream(xlsFName); + } catch (final FileNotFoundException e) { + logger.error(EELFLoggerDelegate.errorLogger, "File not found in the specified path.", e); + } + if (xlsIn != null) { + wb = new HSSFWorkbook(xlsIn); + } else { + wb = new HSSFWorkbook(); + } + final Map.Entry entryData = (Entry) iter2.next(); + final Map.Entry entry = (Entry) iter.next(); + final ReportRuntime rrDashRep = (ReportRuntime) entry.getValue(); + final ReportData rdDashRep = (ReportData) entryData.getValue(); + int col = 0; + final String reportTitle = (nvl(rrDashRep.getReportTitle()).length() > 0 ? rrDashRep + .getReportTitle() + : rrDashRep.getReportName()); + final String reportDescr = rrDashRep.getReportDescr(); + if (rdDashRep != null) { + if (!rdDashRep.reportRowHeaderCols.hasNext()) { + col = rdDashRep.getTotalColumnCount(); + } else { + col = rdDashRep.getTotalColumnCount(); + } + }else { + continue; + } + if (col == 0) { + col = 10; + } + int rowNum = 0; + final String formattedReportName = + new HtmlStripper().stripSpecialCharacters(rrDashRep.getReportName()); + + HSSFSheet sheet = null; + try { + sheet = wb.createSheet(formattedReportName); + sheet.getPrintSetup().setLandscape(true); + styles = loadStylesXls(rrDashRep, wb); + } catch (final IllegalArgumentException ex) { + logger.warn("IllegalArgumentException occured", ex); + try (final FileOutputStream xlsOut = new FileOutputStream(xlsFName)) { + wb.write(xlsOut); + xlsOut.flush(); + } catch (final IOException e) { + logger.warn("Failed to open FileOutputStream", e); + } + continue; + } + if (Globals.getPrintTitleInDownload() && reportTitle != null) { + paintExcelHeaderXls(wb, rowNum, col, reportTitle, reportDescr, sheet); + rowNum = sheet.getLastRowNum(); + } else { + rowNum = 0; + } + // getting ReportRuntime object from session + if (Globals.getPrintParamsInDownload() + && rrDashRep.getParamNameValuePairsforPDFExcel(request, 1) != null) { + if (count > 1 && Globals.showParamsInAllDashboardReports()) { + paintExcelParamsXls(wb, rowNum, col, + rrDashRep.getParamNameValuePairsforPDFExcel(request, 1), + rrDashRep.getFormFieldComments(request), sheet, reportTitle, reportDescr); + } else if (count == 1) { + paintExcelParamsXls(wb, rowNum, col, + rrDashRep.getParamNameValuePairsforPDFExcel(request, 1), + rrDashRep.getFormFieldComments(request), sheet, reportTitle, reportDescr); + } + } + rowNum = sheet.getLastRowNum(); + final String sql_whole = rrDashRep.getWholeSQL(); + if(rrDashRep.getCachedSQL().length() > 0) { + returnValue = paintExcelDataXls(wb, rowNum, rdDashRep, styles, rrDashRep, sheet, "", + request); + }else { + returnValue = paintExcelDataXls(wb, rowNum, rdDashRep, styles, rrDashRep, sheet, sql_whole, + request); + } + if (returnValue == 0) { + if (Globals.getPrintFooterInDownload()) { + rowNum = sheet.getLastRowNum(); + rowNum += 2; + paintExcelFooterXls(wb, rowNum, col, sheet); + } + try (final FileOutputStream xlsOut = new FileOutputStream(xlsFName)) { + wb.write(xlsOut); + xlsOut.flush(); + } catch (final IOException e) { + logger.warn("Failed to open FileOutputStream", e); + } + wb = null; + } + } + + response.reset(); + response.setContentType("application/vnd.ms-excel"); + response.setHeader("Content-disposition", + "attachment;filename=" + "dashboard" + formattedDate + user_id + ".xls"); + xlsIn = new FileInputStream(xlsFName); + int readBytes = 0; + final byte[] bOut = new byte[4096]; + try (final BufferedInputStream buf = new BufferedInputStream(xlsIn); + final ServletOutputStream sos = response.getOutputStream();) { + while ((readBytes = buf.read(bOut, 0, 4096)) > 0) { + buf.available(); + sos.write(bOut, 0, readBytes); + } + } catch (final IOException e) { + logger.warn("Failed to open BufferedInputStream", e); + } + } + } catch (final IOException ex) { + logger.warn("Failed to open Stream", ex); + throw ex; + } + + final File f = new File(xlsFName); + if (f.exists()) { + f.delete(); + } + } else { + wb = new HSSFWorkbook(); + setSheetName(Globals.getSheetName()); + if (rr != null) { + styles = loadStylesXls(rr, wb); + } + final String reportTitle = (nvl(rr.getReportTitle()).length() > 0 ? rr.getReportTitle() + : rr.getReportName()); + final String reportDescr = rr.getReportDescr(); + final int col = getColumnCountForDownloadFile(rr, rd); + int rowNum = 0; + final HSSFSheet sheet = wb.createSheet(getSheetName()); + sheet.getPrintSetup().setLandscape(true); + if (Globals.getPrintTitleInDownload() && reportTitle != null) { + paintExcelHeaderXls(wb, rowNum, col, reportTitle, reportDescr, sheet); + rowNum = sheet.getLastRowNum(); + } else { + rowNum = 0; + } + if (Globals.getPrintParamsInDownload() && rr.getParamNameValuePairsforPDFExcel(request, 1) != null) { + List paramsList = rr.getParamNameValuePairsforPDFExcel(request, 1); + if (paramsList.size() <= 0) { + paramsList = (ArrayList) request.getSession().getAttribute(AppConstants.SI_FORMFIELD_DOWNLOAD_INFO); + } + paintExcelParamsXls(wb, rowNum, col, paramsList, rr.getFormFieldComments(request), sheet, reportTitle, + reportDescr); + } + rowNum = sheet.getLastRowNum(); + final String formattedReportName = new HtmlStripper().stripSpecialCharacters(rr.getReportName()); + final String formattedDate = new SimpleDateFormat("MMddyyyyHHmm").format(new Date()); + response.reset(); + response.setContentType("application/vnd.ms-excel"); + response.setHeader("Content-disposition", + "attachment;filename=" + formattedReportName + formattedDate + user_id + ".xls"); + if (type == 3 && rr.getSemaphoreList() == null && !(rr.getReportType() + .equals(AppConstants.RT_CROSSTAB))) { // type = 3 is whole + String sql_whole = ""; + sql_whole = (String) request.getAttribute(AppConstants.RI_REPORT_SQL_WHOLE); + + if (sql_whole == null) { + if (!rr.getReportType().equals(AppConstants.RT_HIVE)) { + sql_whole = rr.getWholeSQL(); + } else { + sql_whole = rr.getReportSQL(); + } + } + if(rr.isSinglePageDownload()) + sql_whole = rr.getCachedSQL(); + returnValue = paintExcelDataXls(wb, rowNum, rd, styles, rr, sheet, sql_whole, request); + rr.setSinglePageDownload(false); + } else if (type == 2) { + returnValue = paintExcelDataXls(wb, rowNum, rd, styles, rr, sheet, "", request); + } else { + int downloadLimit = + (rr.getMaxRowsInExcelDownload() > 0 && (rr.getMaxRowsInExcelDownload() < Globals.getDownloadLimit())) ? rr.getMaxRowsInExcelDownload() + : Globals.getDownloadLimit(); + String action = request.getParameter(AppConstants.RI_ACTION); + if (!(rr.getReportType().equals(AppConstants.RT_CROSSTAB)) && !action.endsWith("session")) { + rd = rr.loadReportData(-1, AppUtils.getUserID(request), downloadLimit, request, + false /* download */); + } + if (rr.getSemaphoreList() != null) { + if (rr.getReportType().equals(AppConstants.RT_CROSSTAB)) { + returnValue = paintExcelDataXls(wb, rowNum, rd, styles, rr, sheet, "", request); + } else { + rd = rr.loadReportData(-1, AppUtils.getUserID(request), downloadLimit, request, true); + returnValue = paintExcelDataXls(wb, rowNum, rd, styles, rr, sheet, "", request); + } + } else { + String sql_whole = ""; + sql_whole = (String) request.getAttribute(AppConstants.RI_REPORT_SQL_WHOLE); + + if (sql_whole == null) { + if (!rr.getReportType().equals(AppConstants.RT_HIVE)) { + sql_whole = rr.getWholeSQL(); + } else { + sql_whole = rr.getReportSQL(); + } + } + returnValue = paintExcelDataXls(wb, rowNum, rd, styles, rr, sheet, sql_whole, request); + } + } + if (returnValue == 0) { + if (Globals.getPrintFooterInDownload()) { + rowNum = sheet.getLastRowNum(); + rowNum += 2; + paintExcelFooterXls(wb, rowNum, col, sheet); + } + wb.setPrintArea( + 0, // sheet index + 0, // start column + col, // end column + 0, // start row + rowNum // end row + ); + try (final ServletOutputStream sos = response.getOutputStream();) { + wb.write(sos); + sos.flush(); + } catch (final IOException e) { + logger.warn("Failed to get OutputStream", e); + }finally { + wb.close(); + wb = null; + } + } + } + } + + private HashMap loadStylesXls(ReportRuntime rr, HSSFWorkbook wb) { + HSSFCellStyle styleDefault = wb.createCellStyle(); + HSSFFont fontDefault = wb.createFont(); + fontDefault.setColor((short) HSSFFont.COLOR_NORMAL); + fontDefault.setFontHeight((short) (FONT_SIZE / 0.05)); + fontDefault.setFontName(FONT_TAHOMA); + + styleDefault.setAlignment(HorizontalAlignment.CENTER); + styleDefault.setBorderBottom(BorderStyle.THIN); + styleDefault.setBorderTop(BorderStyle.THIN); + styleDefault.setBorderLeft(BorderStyle.THIN); + styleDefault.setBorderRight(BorderStyle.THIN); + styleDefault.setFillPattern(fillPattern.NO_FILL); + styleDefault.setFont(fontDefault); + + HSSFCellStyle styleRed = wb.createCellStyle(); + styleRed.cloneStyleFrom(styleDefault); + styleRed.setFillForegroundColor((short) HSSFColor.HSSFColorPredefined.RED.getIndex()); + styleRed.setFillPattern(fillPattern.SOLID_FOREGROUND); + HSSFFont fontRed = wb.createFont(); + fontRed.setColor((short) HSSFColor.HSSFColorPredefined.WHITE.getIndex()); + fontRed.setFontHeight((short) (FONT_SIZE / 0.05)); + fontRed.setFontName(FONT_TAHOMA); + styleRed.setFont(fontRed); + + HSSFCellStyle styleYellow = wb.createCellStyle(); + styleYellow.cloneStyleFrom(styleDefault); + styleYellow.setFillForegroundColor((short) HSSFColor.HSSFColorPredefined.YELLOW.getIndex()); + styleYellow.setFillPattern(fillPattern.SOLID_FOREGROUND); + HSSFFont fontYellow = wb.createFont(); + fontYellow.setColor((short) HSSFColor.HSSFColorPredefined.BLACK.getIndex()); + fontYellow.setFontHeight((short) (FONT_SIZE / 0.05)); + fontYellow.setFontName(FONT_TAHOMA); + styleYellow.setFont(fontYellow); + + HSSFCellStyle styleGreen = wb.createCellStyle(); + styleGreen.cloneStyleFrom(styleDefault); + styleGreen.setFillForegroundColor((short) HSSFColor.HSSFColorPredefined.GREEN.getIndex()); + styleGreen.setFillPattern(fillPattern.SOLID_FOREGROUND); + HSSFFont fontGreen = wb.createFont(); + fontGreen.setColor((short) HSSFColor.HSSFColorPredefined.WHITE.getIndex()); + fontGreen.setFontHeight((short) (FONT_SIZE / 0.05)); + fontGreen.setFontName(FONT_TAHOMA); + styleGreen.setFont(fontGreen); + + ArrayList semColumnList = new ArrayList(); + List dsList = rr.getDataSourceList().getDataSource(); + for (Iterator iter = dsList.iterator(); iter.hasNext();) { + DataSourceType element = (DataSourceType) iter.next(); + List dcList = element.getDataColumnList().getDataColumn(); + for (Iterator iterator = dcList.iterator(); iterator.hasNext();) { + DataColumnType element1 = (DataColumnType) iterator.next(); + semColumnList.add(element1.getSemaphoreId()); + + } + } + SemaphoreList semList = rr.getSemaphoreList(); + HashMap hashMapStyles = new HashMap(); + HashMap hashMapFonts = new HashMap(); + hashMapFonts.put(DEFAULT, fontDefault); + hashMapFonts.put(RED, fontRed); + hashMapFonts.put(YELLOW, fontYellow); + hashMapFonts.put(GREEN, fontGreen); + hashMapStyles.put(DEFAULT, styleDefault); + hashMapStyles.put(RED, styleRed); + hashMapStyles.put(YELLOW, styleYellow); + hashMapStyles.put(GREEN, styleGreen); + HSSFCellStyle cellStyle = null; + if (semList == null || semList.getSemaphore() == null) { + return hashMapStyles; + } else { + for (Iterator iter = semList.getSemaphore().iterator(); iter.hasNext();) { + SemaphoreType sem = (SemaphoreType) iter.next(); + if (!semColumnList.contains(sem.getSemaphoreId())) + continue; + FormatList fList = sem.getFormatList(); + List formatList = fList.getFormat(); + for (Iterator fIter = formatList.iterator(); fIter.hasNext();) { + FormatType fmt = (FormatType) fIter.next(); + if (fmt != null) { + cellStyle = wb.createCellStyle(); + HSSFFont cellFont = wb.createFont(); + if (nvl(fmt.getBgColor()).length() > 0) { + cellStyle.setFillForegroundColor(ExcelColorDef.getExcelColor(fmt + .getBgColor())); + cellStyle.setFillPattern(fillPattern.SOLID_FOREGROUND); + } + if (nvl(fmt.getFontColor()).length() > 0) { + cellFont.setColor(ExcelColorDef.getExcelColor(fmt.getFontColor())); + } else + cellFont.setColor((short) HSSFFont.COLOR_NORMAL); + if (fmt.isBold()) + cellFont.setBold(true); + if (fmt.isItalic()) + cellFont.setItalic(true); + if (fmt.isUnderline()) + cellFont.setUnderline(HSSFFont.U_SINGLE); + if (nvl(fmt.getFontFace()).length() > 0) + cellFont.setFontName(fmt.getFontFace()); + else + cellFont.setFontName(FONT_TAHOMA); + + if (nvl(fmt.getFontSize()).length() > 0) { + try { + // cellFont.setFontHeight((short) (Integer.parseInt(fmt.getFontSize()) / 0.05)); + cellFont.setFontHeight((short) (FONT_SIZE / 0.05)); + } catch (NumberFormatException e) { + cellFont.setFontHeight((short) (FONT_SIZE / 0.05));// 10 + } + } else + cellFont.setFontHeight((short) (FONT_SIZE / 0.05)); + cellStyle.setFont(cellFont); + cellStyle.setAlignment(HorizontalAlignment.CENTER); + cellStyle.setBorderBottom(BorderStyle.THIN); + cellStyle.setBorderTop(BorderStyle.THIN); + cellStyle.setBorderLeft(BorderStyle.THIN); + cellStyle.setBorderRight(BorderStyle.THIN); + hashMapStyles.put(fmt.getFormatId(), cellStyle); + } else { + hashMapStyles.put(DEFAULT, styleDefault); + } + } + } + } + return hashMapStyles; + } + + private void paintExcelHeaderXls(HSSFWorkbook wb, int rowNum, int col, String reportTitle, + String reportDescr, HSSFSheet sheet) { + short shrt_one = 0, shrt_two = (short) (col - 1); + rowNum += 1; + if(shrt_two != 0) + sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, shrt_one, shrt_two)); + HSSFRow row = null; + HSSFRow row1 = null; + row = sheet.createRow(rowNum); + HSSFCellStyle styleHeader = wb.createCellStyle(); + styleHeader.setAlignment(HorizontalAlignment.CENTER); + HSSFFont font = wb.createFont(); + font.setFontHeight((short) (FONT_HEADER_TITLE_SIZE / 0.05)); // 14 + font.setFontName(FONT_TAHOMA); + font.setColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex()); + styleHeader.setFont(font); + HSSFCell cell = row.createCell((short) 0); + cell.setCellValue(reportTitle); + cell.setCellStyle(styleHeader); + Header header = sheet.getHeader(); + header.setCenter(HSSFHeader.font(FONT_TAHOMA, "") + HSSFHeader.fontSize((short) 9) + " " + reportTitle); + if (Globals.getShowDescrAtRuntime() && nvl(reportDescr).length() > 0) { + rowNum += 1; + if(shrt_two != 0) + sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, shrt_one, shrt_two)); + HSSFCellStyle styleDescription = wb.createCellStyle(); + styleDescription.setAlignment(HorizontalAlignment.CENTER); + HSSFFont fontDescr = wb.createFont(); + fontDescr.setFontHeight((short) FONT_HEADER_DESCR_SIZE); + fontDescr.setFontName(FONT_TAHOMA); + fontDescr.setColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex()); + styleDescription.setFont(fontDescr); + HSSFCell cellDescr = row.createCell((short) 0); + cellDescr.setCellValue(reportDescr); + cellDescr.setCellStyle(styleHeader); + } + if (Globals.disclaimerPositionedTopInCSVExcel()) { + rowNum += 1; + row = sheet.createRow(rowNum); + if(shrt_two != 0) + sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, shrt_one, shrt_two)); + HSSFCellStyle styleDescription = wb.createCellStyle(); + styleDescription.setAlignment(HorizontalAlignment.CENTER); + HSSFFont fontDescr = wb.createFont(); + fontDescr.setFontHeight((short) (FONT_SIZE / 0.05)); // 14 + fontDescr.setFontName(FONT_TAHOMA); + fontDescr.setColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex()); + fontDescr.setBold(true); + styleDescription.setFont(fontDescr); + HSSFCell cellDescr = row.createCell((short) 0); + String disclaimer = Globals.getFooterFirstLine() + " " + Globals.getFooterSecondLine(); + cellDescr.setCellValue(disclaimer); + cellDescr.setCellStyle(styleDescription); + } + rowNum += 1; + row = sheet.createRow(rowNum); + } + + private int paintExcelDataXls(final HSSFWorkbook wb, int rowNum, final ReportData rd, final Map styles, + final ReportRuntime rr, final HSSFSheet sheet, final String sql_whole, + final HttpServletRequest request) throws RaptorException { + int mb = 1024 * 1024; + Runtime runtime = Runtime.getRuntime(); + int returnValue = 0; + HSSFCellStyle styleDefault = wb.createCellStyle(); + HSSFCellStyle styleNumber = wb.createCellStyle(); + HSSFCellStyle styleDecimalNumber = wb.createCellStyle(); + HSSFCellStyle styleCurrencyNumber = wb.createCellStyle(); + HSSFCellStyle styleCurrencyDecimalNumber = wb.createCellStyle(); + HSSFCellStyle styleDate = wb.createCellStyle(); + HtmlStripper strip = new HtmlStripper(); + HSSFCellStyle styleDataHeader = wb.createCellStyle(); + styleDataHeader.setFillForegroundColor(HSSFColor.HSSFColorPredefined.GREY_25_PERCENT.getIndex()); + styleDataHeader.setFillPattern(fillPattern.SOLID_FOREGROUND); + styleDataHeader.setAlignment(HorizontalAlignment.CENTER); + styleDataHeader.setBorderBottom(BorderStyle.THIN); + styleDataHeader.setBorderTop(BorderStyle.THIN); + styleDataHeader.setBorderRight(BorderStyle.THIN); + styleDataHeader.setBorderLeft(BorderStyle.THIN); + HSSFFont font = wb.createFont(); + font.setFontHeight((short) (FONT_SIZE / 0.05)); + font.setFontName(FONT_TAHOMA); + font.setBold(true); + font.setColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex()); + styleDataHeader.setFont(font); + boolean firstPass = true; + ArrayList cellWidth = new ArrayList(); + java.util.HashMap dataTypeMap = new java.util.HashMap(); + int cellNum = 0; + rowNum += 0; + ColumnHeaderRow chr = null; + String title = ""; + int columnRows = rr.getVisibleColumnCount() - 1; + HttpSession session = request.getSession(); + String drilldown_index = (String) session.getAttribute("drilldown_index"); + int index = 0; + try { + index = Integer.parseInt(drilldown_index); + } catch (NumberFormatException ex) { + index = 0; + } + String header = (String) session.getAttribute("TITLE_" + index); + String subtitle = (String) session.getAttribute("SUBTITLE_" + index); + if (nvl(header).length() > 0) { + header = Utils.replaceInString(header, "
", " "); + header = Utils.replaceInString(header, "
", " "); + header = Utils.replaceInString(header, "
", " "); + header = strip.stripHtml(nvl(header).trim()); + subtitle = Utils.replaceInString(subtitle, "
", " "); + subtitle = Utils.replaceInString(subtitle, "
", " "); + subtitle = Utils.replaceInString(subtitle, "
", " "); + subtitle = strip.stripHtml(nvl(subtitle).trim()); + HSSFRow row = sheet.createRow(rowNum); + cellNum = 0; + row.createCell((short) cellNum).setCellValue(header); + sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, (short) cellNum, (short) (columnRows))); + rowNum += 1; + row = sheet.createRow(rowNum); + cellNum = 0; + row.createCell((short) cellNum).setCellValue(subtitle); + sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, (short) cellNum, (short) (columnRows))); + rowNum += 1; + } + + for (rd.reportColumnHeaderRows.resetNext(); rd.reportColumnHeaderRows.hasNext();) { + HSSFRow row = sheet.createRow(rowNum); + cellNum = -1; + chr = rd.reportColumnHeaderRows.getNext(); + if (nvl(sql_whole).length() <= 0 || (!rr.getReportType().equals(AppConstants.RT_LINEAR))) { + if (rr.getReportType().equals(AppConstants.RT_CROSSTAB)) + rd.reportRowHeaderCols.resetNext(0); + else + rd.reportRowHeaderCols.resetNext(1); + for (; rd.reportRowHeaderCols.hasNext();) { + cellNum += 1; + RowHeaderCol rhc = rd.reportRowHeaderCols.getNext(); + if (firstPass) { + title = rhc.getColumnTitle(); + title = Utils.replaceInString(title, "_nl_", " \n"); + row.createCell((short) cellNum).setCellValue(title); + if (cellWidth.size() > 0 && cellWidth.size() > cellNum) { + if (((Integer) cellWidth.get(cellNum)).intValue() < rhc + .getColumnTitle().length()) + cellWidth.set(cellNum, new Integer(title.length())); + } else + cellWidth.add(cellNum, new Integer(title.length())); + row.getCell((short) cellNum).setCellStyle(styleDataHeader); + } + } + } + firstPass = false; + for (chr.resetNext(); chr.hasNext();) { + ColumnHeader ch = chr.getNext(); + if (ch.isVisible()) { + cellNum += 1; + int colSpan = ch.getColSpan() - 1; + title = ch.getColumnTitle(); + title = Utils.replaceInString(title, "_nl_", " \n"); + row.createCell((short) cellNum).setCellValue(title); + if (colSpan > 0) { + for (int k = 1; k <= colSpan; k++) { + row.createCell((short) cellNum + k); + } + sheet.addMergedRegion( + new CellRangeAddress(rowNum, rowNum, (short) cellNum, (short) (cellNum + colSpan))); + } + row.getCell((short) (cellNum)).setCellStyle(styleDataHeader); + for (int k = 1; k <= colSpan; k++) { + row.getCell((short) (cellNum + k)).setCellStyle(styleDataHeader); + } + if (colSpan > 0) + cellNum += colSpan; + } + } + rowNum += 1; + } + HSSFCellStyle styleCell = null; + HSSFCellStyle styleTotal = wb.createCellStyle(); + HSSFCellStyle styleCurrencyTotal = wb.createCellStyle(); + HSSFCellStyle styleDefaultTotal = wb.createCellStyle(); + HSSFCellStyle styleCurrencyDecimalNumberTotal = wb.createCellStyle(); + HSSFCellStyle styleDecimalNumberTotal = wb.createCellStyle(); + HSSFCellStyle styleCurrencyNumberTotal = wb.createCellStyle(); + HSSFFont fontDefault = wb.createFont(); + HSSFFont fontBold = wb.createFont(); + fontDefault.setColor((short) HSSFFont.COLOR_NORMAL); + fontDefault.setFontHeight((short) (FONT_SIZE / 0.05)); + fontDefault.setFontName(FONT_TAHOMA); + fontBold.setColor((short) HSSFFont.COLOR_NORMAL); + fontBold.setFontHeight((short) (FONT_SIZE / 0.05)); + fontBold.setFontName(FONT_TAHOMA); + fontBold.setBold(true); + styleDefault.setAlignment(HorizontalAlignment.CENTER); + styleDefault.setBorderBottom(BorderStyle.THIN); + styleDefault.setBorderTop(BorderStyle.THIN); + styleDefault.setBorderLeft(BorderStyle.THIN); + styleDefault.setBorderRight(BorderStyle.THIN); + styleDefault.setFillPattern(fillPattern.NO_FILL); + styleDefault.setFont(fontDefault); + styleDefault.setWrapText(true); + styleNumber.setAlignment(HorizontalAlignment.CENTER); + styleNumber.setBorderBottom(BorderStyle.THIN); + styleNumber.setBorderTop(BorderStyle.THIN); + styleNumber.setBorderLeft(BorderStyle.THIN); + styleNumber.setBorderRight(BorderStyle.THIN); + styleNumber.setFillPattern(fillPattern.NO_FILL); + styleNumber.setFont(fontDefault); + try { + styleNumber.setDataFormat((short) 0x26);// HSSFDataFormat.getBuiltinFormat("(#,##0_);[Red](#,##0)")); + } catch (Exception e) { + logger.error(EELFLoggerDelegate.errorLogger, "Excetion in setDataFormat", e); + } + styleDecimalNumber.setAlignment(HorizontalAlignment.CENTER); + styleDecimalNumber.setBorderBottom(BorderStyle.THIN); + styleDecimalNumber.setBorderTop(BorderStyle.THIN); + styleDecimalNumber.setBorderLeft(BorderStyle.THIN); + styleDecimalNumber.setBorderRight(BorderStyle.THIN); + styleDecimalNumber.setFillPattern(fillPattern.NO_FILL); + styleDecimalNumber.setFont(fontDefault); + styleDecimalNumber.setDataFormat((short) 0x27);// HSSFDataFormat.getBuiltinFormat("(#,##0.00_);[Red](#,##0.00)")); + styleDecimalNumberTotal.setAlignment(HorizontalAlignment.CENTER); + styleDecimalNumberTotal.setBorderBottom(BorderStyle.THIN); + styleDecimalNumberTotal.setBorderTop(BorderStyle.THIN); + styleDecimalNumberTotal.setBorderLeft(BorderStyle.THIN); + styleDecimalNumberTotal.setBorderRight(BorderStyle.THIN); + styleDecimalNumberTotal.setFillPattern(fillPattern.NO_FILL); + styleDecimalNumberTotal.setFont(fontBold); + styleDecimalNumberTotal.setDataFormat((short) 0x27);// HSSFDataFormat.getBuiltinFormat("(#,##0.00_);[Red](#,##0.00)")); + styleCurrencyDecimalNumber.setAlignment(HorizontalAlignment.CENTER); + styleCurrencyDecimalNumber.setBorderBottom(BorderStyle.THIN); + styleCurrencyDecimalNumber.setBorderTop(BorderStyle.THIN); + styleCurrencyDecimalNumber.setBorderLeft(BorderStyle.THIN); + styleCurrencyDecimalNumber.setBorderRight(BorderStyle.THIN); + styleCurrencyDecimalNumber.setFillPattern(fillPattern.NO_FILL); + styleCurrencyDecimalNumber.setFont(fontDefault); + styleCurrencyDecimalNumber.setDataFormat((short) 8);// HSSFDataFormat.getBuiltinFormat("($#,##0.00_);[Red]($#,##0.00)")); + styleCurrencyDecimalNumberTotal.setAlignment(HorizontalAlignment.CENTER); + styleCurrencyDecimalNumberTotal.setBorderBottom(BorderStyle.THIN); + styleCurrencyDecimalNumberTotal.setBorderTop(BorderStyle.THIN); + styleCurrencyDecimalNumberTotal.setBorderLeft(BorderStyle.THIN); + styleCurrencyDecimalNumberTotal.setBorderRight(BorderStyle.THIN); + styleCurrencyDecimalNumberTotal.setFillPattern(fillPattern.NO_FILL); + styleCurrencyDecimalNumberTotal.setFont(fontBold); + styleCurrencyDecimalNumberTotal.setDataFormat((short) 8);// HSSFDataFormat.getBuiltinFormat("($#,##0.00_);[Red]($#,##0.00)")); + styleCurrencyNumber.setAlignment(HorizontalAlignment.CENTER); + styleCurrencyNumber.setBorderBottom(BorderStyle.THIN); + styleCurrencyNumber.setBorderTop(BorderStyle.THIN); + styleCurrencyNumber.setBorderLeft(BorderStyle.THIN); + styleCurrencyNumber.setBorderRight(BorderStyle.THIN); + styleCurrencyNumber.setFillPattern(fillPattern.NO_FILL); + styleCurrencyNumber.setFont(fontDefault); + styleCurrencyNumber.setDataFormat((short) 6);// HSSFDataFormat.getBuiltinFormat("($#,##0_);[Red]($#,##0)")); + styleCurrencyNumberTotal.setAlignment(HorizontalAlignment.CENTER); + styleCurrencyNumberTotal.setBorderBottom(BorderStyle.THIN); + styleCurrencyNumberTotal.setBorderTop(BorderStyle.THIN); + styleCurrencyNumberTotal.setBorderLeft(BorderStyle.THIN); + styleCurrencyNumberTotal.setBorderRight(BorderStyle.THIN); + styleCurrencyNumberTotal.setFillPattern(fillPattern.NO_FILL); + styleCurrencyNumberTotal.setFont(fontBold); + styleCurrencyNumberTotal.setDataFormat((short) 6);// HSSFDataFormat.getBuiltinFormat("($#,##0_);[Red]($#,##0)")); + styleDate.setAlignment(HorizontalAlignment.CENTER); + styleDate.setBorderBottom(BorderStyle.THIN); + styleDate.setBorderTop(BorderStyle.THIN); + styleDate.setBorderLeft(BorderStyle.THIN); + styleDate.setBorderRight(BorderStyle.THIN); + styleDate.setFillPattern(fillPattern.NO_FILL); + styleDate.setFont(fontDefault); + styleDate.setDataFormat((short) 0xe);// HSSFDataFormat.getBuiltinFormat("m/d/yy")); + styleTotal.setAlignment(HorizontalAlignment.CENTER); + styleTotal.setBorderBottom(BorderStyle.THIN); + styleTotal.setBorderTop(BorderStyle.THIN); + styleTotal.setBorderLeft(BorderStyle.THIN); + styleTotal.setBorderRight(BorderStyle.THIN); + styleTotal.setFillPattern(fillPattern.NO_FILL); + styleTotal.setDataFormat((short) 0x28);// HSSFDataFormat.getBuiltinFormat("(#,##0.00_);[Red](#,##0.00)")); + styleTotal.setFont(fontBold); + styleCurrencyTotal.setAlignment(HorizontalAlignment.CENTER); + styleCurrencyTotal.setBorderBottom(BorderStyle.THIN); + styleCurrencyTotal.setBorderTop(BorderStyle.THIN); + styleCurrencyTotal.setBorderLeft(BorderStyle.THIN); + styleCurrencyTotal.setBorderRight(BorderStyle.THIN); + styleCurrencyTotal.setFillPattern(fillPattern.NO_FILL); + styleCurrencyTotal.setDataFormat((short) 8);// HSSFDataFormat.getBuiltinFormat("($#,##0.00_);[Red]($#,##0.00)")); + styleCurrencyTotal.setFont(fontBold); + styleDefaultTotal.setAlignment(HorizontalAlignment.CENTER); + styleDefaultTotal.setBorderBottom(BorderStyle.THIN); + styleDefaultTotal.setBorderTop(BorderStyle.THIN); + styleDefaultTotal.setBorderLeft(BorderStyle.THIN); + styleDefaultTotal.setBorderRight(BorderStyle.THIN); + styleDefaultTotal.setFillPattern(fillPattern.NO_FILL); + styleDefaultTotal.setDataFormat((short) 0x28); + styleDefaultTotal.setFont(fontBold); + firstPass = true; + HSSFRow row = null; + HSSFCell cell = null; + SimpleDateFormat MMDDYYYYFormat = new SimpleDateFormat("MM/dd/yyyy"); + SimpleDateFormat YYYYMMDDFormat = new SimpleDateFormat("yyyy/MM/dd"); + SimpleDateFormat MONYYYYFormat = new SimpleDateFormat("MMM yyyy"); + SimpleDateFormat MMYYYYFormat = new SimpleDateFormat("MM/yyyy"); + SimpleDateFormat MMMMMDDYYYYFormat = new SimpleDateFormat("MMMMM dd, yyyy"); + SimpleDateFormat YYYYMMDDDASHFormat = new SimpleDateFormat("yyyy-MM-dd"); + SimpleDateFormat timestampFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + SimpleDateFormat DDMONYYYYFormat = new SimpleDateFormat("dd-MMM-yyyy"); + SimpleDateFormat MONTHYYYYFormat = new SimpleDateFormat("MMMMM, yyyy"); + SimpleDateFormat MMDDYYYYHHMMSSFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); + SimpleDateFormat MMDDYYYYHHMMFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm"); + SimpleDateFormat YYYYMMDDHHMMSSFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + SimpleDateFormat YYYYMMDDHHMMFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm"); + SimpleDateFormat DDMONYYYYHHMMSSFormat = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss"); + SimpleDateFormat DDMONYYYYHHMMFormat = new SimpleDateFormat("dd-MMM-yyyy HH:mm"); + SimpleDateFormat DDMONYYHHMMFormat = new SimpleDateFormat("dd-MMM-yy HH:mm"); + SimpleDateFormat MMDDYYFormat = new SimpleDateFormat("MM/dd/yy"); + SimpleDateFormat MMDDYYHHMMFormat = new SimpleDateFormat("MM/dd/yy HH:mm"); + SimpleDateFormat MMDDYYHHMMSSFormat = new SimpleDateFormat("MM/dd/yy HH:mm:ss"); + SimpleDateFormat MMDDYYYYHHMMZFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm z"); + SimpleDateFormat MMMMMDDYYYYHHMMSS = new SimpleDateFormat("MMMMM-dd-yyyy HH:mm:ss"); + ResultSetMetaData rsmd = null; + CreationHelper createHelper = wb.getCreationHelper(); + + if (nvl(sql_whole).length() > 0 && rr.getReportType().equals(AppConstants.RT_LINEAR)) { + try (Connection conn = ConnectionUtils.getConnection(rr.getDbInfo()); + Statement st = conn.createStatement(); + ResultSet rs = st.executeQuery(sql_whole)) { + System.out.println("************* Map Whole SQL *************"); + System.out.println(sql_whole); + System.out.println("*****************************************"); + rsmd = rs.getMetaData(); + int numberOfColumns = rsmd.getColumnCount(); + HashMap colHash = new HashMap(); + DataRow dr = null; + int j = 0; + int rowCount = 0; + StringBuffer value = new StringBuffer(""); + DataValue dv = new DataValue(); + while (rs.next()) { + rowCount++; + row = sheet.createRow(rowNum); + cellNum = -1; + colHash = new HashMap(); + for (int i = 1; i <= numberOfColumns; i++) { + colHash.put(rsmd.getColumnLabel(i).toUpperCase(), strip.stripHtml(rs.getString(i))); + } + rd.reportDataRows.resetNext(); + dr = rd.reportDataRows.getNext(); + j = 0; + firstPass = false; + for (dr.resetNext(); dr.hasNext(); j++) { + value.delete(0, value.length()); + styleCell = null; + dv = dr.getNext(); + HtmlFormatter htmlFormat = dv.getCellFormatter(); + if ((dr.isRowFormat() && !dv.isCellFormat()) && styles != null) + styleCell = (HSSFCellStyle) styles.get(nvl(dr.getFormatId(), DEFAULT)); + if (htmlFormat != null && dv.getFormatId() != null && styles != null) + styleCell = (HSSFCellStyle) styles.get(nvl(dv.getFormatId(), DEFAULT)); + if(Utils.isRemoveLinkToEligible(nvl((String) colHash.get(dv.getColId().toUpperCase())))) { + value.append(StringUtils.substringBefore(Utils.removeLinkToForDownload(nvl((String) colHash.get(dv.getColId().toUpperCase()))), ",")); + } else { + value.append(nvl((String) colHash.get(dv.getColId().toUpperCase()))); + } + boolean bold = false; + if (dv.isVisible()) { + cellNum += 1; + cell = row.createCell((short) cellNum); + String dataType = (String) (dataTypeMap.get(dv.getColId())); + if (dataType != null && dataType.equals("NUMBER")) { + int zInt = 0; + if (value.toString().equals("null")) { + cell.setCellValue(zInt); + } else { + if ((value.indexOf(".")) != -1) { + if ((value.toString().trim().startsWith("$")) || (value.toString().trim().startsWith("-$"))) { + + String tempDollar = dv.getDisplayValue().trim(); + tempDollar = tempDollar.replaceAll(" ", "").substring(0); + tempDollar = tempDollar.replaceAll("\\$", "").substring(0); + if ((tempDollar.indexOf(",")) != -1) { + tempDollar = tempDollar.replaceAll(",", ""); + } + double tempDoubleDollar = 0.0; + try { + tempDoubleDollar = Double.parseDouble(tempDollar); + if (styleCell != null) { + styleCell.setDataFormat((short) 8);// HSSFDataFormat.getBuiltinFormat("($#,##0.00_);[Red]($#,##0.00)")); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleCurrencyDecimalNumber); + cell.setCellValue(tempDoubleDollar); + } catch (NumberFormatException ne) { + if (styleCell != null) { + styleCell.setWrapText(true); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDefault); + cell.setCellValue(tempDollar); + } + } else { + double tempDouble = 0.0; + try { + tempDouble = Double.parseDouble(value.toString()); + if (styleCell != null) { + styleCell.setDataFormat((short) 0x28);// HSSFDataFormat.getBuiltinFormat("(#,##0.00_);[Red](#,##0.00)")); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDecimalNumber); + cell.setCellValue(tempDouble); + } catch (NumberFormatException ne) { + if (styleCell != null) { + styleCell.setWrapText(true); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDefault); + cell.setCellValue(value.toString()); + } + } + } else { + if (!(value.equals(""))) { + if ((value.toString().trim().startsWith("$")) || (value.toString().trim().startsWith("-$"))) { + String tempInt = value.toString().trim(); + tempInt = tempInt.replaceAll(" ", "").substring(0); + tempInt = tempInt.replaceAll("\\$", "").substring(0); + if ((tempInt.indexOf(",")) != -1) { + tempInt = tempInt.replaceAll(",", ""); + } + Long tempIntDollar = 0L; + try { + tempIntDollar = Long.parseLong(tempInt); + if (styleCell != null) { + styleCell.setDataFormat((short) 6);// HSSFDataFormat.getBuiltinFormat("($#,##0_);[Red]($#,##0)")); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleCurrencyNumber); + cell.setCellValue(tempIntDollar); + } catch (NumberFormatException ne) { + if (styleCell != null) { + styleCell.setWrapText(true); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDefault); + cell.setCellValue(tempInt); + } + } else { + String tempStr = value.toString().trim(); + if ((tempStr.indexOf(",")) != -1) { + tempStr = tempStr.replaceAll(",", ""); + } + Long temp = 0L; + + try { + temp = Long.parseLong(tempStr); + if (styleCell != null) { + styleCell.setDataFormat((short) 0x26);// HSSFDataFormat.getBuiltinFormat("(#,##0_);[Red](#,##0)")); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleNumber); + cell.setCellValue(temp); + } catch (NumberFormatException ne) { + if (styleCell != null) { + styleCell.setWrapText(true); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDefault); + cell.setCellValue(tempStr); + } + } + } + } + } + } else if ((dataType != null && dataType.equals("DATE")) + || (dv.getDisplayName() != null + && dv.getDisplayName().toLowerCase().endsWith("date")) + || + (dv.getColId() != null && dv.getColId().toLowerCase().endsWith("date")) || + (dv.getColName() != null && dv.getColName().toLowerCase().endsWith("date"))) { + if (styleCell != null) { + styleCell.setDataFormat((short) 0xe);// HSSFDataFormat.getBuiltinFormat("m/d/yy")); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDate); + Date date = null; + int flag = 0; + date = MMDDYYHHMMSSFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yy h:mm:ss")); + flag = 1; + } + if (date == null) + date = MMDDYYHHMMFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yy h:mm")); + flag = 1; + } + if (date == null) + date = MMDDYYFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yy")); + flag = 1; + } + if (date == null) + date = MMDDYYYYHHMMSSFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yyyy h:mm:ss")); + flag = 1; + } + if (date == null) + date = MMDDYYYYHHMMFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yyyy h:mm")); + flag = 1; + } + if (date == null) + date = MMDDYYYYFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yyyy")); + flag = 1; + } + if (date == null) + date = YYYYMMDDFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("yyyy/m/d")); + flag = 1; + } + if (date == null) + date = timestampFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("yyyy-m-d h:mm:ss")); // yyyy-MM-dd + // HH:mm:ss + flag = 1; + } + if (date == null) + date = MONYYYYFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("mmm yyyy")); + flag = 1; + } + if (date == null) + date = MMYYYYFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/yyyy")); + flag = 1; + } + if (date == null) + date = MMMMMDDYYYYFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("mmm/d/yyyy")); + flag = 1; + } + if (date == null) + date = MONTHYYYYFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("mmm/yyyy")); + flag = 1; + } + if (date == null) + date = YYYYMMDDHHMMSSFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("yyyy/m/d h:mm:ss")); + flag = 1; + } + if (date == null) + date = YYYYMMDDDASHFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("yyyy-m-d")); + flag = 1; + } + if (date == null) + date = YYYYMMDDHHMMFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("yyyy/m/d h:mm")); + flag = 1; + } + if (date == null) + date = DDMONYYYYHHMMSSFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("d-mmm-yyyy h:mm:ss")); + flag = 1; + } + if (date == null) + date = DDMONYYYYHHMMFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("d-mmm-yyyy h:mm")); + flag = 1; + } + if (date == null) + date = DDMONYYHHMMFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("d-mmm-yy h:mm")); + flag = 1; + } + if (date == null) + date = DDMONYYYYFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("d-mmm-yyyy")); + flag = 1; + } + if (date == null) + date = MMDDYYHHMMSSFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yy h:mm:ss")); + flag = 1; + } + if (date == null) + date = MMDDYYHHMMFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yy h:mm")); + flag = 1; + } + if (date == null) + date = MMDDYYFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yy")); + flag = 1; + } + if (date == null) + date = MMDDYYHHMMFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yy h:mm")); + flag = 1; + } + if (date == null) + date = MMDDYYHHMMSSFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yy h:mm:ss")); + flag = 1; + } + if (date == null) + date = MMDDYYYYHHMMZFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yyyy h:mm")); + flag = 1; + } + if (date == null) + date = MMMMMDDYYYYHHMMSS.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yyyy h:mm")); + flag = 1; + } + + if (date != null) { + cell.setCellValue(HSSFDateUtil.getExcelDate(date)); + try { + String str = cell.getStringCellValue(); + } catch (IllegalStateException ex) { + logger.error(EELFLoggerDelegate.errorLogger, "IllegalStateException occured", + ex); + cell.setCellValue(value.toString()); + } + } else { + cell.setCellValue(value.toString()); + } + + } else if ((dv.getDisplayTotal() != null && dv.getDisplayTotal().equals("SUM(")) + || (dv.getColName() != null && dv.getColName().indexOf("999") != -1)) { + cell = row.createCell((short) cellNum); + int zInt = 0; + if (value.equals("null")) { + cell.setCellValue(zInt); + } else { + + if ((value.indexOf(".")) != -1) { + if ((value.toString().trim().startsWith("$")) || (value.toString().trim().startsWith("-$"))) { + + String tempDollar = value.toString().trim(); + tempDollar = tempDollar.replaceAll(" ", "").substring(0); + tempDollar = tempDollar.replaceAll("\\$", "").substring(0); + if ((tempDollar.indexOf(",")) != -1) { + tempDollar = tempDollar.replaceAll(",", ""); + } + double tempDoubleDollar = 0.0; + try { + tempDoubleDollar = Double.parseDouble(tempDollar); + if (styleCell != null) { + styleCell.setDataFormat((short) 8);// HSSFDataFormat.getBuiltinFormat("($#,##0.00_);[Red]($#,##0.00)")); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleCurrencyDecimalNumber); + cell.setCellValue(tempDoubleDollar); + } catch (NumberFormatException ne) { + if (styleCell != null) { + styleCell.setWrapText(true); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDefault); + cell.setCellValue(tempDollar); + } + } else { + String tempDoubleStr = value.toString().trim(); + tempDoubleStr = tempDoubleStr.replaceAll(" ", "").substring(0); + if ((tempDoubleStr.indexOf(",")) != -1) { + tempDoubleStr = tempDoubleStr.replaceAll(",", ""); + } + double tempDouble = 0.0; + try { + tempDouble = Double.parseDouble(tempDoubleStr); + if (styleCell != null) { + styleCell.setDataFormat((short) 0x28);// HSSFDataFormat.getBuiltinFormat("(#,##0.00_);[Red](#,##0.00)")); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDecimalNumber); + cell.setCellValue(tempDouble); + } catch (NumberFormatException ne) { + if (styleCell != null) { + styleCell.setWrapText(true); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDefault); + cell.setCellValue(tempDoubleStr); + } + } + } else { + if (!(value.equals(""))) { + if ((value.toString().trim().startsWith("$")) || (value.toString().trim().startsWith("-$"))) { + String tempInt = value.toString().trim(); + tempInt = tempInt.replaceAll(" ", "").substring(0); + tempInt = tempInt.replaceAll("\\$", "").substring(0); + if ((tempInt.indexOf(",")) != -1) { + tempInt = tempInt.replaceAll(",", ""); + } + Long tempIntDollar = 0L; + try { + tempIntDollar = Long.parseLong(tempInt); + if (styleCell != null) { + styleCell.setDataFormat((short) 6);// HSSFDataFormat.getBuiltinFormat("($#,##0_);[Red]($#,##0)")); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleCurrencyNumber); + cell.setCellValue(tempIntDollar); + } catch (NumberFormatException ne) { + if (styleCell != null) { + styleCell.setWrapText(true); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDefault); + cell.setCellValue(tempInt); + } + } else { + String tempStr = value.toString().trim(); + if ((tempStr.indexOf(",")) != -1) { + tempStr = tempStr.replaceAll(",", ""); + } + Long temp = 0L; + try { + temp = Long.parseLong(tempStr); + if (styleCell != null) { + styleCell.setDataFormat((short) 0x26);// HSSFDataFormat.getBuiltinFormat("(#,##0_);[Red](#,##0)")); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleNumber); + cell.setCellValue(temp); + } catch (NumberFormatException ne) { + if (styleCell != null) { + styleCell.setWrapText(true); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDefault); + cell.setCellValue(tempStr); + } + } + } else { + if (styleCell != null) { + styleCell.setWrapText(true); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDefault); + } + } + } + } else { + if (styleCell != null) { + styleCell.setWrapText(true); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDefault); + cell.setCellValue(strip.stripHtml(value.toString())); + } + if (cellWidth.size() > cellNum) { + if (((Integer) cellWidth.get(cellNum)).intValue() < dv + .getDisplayValue().length()) + cellWidth.set((cellNum), + (value.length() <= Globals.getMaxCellWidthInExcel()) + ? new Integer(value.length()) + : new Integer(Globals.getMaxCellWidthInExcel())); + } else + cellWidth.add((cellNum), + (value.length() <= Globals.getMaxCellWidthInExcel()) + ? new Integer(value.length()) + : new Integer(Globals.getMaxCellWidthInExcel())); + if (dv.isBold()) { + if ((dv.getDisplayTotal() != null && dv.getDisplayTotal().equals("SUM(")) + || (dv.getColName() != null && dv.getColName().indexOf("999") != -1)) { + if (value != null && (value.toString().trim().startsWith("$")) + || (value.toString().trim().startsWith("-$"))) { + cell.setCellStyle(styleCurrencyTotal); + } else { + cell.setCellStyle(styleTotal); + } + } else { + cell.setCellStyle(styleDefaultTotal); + } + bold = true; + } + if ((dr.isRowFormat() && !dv.isCellFormat()) && styles != null) { + continue; + } + if (htmlFormat != null && dv.getFormatId() != null && bold == false + && styles != null) { + } + } + } + rowNum += 1; + } + int cw = 0; + for (int i = 0; i < cellWidth.size(); i++) { + cw = ((Integer) cellWidth.get(i)).intValue() + 12; + sheet.setColumnWidth((short) (i), (short) ((cw * 8) / ((double) 1 / 20))); + } + if (rd.reportDataTotalRow != null) { + row = sheet.createRow(rowNum); + cellNum = -1; + rd.reportTotalRowHeaderCols.resetNext(); + cellNum += 1; + RowHeaderCol rhc = rd.reportTotalRowHeaderCols.getNext(); + RowHeader rh = rhc.getRowHeader(0); + row.createCell((short) cellNum).setCellValue(strip.stripHtml(rh.getRowTitle())); + row.getCell((short) cellNum).setCellStyle(styleDefaultTotal); + rd.reportDataTotalRow.resetNext(); + DataRow drTotal = rd.reportDataTotalRow.getNext(); + drTotal.resetNext(); + drTotal.getNext(); + for (; drTotal.hasNext();) { + cellNum += 1; + cell = row.createCell((short) cellNum); + dv = drTotal.getNext(); + String value1 = dv.getDisplayValue(); + cell.setCellValue(value1); + boolean bold = false; + if (dv.isBold()) { + if ((dv.getDisplayTotal() != null && dv.getDisplayTotal().equals("SUM(")) + || (dv.getColName() != null && dv.getColName().indexOf("999") != -1)) { + if (value1 != null && (value1.trim().startsWith("$")) + || (value.toString().trim().startsWith("-$"))) { + cell.setCellStyle(styleCurrencyTotal); + } else { + cell.setCellStyle(styleTotal); + } + } else { + cell.setCellStyle(styleDefaultTotal); + } + bold = true; + } + } + } + } catch (SQLException ex) { + logger.error(EELFLoggerDelegate.errorLogger, "SQLException occured ", ex); + throw new RaptorException(ex); + } catch (ReportSQLException ex) { + logger.error(EELFLoggerDelegate.errorLogger, "ReportSQLException occured ", ex); + throw new RaptorException(ex); + } catch (Exception ex) { + logger.error(EELFLoggerDelegate.errorLogger, "Exception occured ", ex); + if (!(ex.getCause() instanceof java.net.SocketException)) + throw new RaptorException(ex); + } + } else { + if (rr.getReportType().equals(AppConstants.RT_LINEAR)) { + StringBuffer value = new StringBuffer(); + int rowCount = 0; + DataRow dr = new DataRow(); + for (rd.reportDataRows.resetNext(); rd.reportDataRows.hasNext();) { + dr = rd.reportDataRows.getNext(); + rowCount++; + row = sheet.createRow(rowNum); + cellNum = -1; + if (rr.getReportType().equals(AppConstants.RT_LINEAR) && rd.reportTotalRowHeaderCols != null) { + rd.reportRowHeaderCols.resetNext(0); + if (rd.reportTotalRowHeaderCols != null) { + } + } else { + rd.reportRowHeaderCols.resetNext(0); + } + for (; rd.reportRowHeaderCols.hasNext();) { + cellNum += 1; + RowHeaderCol rhc = rd.reportRowHeaderCols.getNext(); + if (firstPass) + rhc.resetNext(); + RowHeader rh = rhc.getNext(); + row.createCell((short) cellNum).setCellValue(strip.stripHtml(rh.getRowTitle())); + row.getCell((short) cellNum).setCellStyle(styleDefault); + if (cellWidth.size() > 0) { + if (((Integer) cellWidth.get(cellNum)).intValue() < rh.getRowTitle() + .length()) + cellWidth.set(cellNum, new Integer(rh.getRowTitle().length())); + } else + cellWidth.add(cellNum, new Integer(rh.getRowTitle().length())); + } + firstPass = false; + int j = 0; + DataValue dv = new DataValue(); + for (dr.resetNext(); dr.hasNext(); j++) { + value.delete(0, value.length()); + dv = dr.getNext(); + styleCell = null; + boolean bold = false; + if(Utils.isRemoveLinkToEligible(dv.getDisplayValue())) { + value.append(StringUtils.substringBefore(Utils.removeLinkToForDownload(nvl(dv.getDisplayValue())), ",")); + } else { + value.append(dv.getDisplayValue()); + } + HtmlFormatter htmlFormat = dv.getCellFormatter(); + if ((dr.isRowFormat() && !dv.isCellFormat()) && styles != null) + styleCell = (HSSFCellStyle) styles.get(nvl(dr.getFormatId(), DEFAULT)); + if (htmlFormat != null && dv.getFormatId() != null && styles != null) + styleCell = (HSSFCellStyle) styles.get(nvl(dv.getFormatId(), DEFAULT)); + if (dv.isVisible()) { + cellNum += 1; + cell = row.createCell((short) cellNum); + String dataType = (String) (dataTypeMap.get(dv.getColId())); + if (dataType != null && dataType.equals("NUMBER")) { + int zInt = 0; + if (value.equals("null")) { + cell.setCellValue(zInt); + } else { + if ((value.indexOf(".")) != -1) { + if ((value.toString().trim().startsWith("$")) || (value.toString().trim().startsWith("-$"))) { + String tempDollar = value.toString().trim(); + tempDollar = tempDollar.replaceAll(" ", "").substring(0); + tempDollar = tempDollar.replaceAll("\\$", "").substring(0); + if ((tempDollar.indexOf(",")) != -1) { + tempDollar = tempDollar.replaceAll(",", ""); + } + double tempDoubleDollar = 0.0; + try { + tempDoubleDollar = Double.parseDouble(tempDollar); + if (styleCell != null) { + styleCell.setDataFormat((short) 8);// HSSFDataFormat.getBuiltinFormat("($#,##0.00_);[Red]($#,##0.00)")); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleCurrencyDecimalNumber); + cell.setCellValue(tempDoubleDollar); + } catch (NumberFormatException ne) { + if (styleCell != null) { + styleCell.setWrapText(true); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDefault); + cell.setCellValue(tempDollar); + } + } else { + double tempDouble = 0.0; + try { + tempDouble = Double.parseDouble(value.toString()); + if (styleCell != null) { + styleCell.setDataFormat((short) 0x28);// HSSFDataFormat.getBuiltinFormat("(#,##0.00_);[Red](#,##0.00)")); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDecimalNumber); + cell.setCellValue(tempDouble); + } catch (NumberFormatException ne) { + if (styleCell != null) { + styleCell.setWrapText(true); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDefault); + cell.setCellValue(value.toString()); + } + } + } else { + if (!(value.equals(""))) { + if ((value.toString().trim().startsWith("$")) || (value.toString().trim().startsWith("-$"))) { + String tempInt = value.toString().trim(); + tempInt = tempInt.replaceAll(" ", "").substring(0); + tempInt = tempInt.replaceAll("\\$", "").substring(0); + if ((tempInt.indexOf(",")) != -1) { + tempInt = tempInt.replaceAll(",", ""); + } + Long tempIntDollar = 0L; + try { + tempIntDollar = Long.parseLong(tempInt); + if (styleCell != null) { + styleCell.setDataFormat((short) 6);// HSSFDataFormat.getBuiltinFormat("($#,##0_);[Red]($#,##0)")); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleCurrencyNumber); + cell.setCellValue(tempIntDollar); + } catch (NumberFormatException ne) { + if (styleCell != null) { + styleCell.setWrapText(true); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDefault); + cell.setCellValue(tempInt); + } + } else { + String tempStr = value.toString().trim(); + if ((tempStr.indexOf(",")) != -1) { + tempStr = tempStr.replaceAll(",", ""); + } + Long temp = 0L; + try { + temp = Long.parseLong(tempStr); + if (styleCell != null) { + styleCell.setDataFormat((short) 0x26);// HSSFDataFormat.getBuiltinFormat("(#,##0_);[Red](#,##0)")); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleNumber); + cell.setCellValue(temp); + } catch (NumberFormatException ne) { + if (styleCell != null) { + styleCell.setWrapText(true); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDefault); + cell.setCellValue(tempStr); + } + } + } + } + } + } else if ((dataType != null && dataType.equals("DATE")) + || (dv.getDisplayName() != null + && dv.getDisplayName().toLowerCase().endsWith("date")) + || + (dv.getColId() != null && dv.getColId().toLowerCase().endsWith("date")) || + (dv.getColName() != null && dv.getColName().toLowerCase().endsWith("date"))) { + + if (styleCell != null) { + styleCell.setDataFormat((short) 0xe); // HSSFDataFormat.getBuiltinFormat("m/d/yy")); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDate); + Date date = null; + int flag = 0; + date = MMDDYYHHMMSSFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yy h:mm:ss")); + flag = 1; + } + if (date == null) + date = MMDDYYHHMMFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yy h:mm")); + flag = 1; + } + if (date == null) + date = MMDDYYYYFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yyyy")); + flag = 1; + } + if (date == null) + date = MMDDYYYYHHMMSSFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yyyy h:mm:ss")); + flag = 1; + } + if (date == null) + date = MMDDYYYYHHMMFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yyyy h:mm")); + flag = 1; + } + if (date == null) + date = MMDDYYFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yy")); + flag = 1; + } + if (date == null) + date = YYYYMMDDFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("yyyy/m/d")); + flag = 1; + } + if (date == null) + date = timestampFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("yyyy-m-d h:mm:ss")); // yyyy-MM-dd + // HH:mm:ss + flag = 1; + } + if (date == null) + date = MONYYYYFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("mmm yyyy")); + flag = 1; + } + if (date == null) + date = MMYYYYFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/yyyy")); + flag = 1; + } + if (date == null) + date = MMMMMDDYYYYFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("mmm/d/yyyy")); + flag = 1; + } + if (date == null) + date = MONTHYYYYFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("mmm/yyyy")); + flag = 1; + } + if (date == null) + date = YYYYMMDDHHMMSSFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("yyyy/m/d h:mm:ss")); + flag = 1; + } + if (date == null) + date = YYYYMMDDDASHFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("yyyy-m-d")); + flag = 1; + } + if (date == null) + date = YYYYMMDDHHMMFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("yyyy/m/d h:mm")); + flag = 1; + } + if (date == null) + date = DDMONYYYYHHMMSSFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("d-mmm-yyyy h:mm:ss")); + flag = 1; + } + if (date == null) + date = DDMONYYYYHHMMFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("d-mmm-yyyy h:mm")); + flag = 1; + } + if (date == null) + date = DDMONYYHHMMFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("d-mmm-yy h:mm")); + flag = 1; + } + if (date == null) + date = DDMONYYYYFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("d-mmm-yyyy")); + flag = 1; + } + if (date == null) + date = MMDDYYHHMMSSFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yy h:mm:ss")); + flag = 1; + } + if (date == null) + date = MMDDYYHHMMFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yy h:mm")); + flag = 1; + } + if (date == null) + date = MMDDYYFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yy")); + flag = 1; + } + if (date == null) + date = MMDDYYHHMMFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yy h:mm")); + flag = 1; + } + if (date == null) + date = MMDDYYHHMMSSFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yy h:mm:ss")); + flag = 1; + } + if (date == null) + date = MMDDYYYYHHMMZFormat.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yyyy h:mm")); + flag = 1; + } + if (date == null) + date = MMMMMDDYYYYHHMMSS.parse(value.toString(), new ParsePosition(0)); + if (date != null && flag == 0) { + cell.getCellStyle().setDataFormat( + createHelper.createDataFormat().getFormat("m/d/yyyy h:mm")); + flag = 1; + } + if (date != null) { + cell.setCellValue(HSSFDateUtil.getExcelDate(date)); + cell.setCellValue(value.toString()); + } else { + cell.setCellValue(value.toString()); + } + } else if ((dv.getDisplayTotal() != null && dv.getDisplayTotal().equals("SUM(")) + || (dv.getColName() != null && dv.getColName().indexOf("999") != -1)) { + cell = row.createCell((short) cellNum); + int zInt = 0; + if (value.equals("null")) { + cell.setCellValue(zInt); + } else { + + if ((value.indexOf(".")) != -1) { + if ((value.toString().startsWith("$")) || (value.toString().trim().startsWith("-$"))) { + String tempDollar = value.toString().trim(); + tempDollar = tempDollar.replaceAll(" ", "").substring(0); + tempDollar = tempDollar.replaceAll("\\$", "").substring(0); + if ((tempDollar.indexOf(",")) != -1) { + tempDollar = tempDollar.replaceAll(",", ""); + } + double tempDoubleDollar = 0.0; + try { + tempDoubleDollar = Double.parseDouble(tempDollar); + if (styleCell != null) { + styleCell.setDataFormat((short) 8);// HSSFDataFormat.getBuiltinFormat("($#,##0.00_);[Red]($#,##0.00)")); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleCurrencyDecimalNumber); + cell.setCellValue(tempDoubleDollar); + } catch (NumberFormatException ne) { + if (styleCell != null) { + styleCell.setWrapText(true); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDefault); + cell.setCellValue(tempDollar); + } + } else { + String tempDoubleStr = value.toString().trim(); + tempDoubleStr = tempDoubleStr.replaceAll(" ", "").substring(0); + if ((tempDoubleStr.indexOf(",")) != -1) { + tempDoubleStr = tempDoubleStr.replaceAll(",", ""); + } + double tempDouble = 0.0; + try { + tempDouble = Double.parseDouble(tempDoubleStr); + if (styleCell != null) { + styleCell.setDataFormat((short) 0x28); // for decimal + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDecimalNumber); + cell.setCellValue(tempDouble); + } catch (NumberFormatException ne) { + if (styleCell != null) { + styleCell.setWrapText(true); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDefault); + cell.setCellValue(tempDoubleStr); + } + } + } else { + if (!(value.equals(""))) { + if ((value.toString().trim().startsWith("$")) || (value.toString().trim().startsWith("-$"))) { + String tempInt = value.toString().trim(); + tempInt = tempInt.replaceAll(" ", "").substring(0); + tempInt = tempInt.replaceAll("\\$", "").substring(0); + if ((tempInt.indexOf(",")) != -1) { + tempInt = tempInt.replaceAll(",", ""); + } + Long tempIntDollar = 0L; + try { + tempIntDollar = Long.parseLong(tempInt); + if (styleCell != null) { + styleCell.setDataFormat((short) 6); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleCurrencyNumber); + cell.setCellValue(tempIntDollar); + } catch (NumberFormatException ne) { + if (styleCell != null) { + styleCell.setWrapText(true); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDefault); + cell.setCellValue(tempInt); + } + } else { + // styleDefault.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0.00")); + String tempStr = value.toString().trim(); + if ((tempStr.indexOf(",")) != -1) { + tempStr = tempStr.replaceAll(",", ""); + } + Long temp = 0L; + + try { + temp = Long.parseLong(tempStr); + if (styleCell != null) { + styleCell.setDataFormat((short) 0x26); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleNumber); + cell.setCellValue(temp); + } catch (NumberFormatException ne) { + if (styleCell != null) { + styleCell.setWrapText(true); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDefault); + cell.setCellValue(tempStr); + } + } + } else { + if (styleCell != null) { + styleCell.setWrapText(true); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDefault); + } + } + } + } else { + if (styleCell != null) { + styleCell.setWrapText(true); + cell.setCellStyle(styleCell); + } else + cell.setCellStyle(styleDefault); + cell.setCellValue(strip.stripHtml(value.toString())); + } + if (cellWidth.size() > cellNum) { + if (((Integer) cellWidth.get(cellNum)).intValue() < dv + .getDisplayValue().length()) + cellWidth.set((cellNum), + (value.length() <= Globals.getMaxCellWidthInExcel()) + ? new Integer(value.length()) + : new Integer(Globals.getMaxCellWidthInExcel())); + } else + cellWidth.add((cellNum), + (value.length() <= Globals.getMaxCellWidthInExcel()) + ? new Integer(value.length()) + : new Integer(Globals.getMaxCellWidthInExcel())); + if (dv.isBold()) { + if ((dv.getDisplayTotal() != null && dv.getDisplayTotal().equals("SUM(")) + || (dv.getColName() != null && dv.getColName().indexOf("999") != -1)) { + if (value != null && (value.toString().trim().startsWith("$")) + || (value.toString().trim().startsWith("-$"))) { + cell.setCellStyle(styleCurrencyTotal); + } else { + cell.setCellStyle(styleTotal); + } + } else { + cell.setCellStyle(styleDefaultTotal); + } + bold = true; + } + if ((dr.isRowFormat() && !dv.isCellFormat()) && styles != null) { + continue; + } + if (htmlFormat != null && dv.getFormatId() != null && bold == false + && styles != null) { + } + } + } + rowNum += 1; + int cw = 0; + for (int i = 0; i < cellWidth.size(); i++) { + cw = ((Integer) cellWidth.get(i)).intValue() + 12; + sheet.setColumnWidth((short) (i), (short) ((cw * 8) / ((double) 1 / 20))); + + } + + } + // To Display Total Values for Linear report + if (rd.reportDataTotalRow != null) { + row = sheet.createRow(rowNum); + cellNum = -1; + rd.reportTotalRowHeaderCols.resetNext(); + cellNum += 1; + RowHeaderCol rhc = rd.reportTotalRowHeaderCols.getNext(); + RowHeader rh = rhc.getRowHeader(0); + row.createCell((short) cellNum).setCellValue(strip.stripHtml(rh.getRowTitle())); + row.getCell((short) cellNum).setCellStyle(styleDefaultTotal); + rd.reportDataTotalRow.resetNext(); + DataRow drTotal = rd.reportDataTotalRow.getNext(); + drTotal.resetNext(); + drTotal.getNext(); + DataValue dv = new DataValue(); + for (; drTotal.hasNext();) { + cellNum += 1; + cell = row.createCell((short) cellNum); + dv = drTotal.getNext(); + String value1 = dv.getDisplayValue(); + cell.setCellValue(value1); + boolean bold = false; + if (dv.isBold()) { + if ((dv.getDisplayTotal() != null && dv.getDisplayTotal().equals("SUM(")) + || (dv.getColName() != null && dv.getColName().indexOf("999") != -1)) { + if (value1 != null && (value1.trim().startsWith("$")) + || (value1.trim().startsWith("-$"))) { + cell.setCellStyle(styleCurrencyTotal); + } else { + cell.setCellStyle(styleTotal); + } + } else { + cell.setCellStyle(styleDefaultTotal); + } + bold = true; + } + } + } + } else if (rr.getReportType().equals(AppConstants.RT_CROSSTAB)) { // Linear + int rowCount = 0; + List l = rd.getReportDataList(); + boolean first = true; + for (int dataRow = 0; dataRow < l.size(); dataRow++) { + DataRow dr = (DataRow) l.get(dataRow); + row = sheet.createRow(rowNum); + cellNum = -1; + first = true; + Vector rowNames = dr.getRowValues(); + for (dr.resetNext(); dr.hasNext(); rowCount++) { + if (first) { + if (rowNames != null) { + for (int i = 0; i < rowNames.size(); i++) { + DataValue dv = rowNames.get(i); + cellNum += 1; + row.createCell((short) cellNum).setCellValue(strip.stripHtml(dv.getDisplayValue())); + row.getCell((short) cellNum).setCellStyle(styleDefault); + } + } + } + first = false; + DataValue dv = dr.getNext(); + if (dv.isVisible()) { + String value = dv.getDisplayValue(); + if (value.indexOf("|#") != -1) + value = value.substring(0, value.indexOf("|")); + + if (dr.isRowFormat() || nvl(dv.getFormatId()).length() > 0) { + cellNum += 1; + row.createCell((short) cellNum).setCellValue(strip.stripHtml(dv.getDisplayValue())); + if (nvl(dv.getFormatId()).length() > 0) + row.getCell((short) cellNum) + .setCellStyle((HSSFCellStyle) styles.get(nvl(dv.getFormatId(), DEFAULT))); + else + row.setRowStyle((HSSFCellStyle) styles.get(nvl(dr.getFormatId(), DEFAULT))); + } else { + cellNum += 1; + row.createCell((short) cellNum).setCellValue(strip.stripHtml(value)); + row.getCell((short) cellNum).setCellStyle(styleDefault); + } // end + value = dv.getDisplayValue(); + if (value.indexOf("|#") != -1) { + String color = value.substring(value.indexOf("|") + 1); + if (color.equals("#FF0000")) + row.getCell((short) cellNum).setCellStyle((HSSFCellStyle) styles.get(RED)); + else if (color.equals("#008000")) + row.getCell((short) cellNum).setCellStyle((HSSFCellStyle) styles.get(GREEN)); + else if (color.equals("#FFFF00")) + row.getCell((short) cellNum).setCellStyle((HSSFCellStyle) styles.get(YELLOW)); + else { + row.getCell((short) cellNum).setCellStyle((HSSFCellStyle) styles.get(DEFAULT)); + } + } + } + } + rowNum += 1; + int cw = 0; + for (int i = 0; i < cellWidth.size(); i++) { + cw = ((Integer) cellWidth.get(i)).intValue() + 12; + sheet.setColumnWidth((short) (i), (short) ((cw * 8) / ((double) 1 / 20))); + } + } + } + } + String footer = (String) session.getAttribute("FOOTER_" + index); + if (nvl(footer).length() > 0) { + footer = Utils.replaceInString(footer, "
", " "); + footer = Utils.replaceInString(footer, "
", " "); + footer = Utils.replaceInString(footer, "
", " "); + footer = strip.stripHtml(nvl(footer).trim()); + row = sheet.createRow(rowNum); + cellNum = 0; + row.createCell((short) cellNum).setCellValue(footer); + sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, (short) cellNum, (short) (columnRows))); + rowNum += 1; + } + if (Globals.getShowDisclaimer() && !Globals.disclaimerPositionedTopInCSVExcel()) { + + rowNum += 1; + row = sheet.createRow(rowNum); + cellNum = 0; + String disclaimer = Globals.getFooterFirstLine() + " " + Globals.getFooterSecondLine(); + row.createCell((short) cellNum).setCellValue(disclaimer); + sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, (short) cellNum, (short) (columnRows))); + rowNum += 1; + } + logger.debug(EELFLoggerDelegate.debugLogger, ("##### Heap utilization statistics [MB] #####")); + logger.debug(EELFLoggerDelegate.debugLogger, ("Used Memory:" + + (runtime.maxMemory() - runtime.freeMemory()) / mb)); + logger.debug(EELFLoggerDelegate.debugLogger, ("Free Memory:" + + runtime.freeMemory() / mb)); + logger.debug(EELFLoggerDelegate.debugLogger, ("Total Memory:" + runtime.totalMemory() / mb)); + logger.debug(EELFLoggerDelegate.debugLogger, ("Max Memory:" + runtime.maxMemory() / mb)); + return returnValue; + } + + private void paintExcelParamsXls(final HSSFWorkbook wb, int rowNum, final int col, final List paramsList, + final String customizedParamInfo, final HSSFSheet sheet, final String reportTitle, final String reportDescr) + throws IOException { + int cellNum = 0; + HSSFRow row = null; + short s1 = 0; + short s2 = (short) 1; + HSSFCellStyle styleName = wb.createCellStyle(); + styleName.setFillForegroundColor(HSSFColor.HSSFColorPredefined.GREY_25_PERCENT.getIndex()); + styleName.setAlignment(HorizontalAlignment.CENTER); + styleName.setBorderBottom(BorderStyle.THIN); + styleName.setBorderTop(BorderStyle.THIN); + styleName.setBorderRight(BorderStyle.THIN); + styleName.setBorderLeft(BorderStyle.THIN); + styleName.setDataFormat((short) 0); + HSSFFont font = wb.createFont(); + font.setFontHeight((short) (FONT_SIZE / 0.05)); + font.setFontName(FONT_TAHOMA); + font.setColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex()); + font.setBold(true); + styleName.setFont(font); + HSSFFont fontDefault = wb.createFont(); + fontDefault.setColor((short) HSSFFont.COLOR_NORMAL); + fontDefault.setFontHeight((short) (FONT_SIZE / 0.05)); + fontDefault.setFontName(FONT_TAHOMA); + fontDefault.setItalic(true); + HSSFCellStyle styleValue = wb.createCellStyle(); + styleValue.setDataFormat((short) 0); + styleValue.setAlignment(HorizontalAlignment.CENTER); + styleValue.setBorderBottom(BorderStyle.THIN); + styleValue.setBorderTop(BorderStyle.THIN); + styleValue.setBorderLeft(BorderStyle.THIN); + styleValue.setBorderRight(BorderStyle.THIN); + // styleValue.setFillForegroundColor(HSSFColor.HSSFColorPredefined.YELLOW.getIndex()); + styleValue.setFillPattern(fillPattern.NO_FILL); + styleValue.setFont(fontDefault); + HSSFCell cell = null; + HSSFCellStyle styleDescription = wb.createCellStyle(); + styleDescription.setAlignment(HorizontalAlignment.CENTER); + + HSSFFont fontDescr = wb.createFont(); + fontDescr.setFontHeight((short) (FONT_SIZE / 0.05)); // 14 + fontDescr.setFontName(FONT_TAHOMA); + fontDescr.setColor(HSSFColor.HSSFColorPredefined.BLACK.getIndex()); + fontDescr.setBold(true); + styleDescription.setFont(font); + HSSFCell cellDescr = null; + int paramSeq = 0; + Header header = sheet.getHeader(); + StringBuilder strBuf = new StringBuilder(); + if (!Globals.customizeFormFieldInfo() || customizedParamInfo.length() <= 0) { + for (Iterator iter = paramsList.iterator(); iter.hasNext();) { + IdNameValue value = (IdNameValue) iter.next(); + if (nvl(value.getId()).trim().length() > 0 && (!nvl(value.getId()).trim().equals("BLANK"))) { + paramSeq += 1; + if (paramSeq <= 1) { + row = sheet.createRow(++rowNum); + cell = row.createCell((short) 0); + sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, s1, s2)); + cellDescr = row.createCell((short) 0); + cellDescr.setCellValue(RUNTIME_PARAMETERS); + cellDescr.setCellStyle(styleDescription); + strBuf.append(reportTitle + "\n"); + } + row = sheet.createRow(++rowNum); + cellNum = 0; + cell = row.createCell((short) cellNum); + cell.setCellValue(value.getId()); + cell.setCellStyle(styleName); + cellNum += 1; + cell = row.createCell((short) cellNum); + cell.setCellValue(value.getName().replaceAll("~", ",")); + cell.setCellStyle(styleValue); + } + } // for + } else { + strBuf.append(reportTitle + "\n"); + Document document = new Document(); + document.open(); + HTMLWorker worker = new HTMLWorker(document); + StyleSheet style = new StyleSheet(); + style.loadTagStyle("body", "leading", "16,0"); + ArrayList p = HTMLWorker.parseToList(new StringReader(customizedParamInfo), style); + String name = ""; + String token = ""; + String value = ""; + String s = ""; + PdfPTable pdfTable = null; + for (int k = 0; k < p.size(); ++k) { + if (p.get(k) instanceof Paragraph) + s = ((Paragraph) p.get(k)).toString(); + else { + pdfTable = ((PdfPTable) p.get(k)); + } + + s = s.replaceAll(",", "|"); + s = s.replaceAll("~", ","); + if (s.indexOf(":") != -1) { + row = sheet.createRow(++rowNum); + cell = row.createCell((short) 0); + sheet.addMergedRegion(new CellRangeAddress(rowNum, rowNum, s1, s2)); + cellDescr = row.createCell((short) 0); + cellDescr.setCellValue(RUNTIME_PARAMETERS); + cellDescr.setCellStyle(styleDescription); + StringTokenizer st = new StringTokenizer(s.trim(), "|"); + while (st.hasMoreTokens()) { + token = st.nextToken(); + token = token.trim(); + if (!(token.trim().equals("|") || token.trim().equals("]]") || token.trim().equals("]") + || token.trim().equals("["))) { + if (token.endsWith(":")) { + name = token; + name = name.substring(0, name.length() - 1); + if (name.startsWith("[")) + name = name.substring(1); + value = st.nextToken(); + if (nvl(value).endsWith("]")) + value = nvl(value).substring(0, nvl(value).length() - 1); + } + if (name != null && name.trim().length() > 0) { + row = sheet.createRow((short) ++rowNum); + cellNum = 0; + cell = row.createCell((short) cellNum); + cell.setCellValue(name.trim()); + cell.setCellStyle(styleName); + cellNum += 1; + cell = row.createCell((short) cellNum); + cell.setCellValue(value.trim()); + cell.setCellStyle(styleValue); + } + if (name != null && (sheet.getColumnWidth((short) 0) < (short) name.trim().length())) { + sheet.setColumnWidth((short) 0, (short) name.trim().length()); + } + if (sheet.getColumnWidth((short) 1) < (short) value.trim().length()) { + sheet.setColumnWidth((short) 1, (short) value.trim().length()); + } + name = ""; + value = ""; + } + try { + SimpleDateFormat oracleDateFormat = new SimpleDateFormat("MM/dd/yyyy kk:mm:ss"); + Date sysdate = oracleDateFormat.parse(ReportLoader.getSystemDateTime()); + SimpleDateFormat dtimestamp = new SimpleDateFormat(Globals.getScheduleDatePattern()); + row = sheet.createRow((short) ++rowNum); + cellNum = 0; + cell = row.createCell((short) cellNum); + cell.setCellValue("Report Date/Time"); + cell.setCellStyle(styleName); + cellNum += 1; + cell = row.createCell((short) cellNum); + cell.setCellValue(dtimestamp.format(sysdate) + " " + Globals.getTimeZone()); + cell.setCellStyle(styleValue); + } catch (Exception ex) { + logger.error(EELFLoggerDelegate.errorLogger, "Excetion in paintExcelParams", ex); + } + } + } + + } // if + Iterator iterCheck = paramsList.iterator(); + if (iterCheck.hasNext()) { + rowNum += 2; + row = sheet.createRow(rowNum); + } + header.setCenter(HSSFHeader.font(FONT_TAHOMA, "") + HSSFHeader.fontSize((short) 9) + " " + strBuf.toString()); + Footer footer = sheet.getFooter(); + footer.setLeft(HSSFFooter.font(FONT_TAHOMA, "") + HSSFFooter.fontSize((short) 9) + "Page " + HSSFFooter.page() + + " of " + HSSFFooter.numPages()); + footer.setCenter( + HSSFFooter.font(FONT_TAHOMA, "") + HSSFFooter.fontSize((short) 9) + Globals.getFooterFirstLine() + + "\n" + Globals.getFooterSecondLine()); + } + } + + private void paintExcelFooterXls(HSSFWorkbook wb, int rowNum, int col, HSSFSheet sheet) { + logger.debug(EELFLoggerDelegate.debugLogger, ("excel footer")); + Footer footer = sheet.getFooter(); + footer.setLeft(HSSFFooter.font(FONT_TAHOMA, "") + HSSFFooter.fontSize((short) FONT_FOOTER_SIZE) + "Page " + + HSSFFooter.page() + + " of " + HSSFFooter.numPages()); + footer.setCenter(HSSFFooter.font(FONT_TAHOMA, "") + HSSFFooter.fontSize((short) FONT_FOOTER_SIZE) + + Globals.getFooterFirstLine() + "\n" + Globals.getFooterSecondLine()); + + logger.debug(EELFLoggerDelegate.debugLogger, ("Done")); + } + +} \ No newline at end of file diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/base/ReportWrapper.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/base/ReportWrapper.java index 4037bd0e..65972806 100644 --- a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/base/ReportWrapper.java +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/base/ReportWrapper.java @@ -3582,7 +3582,6 @@ public class ReportWrapper extends org.onap.portalsdk.analytics.RaptorObject imp String dbType = ""; String partSql = ""; String reportSQL = getWholeSQL(); - if (!CachingUtils.isReportSqlExists(request.getSession().getId()+reportSQL)) { if (!isNull(dbInfo) && (!dbInfo.equals(AppConstants.DB_LOCAL))) { try { dbType = remDbInfo.getDBType(dbInfo); @@ -3616,9 +3615,6 @@ public class ReportWrapper extends org.onap.portalsdk.analytics.RaptorObject imp } } } - if (nvl(reportSQL).trim().toUpperCase().startsWith("SELECT")) { - - } } StringBuffer colNames = new StringBuffer(); StringBuffer colExtraIdNames = new StringBuffer(); @@ -3677,8 +3673,7 @@ public class ReportWrapper extends org.onap.portalsdk.analytics.RaptorObject imp if ("DAYTONA".equals(dbType) && reportSQL.trim().toUpperCase().startsWith("SELECT")) { if (endRow == -1) - endRow = (getMaxRowsInExcelDownload() > 0) ? getMaxRowsInExcelDownload() - : Globals.getDownloadLimit(); + endRow = (getMaxRowsInExcelDownload() > 0) ? getMaxRowsInExcelDownload() : Globals.getDownloadLimit(); reportSQL = reportSQL + " LIMIT TO " + (startRow == 0 ? startRow + 1 : startRow) + "->" + endRow; return reportSQL; } else if ("DAYTONA".equals(dbType)) { @@ -3720,15 +3715,9 @@ public class ReportWrapper extends org.onap.portalsdk.analytics.RaptorObject imp CachingUtils.putPageSql(request.getSession().getId()+getWholeSQL(), partSql); CachingUtils.putReportSql(request.getSession().getId()+getWholeSQL(), reportSQL); - }else { if (!AppUtils.isNotEmpty(getDBType())) { setDBType(Globals.getDBType()); } - } - if(startRow >= 0 && CachingUtils.isReportSqlExists(request.getSession().getId()+getWholeSQL()) ) { - partSql = CachingUtils.getPageSql(request.getSession().getId()+getWholeSQL()); - reportSQL = CachingUtils.getReportSql(request.getSession().getId()+getWholeSQL()); - } if (getDBType().equals(AppConstants.MYSQL)) { partSql = partSql + " LIMIT " + String.valueOf(startRow) + " , " + String.valueOf(endRow); @@ -3739,7 +3728,6 @@ public class ReportWrapper extends org.onap.portalsdk.analytics.RaptorObject imp partSql = partSql + " LIMIT " + String.valueOf(endRow) + " , " + String.valueOf(startRow); } - reportSQL += partSql; return reportSQL; diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/runtime/FormField.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/runtime/FormField.java index e8bd9295..9a2233e3 100644 --- a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/runtime/FormField.java +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/runtime/FormField.java @@ -160,7 +160,7 @@ public class FormField extends org.onap.portalsdk.analytics.RaptorObject impleme public static final String VT_DATE = "DATE"; - public static final String VT_TIMESTAMP_HR = "TIMESTAMP_HR"; + public static final String VT_TIMESTAMP_HR = "TIMESTAMP_HOUR"; public static final String VT_TIMESTAMP_MIN = "TIMESTAMP_MIN"; diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/runtime/ReportJSONRuntime.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/runtime/ReportJSONRuntime.java index de5c892b..384caf1e 100644 --- a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/runtime/ReportJSONRuntime.java +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/runtime/ReportJSONRuntime.java @@ -524,8 +524,15 @@ public class ReportJSONRuntime { private int numFormCols; private String message; private boolean hideFormFieldsAfterRun; + private Long totalRunTime; + public Long getTotalRunTime() { + return totalRunTime; + } + public void setTotalRunTime(Long totalRunTime) { + this.totalRunTime = totalRunTime; + } public boolean isChartAvailable() { return chartAvailable; } diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/runtime/ReportParamValuesForPDFExcel.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/runtime/ReportParamValuesForPDFExcel.java index 62d95efb..9d612141 100644 --- a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/runtime/ReportParamValuesForPDFExcel.java +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/runtime/ReportParamValuesForPDFExcel.java @@ -170,10 +170,19 @@ public class ReportParamValuesForPDFExcel extends Hashtable { if(sql!=null && sql.trim().length()>0){ if(name.equals(ff.getFieldName())){ + if(value.equalsIgnoreCase("('')")) { + sql = Utils.replaceInString(sql, "[VALUE]", value); + } + else { sql = Utils.replaceInString(sql, "[VALUE]", ESAPI.encoder().encodeForSQL( SecurityCodecUtil.getCodec(),value)); } + } if(name.equals(ff1.getFieldName())){ + if(value.equalsIgnoreCase("('')")) { + sql = Utils.replaceInString(sql, "["+ff1.getFieldDisplayName()+"]", value); + } else { sql = Utils.replaceInString(sql, "["+ff1.getFieldDisplayName()+"]", ESAPI.encoder().encodeForSQL( SecurityCodecUtil.getCodec(),value)); + } } else continue; } diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/runtime/ReportRuntime.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/runtime/ReportRuntime.java index 987a8227..1afd629c 100644 --- a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/runtime/ReportRuntime.java +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/runtime/ReportRuntime.java @@ -56,6 +56,7 @@ import java.util.regex.Pattern; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.commons.lang.StringUtils; +import org.apache.jcs.engine.CacheUtils; import org.onap.portalsdk.analytics.error.RaptorException; import org.onap.portalsdk.analytics.model.DataCache; import org.onap.portalsdk.analytics.model.ReportHandler; @@ -183,6 +184,16 @@ public class ReportRuntime extends ReportWrapper implements Cloneable, Serializa private int DATE_OPTION = -1; + private boolean fromDashBoard = false; + + + public boolean isFromDashBoard() { + return fromDashBoard; + } + + public void setFromDashBoard(boolean fromDashBoard) { + this.fromDashBoard = fromDashBoard; + } public boolean isSinglePageDownload() { return isSinglePageDownload; @@ -622,11 +633,16 @@ public class ReportRuntime extends ReportWrapper implements Cloneable, Serializa public ReportData loadReportData(int pageNo, String userId, int downloadLimit, HttpServletRequest request, boolean download) throws RaptorException { ReportData rd = null; boolean isGoBackAction = AppUtils.getRequestFlag(request, AppConstants.RI_GO_BACK); + boolean isPageDowload = Boolean.valueOf(request.getParameter(AppConstants.PAGE_DOWNLOAD)); if (pageNo >= 0) if (pageNo == cachedPageNo && pageDataCache != null) rd = pageDataCache; if(isGoBackAction && rd!=null) return rd; + if(isPageDowload && pageDataCache != null) { + rd = pageDataCache; + return rd; + } if (rd == null) { if (getReportType().equals(AppConstants.RT_CROSSTAB)) rd = loadCrossTabReportData(pageNo, userId, downloadLimit, request, download); @@ -936,7 +952,11 @@ public class ReportRuntime extends ReportWrapper implements Cloneable, Serializa long startTime = System.currentTimeMillis(); logger.info("Session ID: " + request.getSession().getId()); boolean isSameSession = false; - + boolean isChildReport = false; + if(request.getParameter(AppConstants.CHILD_REPORT) != null) { + isChildReport = Boolean.valueOf(request.getParameter(AppConstants.CHILD_REPORT)); + } + //setFromDashBoard(isChildReport); String action = nvl(request.getParameter(AppConstants.RI_ACTION), request.getParameter("action"));; String reportSQL = ""; if(action.endsWith("session")) { @@ -1028,13 +1048,19 @@ public class ReportRuntime extends ReportWrapper implements Cloneable, Serializa if (ds.getRowCount() < getPageSize() && pageNo == 0) { setReportDataSize(ds.getRowCount()); } else { - if (CachingUtils.isTotalCountAvailable(request.getSession().getId() + wholeSQL) && !download) { + if (pageNo > 0 && CachingUtils.isTotalCountAvailable(request.getSession().getId() + wholeSQL) && !download) { setReportDataSize(CachingUtils.getTotalRowsCount(request.getSession().getId() + wholeSQL)); } else { DataSet countData = null; + if (!fromDashBoard) { + if(!isChildReport) { countData = ConnectionUtils.getDataSet(SQLForCount, dbInfo); setReportDataSize(countData.getInt(0, 0)); CachingUtils.cacheTotalRowCount(request.getSession().getId() + wholeSQL, countData.getInt(0, 0)); + } else { + setReportDataSize(ds.getRowCount()); + } + } } } if(doesReportContainsGroupFormField()) { @@ -1182,6 +1208,7 @@ public class ReportRuntime extends ReportWrapper implements Cloneable, Serializa } } } + //} String widthInPxls = dc.getDisplayWidthInPxls(); @@ -1218,9 +1245,9 @@ public class ReportRuntime extends ReportWrapper implements Cloneable, Serializa DataColumnType dct = (DataColumnType) reportCols.get(c); DataValue dv = new DataValue(); dr.addDataValue(dv); - String reverseDispalyValue = reverseDisplayValue(ds.getString(r, ds.getColumnIndex(dct.getColId()))); + String reverseDispalyValue = Utils.removeLinkToForDownload(ds.getString(r, ds.getColumnIndex(dct.getColId()))); reverseDispalyValue = StringUtils.substringBefore(reverseDispalyValue, ","); - if(download) + if(download && Utils.isRemoveLinkToEligible(ds.getString(r, ds.getColumnIndex(dct.getColId())))) dv.setDisplayValue(reverseDispalyValue); else dv.setDisplayValue(ds.getString(r, ds.getColumnIndex(dct.getColId()))); @@ -1438,6 +1465,7 @@ public class ReportRuntime extends ReportWrapper implements Cloneable, Serializa } } } + //} String widthInPxls = dc.getDisplayWidthInPxls(); @@ -2483,7 +2511,7 @@ public List getMapMarkers(ReportData rd, org.onap.portalsdk.analytics.xmlobj.Rep String oldSQL = ""; IdNameList lookupList = null; boolean readOnly = false; - if(lookup!=null) { + if(lookup!=null && rd == null) { if(!ff.hasPredefinedList) { IdNameSql lu = (IdNameSql) lookup; String SQL = lu.getSql(); @@ -2576,11 +2604,13 @@ public List getMapMarkers(ReportData rd, org.onap.portalsdk.analytics.xmlobj.Rep } if(getReportDataSize() > 0) { count = 0; + DataRow dr = new DataRow(); + DataValue dv = new DataValue(); for(rd.reportDataRows.resetNext(); rd.reportDataRows.hasNext(); count++) { dvJSON = new HashMap<>(); - DataRow dr = rd.reportDataRows.getNext(); + dr = rd.reportDataRows.getNext(); for(dr.resetNext(); dr.hasNext(); ) { - DataValue dv = dr.getNext(); + dv = dr.getNext(); try { dvJSON.put(dv.getColId(), dv); } catch (Exception ex) { @@ -2592,11 +2622,13 @@ public List getMapMarkers(ReportData rd, org.onap.portalsdk.analytics.xmlobj.Rep } } if(rd.reportDataTotalRow != null) { + DataRow dr = new DataRow(); + DataValue dv = new DataValue(); for(rd.reportDataTotalRow.resetNext(); rd.reportDataTotalRow.hasNext(); count++) { dvJSON = new HashMap(); - DataRow dr = rd.reportDataTotalRow.getNext(); + dr = rd.reportDataTotalRow.getNext(); for(dr.resetNext(); dr.hasNext(); ) { - DataValue dv = dr.getNext(); + dv = dr.getNext(); try { dvJSON.put(dv.getColId(), dv); } catch (Exception ex) { @@ -2609,8 +2641,8 @@ public List getMapMarkers(ReportData rd, org.onap.portalsdk.analytics.xmlobj.Rep } reportJSONRuntime.setReportDataColumns(colList); reportJSONRuntime.setReportDataRows(reportDataRows); - reportJSONRuntime.setPageSize(getPageSize()); reportJSONRuntime.setReportTotalDataRows(reportTotalDataRows); + reportJSONRuntime.setPageSize(getPageSize()); } @@ -2908,24 +2940,4 @@ public String parseAndFillWithCurrentValues(HttpServletRequest request, String s return sql; } - private static String reverseDisplayValue(String value) { - int i = value.length() - 1; - int start, end = i + 1; - String result = ""; - while (i >= 0) { - if (value.charAt(i) == ',') { - start = i + 1; - while (start != end) - result += value.charAt(start++); - result += ','; - end = i; - } - i--; - } - start = 0; - while (start != end) - result += value.charAt(start++); - return result; - } - -} +} \ No newline at end of file diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/system/fusion/web/RaptorControllerAsync.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/system/fusion/web/RaptorControllerAsync.java index 5912929b..333690fe 100644 --- a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/system/fusion/web/RaptorControllerAsync.java +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/system/fusion/web/RaptorControllerAsync.java @@ -100,6 +100,7 @@ import org.onap.portalsdk.analytics.system.ConnectionUtils; import org.onap.portalsdk.analytics.system.DbUtils; import org.onap.portalsdk.analytics.system.Globals; import org.onap.portalsdk.analytics.util.AppConstants; +import org.onap.portalsdk.analytics.util.CachingUtils; import org.onap.portalsdk.analytics.util.DataSet; import org.onap.portalsdk.analytics.util.Utils; import org.onap.portalsdk.analytics.util.XSSFilter; @@ -151,10 +152,14 @@ public class RaptorControllerAsync extends RestrictedBaseController { HttpSession session = request.getSession(); User user = UserUtils.getUserSession(request); boolean isPageDownload = Boolean.valueOf(request.getParameter(AppConstants.PAGE_DOWNLOAD)); + boolean isGoBackAction = AppUtils.getRequestFlag(request, AppConstants.RI_GO_BACK); if ("report.download.excel2007.session".equals(actionKey) || "report.download.csv.session".equals(actionKey) || "report.download.excel.session".equals(actionKey) || "report.download.pdf.session".equals(actionKey)) { if (session != null && user != null) { + long currentTime = System.currentTimeMillis(); + request.setAttribute("triggeredStartTime", new Long(currentTime)); + ServletContext servletContext = request.getSession().getServletContext(); if (!Globals.isSystemInitialized()) { Globals.initializeSystem(servletContext); @@ -191,12 +196,21 @@ public class RaptorControllerAsync extends RestrictedBaseController { if (rd == null) rd = (ReportData) request.getSession().getAttribute(AppConstants.RI_REPORT_DATA); } + if(isGoBackAction) { + String reportID = AppUtils.getRequestValue(request, AppConstants.RI_REPORT_ID); + if(CachingUtils.isReportRuntimeAvailable(reportID)) { + rr = (ReportRuntime) CachingUtils.getSavedReportRuntime(reportID); + } + if(CachingUtils.isReportDataAvailable(reportID)) { + rd = (ReportData) CachingUtils.getSavedReportData(reportID); + } + } String userId = AppUtils.getUserID(request); int downloadLimit = 0; if (rr != null) - downloadLimit = (rr.getMaxRowsInExcelDownload() > 0) ? rr.getMaxRowsInExcelDownload() + downloadLimit = (rr.getMaxRowsInExcelDownload() > 0 && (rr.getMaxRowsInExcelDownload() < Globals.getDownloadLimit())) ? rr.getMaxRowsInExcelDownload() : Globals.getDownloadLimit(); - if ("report.csv.download".equals(actionKey)) + if ("report.download.csv.download".equals(actionKey)) downloadLimit = Globals.getCSVDownloadLimit(); final boolean isDashboard = (session.getAttribute(AppConstants.SI_DASHBOARD_REP_ID) != null) && @@ -210,16 +224,29 @@ public class RaptorControllerAsync extends RestrictedBaseController { try { OutputStreamWriter out = new OutputStreamWriter(response.getOutputStream()); + String formFields = ""; if(rr != null) rr.setSinglePageDownload(isPageDownload); if ("report.download.pdf.session".equals(actionKey)) { new PdfReportHandler().createPdfFileContent(request, response, 3); + long totalTime = System.currentTimeMillis() - currentTime; + rr.logReportExecutionTime(userId, String.valueOf(totalTime), AppConstants.RLA_DOWNLOAD_PDF, + formFields); } else if ("report.download.csv.session".equals(actionKey)) { (new ReportHandler()).createCSVFileContent(out, rd, rr, request, response); + long totalTime = System.currentTimeMillis() - currentTime; + rr.logReportExecutionTime(userId, String.valueOf(totalTime), AppConstants.RLA_DOWNLOAD_CSV, + formFields); } else if ("report.download.excel.session".equals(actionKey)) { - new ReportHandler().createExcelFileContent(out, rd, rr, request, response, userId, 3); + new ReportHandler().createExcelXlsContent(out, rd, rr, request, response, userId, 3); + long totalTime = System.currentTimeMillis() - currentTime; + rr.logReportExecutionTime(userId, String.valueOf(totalTime), AppConstants.RLA_DOWNLOAD_EXCEL, + formFields); } else { new ReportHandler().createExcel2007FileContent(out, rd, rr, request, response, userId, 3); + long totalTime = System.currentTimeMillis() - currentTime; + rr.logReportExecutionTime(userId, String.valueOf(totalTime), AppConstants.RLA_DOWNLOAD_EXCELX, + formFields); } } catch (Exception e) { logger.error(EELFLoggerDelegate.errorLogger, @@ -1893,30 +1920,18 @@ public class RaptorControllerAsync extends RestrictedBaseController { @PostMapping(value = "save_chart") public void reportChartReceive(@RequestBody ChartJSON chartJSON, HttpServletRequest request, HttpServletResponse response) { - //ReportRuntime reportRuntime; - //reportRuntime = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME); // changing ReportDefinition reportDefn; + String action = request.getParameter("action"); reportDefn = (ReportDefinition) request.getSession().getAttribute(AppConstants.SI_REPORT_DEFINITION); // session - // to - // request - String reportID = request.getParameter("c_master"); - /* if (reportRuntime == null && AppUtils.nvl(reportID).length() > 0) { - try { - ReportHandler rh = new ReportHandler(); - reportRuntime = rh.loadReportRuntime(request, reportID); - } catch (RaptorException ex) { - logger.error(EELFLoggerDelegate.errorLogger, - "[Controller.processRequest]Invalid raptor action [reportChartReceive].", ex); - } - }*/ + String reportID = request.getParameter("c_master"); if (reportDefn != null) { String chartType = chartJSON.getChartType(); - reportDefn.setChartType(chartJSON.getChartType()); - reportDefn.setChartAnimate(chartJSON.isAnimation()); - reportDefn.setChartWidth(chartJSON.getWidth()); - reportDefn.setChartHeight(chartJSON.getHeight()); - reportDefn.setShowChartTitle(chartJSON.isShowTitle()); + reportDefn.setChartType((action.equalsIgnoreCase("save"))? chartJSON.getChartType() : "none"); + reportDefn.setChartAnimate((action.equalsIgnoreCase("save")) ? chartJSON.isAnimation() : false); + reportDefn.setChartWidth((action.equalsIgnoreCase("save")) ? chartJSON.getWidth() : ""); + reportDefn.setChartHeight((action.equalsIgnoreCase("save")) ? chartJSON.getHeight() : ""); + reportDefn.setShowChartTitle((action.equalsIgnoreCase("save")) ? chartJSON.isShowTitle() : false); String domainAxis = null; domainAxis = chartJSON.getDomainAxis(); @@ -1966,7 +1981,7 @@ public class RaptorControllerAsync extends RestrictedBaseController { DataColumnType dct = iterator.next(); if (dct.getColId().equals(rangeAxis)) { if(removeRangeAxisMap.contains(rangeAxis)) - dct.setChartSeq(-1); // if we set it to -1, means this range axis will not be included + dct.setChartSeq(-1); else dct.setChartSeq(++r); @@ -1975,8 +1990,8 @@ public class RaptorControllerAsync extends RestrictedBaseController { }else{ dct.setChartSeq(-1); } - dct.setYAxis(rangeYAxis); // +"|"+dct.getColId()); - dct.setChartGroup(rangeChartGroup); // +"|"+dct.getColId()); + dct.setYAxis(rangeYAxis); + dct.setChartGroup(rangeChartGroup); dct.setChartColor(rangeColor); dct.setChartLineType(rangeLineType); @@ -1993,11 +2008,11 @@ public class RaptorControllerAsync extends RestrictedBaseController { } } - reportDefn.setChartLeftAxisLabel(chartJSON.getPrimaryAxisLabel()); - reportDefn.setChartRightAxisLabel(chartJSON.getSecondaryAxisLabel()); + reportDefn.setChartLeftAxisLabel((action.equalsIgnoreCase("save")) ? chartJSON.getPrimaryAxisLabel() : ""); + reportDefn.setChartRightAxisLabel((action.equalsIgnoreCase("save")) ? chartJSON.getSecondaryAxisLabel() : ""); - reportDefn.setRangeAxisLowerLimit(chartJSON.getMinRange()); - reportDefn.setRangeAxisUpperLimit(chartJSON.getMaxRange()); + reportDefn.setRangeAxisLowerLimit((action.equalsIgnoreCase("save")) ? chartJSON.getMinRange() : ""); + reportDefn.setRangeAxisUpperLimit((action.equalsIgnoreCase("save")) ? chartJSON.getMaxRange() : ""); if (chartType.equals(AppConstants.GT_ANNOTATION_CHART) || chartType.equals(AppConstants.GT_FLEX_TIME_CHARTS)) { @@ -2032,15 +2047,15 @@ public class RaptorControllerAsync extends RestrictedBaseController { } } - reportDefn.setLegendLabelAngle(chartJSON.getCommonChartOptions().getLegendLabelAngle()); - reportDefn.setLegendPosition(chartJSON.getCommonChartOptions().getLegendPosition()); + reportDefn.setLegendLabelAngle((action.equalsIgnoreCase("save")) ? chartJSON.getCommonChartOptions().getLegendLabelAngle() : ""); + reportDefn.setLegendPosition((action.equalsIgnoreCase("save")) ? chartJSON.getCommonChartOptions().getLegendPosition() : ""); reportDefn.setChartLegendDisplay(chartJSON.getCommonChartOptions().isHideLegend() ? "Y" : "N"); - reportDefn.setAnimateAnimatedChart(chartJSON.getCommonChartOptions().isAnimateAnimatedChart()); + reportDefn.setAnimateAnimatedChart((action.equalsIgnoreCase("save")) ? chartJSON.getCommonChartOptions().isAnimateAnimatedChart() : false); - reportDefn.setTopMargin(chartJSON.getCommonChartOptions().getTopMargin()); - reportDefn.setBottomMargin(chartJSON.getCommonChartOptions().getBottomMargin()); - reportDefn.setLeftMargin(chartJSON.getCommonChartOptions().getLeftMargin()); - reportDefn.setRightMargin(chartJSON.getCommonChartOptions().getRightMargin()); + reportDefn.setTopMargin((action.equalsIgnoreCase("save")) ? chartJSON.getCommonChartOptions().getTopMargin() : 0); + reportDefn.setBottomMargin((action.equalsIgnoreCase("save")) ? chartJSON.getCommonChartOptions().getBottomMargin() : 0); + reportDefn.setLeftMargin((action.equalsIgnoreCase("save")) ? chartJSON.getCommonChartOptions().getLeftMargin(): 0); + reportDefn.setRightMargin((action.equalsIgnoreCase("save")) ? chartJSON.getCommonChartOptions().getRightMargin(): 0); for (Iterator iterator = reportCols.iterator(); iterator.hasNext();) { DataColumnType dct = iterator.next(); @@ -2056,8 +2071,6 @@ public class RaptorControllerAsync extends RestrictedBaseController { } try { - //reportRuntime.persistLinearReport(request); - //reportRuntime.persistReport(request); persistReportDefinition(request, reportDefn); } catch (Exception ex) { logger.error(EELFLoggerDelegate.errorLogger, diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/AppConstants.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/AppConstants.java index 1806db77..9c0b6154 100644 --- a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/AppConstants.java +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/AppConstants.java @@ -101,6 +101,8 @@ public class AppConstants { // Request attribute IDs public static final String RI_ACTION = "r_action"; + public final static String CHILD_REPORT = "child"; + public static final String RI_JAVASCRIPT_ITEM_ID = "javascriptItemId"; // added for form field chaining in schedule tab diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/CachingUtils.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/CachingUtils.java index 66bfb697..5d9481c3 100644 --- a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/CachingUtils.java +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/CachingUtils.java @@ -39,12 +39,16 @@ package org.onap.portalsdk.analytics.util; import org.apache.commons.collections4.map.LRUMap; +import org.onap.portalsdk.analytics.model.runtime.ReportRuntime; +import org.onap.portalsdk.analytics.view.ReportData; public class CachingUtils { private static LRUMap pageSQLCahce; private static LRUMap reportSqlCache; private static LRUMap totalRowsCount; + private static LRUMap saveReportRuntime; + private static LRUMap saveReportData; public static String getPageSql(String sql) { return pageSQLCahce.get(sql); @@ -93,4 +97,49 @@ public class CachingUtils { } return false; } + + public static void saveReportRuntime(String reportId, ReportRuntime rr) { + if(saveReportRuntime == null) { + saveReportRuntime = new LRUMap(); + } + saveReportRuntime.put(reportId, rr); + } + + public static Object getSavedReportRuntime(String reportId) { + return saveReportRuntime.get(reportId); + } + + public static void saveReportData(String reportId, ReportData rd) { + if(saveReportData == null) { + saveReportData = new LRUMap(); + } + saveReportData.put(reportId, rd); + } + + public static Object getSavedReportData(String reportId) { + return saveReportData.get(reportId); + } + + public static void removeSavedReportRuntime(String reportId) { + saveReportRuntime.remove(reportId); + } + + public static void removeSavedReportData(String reportId) { + saveReportData.remove(reportId); + } + + public static boolean isReportRuntimeAvailable(String reportId) { + if(saveReportRuntime != null) { + return saveReportRuntime.containsKey(reportId); + } + else return false; + } + + public static boolean isReportDataAvailable(String reportId) { + if(saveReportData != null) { + return saveReportData.containsKey(reportId); + } + else return false; + } + } diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/HtmlStripper.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/HtmlStripper.java index 544f65e2..4c603ad3 100644 --- a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/HtmlStripper.java +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/HtmlStripper.java @@ -122,9 +122,9 @@ public class HtmlStripper extends RaptorObject// this function can be accessed p public String stripCSVHtml (String s) { - String s1 = stripHtml(s); - s1 = s1.replaceAll("\"", "\"\""); - return s1; + StringBuffer s1 = new StringBuffer(); + s1.append(stripHtml(s).replaceAll("\"", "\"\"")); + return s1.toString(); } public static void main(String[] args) { diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/Utils.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/Utils.java index 16d6a899..5efb7ab1 100644 --- a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/Utils.java +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/util/Utils.java @@ -64,18 +64,18 @@ public class Utils extends org.onap.portalsdk.analytics.RaptorObject { public static String getCurrentDateTime() { return (new SimpleDateFormat(Globals.getJavaTimeFormat())).format(new Date()); - } // getCurrentDateTime + } public static String truncateDecimals(String value, int maxDecimals) { return (maxDecimals < 0 || value == null || value.indexOf('.') < 0 || (value.indexOf('.') == value.length() - 1) || value.substring( value.indexOf('.')).length() - 1 <= maxDecimals) ? value : value.substring(0, value.indexOf('.') + maxDecimals + 1); - } // truncateDecimals + } public static String truncateTotalDecimals(String value) { return truncateDecimals(value, Globals.getMaxDecimalsOnTotals()); - } // truncateTotalDecimals + } public static String replaceInString(String replaceInStr, String replaceStr, String replaceWithStr) { @@ -93,10 +93,10 @@ public class Utils extends org.onap.portalsdk.analytics.RaptorObject { if (endIdx < replaceInStr.length()) sb.append(replaceInStr.substring(endIdx)); replaceInStr = sb.toString(); - } // while + } return replaceInStr; - } // replaceInString + } public static String singleQuoteEncode(String value) { value = value!=null?value:""; @@ -106,7 +106,7 @@ public class Utils extends org.onap.portalsdk.analytics.RaptorObject { public static String htmlEncode(String value) { return replaceInString(replaceInString(value, "<", "<"), ">", ">"); - } // htmlEncode + } public static String excelEncode(String value) { String replaceStr = replaceInString(replaceInString(value, "<", "<"), ">", ">"); @@ -114,7 +114,7 @@ public class Utils extends org.onap.portalsdk.analytics.RaptorObject { Pattern p = Pattern.compile(reg); String replaceStrAmpersand = p.matcher(replaceStr).replaceAll("&"); return replaceStrAmpersand; - } // htmlEncode + } public static String oracleSafe(String s) { @@ -127,10 +127,10 @@ public class Utils extends org.onap.portalsdk.analytics.RaptorObject { if (ch == '\''/* &&(i>=s.length()-1||s.charAt(i+1)!='\'') */) sb.append('\''); sb.append(ch); - } // for + } return sb.toString(); - } // oracleSafe + } public static String javaSafe(String s) { @@ -143,25 +143,13 @@ public class Utils extends org.onap.portalsdk.analytics.RaptorObject { if (ch == '"') sb.append('\\'); sb.append(ch); - } // for + } return sb.toString(); - } // javaSafe + } public static Vector getUsersNotInList(List excludeValues, HttpServletRequest request)throws RaptorException { HttpSession session = request.getSession(); -// String[] whereConditionAndSess = Globals.getWhereConditionForUserRole().split(","); -// String whereCondition = ""; -// String conditionalValue = ""; -// for (int i = 0; i < whereConditionAndSess.length; i++) { -// whereCondition = whereConditionAndSess[0]; -// } -// for (int i = 1; i < whereConditionAndSess.length; i++) { -// conditionalValue = whereConditionAndSess[1]; -// } -// whereCondition = " where "+ whereCondition + "'" + (String)session.getAttribute(conditionalValue) + "'"; - -// Vector allUsers = AppUtils.getAllUsers(whereCondition); String query = Globals.getCustomizedScheduleQueryForUsers(); session.setAttribute("login_id", AppUtils.getUserBackdoorLoginId(request)); String userId = AppUtils.getUserID(request); @@ -184,14 +172,14 @@ public class Utils extends org.onap.portalsdk.analytics.RaptorObject { if (((IdNameValue) iterE.next()).getId().equals(value.getId())) { exclude = true; break; - } // if + } if (!exclude) result.add(value); - } // for + } return result; - } // getUsersNotInList + } public static Vector getRolesNotInList(List excludeValues, HttpServletRequest request) throws RaptorException { HttpSession session = request.getSession(); @@ -217,18 +205,18 @@ public class Utils extends org.onap.portalsdk.analytics.RaptorObject { if (((IdNameValue) iterE.next()).getId().equals(value.getId())) { exclude = true; break; - } // if + } + - // Exclude the super role if (value.getId().equals(AppUtils.getSuperRoleID())) exclude = true; if (!exclude) result.add(value); - } // for + } return result; - } // getRolesNotInList + } public static List getUsersNotInListLatest(List excludeValues, HttpServletRequest request)throws RaptorException { HttpSession session = request.getSession(); @@ -256,14 +244,14 @@ public class Utils extends org.onap.portalsdk.analytics.RaptorObject { if (((IdNameValue) iterE.next()).getId().equals(value.getId())) { exclude = true; break; - } // if + } if (!exclude) resultLatest.add(new Item(value.getId(), value.getName())); - } // for + } return resultLatest; - } // getUsersNotInListLatest + } public static List getRolesNotInListLatest(List excludeValues, HttpServletRequest request) throws RaptorException { @@ -292,30 +280,22 @@ public class Utils extends org.onap.portalsdk.analytics.RaptorObject { if (((IdNameValue) iterE.next()).getId().equals(value.getId())) { exclude = true; break; - } // if - - // Exclude the super role + } if (value.getId().equals(AppUtils.getSuperRoleID())) exclude = true; if (!exclude) resultLatest.add(new Item(value.getId(), value.getName())); - } // for + } return resultLatest; - } // getRolesNotInList - /* - * public static String nvl(String s) { return (s==null)?"":s; } // nvl - * - * public static String nvl(String s, String sDefault) { return - * nvl(s).equals("")?sDefault:s; } // nvl - */ + } public static void _assert(boolean condition, String errMsg) { if (org.onap.portalsdk.analytics.system.Globals.getDebugLevel() > 0) if (!condition) throw new RuntimeException(errMsg); - } // _assert + } public static boolean isNull(String a) { if ((a == null) || (a.length() == 0) || a.equalsIgnoreCase("null")) @@ -328,10 +308,8 @@ public class Utils extends org.onap.portalsdk.analytics.RaptorObject { public static boolean isDownloadFileExists(String fileNamePrefix) { File f = new File (Globals.getShellScriptDir()+AppConstants.SHELL_DATA_DIR); String[] fileNames = f.list(); - //System.out.println("Util.boolean Prefix" + fileNamePrefix); if(fileNames!=null) { for (int i = 0; i < fileNames.length; i++) { - //System.out.println("Util.boolean " + fileNames[i]); if(fileNames[i].startsWith(fileNamePrefix)) { return true; } @@ -345,14 +323,11 @@ public class Utils extends org.onap.portalsdk.analytics.RaptorObject { File f = new File (Globals.getShellScriptDir()+AppConstants.SHELL_DATA_DIR); String[] fileNames = f.list(); ArrayList matchingFiles = new ArrayList(); - //System.out.println("Util.download Prefix" + fileNamePrefix); for (int i = 0; i < fileNames.length; i++) { - //System.out.println("Util.download " + fileNames[i]); if(fileNames[i].startsWith(fileNamePrefix)) { matchingFiles.add(fileNames[i]); } } - //System.out.println("SIZE 1 " + matchingFiles.size()); String tmpFileName = ""; int numberOfTimesLooped = 0; boolean isSorted = false; @@ -361,7 +336,6 @@ public class Utils extends org.onap.portalsdk.analytics.RaptorObject { Date date2 = null; Date currDate = new Date(); Object[] matchingfileNamesArr = matchingFiles.toArray(); - //System.out.println("SIZE " + matchingFiles.size()); String fileName1 = ""; String fileName2 =""; @@ -394,6 +368,45 @@ public class Utils extends org.onap.portalsdk.analytics.RaptorObject { } + public static String removeLinkToForDownload(String value) { + int i = value.length() - 1; + int start, end = i + 1; + StringBuffer result = new StringBuffer(); + while (i >= 0) { + if (value.charAt(i) == ',') { + start = i + 1; + while (start != end) + result.append(value.charAt(start++)); + result.append(','); + end = i; + } + i--; + } + start = 0; + while (start != end) + result.append(value.charAt(start++)); + if (result.toString().contains("clickToCheckBox|checked|filled") + || result.toString().contains("clickToCheckBox|checked|disabled")) { +// result = new StringBuffer(); +// result.append("Y"); + return "Y"; + } else if (result.toString().contains("clickToCheckBox|Y|empty") + || result.toString().contains("clickToCheckBox|N|disabled") + || result.toString().contains("isComment")) { +// result = new StringBuffer(""); + return ""; + } + + return result.toString(); + } + + + public static boolean isRemoveLinkToEligible(String value) { + if(value.contains("linkTo") || value.contains("clickToCheckBox") || value.contains("isComment")) { + return true; + } + return false; + } -} // Utils +} diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/view/HtmlFormatter.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/view/HtmlFormatter.java index b1997a2b..f1ee5e92 100644 --- a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/view/HtmlFormatter.java +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/view/HtmlFormatter.java @@ -177,6 +177,7 @@ public class HtmlFormatter extends RaptorObject { public String generateJsonHtmlStyle() { JSONObject style = new JSONObject(); + style.put("setStyle","setStyle"); if (isBold()) style.put("font-weight", "bold"); if (isItalic()) diff --git a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/view/ReportData.java b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/view/ReportData.java index a0c35e0c..ee839867 100644 --- a/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/view/ReportData.java +++ b/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/view/ReportData.java @@ -510,10 +510,12 @@ public class ReportData extends org.onap.portalsdk.analytics.RaptorObject implem } // else } // for int row = 0; + DataRow dr = new DataRow(); + DataValue dv = new DataValue(); for (reportDataRows.resetNext(); reportDataRows.hasNext();) { - DataRow dr = reportDataRows.getNext(); + dr = reportDataRows.getNext(); if(colIdx < dr.getDataValueList().size()) { - DataValue dv = dr.getDataValue(colIdx); + dv = dr.getDataValue(colIdx); dr.getDataValueList().remove(colIdx); if(!dv.isHidden()) dv.setVisible(newVisible); -- cgit 1.2.3-korg