summaryrefslogtreecommitdiffstats
path: root/ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/ReportHandler.java
diff options
context:
space:
mode:
authorVasyl Razinkov <vasylrazinkov@sidero.ie>2019-05-20 16:19:57 +0100
committervasraz <vasyl.razinkov@est.tech>2019-07-16 14:52:27 +0100
commitf55fa6a1f3c427ff035970635aedaec16c0de4f1 (patch)
treeea58389563b6468964096f94f299acf5320722f4 /ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/ReportHandler.java
parent7d7b74d4d92e7fa45471fb0e8678837f71da3d02 (diff)
Fixed Sonar "Blocker Bugs"
Fixed potential "thread-Leak" Change-Id: I7efcbd4d7b6b69ca1f234bed8d28cbb8e51e3e25 Signed-off-by: Vasyl Razinkov <vasylrazinkov@sidero.ie> Issue-ID: PORTAL-584
Diffstat (limited to 'ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/ReportHandler.java')
-rw-r--r--ecomp-sdk/epsdk-analytics/src/main/java/org/onap/portalsdk/analytics/model/ReportHandler.java1408
1 files changed, 595 insertions, 813 deletions
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 56f28b54..90f3e2e1 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
@@ -58,6 +58,11 @@
*/
package org.onap.portalsdk.analytics.model;
+import com.lowagie.text.Document;
+import com.lowagie.text.Paragraph;
+import com.lowagie.text.html.simpleparser.HTMLWorker;
+import com.lowagie.text.html.simpleparser.StyleSheet;
+import com.lowagie.text.pdf.PdfPTable;
import java.io.BufferedInputStream;
import java.io.BufferedWriter;
import java.io.File;
@@ -102,12 +107,10 @@ import java.util.concurrent.TimeoutException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
-
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
-
import org.apache.commons.io.FilenameUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
@@ -168,13 +171,6 @@ import org.onap.portalsdk.analytics.xmlobj.SemaphoreType;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.owasp.esapi.ESAPI;
-import com.lowagie.text.Document;
-import com.lowagie.text.Paragraph;
-import com.lowagie.text.html.simpleparser.HTMLWorker;
-import com.lowagie.text.html.simpleparser.StyleSheet;
-import com.lowagie.text.pdf.PdfPTable;
-//import javax.servlet.RequestDispatcher;
-
public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject {
private static final EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(ReportHandler.class);
@@ -332,7 +328,9 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject {
return hashMapStyles;
}
- private void paintExcelParams(HSSFWorkbook wb,int rowNum,int col,ArrayList paramsList, String customizedParamInfo, HSSFSheet sheet, String reportTitle, String reportDescr) throws IOException {
+ private void paintExcelParams(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 {
//HSSFSheet sheet = wb.getSheet(getSheetName());
int cellNum = 0;
HSSFRow row = null;
@@ -569,10 +567,9 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject {
}
-
-
- private int paintExcelData(HSSFWorkbook wb, int rowNum, int col, ReportData rd,
- HashMap styles, ReportRuntime rr, HSSFSheet sheet, String sql_whole, OutputStream sos, HttpServletRequest request) throws RaptorException {
+ private int paintExcelData(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;
@@ -2804,7 +2801,7 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject {
} // if
rowNum = sheet.getLastRowNum();
//System.out.println(" rowNum after Params " + rowNum);
- paintExcelData(wb, rowNum, col, rd, styles,rr, sheet, "", xlsOut, request);
+ paintExcelData(wb, rowNum, rd, styles,rr, sheet, "", request);
if (Globals.getPrintFooterInDownload() ) {
rowNum = sheet.getLastRowNum();
rowNum += 2;
@@ -2825,330 +2822,269 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject {
}
} // saveAsExcelFile
- public void createExcelFileContent(Writer out, ReportData rd, ReportRuntime rr, HttpServletRequest request,
- HttpServletResponse response, String user_id, int type) throws IOException, RaptorException {
- // Adding utility for downloading Dashboard reports.
-
- HashMap styles = new HashMap();
- HttpSession session = request.getSession();
- ServletOutputStream sos = null;
- BufferedInputStream buf = null;
- HSSFWorkbook wb = null;
-// if(session.getAttribute(AppConstants.SI_DASHBOARD_REP_ID)!=null)
-// ReportRuntime rrDashboard = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME);
- String formattedDate = "";
- String xlsFName = "";
- int returnValue = 0;
- 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;
- }
- if(isDashboard) {
- try {
- formattedDate = new SimpleDateFormat("MMddyyyyHHmm").format(new Date());
- xlsFName = "dashboard"+formattedDate+user_id+".xls";
-
- FileInputStream xlsIn = null;
- POIFSFileSystem fileSystem = null;
- buf = null;
- FileOutputStream xlsOut = null;
+ 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.
+
+ Map styles = new HashMap();
+ final HttpSession session = request.getSession();
+
+ HSSFWorkbook wb = 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" + formattedDate + user_id + ".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(FilenameUtils.normalize(AppUtils.getTempFolderPath() + xlsFName));
+ } catch (final FileNotFoundException e) {
+ System.out.println("File not found in the specified path.");
+ }
+ if (xlsIn != null) {
+ final POIFSFileSystem fileSystem = new POIFSFileSystem(xlsIn);
+ wb = new HSSFWorkbook(fileSystem);
+ } 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.reportRowHeaderCols.hasNext()) {
+ col = rdDashRep.getTotalColumnCount();
+ } else {
+ col = rdDashRep.getTotalColumnCount();
+ }
+ 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 = loadStyles(rrDashRep, wb);
+ } catch (final IllegalArgumentException ex) {
+ try (final FileOutputStream xlsOut = new FileOutputStream(
+ FilenameUtils.normalize(AppUtils.getTempFolderPath() + xlsFName))) {
+ wb.write(xlsOut);
+ xlsOut.flush();
+ } catch (final IOException e) {
+ logger.warn("Failed to open FileOutputStream", e);
+ }
+ continue;
+ }
+
+ 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(
+ FilenameUtils.normalize(AppUtils.getTempFolderPath() + xlsFName))) {
+ wb.write(xlsOut);
+ //TODO Remove comment
+ 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(AppUtils.getTempFolderPath() + xlsFName);
+
+ 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);
+ }
+ }
+ } catch (final IOException ex) {
+ logger.warn("Failed to open Stream", ex);
+ throw ex;
+ }
-
-/* try {
- xlsIn = new FileInputStream (AppUtils.getTempFolderPath()
- + xlsFName);
- }
- catch (FileNotFoundException e) {
- System.out.println ("File not found in the specified path.");
- e.printStackTrace ();
- }
- if(xlsIn != null) {
- fileSystem = new POIFSFileSystem (xlsIn);
- wb = new HSSFWorkbook(fileSystem);
- } else {
- xlsOut = new FileOutputStream(AppUtils.getTempFolderPath()
- + xlsFName);
- wb = new HSSFWorkbook();
+ final File f = new File(AppUtils.getTempFolderPath() + xlsFName);
+ if (f.exists()) {
+ f.delete();
}
-*/
-
- Map reportRuntimeMap = null;
- Map reportDataMap = null;
- //Map reportDisplayTypeMap = null;
- reportRuntimeMap = (TreeMap) request.getSession().getAttribute(AppConstants.SI_DASHBOARD_REPORTRUNTIME_MAP);
- reportDataMap = (TreeMap) request.getSession().getAttribute(AppConstants.SI_DASHBOARD_REPORTDATA_MAP);
- //reportDisplayTypeMap = (TreeMap) request.getSession().getAttribute(AppConstants.SI);
- HSSFSheet sheet = null;
- if(reportRuntimeMap!=null) {
- //ServletOutputStream sos = response.getOutputStream();
- Set setReportRuntime = reportRuntimeMap.entrySet();
- Set setReportDataMap = reportDataMap.entrySet();
- Iterator iter2 = setReportDataMap.iterator();
- int count = 0;
- for(Iterator iter = setReportRuntime.iterator(); iter.hasNext(); ) {
- count++;
- try {
- xlsIn = new FileInputStream (FilenameUtils.normalize(AppUtils.getTempFolderPath()
- + xlsFName));
- }
- catch (FileNotFoundException e) {
- System.out.println ("File not found in the specified path.");
- //e.printStackTrace ();
- }
- if(xlsIn != null) {
- fileSystem = new POIFSFileSystem (xlsIn);
- wb = new HSSFWorkbook(fileSystem);
- xlsOut = new FileOutputStream(FilenameUtils.normalize(AppUtils.getTempFolderPath()
- + xlsFName));
- } else {
- xlsOut = new FileOutputStream(FilenameUtils.normalize(AppUtils.getTempFolderPath()
- + xlsFName));
- wb = new HSSFWorkbook();
- }
-
- Map.Entry entryData = (Entry) iter2.next();
- Map.Entry entry = (Entry) iter.next();
- //String rep_id = (String) entry.getKey();
- ReportRuntime rrDashRep = (ReportRuntime) entry.getValue();
- ReportData rdDashRep = (ReportData) entryData.getValue();
- //styles = loadStyles(rrDashRep, wb);
- int col = 0;
- String reportTitle = (nvl(rrDashRep.getReportTitle()).length()>0?rrDashRep.getReportTitle():rrDashRep.getReportName());
- String reportDescr = rrDashRep.getReportDescr();
- if (!rdDashRep.reportRowHeaderCols.hasNext())
- col = rdDashRep.getTotalColumnCount();
- else
- col = rdDashRep.getTotalColumnCount();
- if(col==0) col=10;
- int rowNum = 0;
- String formattedReportName = new HtmlStripper().stripSpecialCharacters(rrDashRep.getReportName());
-
- try {
- sheet = wb.createSheet(formattedReportName);
- sheet.getPrintSetup().setLandscape(true);
- styles = loadStyles(rrDashRep, wb);
- } catch (IllegalArgumentException ex) { wb.write(xlsOut);xlsOut.flush();xlsOut.close();continue;}
-
- 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();
- String sql_whole = rrDashRep.getWholeSQL();
- returnValue = paintExcelData(wb, rowNum, col, rdDashRep, styles,rrDashRep, sheet, sql_whole, xlsOut, request);
- if( returnValue == 0 ) {
- if (Globals.getPrintFooterInDownload()) {
- rowNum = sheet.getLastRowNum();
- rowNum += 2;
- paintExcelFooter(wb, rowNum, col, sheet);
- }
- //wb.write(sos);
- wb.write(xlsOut);
- //TODO Remove comment
- xlsOut.flush();
- xlsOut.close();
- wb = null;
- } else {
- //xlsOut.flush();
- //xlsOut.close();
- //response.reset();
- //response.setContentType("application/vnd.ms-excel");
-// RequestDispatcher dispatcher = request.getRequestDispatcher("raptor.htm?r_action=report.message");
-// request.setAttribute("message", Globals.getUserDefinedMessageForMemoryLimitReached());
-// try {
-// dispatcher.forward(request, response);
-// } catch (ServletException ex) {}
- }
- }
-
- response.reset();
- response.setContentType("application/vnd.ms-excel");
- response.setHeader("Content-disposition", "attachment;filename="+"dashboard"+formattedDate+user_id+".xls");
- sos = response.getOutputStream();
- xlsIn = new FileInputStream (AppUtils.getTempFolderPath()
- + xlsFName);
- buf = new BufferedInputStream(xlsIn);
- int readBytes = 0;
- byte [] bOut = new byte [4096];
- //read from the file; write to the ServletOutputStream
- //while ((readBytes = buf.read()) != -1)
- while ((readBytes = buf.read (bOut, 0, 4096))> 0) {
- buf.available();
- sos.write (bOut, 0, readBytes);
- }
-
- //sos.write(readBytes);
- }
- } catch (IOException ex) { ex.printStackTrace(); throw ex;}
-
- finally {
- if (sos != null)
- sos.close();
- if (buf != null)
- buf.close();
- }
-
- File f = new File (AppUtils.getTempFolderPath()
- + xlsFName);
- if(f.exists()) f.delete();
-
- } else {
- wb = new HSSFWorkbook();
- // PrintWriter xlsOut = new PrintWriter(out).;
- setSheetName(Globals.getSheetName());
- //ServletOutputStream sos = response.getOutputStream();
- //PrintWriter outWriter = response.getWriter();
- if (rr != null)
- styles = loadStyles(rr, wb);
- /* int col = 0;
- if (!rd.reportRowHeaderCols.hasNext())
- col = rd.getTotalColumnCount();
- else
- col = rd.getTotalColumnCount() + 1;
- int rowNum = 0;
- String reportTitle = rr.getReportName();
- String reportDescr = rr.getReportDescr();
- // if (Globals.getPrintTitleInDownload() && reportTitle != null) {
- HSSFSheet sheet = wb.createSheet(getSheetName());
- System.out.println(" Title " + Globals.getPrintTitleInDownload());
-
- if (Globals.getPrintTitleInDownload()&& reportTitle != null ) {
- paintExcelHeader(wb, rowNum, col, reportTitle, reportDescr);
- rowNum = wb.getSheetAt(0).getLastRowNum();
- } else
- rowNum = 0;
- System.out.println(" Params " + Globals.getPrintParamsInDownload());
- if (Globals.getPrintParamsInDownload() && rr.getParamNameValuePairs() != null) {
- paintExcelParams(wb,rowNum,col,rr.getParamNameValuePairs());
- } // if
- paintExcelData(wb, rowNum, col, rd, styles);
- rowNum = wb.getSheetAt(0).getLastRowNum();
- */
- int col = 0;
- //System.out.println("Row Header Count " + rd.reportRowHeaderCols.getRowCount());
- //System.out.println("Total Count " + rd.getTotalColumnCount());
- String reportTitle = (nvl(rr.getReportTitle()).length()>0?rr.getReportTitle():rr.getReportName());
- String reportDescr = rr.getReportDescr();
-
- col = getColumnCountForDownloadFile(rr,rd);
- /*if (!rd.reportRowHeaderCols.hasNext())
- col = rd.getTotalColumnCount();
- else
- col = rd.getTotalColumnCount();
- */
- int rowNum = 0;
- HSSFSheet 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) {
- ArrayList 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();
+ } else {
+ wb = new HSSFWorkbook();
+ setSheetName(Globals.getSheetName());
+ if (rr != null) {
+ styles = loadStyles(rr, wb);
+ }
- String formattedReportName = new HtmlStripper().stripSpecialCharacters(rr.getReportName());
- 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");
- sos = response.getOutputStream();
-
- if(type == 3 && rr.getSemaphoreList()==null && !(rr.getReportType().equals(AppConstants.RT_CROSSTAB)) ) { //type = 3 is whole
- //String sql_whole = (String) request.getAttribute(AppConstants.RI_REPORT_SQL_WHOLE);
- //String sql_whole = rr.getWholeSQL();
- 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, col, rd, styles,rr, sheet, sql_whole, sos, request);
- } else if(type == 2) {
- returnValue = paintExcelData(wb, rowNum, col, rd, styles,rr, sheet, "", sos, request);
- } else {
- //String sql_whole = (String) request.getAttribute(AppConstants.RI_REPORT_SQL_WHOLE);
- 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, col, rd, styles,rr, sheet, "", sos, request);
- } else {
- rd = rr.loadReportData(-1, AppUtils.getUserID(request), downloadLimit,request, true);
- returnValue = paintExcelData(wb, rowNum, col, rd, styles,rr, sheet, "", sos, 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();
- }
+ final String reportTitle = (nvl(rr.getReportTitle()).length() > 0 ? rr.getReportTitle()
+ : rr.getReportName());
+ final String reportDescr = rr.getReportDescr();
- returnValue = paintExcelData(wb, rowNum, col, rd, styles,rr, sheet, sql_whole, sos, 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
- wb.write(sos);
- sos.flush();
- sos.close();
- wb = null;
- } else {
- //sos.flush();
- //sos.close();
-/* response.reset();
-
- RequestDispatcher dispatcher = request.getRequestDispatcher("/raptor.htm?action=raptor&r_action=report.message");
- request.setAttribute("message", Globals.getUserDefinedMessageForMemoryLimitReached());
- try {
- dispatcher.forward(request, response);
- } catch (ServletException ex) {}
-*/
- }
- }
- }
+ final int col = getColumnCountForDownloadFile(rr, rd);
+ int rowNum = 0;
+ final HSSFSheet 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();
+ 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();
+ }
+ }
+
+ returnValue = paintExcelData(wb, rowNum, rd, styles, rr, sheet, sql_whole, request);
+ } 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)
@@ -3606,474 +3542,355 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject {
}
}
-
- public void createCSVFileContent(Writer out, ReportData rd,
- ReportRuntime rr, HttpServletRequest request, HttpServletResponse response)
- throws RaptorException {
- //ArrayList reportParamNameValues = rr.getParamNameValuePairs();
- //String reportTitle = rr.getReportName();
- //String reportDescr = rr.getReportDescr();
- PrintWriter csvOut = new PrintWriter(out);
- String fileName = "";
- String formattedReportName = new HtmlStripper().stripSpecialCharacters(rr.getReportName());
- String formattedDate = new SimpleDateFormat("MMddyyyyHHmm").format(new Date());
- String fName = formattedReportName+formattedDate+AppUtils.getUserID(request);
- boolean raw = AppUtils.getRequestFlag(request, "raw");
- String sql_whole = (String) request.getAttribute(AppConstants.RI_REPORT_SQL_WHOLE);
-
- String csvFName = fName+".csv";
- String zipFName = fName+".zip";
- if(true) {
- try {
- fileName = AppUtils.getTempFolderPath()+""+csvFName;
- csvOut = new PrintWriter(new BufferedWriter(
- new OutputStreamWriter(
- new FileOutputStream(fileName), "UTF-8")), false);
- } catch (FileNotFoundException fex) {
- fex.printStackTrace();
- }
- catch (UnsupportedEncodingException fex1) {
- fex1.printStackTrace();
- }
- }
- HtmlStripper strip = new HtmlStripper();
- //OracleConnection conn = null;
- //OracleStatement st = null;
- //Connection conO = null;
- //Statement stO = null;
- ResultSetMetaData rsmd = null;
- ColumnHeaderRow chr = null;
- int mb = 1024*1024;
- Runtime runtime = Runtime.getRuntime();
- String valueName = "";
- if(!raw) {
- String reportTitle = (nvl(rr.getReportTitle()).length()>0?rr.getReportTitle():rr.getReportName());
- csvOut.println();
- csvOut.print("\"" + reportTitle + "\",");
- csvOut.println();
-
- if(Globals.disclaimerPositionedTopInCSVExcel()) {
- if(Globals.getShowDisclaimer()) {
- csvOut.println();
- csvOut.print("\"" + Globals.getFooterFirstLine() + "\",");
- csvOut.println();
- csvOut.print("\"" + Globals.getFooterSecondLine() + "\",");
- csvOut.println();
- csvOut.println();
- }
- }
- }
- if (Globals.getPrintParamsInCSVDownload() && !raw) {
- ArrayList paramsList = rr.getParamNameValuePairsforPDFExcel(request, 1);
- if(paramsList.size()<=0) {
- paramsList = (ArrayList) request.getSession().getAttribute(AppConstants.SI_FORMFIELD_DOWNLOAD_INFO);
+ public void createCSVFileContent(final Writer out, final ReportData rd, final ReportRuntime rr,
+ final HttpServletRequest request, final HttpServletResponse response) throws RaptorException {
+
+ final String formattedReportName = new HtmlStripper().stripSpecialCharacters(rr.getReportName());
+ final String formattedDate = new SimpleDateFormat("MMddyyyyHHmm").format(new Date());
+ final String fName = formattedReportName + formattedDate + AppUtils.getUserID(request);
+ final boolean raw = AppUtils.getRequestFlag(request, "raw");
+ String sql_whole = (String) request.getAttribute(AppConstants.RI_REPORT_SQL_WHOLE);
+
+ final String csvFName = fName + ".csv";
+ final String zipFName = fName + ".zip";
+
+ final String fileName = AppUtils.getTempFolderPath() + "" + csvFName;
+ final Runtime runtime = Runtime.getRuntime();
+ final int mb = 1024 * 1024;
+
+ try (final PrintWriter csvOut =
+ new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName), "UTF-8")),
+ false);) {
+ final HtmlStripper strip = new HtmlStripper();
+ ColumnHeaderRow chr = null;
+ if (!raw) {
+ final String reportTitle = (nvl(rr.getReportTitle()).length() > 0 ? rr.getReportTitle()
+ : rr.getReportName());
+ csvOut.println();
+ csvOut.print("\"" + reportTitle + "\",");
+ csvOut.println();
+
+ if (Globals.disclaimerPositionedTopInCSVExcel()) {
+ if (Globals.getShowDisclaimer()) {
+ csvOut.println();
+ csvOut.print("\"" + Globals.getFooterFirstLine() + "\",");
+ csvOut.println();
+ csvOut.print("\"" + Globals.getFooterSecondLine() + "\",");
+ csvOut.println();
+ csvOut.println();
+ }
+ }
+ }
+ if (Globals.getPrintParamsInCSVDownload() && !raw) {
+ List paramsList = rr.getParamNameValuePairsforPDFExcel(request, 1);
+ if (paramsList.size() <= 0) {
+ paramsList = (ArrayList) request.getSession().getAttribute(AppConstants.SI_FORMFIELD_DOWNLOAD_INFO);
+ }
+ int paramSeq = 0;
+ for (final Iterator iter = paramsList.iterator(); iter.hasNext(); ) {
+ final IdNameValue value = (IdNameValue) iter.next();
+ if (nvl(value.getId()).trim().length() > 0 && (!"BLANK".equals(nvl(value.getId()).trim()))) {
+ paramSeq += 1;
+ if (paramSeq <= 1) {
+ csvOut.print("\"" + "Run-time Parameters" + "\"");
+ csvOut.println();
+ }
+ csvOut.print("\"" + value.getId() + ":" + "\",");
+ final String valueName = ESAPI.encoder().canonicalize(nvl(value.getName()));
+ if (valueName.indexOf("~") != -1 && valueName.startsWith("(")) {
+ csvOut.print("\"'" + valueName.replaceAll("~", ",") + "'\",");
+ } else {
+ if (valueName.startsWith("(") && valueName.endsWith(")")) {
+ csvOut.print(
+ "\"" + valueName.replaceAll("~", ",").substring(1, valueName.length() - 1) + "\",");
+ } else {
+ csvOut.print("\"" + valueName.replaceAll("~", ",") + "\",");
+ }
+ }
+ csvOut.println();
+ }
+ } //for
+ csvOut.println();
+ csvOut.println();
}
- int paramSeq = 0;
- for (Iterator iter = paramsList.iterator(); iter.hasNext();) {
- IdNameValue value = (IdNameValue) iter.next();
- //System.out.println("\"" + value.getId() + " = " + value.getName() + "\"");
- if(nvl(value.getId()).trim().length()>0 && (!nvl(value.getId()).trim().equals("BLANK"))) {
- paramSeq += 1;
- if(paramSeq <= 1) {
- csvOut.print("\"" + "Run-time Parameters" + "\"");
- csvOut.println();
- //strBuf.append("Run-time Parameters\n");
- }
- csvOut.print("\"" + value.getId() +":" + "\",");
- valueName = ESAPI.encoder().canonicalize(nvl(value.getName()));
- if(valueName.indexOf("~")!= -1 && valueName.startsWith("(")) {
- csvOut.print("\"'" + valueName.replaceAll("~",",")+ "'\",");
- } else {
- if(valueName.startsWith("(") && valueName.endsWith(")")) {
- csvOut.print("\"" + valueName.replaceAll("~",",").substring(1, valueName.length()-1)+ "\",");
- } else
- csvOut.print("\"" + valueName.replaceAll("~",",")+ "\",");
- }
- csvOut.println();
-
- //strBuf.append(value.getId()+": "+ value.getName()+"\n");
- }
- } //for
- csvOut.println();
- csvOut.println();
- }
-
- System.out.println("##### Heap utilization statistics [MB] #####");
- System.out.println("Used Memory:"
- + (runtime.maxMemory() - runtime.freeMemory()) / mb);
- System.out.println("Free Memory:"
- + runtime.freeMemory() / mb);
- System.out.println("Total Memory:" + runtime.totalMemory() / mb);
- System.out.println("Max Memory:" + runtime.maxMemory() / mb);
-
- 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(nvl(sql_whole).length()>0) {
- try(Connection conn = ConnectionUtils.getConnection(rr.getDbInfo());
- Statement st = conn.createStatement();
- ResultSet rs = st.executeQuery(sql_whole)) {
-
- //conn.setDefaultRowPrefetch(1000);
- //st.setFetchDirection(ResultSet.TYPE_FORWARD_ONLY);
- //st.setFetchSize(1000);
- System.out.println("************* Map Whole SQL *************");
- System.out.println(sql_whole);
- System.out.println("*****************************************");
- //st.setFetchSize(1000);
- rsmd = rs.getMetaData();
- int numberOfColumns = rsmd.getColumnCount();
- HashMap colHash = new HashMap();
- String title = "";
-
- if(rd!=null) {
-
- /*if(rd.reportTotalRowHeaderCols!=null) {
- csvOut.print("\"" + "#" + "\",");
- }*/
-
- for (rd.reportColumnHeaderRows.resetNext(); rd.reportColumnHeaderRows.hasNext();) {
- chr = rd.reportColumnHeaderRows.getNext();
- for (chr.resetNext(); chr.hasNext();) {
- ColumnHeader ch = chr.getNext();
- title = ch.getColumnTitle();
- title = Utils.replaceInString(title,"_nl_", " \n");
- if(ch.isVisible() && nvl(title).length()>0) {
- csvOut.print("\"" + title + "\",");
- for (int i = 1; i < ch.getColSpan(); i++)
- csvOut.print(",");
- }
- } // for
-
- csvOut.println();
- } // for
- int rowCount = 0;
- while(rs.next()) {
-/* 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++;
- //if(!raw) {
- colHash = new HashMap();
- for (int i = 1; i <= numberOfColumns; i++) {
- colHash.put(rsmd.getColumnLabel(i).toUpperCase(), rs.getString(i));
- }
- /*if(rd.reportDataTotalRow!=null) {
- csvOut.print("\"" + rowCount + "\",");
- }*/
- for (chr.resetNext(); chr.hasNext();) {
- ColumnHeader ch = chr.getNext();
- title = ch.getColumnTitle();
- title = Utils.replaceInString(title,"_nl_", " \n");
-
- if(ch.isVisible() && nvl(title).length()>0) {
- csvOut.print("\"" + strip.stripCSVHtml(nvl((String)colHash.get(ch.getColId().toUpperCase()))) + "\",");
- }
-
- }
- csvOut.println();
- /*} else {
- for (int i = 1; i <= numberOfColumns; i++) {
- csvOut.print("\"" + strip.stripCSVHtml( rs.getString(i)) + "\",");
- }
- csvOut.println();
- }*/
-
- }
-
- if(rd.reportDataTotalRow!=null) {
- for (rd.reportDataTotalRow.resetNext(); rd.reportDataTotalRow.hasNext();) {
- DataRow dr = rd.reportDataTotalRow.getNext();
- csvOut.print("\"" + "Total" + "\",");
- dr.resetNext();dr.getNext();
- for (; dr.hasNext();) {
- DataValue dv = dr.getNext();
- if(dv.isVisible()) {
- csvOut.print("\"" + strip.stripCSVHtml(dv.getDisplayValue()) + "\",");
- }
- } // for
-
- csvOut.println();
- }
- }
-
- if(rowCount == 0) {
- csvOut.print("\"No Data Found \"");
- }
- } else {
- csvOut.print("\"No Data Found \"");
- }
-
- } catch (SQLException ex) {
- throw new RaptorException(ex);
- } catch (ReportSQLException ex) {
- throw new RaptorException(ex);
- } catch (Exception ex) {
- throw new RaptorException (ex);
- }
-
- if(!raw) {
- if(!Globals.disclaimerPositionedTopInCSVExcel()) {
- if(Globals.getShowDisclaimer()) {
- csvOut.print("\"" + Globals.getFooterFirstLine() + "\",");
- csvOut.println();
- csvOut.print("\"" + Globals.getFooterSecondLine() + "\",");
- csvOut.println();
- }
- }
- }
-
- // csvOut.flush();
- } else {
- boolean firstPass = true;
- if(rd!=null) {
- if(rd.reportTotalRowHeaderCols!=null) {
- csvOut.print("\"" + "#" + "\",");
- }
- for (rd.reportColumnHeaderRows.resetNext(); rd.reportColumnHeaderRows.hasNext();) {
- chr = rd.reportColumnHeaderRows.getNext();
- for (rd.reportRowHeaderCols.resetNext(1); rd.reportRowHeaderCols.hasNext();) {
- RowHeaderCol rhc = rd.reportRowHeaderCols.getNext();
+ System.out.println("##### Heap utilization statistics [MB] #####");
+ System.out.println("Used Memory:" + (runtime.maxMemory() - runtime.freeMemory()) / mb);
+ System.out.println("Free Memory:" + runtime.freeMemory() / mb);
+ System.out.println("Total Memory:" + runtime.totalMemory() / mb);
+ System.out.println("Max Memory:" + runtime.maxMemory() / mb);
- if (firstPass)
- csvOut.print("\"" + rhc.getColumnTitle() + "\"");
- csvOut.print(",");
- } // for
- firstPass = false;
+ sql_whole = (String) request.getAttribute(AppConstants.RI_REPORT_SQL_WHOLE);
- for (chr.resetNext(); chr.hasNext();) {
- ColumnHeader ch = chr.getNext();
- if(ch.isVisible()) {
- csvOut.print("\"" + ch.getColumnTitle() + "\",");
- for (int i = 1; i < ch.getColSpan(); i++)
- csvOut.print(",");
- }
- } // for
+ if (sql_whole == null) {
+ if (!AppConstants.RT_HIVE.equals(rr.getReportType())) {
+ sql_whole = rr.getWholeSQL();
+ } else {
+ sql_whole = rr.getReportSQL();
+ }
+ }
- csvOut.println();
- } // for
+ if (nvl(sql_whole).length() > 0) {
+ try (final Connection conn = ConnectionUtils.getConnection(rr.getDbInfo());
+ final Statement st = conn.createStatement();
+ final ResultSet rs = st.executeQuery(sql_whole)) {
+
+ System.out.println("************* Map Whole SQL *************");
+ System.out.println(sql_whole);
+ System.out.println("*****************************************");
+ final ResultSetMetaData rsmd = rs.getMetaData();
+ int numberOfColumns = rsmd.getColumnCount();
+ String title = "";
+
+ if (rd != null) {
+ for (rd.reportColumnHeaderRows.resetNext(); rd.reportColumnHeaderRows.hasNext(); ) {
+ chr = rd.reportColumnHeaderRows.getNext();
+ for (chr.resetNext(); chr.hasNext(); ) {
+ ColumnHeader ch = chr.getNext();
+ title = ch.getColumnTitle();
+ title = Utils.replaceInString(title, "_nl_", " \n");
+ if (ch.isVisible() && nvl(title).length() > 0) {
+ csvOut.print("\"" + title + "\",");
+ for (int i = 1; i < ch.getColSpan(); i++) {
+ csvOut.print(",");
+ }
+ }
+ } // for
+
+ csvOut.println();
+ } // for
+ int rowCount = 0;
+ while (rs.next()) {
+ rowCount++;
+ final Map colHash = new HashMap();
+ for (int i = 1; i <= numberOfColumns; i++) {
+ colHash.put(rsmd.getColumnLabel(i).toUpperCase(), rs.getString(i));
+ }
+ for (chr.resetNext(); chr.hasNext(); ) {
+ final ColumnHeader ch = chr.getNext();
+ title = ch.getColumnTitle();
+ title = Utils.replaceInString(title, "_nl_", " \n");
+
+ if (ch.isVisible() && nvl(title).length() > 0) {
+ csvOut.print(
+ "\"" + strip
+ .stripCSVHtml(nvl((String) colHash.get(ch.getColId().toUpperCase())))
+ + "\",");
+ }
+
+ }
+ csvOut.println();
+ }
+
+ if (rd.reportDataTotalRow != null) {
+ for (rd.reportDataTotalRow.resetNext(); rd.reportDataTotalRow.hasNext(); ) {
+ final DataRow dr = rd.reportDataTotalRow.getNext();
+ csvOut.print("\"" + "Total" + "\",");
+ dr.resetNext();
+ dr.getNext();
+ for (; dr.hasNext(); ) {
+ final DataValue dv = dr.getNext();
+ if (dv.isVisible()) {
+ csvOut.print("\"" + strip.stripCSVHtml(dv.getDisplayValue()) + "\",");
+ }
+ } // for
+
+ csvOut.println();
+ }
+ }
+
+ if (rowCount == 0) {
+ csvOut.print("\"No Data Found \"");
+ }
+ } else {
+ csvOut.print("\"No Data Found \"");
+ }
+
+ } catch (final SQLException ex) {
+ throw new RaptorException(ex);
+ } catch (final ReportSQLException ex) {
+ throw new RaptorException(ex);
+ } catch (final Exception ex) {
+ throw new RaptorException(ex);
+ }
+
+ if (!raw) {
+ if (!Globals.disclaimerPositionedTopInCSVExcel()) {
+ if (Globals.getShowDisclaimer()) {
+ csvOut.print("\"" + Globals.getFooterFirstLine() + "\",");
+ csvOut.println();
+ csvOut.print("\"" + Globals.getFooterSecondLine() + "\",");
+ csvOut.println();
+ }
+ }
+ }
+ } else {
+ boolean firstPass = true;
+ if (rd != null) {
+ if (rd.reportTotalRowHeaderCols != null) {
+ csvOut.print("\"" + "#" + "\",");
+ }
+
+ for (rd.reportColumnHeaderRows.resetNext(); rd.reportColumnHeaderRows.hasNext(); ) {
+ chr = rd.reportColumnHeaderRows.getNext();
+ for (rd.reportRowHeaderCols.resetNext(1); rd.reportRowHeaderCols.hasNext(); ) {
+ RowHeaderCol rhc = rd.reportRowHeaderCols.getNext();
+
+ if (firstPass) {
+ csvOut.print("\"" + rhc.getColumnTitle() + "\"");
+ }
+ csvOut.print(",");
+ } // for
+ firstPass = false;
+
+ for (chr.resetNext(); chr.hasNext(); ) {
+ ColumnHeader ch = chr.getNext();
+ if (ch.isVisible()) {
+ csvOut.print("\"" + ch.getColumnTitle() + "\",");
+ for (int i = 1; i < ch.getColSpan(); i++) {
+ csvOut.print(",");
+ }
+ }
+ } // for
+
+ csvOut.println();
+ } // for
+
+ firstPass = true;
+ int rowCount = 0;
+ for (rd.reportDataRows.resetNext(); rd.reportDataRows.hasNext(); ) {
+ if (rd.reportDataTotalRow != null) {
+ rowCount++;
+ csvOut.print("\"" + rowCount + "\",");
+ }
+
+ final DataRow dr = rd.reportDataRows.getNext();
+
+ for (rd.reportRowHeaderCols.resetNext(1); rd.reportRowHeaderCols.hasNext(); ) {
+ final RowHeaderCol rhc = rd.reportRowHeaderCols.getNext();
+ if (firstPass) {
+ rhc.resetNext();
+ }
+ final RowHeader rh = rhc.getNext();
+
+ csvOut.print("\"" + strip.stripCSVHtml(rh.getRowTitle()) + "\",");
+ } // for
+ firstPass = false;
+
+ for (dr.resetNext(); dr.hasNext(); ) {
+ DataValue dv = dr.getNext();
+ if (dv.isVisible()) {
+ csvOut.print("\"" + strip.stripCSVHtml(dv.getDisplayValue()) + "\",");
+ }
+ } // for
+
+ csvOut.println();
+ } // for
+ if (rd.reportDataTotalRow != null) {
+ for (rd.reportDataTotalRow.resetNext(); rd.reportDataTotalRow.hasNext(); ) {
+ DataRow dr = rd.reportDataTotalRow.getNext();
+ csvOut.print("\"" + "Total" + "\",");
+ firstPass = false;
+
+ for (dr.resetNext(); dr.hasNext(); ) {
+ DataValue dv = dr.getNext();
+ if (dv.isVisible()) {
+ csvOut.print("\"" + strip.stripCSVHtml(dv.getDisplayValue()) + "\",");
+ }
+ } // for
+
+ csvOut.println();
+ }
+ }
+
+ if (!raw) {
+ if (!Globals.disclaimerPositionedTopInCSVExcel()) {
+ if (Globals.getShowDisclaimer()) {
+ csvOut.print("\"" + Globals.getFooterFirstLine() + "\",");
+ csvOut.println();
+ csvOut.print("\"" + Globals.getFooterSecondLine() + "\",");
+ csvOut.println();
+ }
+ }
+ }
+ } else {
+ csvOut.print("\"No Data Found \"");
+ }
+ }
+ csvOut.flush();
+ } catch (final FileNotFoundException fex) {
+ logger.warn("Failed to open/read/write file", fex);
+ } catch (final UnsupportedEncodingException fex1) {
+ logger.warn("Failed to open/read/write file", fex1);
+ }
- firstPass = true;
- int rowCount = 0;
- for (rd.reportDataRows.resetNext(); rd.reportDataRows.hasNext();) {
- if(rd.reportDataTotalRow!=null) {
- rowCount++;
- csvOut.print("\"" + rowCount + "\",");
- }
-
- DataRow dr = rd.reportDataRows.getNext();
+ if (!raw) {
+ try (final ZipOutputStream zos =
+ new ZipOutputStream(new FileOutputStream(AppUtils.getTempFolderPath() + "" + zipFName));
+ final FileInputStream fis = new FileInputStream(fileName)) {
- for (rd.reportRowHeaderCols.resetNext(1); rd.reportRowHeaderCols.hasNext();) {
- RowHeaderCol rhc = rd.reportRowHeaderCols.getNext();
- if (firstPass)
- rhc.resetNext();
- RowHeader rh = rhc.getNext();
+ int size = 0;
+ final byte[] buffer = new byte[1024];
- csvOut.print("\"" + strip.stripCSVHtml(rh.getRowTitle()) + "\",");
- } // for
- firstPass = false;
+ final ZipEntry entry = new ZipEntry(csvFName);
+ zos.putNextEntry(entry);
- for (dr.resetNext(); dr.hasNext();) {
- DataValue dv = dr.getNext();
- if(dv.isVisible())
- csvOut.print("\"" + strip.stripCSVHtml(dv.getDisplayValue()) + "\",");
- } // for
+ // 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);
+ }
+ zos.closeEntry();
- csvOut.println();
- } // for
- if(rd.reportDataTotalRow!=null) {
- for (rd.reportDataTotalRow.resetNext(); rd.reportDataTotalRow.hasNext();) {
- DataRow dr = rd.reportDataTotalRow.getNext();
- csvOut.print("\"" + "Total" + "\",");
- firstPass = false;
-
- for (dr.resetNext(); dr.hasNext();) {
- DataValue dv = dr.getNext();
- if(dv.isVisible())
- csvOut.print("\"" + strip.stripCSVHtml(dv.getDisplayValue()) + "\",");
- } // for
-
- csvOut.println();
- }
- }
-
- if(!raw) {
- if(!Globals.disclaimerPositionedTopInCSVExcel()) {
- if(Globals.getShowDisclaimer()) {
- csvOut.print("\"" + Globals.getFooterFirstLine() + "\",");
- csvOut.println();
- csvOut.print("\"" + Globals.getFooterSecondLine() + "\",");
- csvOut.println();
- }
- }
- }
+ } catch (final Exception e) {
+ logger.warn("Failed to open/read/write file", e);
+ }
+ }
- //csvOut.flush();
+ response.reset();
+ final File file;
+
+ if (!raw) {
+ response.setContentType("application/octet-stream");
+ response.setHeader("Content-disposition", "attachment;filename=" + fName + ".zip");
+ file = new File(AppUtils.getTempFolderPath() + "" + fName + ".zip");
} else {
- csvOut.print("\"No Data Found \"");
+ response.setContentType("application/csv");
+ response.setHeader("Content-disposition", "attachment;filename=" + fName + ".csv");
+ file = new File(AppUtils.getTempFolderPath() + "" + fName + ".csv");
}
- }
- csvOut.flush();
- csvOut.close();
-
-/*
- if (Globals.getPrintTitleInDownload() && reportTitle != null) {
- csvOut.println();
- csvOut.println("\"" + reportTitle + "\"");
- csvOut.println();
- if (Globals.getShowDescrAtRuntime() && nvl(reportDescr).length() > 0) {
- csvOut.println("\"" + reportDescr + "\"");
- csvOut.println();
- }
- } // if
- if (Globals.getPrintParamsInDownload() && reportParamNameValues != null) {
- csvOut.println();
- for (Iterator iter = reportParamNameValues.iterator(); iter.hasNext();) {
- IdNameValue value = (IdNameValue) iter.next();
- csvOut.println("\"" + value.getId() + " = " + value.getName() + "\"");
- } // for
- csvOut.println();
- } // if
-*/
- if(!raw) {
- try(ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(AppUtils.getTempFolderPath()+""+zipFName));
- FileInputStream fis = new FileInputStream(fileName)) {
-
- //final int BUFFER = 2048;
-
- //fis.read(buf,0,buf.length);
- int size = 0;
- byte[] buffer = new byte[1024];
-
- //CRC32 crc = new CRC32();
- //PrintStream fos = new PrintStream(new WriterOutputStream(out));
- //BufferedOutputStream dest = new BufferedOutputStream(fos, BUFFER);
- //ZipOutputStream s = new ZipOutputStream(dest);
-
- //s.setLevel(6);
-
- ZipEntry entry = new ZipEntry(csvFName);
- //crc.reset();
- 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);
- }
-
- zos.closeEntry();
- fis.close();
+ try (final ServletOutputStream sos = response.getOutputStream();
+ final FileInputStream fileIn = new FileInputStream(file);
+ final BufferedInputStream buf = new BufferedInputStream(fileIn);) {
- // Finish zip process
- zos.close();
+ 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();
+ sos.write(bOut, 0, readBytes);
+ }
- } catch(Exception e) {
- e.printStackTrace();
- }
+ } catch (final IOException ex) {
+ logger.warn("Failed to open/read/write file", ex);
+ } catch (final Exception e) {
+ logger.warn("Failed to open/read/write file", e);
}
- response.reset();
- java.io.File file = null;
-
- if(!raw) {
- response.setContentType("application/octet-stream");
- response.setHeader("Content-disposition","attachment;filename="+fName+".zip");
- file = new java.io.File(AppUtils.getTempFolderPath()+""+fName+".zip");
- } else {
- response.setContentType("application/csv");
- response.setHeader("Content-disposition","attachment;filename="+fName+".csv");
- file = new java.io.File(AppUtils.getTempFolderPath()+""+fName+".csv");
- }
-
-
- int c;
- try(ServletOutputStream sos = response.getOutputStream();
- FileInputStream fileIn = new FileInputStream(file);
- BufferedInputStream buf = new BufferedInputStream(fileIn);) {
-
- byte [] bOut = new byte [4096];
- //read from the file; write to the ServletOutputStream
- //while ((readBytes = buf.read()) != -1)
- int readBytes = 0;
- while ((readBytes = buf.read (bOut, 0, 4096))> 0) {
- buf.available();
- sos.write (bOut, 0, readBytes);
- }
+ final File f = new File(AppUtils.getTempFolderPath() + fName);
+ if (f.exists()) {
+ f.delete();
+ }
- } catch (IOException ex) {
- ex.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- File f = new File (AppUtils.getTempFolderPath()
- + fName);
- if(f.exists()) f.delete();
- System.out.println("##### Heap utilization statistics [MB] #####");
- System.out.println("Used Memory:"
- + (runtime.maxMemory() - runtime.freeMemory()) / mb);
- logger.debug(EELFLoggerDelegate.debugLogger, ("Free Memory:"
- + runtime.freeMemory() / mb));
+ System.out.println("##### Heap utilization statistics [MB] #####");
+ System.out.println("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));
-
- } // createCSVFileContent
-/* public String saveCSVPageFile(HttpServletRequest request, ReportData rd,
- ArrayList reportParamNameValues, String reportTitle, String reportDescr) {
- try {
- String formattedReportName = new HtmlStripper().stripSpecialCharacters(reportTitle);
- String formattedDate = new SimpleDateFormat("MMddyyyyHHmm").format(new Date());
-
- String csvFName = formattedReportName+formattedDate+AppUtils.getUserID(request)+".csv";
- //String csvFName = AppUtils.generateFileName(request, AppConstants.FT_CSV);
-
- BufferedWriter csvOut = new BufferedWriter(new FileWriter(AppUtils
- .getTempFolderPath()
- + csvFName));
- createCSVFileContent(csvOut, rd, reportParamNameValues, reportTitle, reportDescr);
- csvOut.close();
-
- return csvFName;
- } catch (Exception e) {
- (new ErrorHandler()).processError(request, "Exception saving data to CSV file: "
- + e.getMessage());
- return null;
- }
- } // saveCSVPageFile
-*/
-
-// public String saveAsFlatFile(HttpServletRequest request, ReportData rd,
-// ReportRuntime rr, String reportTitle, String reportDescr) {
-// try {
-// String csvFName = AppUtils.generateFileName(request, AppConstants.FT_TXT);
-//
-// BufferedWriter txtOut = new BufferedWriter(new FileWriter(AppUtils
-// .getTempFolderPath()
-// + csvFName));
-// createFlatFileContent(txtOut, rd, rr, reportTitle, reportDescr);
-// txtOut.close();
-//
-// return csvFName;
-// } catch (Exception e) {
-// (new ErrorHandler()).processError(request, "Exception saving data to CSV file: "
-// + e.getMessage());
-// return null;
-// }
-// } // saveCSVPageFile
+ } // createCSVFileContent
public String saveXMLFile(HttpServletRequest request, String reportName, String reportXML) {
try {
@@ -4384,7 +4201,6 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject {
}
return columnCount;
}
-
private Map<String, XSSFCellStyle> loadXSSFStyles(ReportRuntime rr, XSSFWorkbook wb, Map<String, XSSFCellStyle> loadedStyles) {
XSSFCellStyle styleDefault = wb.createCellStyle();
@@ -6563,37 +6379,3 @@ public class ReportHandler extends org.onap.portalsdk.analytics.RaptorObject {
}
} // ReportHandler
-
-
-/**
- * Adapter for a Writer to behave like an OutputStream.
- *
- * Bytes are converted to chars using the platform default encoding.
- * If this encoding is not a single-byte encoding, some data may be lost.
- */
- class WriterOutputStream extends OutputStream {
-
- private final Writer writer;
-
- public WriterOutputStream(Writer writer) {
- this.writer = writer;
- }
-
- public void write(int b) throws IOException {
- // It's tempting to use writer.write((char) b), but that may get the encoding wrong
- // This is inefficient, but it works
- write(new byte[] {(byte) b}, 0, 1);
- }
-
- public void write(byte b[], int off, int len) throws IOException {
- writer.write(new String(b, off, len));
- }
-
- public void flush() throws IOException {
- writer.flush();
- }
-
- public void close() throws IOException {
- writer.close();
- }
-}