From 6beb446925c967aca92f5513adf36c5db77c00d6 Mon Sep 17 00:00:00 2001 From: TATTAVARADA Date: Thu, 27 Apr 2017 07:53:18 -0400 Subject: [PORTAL-7] Rebase This rebasing includes common libraries and common overlays projects abstraction of components Change-Id: Ia1efa4deacdc5701e6205104ac021a6c80ed60ba Signed-off-by: st782s --- .../analytics/model/pdf/PdfReportHandler.java | 1890 -------------------- 1 file changed, 1890 deletions(-) delete mode 100644 ecomp-sdk/sdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/model/pdf/PdfReportHandler.java (limited to 'ecomp-sdk/sdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/model/pdf/PdfReportHandler.java') diff --git a/ecomp-sdk/sdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/model/pdf/PdfReportHandler.java b/ecomp-sdk/sdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/model/pdf/PdfReportHandler.java deleted file mode 100644 index deac806d..00000000 --- a/ecomp-sdk/sdk-analytics/src/main/java/org/openecomp/portalsdk/analytics/model/pdf/PdfReportHandler.java +++ /dev/null @@ -1,1890 +0,0 @@ -/*- - * ================================================================================ - * eCOMP Portal SDK - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ================================================================================ - */ -/* =========================================================================================== - - * This class is part of RAPTOR (Rapid Application Programming Tool for OLAP Reporting) - * Raptor : This tool is used to generate different kinds of reports with lot of utilities - * =========================================================================================== - * - * ------------------------------------------------------------------------------------------- - * PdfReportHandler.java - This class is used to generate reports in PDF using iText - * ------------------------------------------------------------------------------------------- - * - * - * Changes - * ------- - * 14-Jul-2009 : Version 8.4 (Sundar); - * - */ -package org.openecomp.portalsdk.analytics.model.pdf; - -import java.awt.Color; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.OutputStream; -import java.io.StringReader; -import java.net.MalformedURLException; -import java.sql.Connection; -import java.sql.ResultSet; -import java.sql.ResultSetMetaData; -import java.sql.SQLException; -import java.sql.Statement; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.TimeZone; -import java.util.TreeMap; -import java.util.Vector; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - -import org.openecomp.portalsdk.analytics.error.RaptorException; -import org.openecomp.portalsdk.analytics.error.ReportSQLException; -import org.openecomp.portalsdk.analytics.model.ReportHandler; -import org.openecomp.portalsdk.analytics.model.ReportLoader; -import org.openecomp.portalsdk.analytics.model.base.IdNameValue; -import org.openecomp.portalsdk.analytics.model.definition.ReportDefinition; -import org.openecomp.portalsdk.analytics.model.runtime.ReportRuntime; -import org.openecomp.portalsdk.analytics.system.AppUtils; -import org.openecomp.portalsdk.analytics.system.ConnectionUtils; -import org.openecomp.portalsdk.analytics.system.Globals; -import org.openecomp.portalsdk.analytics.util.AppConstants; -import org.openecomp.portalsdk.analytics.util.DataSet; -import org.openecomp.portalsdk.analytics.util.HtmlStripper; -import org.openecomp.portalsdk.analytics.util.Utils; -import org.openecomp.portalsdk.analytics.view.ColumnHeader; -import org.openecomp.portalsdk.analytics.view.ColumnHeaderRow; -import org.openecomp.portalsdk.analytics.view.DataRow; -import org.openecomp.portalsdk.analytics.view.DataValue; -import org.openecomp.portalsdk.analytics.view.HtmlFormatter; -import org.openecomp.portalsdk.analytics.view.ReportData; -import org.openecomp.portalsdk.analytics.view.RowHeader; -import org.openecomp.portalsdk.analytics.view.RowHeaderCol; -import org.openecomp.portalsdk.analytics.xmlobj.DataColumnType; -import org.openecomp.portalsdk.core.logging.logic.EELFLoggerDelegate; - -import com.lowagie.text.BadElementException; -import com.lowagie.text.Chunk; -import com.lowagie.text.Document; -import com.lowagie.text.DocumentException; -import com.lowagie.text.Element; -import com.lowagie.text.ElementTags; -import com.lowagie.text.Font; -import com.lowagie.text.FontFactory; -import com.lowagie.text.Image; -import com.lowagie.text.PageSize; -import com.lowagie.text.Paragraph; -import com.lowagie.text.Phrase; -import com.lowagie.text.Rectangle; -import com.lowagie.text.html.simpleparser.HTMLWorker; -import com.lowagie.text.html.simpleparser.StyleSheet; -import com.lowagie.text.pdf.PdfPCell; -import com.lowagie.text.pdf.PdfPTable; -import com.lowagie.text.pdf.PdfWriter; - - -public class PdfReportHandler extends org.openecomp.portalsdk.analytics.RaptorObject{ - - /** - * - */ - private PdfBean pb; - private HtmlStripper strip = new HtmlStripper(); - private static final int RetryCreateNewImage = 3; - private int retryCreateNewImageCount=0; - EELFLoggerDelegate logger = EELFLoggerDelegate.getLogger(PdfReportHandler.class); - - private String FONT_FAMILY = "Arial"; - private int FONT_SIZE = 9; - - public PdfReportHandler() { } - - public void createPdfFileContent(HttpServletRequest request, HttpServletResponse response, int type) throws IOException, RaptorException { - - Document document = new Document(); - ReportHandler rh = new ReportHandler(); - String formattedDate = new SimpleDateFormat("MMddyyyyHHmm").format(new Date()); - String pdfFName = ""; - String user_id = AppUtils.getUserID(request); - response.reset(); - response.setContentType("application/pdf"); - OutputStream outStream = response.getOutputStream(); - - String formattedReportName = ""; - PdfWriter writer = null; - ReportRuntime firstReportRuntimeObj = null; - int returnValue = 0; - - ReportRuntime rr = null; - if(rr==null) rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME); - - boolean isDashboard = false; - if ((request.getSession().getAttribute(AppConstants.SI_DASHBOARD_REP_ID)!=null) && ( ((String) request.getSession().getAttribute(AppConstants.SI_DASHBOARD_REP_ID)).equals(rr.getReportID())) ) { - isDashboard = true; - } - if(isDashboard) { - try { - String reportID = (String) request.getSession().getAttribute(AppConstants.SI_DASHBOARD_REP_ID); - ReportRuntime rrDash = rh.loadReportRuntime(request, reportID, true, 1); - pb = preparePdfBean(request,rrDash); - - // Setting pb Values - document.setPageSize(PageSize.getRectangle(pb.getPagesize())); - if(!pb.isPortrait()) // get this from properties file - document.setPageSize(document.getPageSize().rotate()); - - // - writer = PdfWriter.getInstance(document, response.getOutputStream()); - writer.setPageEvent(new PageEvent(pb));//header,footer,bookmark - document.open(); - - formattedReportName = new HtmlStripper().stripSpecialCharacters(rrDash.getReportName()); - if(pb.isAttachmentOfEmail()) - response.setHeader("Content-disposition", "inline"); - else - response.setHeader("Content-disposition", "attachment;filename="+ formattedReportName+formattedDate+user_id+".pdf"); - - pdfFName = "dashboard"+formattedReportName+formattedDate+user_id+".pdf"; - 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_DASHBOARD_DISPLAYTYPE_MAP); - - if(reportRuntimeMap!=null) { - //ServletOutputStream sos = response.getOutputStream(); - Set setReportRuntime = reportRuntimeMap.entrySet(); - Set setReportDataMap = reportDataMap.entrySet(); - Set setReportDisplayTypeMap = reportDisplayTypeMap.entrySet(); - - Iterator iter2 = setReportDataMap.iterator(); - Iterator iter3 = setReportDisplayTypeMap.iterator(); - int count = 0; - for(Iterator iter = setReportRuntime.iterator(); iter.hasNext(); ) { - count++; - Map.Entry entryData = (Entry) iter2.next(); - Map.Entry entry = (Entry) iter.next(); - Map.Entry entryCheckChart = (Entry) iter3.next(); - //String rep_id = (String) entry.getKey(); - ReportRuntime rrDashRep = (ReportRuntime) entry.getValue(); - - if(count == 1) { - firstReportRuntimeObj = (ReportRuntime) entry.getValue(); - if(pb.isCoverPageIncluded()) { - document = paintDashboardCoverPage(document, rrDash, firstReportRuntimeObj, request); - } - } - ReportData rdDashRep = (ReportData) entryData.getValue(); - int col = 0; - //pb.setDisplayChart(nvl(rr.getChartType()).trim().length()>0 && rr.getDisplayChart()); - if( ((rrDashRep.getChartType()).trim().length()>0 && rrDashRep.getDisplayChart()) && entryCheckChart.getValue().toString().equals("c")) { - document.newPage(); - pb.setTitle(nvl(rrDashRep.getReportTitle()).length()>0?rrDashRep.getReportTitle():rrDashRep.getReportName()); - paintPdfImage(request, document,AppUtils.getTempFolderPath()+"cr_"+ pb.getUserId()+"_"+request.getSession().getId()+"_"+rrDashRep.getReportID()+".png", rrDashRep); - } else { - document.newPage(); - pb.setTitle(nvl(rrDashRep.getReportTitle()).length()>0?rrDashRep.getReportTitle():rrDashRep.getReportName()); - paintPdfData(request, document,rdDashRep,rrDashRep, ""); - } - } - - } - } catch (DocumentException dex) {dex.printStackTrace();} - catch (RaptorException rex) {rex.printStackTrace();} - } else { - - //ReportRuntime rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME); - //ReportData rd = (ReportData) request.getSession().getAttribute(AppConstants.RI_REPORT_DATA); - rr = null; - ReportData rd = null; - String parent = ""; - int parentFlag = 0; - if(!nvl(request.getParameter("parent"), "").equals("N")) parent = nvl(request.getParameter("parent"), ""); - if(parent.startsWith("parent_")) parentFlag = 1; - if(parentFlag == 1) { - rr = (ReportRuntime) request.getSession().getAttribute(parent+"_rr"); - rd = (ReportData) request.getSession().getAttribute(parent+"_rd"); - } - if(rr==null) rr = (ReportRuntime) request.getSession().getAttribute(AppConstants.SI_REPORT_RUNTIME); - if(rd==null) rd = (ReportData) request.getSession().getAttribute(AppConstants.RI_REPORT_DATA); - - pb = preparePdfBean(request,rr); - FONT_FAMILY = rr.getPDFFont(); - FONT_SIZE = rr.getPDFFontSize(); - //System.out.println(pb); - - formattedReportName = new HtmlStripper().stripSpecialCharacters(rr.getReportName()); - - - - response.setContentType("application/pdf"); - if(pb.isAttachmentOfEmail()) - response.setHeader("Content-disposition", "inline"); - else - response.setHeader("Content-disposition", "attachment;filename="+ formattedReportName+formattedDate+user_id+".pdf"); - - document.setPageSize(PageSize.getRectangle(pb.getPagesize())); - - if(!pb.isPortrait()) // get this from properties file - document.setPageSize(document.getPageSize().rotate()); - - try { - - writer = PdfWriter.getInstance(document, outStream); - writer.setPageEvent(new PageEvent(pb));//header,footer,bookmark - document.open(); - - //System.out.println("Document 1 " + document); - if(pb.isCoverPageIncluded()) { - document = paintCoverPage(document, rr, request); - } - - //boolean isImageRotate = false; - //System.out.println("Document 2 " + document); - - if(pb.isDisplayChart()) { - paintPdfImage(request, document,AppUtils.getTempFolderPath()+"cr_"+ pb.getUserId()+"_"+request.getSession().getId()+"_"+rr.getReportID()+".png", rr); - } - //System.out.println("Document 4" + document); - - document.newPage(); - 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); - returnValue = paintPdfData(request, document, rd, rr, sql_whole); - } else if(type == 2) { - returnValue = paintPdfData(request, document, rd, rr, ""); - } 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) { - rd = rr.loadReportData(-1, AppUtils.getUserID(request), downloadLimit,request, true); - returnValue = paintPdfData(request, document, rd, rr, ""); - } else { - returnValue = paintPdfData(request, document, rd, rr, rr.getWholeSQL()); - } - - - } - - - //paintPdfData(document,rd,rr); - - - } catch (DocumentException de) { - de.printStackTrace(); - //System.err.println("document: " + de.getMessage()); - } - - } - document.close(); - int mb = 1024*1024; - Runtime runtime = Runtime.getRuntime(); - 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)); - - } - - private Document paintCoverPage(Document doc, ReportRuntime rr, HttpServletRequest request) throws IOException, DocumentException { - - //System.out.println("PDFREPORTHANDLER STARTED ... " ); - if(nvl(rr.getPdfImg()).length()>0) { - Image image1 = Image.getInstance(AppUtils.getExcelTemplatePath()+"../../"+AppUtils.getImgFolderURL()+rr.getPdfImg()); - image1.scalePercent(20f, 20f); - doc.add(image1); - } - float firstColumnSize = Globals.getCoverPageFirstColumnSize(); - float[] relativeWidths = {firstColumnSize,1f-firstColumnSize}; - PdfPTable table = new PdfPTable(relativeWidths); - table.getDefaultCell().setBorderWidth(0); - addEmptyRows(table,6); - HTMLWorker worker = new HTMLWorker(doc); - StyleSheet style = new StyleSheet(); - style.loadTagStyle("body", "leading", "16,0"); - StringBuffer reportDescrBuf = new StringBuffer(""); - ArrayList descr = HTMLWorker.parseToList(new StringReader(nvl(rr.getReportDescr())), style); - ArrayList paraList = null; - if(nvl(rr.getReportTitle()).length()>0) { - add2Cells(table,"Report Title : ",nvl(rr.getReportTitle())); - } else { - add2Cells(table,"Report Name : ",nvl(rr.getReportName())); - } - if((descr!=null && descr.size()>0)) { - paraList = (com.lowagie.text.Paragraph)descr.get(0); - for (int i=0 ; i0) { - String nameValue[] = Globals.getSessionInfoForTheCoverPage().split(","); - String name=nameValue[0]; - String value=nameValue[1]; - add2Cells(table,name+" : ",(AppUtils.getRequestNvlValue(request, value).length()>0?AppUtils.getRequestNvlValue(request, value):nvl((String)request.getSession().getAttribute(value)))); - } - - if(Globals.isCreatedOwnerInfoNeeded()) { - add2Cells(table,"Created By : ",nvl(AppUtils.getUserName(rr.getCreateID()))); - add2Cells(table,"Owner : ",nvl(AppUtils.getUserName(rr.getOwnerID()))); - } - if(Globals.displayLoginIdForDownloadedBy()) - add2Cells(table,"Downloaded by : ",nvl(AppUtils.getUserBackdoorLoginId(request))); - else - add2Cells(table,"Downloaded by : ",nvl(AppUtils.getUserName(AppUtils.getUserID(request)))); - - addEmptyRows(table,1); - - boolean isFirstRow = true; - ArrayList al = rr.getParamNameValuePairsforPDFExcel(request, 1); - if(al.size()<=0) { - al = (ArrayList) request.getSession().getAttribute(AppConstants.SI_FORMFIELD_DOWNLOAD_INFO); - } - - Iterator it = al.iterator(); - addEmptyRows(table,1); - //if(!Globals.customizeFormFieldInfo()) { - if(rr.getFormFieldComments(request).length()<=0) { - while(it.hasNext()) { - - if(isFirstRow) { - add2Cells(table, "Run-time Criteria : ", " "); - isFirstRow = false; - } - - IdNameValue value = (IdNameValue)it.next(); - if(!value.getId().trim().equals("BLANK")) - //System.out.println("PDFREPORTHANDLER " + value.getId()+" : "+value.getName()); - add2Cells(table, value.getId()+" : ",value.getName().replaceAll("~",",")); - //add2Cells(table, rr.getFormFieldComments(request), " "); - } - addEmptyRows(table,1); - doc.add(table); - - } else { - it = al.iterator(); - if(it.hasNext()) { - //add2Cells(table, "Run-time Criteria : ", " "); - addEmptyRows(table,1); - doc.add(table); - //com.lowagie.text.html.HtmlParser.parse(doc, new StringReader(rr.getFormFieldComments(request))); - ArrayList p = HTMLWorker.parseToList(new StringReader(rr.getFormFieldComments(request).replaceAll("~",",")), style); - - for (int k = 0; k < p.size(); ++k){ - doc.add((com.lowagie.text.Element)p.get(k)); - } - } - } - - return doc; - } - - - private Document paintDashboardCoverPage(Document doc, ReportRuntime rrDashRep, ReportRuntime firstReportRuntimeObj, HttpServletRequest request) throws IOException, DocumentException { - - //System.out.println("PDFREPORTHANDLER STARTED ... " ); - float firstColumnSize = Globals.getCoverPageFirstColumnSize(); - float[] relativeWidths = {firstColumnSize,1f-firstColumnSize}; - PdfPTable table = new PdfPTable(relativeWidths); - table.getDefaultCell().setBorderWidth(0); - addEmptyRows(table,6); - - add2Cells(table,"Report Name : ",rrDashRep.getReportName()); - add2Cells(table,"Description : ",rrDashRep.getReportDescr()); - if(Globals.getSessionInfoForTheCoverPage().length()>0) { - String nameValue[] = Globals.getSessionInfoForTheCoverPage().split(","); - String name=nameValue[0]; - String value=nameValue[1]; - add2Cells(table,name+" : ",(AppUtils.getRequestNvlValue(request, value).length()>0?AppUtils.getRequestNvlValue(request, value):nvl((String)request.getSession().getAttribute(value)))); - } - - if(Globals.isCreatedOwnerInfoNeeded()) { - add2Cells(table,"Created By : ",AppUtils.getUserName(rrDashRep.getCreateID())); - add2Cells(table,"Owner : ",AppUtils.getUserName(rrDashRep.getOwnerID())); - } - if(Globals.displayLoginIdForDownloadedBy()) - add2Cells(table,"Downloaded by : ",AppUtils.getUserBackdoorLoginId(request)); - else - add2Cells(table,"Downloaded by : ",AppUtils.getUserName(request)); - - addEmptyRows(table,1); - - boolean isFirstRow = true; - ArrayList al = firstReportRuntimeObj.getParamNameValuePairsforPDFExcel(request, 2); - Iterator it = al.iterator(); - addEmptyRows(table,1); - //if(!Globals.customizeFormFieldInfo()) { - if(firstReportRuntimeObj.getFormFieldComments(request).length()<=0) { - while(it.hasNext()) { - - if(isFirstRow) { - add2Cells(table, "Run-time Criteria : ", " "); - isFirstRow = false; - } - - IdNameValue value = (IdNameValue)it.next(); - if(!value.getId().trim().equals("BLANK")) - //System.out.println("PDFREPORTHANDLER " + value.getId()+" : "+value.getName()); - add2Cells(table, value.getId()+" : ",value.getName()); - //add2Cells(table, rr.getFormFieldComments(request), " "); - } - addEmptyRows(table,1); - doc.add(table); - - } else { - it = al.iterator(); - if(it.hasNext()) { - //add2Cells(table, "Run-time Criteria : ", " "); - addEmptyRows(table,1); - doc.add(table); - //com.lowagie.text.html.HtmlParser.parse(doc, new StringReader(rr.getFormFieldComments(request))); - HTMLWorker worker = new HTMLWorker(doc); - StyleSheet style = new StyleSheet(); - style.loadTagStyle("body", "leading", "16,0"); - ArrayList p = HTMLWorker.parseToList(new StringReader(firstReportRuntimeObj.getFormFieldComments(request)), style); - - for (int k = 0; k < p.size(); ++k){ - doc.add((com.lowagie.text.Element)p.get(k)); - } - } - } - - return doc; - } - - - public static void addEmptyRows(PdfPTable table, int rows) throws DocumentException { - for (int i=0; i0?AppUtils.getRequestNvlValue(request, "multiplePieOrder").equals("row"):rr.isMultiplePieOrderByRow())) ); - additionalChartOptionsMap.put("multiplePieLabelDisplay", AppUtils.getRequestNvlValue(request, "multiplePieLabelDisplay").length()>0? AppUtils.getRequestNvlValue(request, "multiplePieLabelDisplay"):rr.getMultiplePieLabelDisplay()); - additionalChartOptionsMap.put("chartDisplay", new Boolean(AppUtils.getRequestNvlValue(request, "chartDisplay").length()>0? AppUtils.getRequestNvlValue(request, "chartDisplay").equals("3D"):rr.isChartDisplayIn3D())); - } else if (chartType.equals(AppConstants.GT_BAR_3D)) { - additionalChartOptionsMap.put("chartOrientation", new Boolean((AppUtils.getRequestNvlValue(request, "chartOrientation").length()>0?AppUtils.getRequestNvlValue(request, "chartOrientation").equals("vertical"):rr.isVerticalOrientation())) ); - additionalChartOptionsMap.put("secondaryChartRenderer", AppUtils.getRequestNvlValue(request, "secondaryChartRenderer").length()>0? AppUtils.getRequestNvlValue(request, "secondaryChartRenderer"):rr.getSecondaryChartRenderer()); - additionalChartOptionsMap.put("chartDisplay", new Boolean(AppUtils.getRequestNvlValue(request, "chartDisplay").length()>0? AppUtils.getRequestNvlValue(request, "chartDisplay").equals("3D"):rr.isChartDisplayIn3D())); - additionalChartOptionsMap.put("lastSeriesALineChart", new Boolean(rr.isLastSeriesALineChart())); - } else if (chartType.equals(AppConstants.GT_LINE)) { - additionalChartOptionsMap.put("chartOrientation", new Boolean((AppUtils.getRequestNvlValue(request, "chartOrientation").length()>0?AppUtils.getRequestNvlValue(request, "chartOrientation").equals("vertical"):rr.isVerticalOrientation())) ); - //additionalChartOptionsMap.put("secondaryChartRenderer", AppUtils.getRequestNvlValue(request, "secondaryChartRenderer").length()>0? AppUtils.getRequestNvlValue(request, "secondaryChartRenderer"):rr.getSecondaryChartRenderer()); - additionalChartOptionsMap.put("chartDisplay", new Boolean(AppUtils.getRequestNvlValue(request, "chartDisplay").length()>0? AppUtils.getRequestNvlValue(request, "chartDisplay").equals("3D"):rr.isChartDisplayIn3D())); - additionalChartOptionsMap.put("lastSeriesABarChart", new Boolean(rr.isLastSeriesABarChart())); - } else if (chartType.equals(AppConstants.GT_TIME_DIFFERENCE_CHART)) { - additionalChartOptionsMap.put("intervalFromDate",AppUtils.getRequestNvlValue(request, "intervalFromDate").length()>0?AppUtils.getRequestNvlValue(request, "intervalFromDate"):rr.getIntervalFromdate()); - additionalChartOptionsMap.put("intervalToDate", AppUtils.getRequestNvlValue(request, "intervalToDate").length()>0? AppUtils.getRequestNvlValue(request, "intervalToDate"):rr.getIntervalTodate()); - additionalChartOptionsMap.put("intervalLabel", AppUtils.getRequestNvlValue(request, "intervalLabel").length()>0? AppUtils.getRequestNvlValue(request, "intervalLabel"):rr.getIntervalLabel()); - } else if (chartType.equals(AppConstants.GT_REGRESSION)) { - additionalChartOptionsMap.put("regressionType",AppUtils.getRequestNvlValue(request, "regressionType").length()>0?AppUtils.getRequestNvlValue(request, "regressionType"):rr.getLinearRegression()); - additionalChartOptionsMap.put("linearRegressionColor",nvl(rr.getLinearRegressionColor())); - additionalChartOptionsMap.put("expRegressionColor",nvl(rr.getExponentialRegressionColor())); - additionalChartOptionsMap.put("maxRegression",nvl(rr.getCustomizedRegressionPoint())); - } else if (chartType.equals(AppConstants.GT_STACK_BAR) ||chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR) || chartType.equals(AppConstants.GT_STACKED_HORIZ_BAR_LINES) - || chartType.equals(AppConstants.GT_STACKED_VERT_BAR) || chartType.equals(AppConstants.GT_STACKED_VERT_BAR_LINES) - ) { - additionalChartOptionsMap.put("overlayItemValue",new Boolean(nvl(rr.getOverlayItemValueOnStackBar()).equals("Y"))); - } - additionalChartOptionsMap.put("legendPosition", nvl(rr.getLegendPosition())); - additionalChartOptionsMap.put("hideToolTips", new Boolean(rr.hideChartToolTips())); - additionalChartOptionsMap.put("hideLegend", new Boolean(AppUtils.getRequestNvlValue(request, "hideLegend").length()>0? AppUtils.getRequestNvlValue(request, "hideLegend").equals("Y"):rr.hideChartLegend())); - additionalChartOptionsMap.put("labelAngle", nvl(rr.getLegendLabelAngle())); - additionalChartOptionsMap.put("maxLabelsInDomainAxis", nvl(rr.getMaxLabelsInDomainAxis())); - additionalChartOptionsMap.put("rangeAxisLowerLimit", nvl(rr.getRangeAxisLowerLimit())); - additionalChartOptionsMap.put("rangeAxisUpperLimit", nvl(rr.getRangeAxisUpperLimit())); - - - boolean totalOnChart = false; - totalOnChart = AppUtils.getRequestNvlValue(request, "totalOnChart").equals("Y"); - String filename = null; - ArrayList graphURL = new ArrayList(); - ArrayList chartNames = new ArrayList(); - ArrayList fileNames = new ArrayList(); - List l = rr.getAllColumns(); - List lGroups = rr.getAllChartGroups(); - HashMap mapYAxis = rr.getAllChartYAxis(rr.getReportParamValues()); - String chartLeftAxisLabel = rr.getFormFieldFilled(nvl(rr.getChartLeftAxisLabel())); - String chartRightAxisLabel = rr.getFormFieldFilled(nvl(rr.getChartRightAxisLabel())); - int displayTotalOnChart = 0; - HashMap formValues = Globals.getRequestParamtersMap(request, false); - - for (Iterator iterC = l.iterator(); iterC.hasNext();) { - DataColumnType dc = (DataColumnType) iterC.next(); - if(nvl(dc.getColName()).equals(AppConstants.RI_CHART_TOTAL_COL)) { - displayTotalOnChart = 1; - } - } - - String legendColumnName = (rr.getChartLegendColumn()!=null)?rr.getChartLegendColumn().getDisplayName():"Legend Column"; - - - - if(ds!=null) - { - if(rr.hasSeriesColumn() && chartType.equals(AppConstants.GT_TIME_SERIES) && (lGroups==null || lGroups.size() <= 0)) { /** Check whether Report has only category columns if so then all the columns will open in seperate chart - sundar**/ - for (int i=0; i0) - tempChartGroupCurrent = chartGroupOrg.substring(0,chartGroupOrg.lastIndexOf("|")); - if(i>0) tempChartGroupPrev = ((String) lGroups.get(i-1)).substring(0,((String) lGroups.get(i-1)).lastIndexOf("|")); - //System.out.println("TEMPCHARTGROUP " + tempChartGroupCurrent + " " + tempChartGroupPrev); - if(tempChartGroupCurrent.equals(tempChartGroupPrev)) continue; - //System.out.println("CHARTGROUPORG " + chartGroupOrg + " " + lGroups) ; - //String chartGroup = chartGroupOrg.substring(0,chartGroupOrg.lastIndexOf("|")); - String chartGroup = chartGroupOrg; - - //System.out.println("$$$$CHARTGROUP in JSP " +chartGroup+ " "+ chartGroupOrg ); - //System.out.println(" rr.getChartGroupDisplayNamesList(chartGroup) " + rr.getChartGroupDisplayNamesList(chartGroup)); - //System.out.println(" rr.getChartGroupColumnColorsList(chartGroup) " + rr.getChartGroupColumnColorsList(chartGroup)); - //System.out.println(" rr.getChartGroupColumnAxisList(chartGroup) " + rr.getChartGroupColumnAxisList(chartGroup)); - //System.out.println(" rr.getChartGroupValueColumnAxisList(chartGroupOrg) " + rr.getChartGroupValueColumnAxisList(chartGroupOrg)); - - downloadFileName = AppUtils.getTempFolderPath()+"cr_"+pb.getUserId()+"_"+request.getSession().getId()+"_"+rr.getReportID()+"_"+i+".png"; - String chartTitle = (Globals.getDisplayChartTitle()? (chartGroup!=null && chartGroup.indexOf("|") > 0 ?chartGroup.substring(0,chartGroup.lastIndexOf("|")):rr.getReportName()):""); - chartTitle = rr.getFormFieldFilled(chartTitle); - String leftAxisLabel = ""; - //if(!rr.isChartMultiSeries()) { - if(!rr.isMultiSeries()) { - leftAxisLabel = ((chartYAxis!=null && chartYAxis.indexOf("|") > 0) ? chartYAxis.substring(0,chartYAxis.lastIndexOf("|")): chartLeftAxisLabel ); - } else { - leftAxisLabel = chartLeftAxisLabel; - } - - filename = null;/*(String) ChartGen.generateChart( chartType, - request.getSession(), - ds, - legendColumnName, - leftAxisLabel, - chartRightAxisLabel, - ((chartType.indexOf("Stacked")>0 || chartType.equals(AppConstants.GT_PIE_MULTIPLE) || chartType.equals(AppConstants.GT_BAR_3D))?rr.getChartDisplayNamesList(AppConstants.CHART_ALL_COLUMNS, formValues):rr.getChartGroupDisplayNamesList(chartGroup, formValues)), - ((chartType.indexOf("Stacked")>0 || chartType.equals(AppConstants.GT_PIE_MULTIPLE) || chartType.equals(AppConstants.GT_BAR_3D))?rr.getChartColumnColorsList(AppConstants.CHART_ALL_COLUMNS, formValues):rr.getChartGroupColumnColorsList(chartGroup, formValues)), - ((chartType.indexOf("Stacked")>0 || chartType.equals(AppConstants.GT_PIE_MULTIPLE) || chartType.equals(AppConstants.GT_BAR_3D))?rr.getChartValueColumnAxisList(AppConstants.CHART_ALL_COLUMNS, formValues):rr.getChartGroupValueColumnAxisList(chartGroupOrg, formValues)), - "", - chartTitle, - null, - rr.getChartWidthAsInt(), - rr.getChartHeightAsInt(), - ((chartType.indexOf("Stacked")>0 || chartType.equals(AppConstants.GT_PIE_MULTIPLE))?rr.getChartValueColumnsList(AppConstants.CHART_WITHOUT_NEWCHART_COLUMNS, formValues):rr.getChartGroupValueColumnAxisList(chartGroupOrg, formValues)), - rr.hasSeriesColumn(), - //rr.isChartMultiSeries(), - rr.isMultiSeries(), - rr.getAllColumns(), - downloadFileName, - totalOnChart, - AppConstants.WEB_VERSION deviceType, - additionalChartOptionsMap, - true - );*/ - try { - Image image = Image.getInstance(downloadFileName); - images.add(image); - } catch (MalformedURLException e) { - e.printStackTrace(); - } - catch (BadElementException e) { - e.printStackTrace(); - - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - if(!chartType.equals(AppConstants.GT_PIE_MULTIPLE)) { - for (int i=0; i 0))) { - - if(/*chartType.equals(AppConstants.GT_TIME_SERIES) && */rr.getChartDisplayNamesList(AppConstants.CHART_WITHOUT_NEWCHART_COLUMNS, formValues)!=null && rr.getChartDisplayNamesList(AppConstants.CHART_WITHOUT_NEWCHART_COLUMNS, formValues).size()>0) { - downloadFileName = AppUtils.getTempFolderPath()+"cr_"+ pb.getUserId()+"_"+request.getSession().getId()+"_"+rr.getReportID()+"_All.png"; - String chartTitle = Globals.getDisplayChartTitle()? rr.getReportName():""; - chartTitle = rr.getFormFieldFilled(chartTitle); - - filename = null;/*(String) ChartGen.generateChart( chartType, - request.getSession(), - ds, - legendColumnName, - chartLeftAxisLabel, - chartRightAxisLabel, - rr.getChartDisplayNamesList(AppConstants.CHART_WITHOUT_NEWCHART_COLUMNS, formValues), - rr.getChartColumnColorsList(AppConstants.CHART_WITHOUT_NEWCHART_COLUMNS, formValues), - rr.getChartValueColumnAxisList(AppConstants.CHART_WITHOUT_NEWCHART_COLUMNS, formValues), - "", - chartTitle, - null, - rr.getChartWidthAsInt(), - rr.getChartHeightAsInt(), - rr.getChartValueColumnsList(AppConstants.CHART_WITHOUT_NEWCHART_COLUMNS, formValues), - rr.hasSeriesColumn(), - //rr.isChartMultiSeries(), - rr.isMultiSeries(), - rr.getAllColumns(), - downloadFileName, - totalOnChart, - AppConstants.WEB_VERSION, - additionalChartOptionsMap, - true - ); -*/ try { - Image image = Image.getInstance(downloadFileName); - images.add(image); - } catch (MalformedURLException e) { - e.printStackTrace(); - } - catch (BadElementException e) { - e.printStackTrace(); - - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } // Stacked Chart Check - } // else no Series Column - - }// if(ds!=null) - - }catch (Exception e) { - e.printStackTrace(); - } -// System.out.println("Total Images " + images.size()); - return images.size()>0?images:null; - - } - -/* - private boolean isImageRotate(Document doc, Image image) { - - System.out.println("image size="+image.getWidthPercentage()+ " "+ image.scaledWidth()+ - " "+image.scaledHeight()+" "+image.getXYRatio()); - System.out.println("page size = "+ doc.getPageSize().width() + " " +doc.getPageSize().height() +" "+ - doc.topMargin() + " " +doc.bottomMargin() + " " + doc.leftMargin() + " " + - doc.rightMargin()); - System.out.println(image.scaledWidth()/image.scaledHeight()); - System.out.println((PageEvent.getPageWidth(doc)/PageEvent.getPageHeight(doc))); -// System.out.println(doc.getPageSize().getRotation()); - - float image_w = image.scaledWidth(); - float image_h = image.scaledHeight(); - float image_ratio = image_w/image_h; - - float page_w = PageEvent.getPageWidth(doc); - float page_h = PageEvent.getPageHeight(doc); - float page_ratio = page_w/page_h; - - return (image_w > page_w && image_ratio > page_ratio) || - (image_h > page_h && image_ratio < page_ratio); - - } - -*/ - private final int DEFAULT_PDF_DISPLAY_WIDTH = 10; - private int paintPdfData(HttpServletRequest request, Document document, ReportData rd, ReportRuntime rr, String sql_whole) throws DocumentException, RaptorException, IOException { - - int mb = 1024*1024; - Runtime runtime = Runtime.getRuntime(); - int returnValue = 0; - sql_whole = rr.getWholeSQL(); - if(rd.getDataRowCount() >= rr.getReportDataSize()) { - sql_whole=""; - } - float f[] = getRelativeWidths(rd, rr.getReportType().equals(AppConstants.RT_CROSSTAB)); - PdfPTable table = new PdfPTable(f); - table.setWidthPercentage(100f); - table.getDefaultCell().setHorizontalAlignment(Rectangle.ALIGN_CENTER); - table.getDefaultCell().setVerticalAlignment(Rectangle.ALIGN_BOTTOM); - - ReportDefinition rdef = (new ReportHandler()).loadReportDefinition(request, rr.getReportID()); - - List allColumns = rdef.getAllColumns(); - - float[] repotWidths = new float[rdef.getVisibleColumnCount()]; - int columnIdx = 0; - float pdfDisplayWidth = 0; - for(Iterator iter = allColumns.iterator(); iter.hasNext();){ - DataColumnType dct = (DataColumnType) iter.next(); - if(dct.isVisible()) { - - if(dct.getPdfDisplayWidthInPxls() == null || dct.getPdfDisplayWidthInPxls().equals("") || dct.getPdfDisplayWidthInPxls().startsWith("null")) - pdfDisplayWidth = DEFAULT_PDF_DISPLAY_WIDTH; - else - pdfDisplayWidth = Float.parseFloat(dct.getPdfDisplayWidthInPxls()); - - repotWidths [columnIdx++] = pdfDisplayWidth; - } - } - - table.setWidths(repotWidths); - - //table.setH - - //TODO: check title and subtitle - 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 titleRep = (String) session.getAttribute("TITLE_"+index); - String subtitle = (String) session.getAttribute("SUBTITLE_"+index); - - if(nvl(titleRep).length()>0 && nvl(subtitle).length()>0) - table.setHeaderRows(3); - else if (nvl(titleRep).length()>0) - table.setHeaderRows(2); - else - table.setHeaderRows(1); - table = paintPdfReportHeader(request, document, table, rr, f); - paintPdfTableHeader(document, rd, table); - - int idx = 0; - int fragmentsize = 30; //for memory management - - ResultSet rs = null; - Connection conn = null; - Statement st = null; - ResultSetMetaData rsmd = null; - rd.reportDataRows.resetNext(); - DataRow dr = rd.reportDataRows.getNext(); - - //addRowHeader(table,dr,idx,rd); - - //addRowColumns(table,dr,idx); - if(nvl(sql_whole).length() >0 && rr.getReportType().equals(AppConstants.RT_LINEAR)) { - try { - conn = ConnectionUtils.getConnection(rr.getDbInfo()); - st = conn.createStatement(); - logger.debug(EELFLoggerDelegate.debugLogger, ("************* Map Whole SQL *************")); - logger.debug(EELFLoggerDelegate.debugLogger, (sql_whole)); - logger.debug(EELFLoggerDelegate.debugLogger, ("*****************************************")); - rs = st.executeQuery(sql_whole); - rsmd = rs.getMetaData(); - int numberOfColumns = rsmd.getColumnCount(); - HashMap colHash = new HashMap(); - dr = null; - int j = 0; - int rowCount = 0; - String title = ""; - while(rs.next()) { - -/* if(runtime.freeMemory()/mb <= ((runtime.maxMemory()/mb)*Globals.getMemoryThreshold()/100) ) { - returnValue = 1; - String cellValue = Globals.getUserDefinedMessageForMemoryLimitReached() + " "+ rowCount +" records out of " + rr.getReportDataSize() + " were downloaded to PDF."; - Font cellFont = FontFactory.getFont(Globals.getDataFontFamily(), - Globals.getDataFontSize(), - Font.NORMAL, Color.BLACK); - PdfPCell cell = new PdfPCell(new Paragraph(cellValue,cellFont)); - table.addCell(cell); - document.add(table); - return returnValue; - } -*/ rowCount++; - colHash = new HashMap(); - for (int i = 1; i <= numberOfColumns; i++) { - colHash.put(rsmd.getColumnName(i), rs.getString(i)); - } - rd.reportDataRows.resetNext(); - - dr = rd.reportDataRows.getNext(); - - j = 0; - /*if(rd.reportTotalRowHeaderCols!=null) { - - HtmlFormatter rfmt = dr.getRowFormatter(); - - Font cellFont = FontFactory.getFont(Globals.getDataFontFamily(), - Globals.getDataFontSize(), - Font.NORMAL, Color.BLACK); - if(rfmt != null) { - cellFormatterFont(rfmt,cellFont); - } - - String cellValue = new Integer(rowCount).toString(); - PdfPCell cell = new PdfPCell(new Paragraph(cellValue,cellFont)); - - //row background color can be overwritten by cell background color - cell.setBackgroundColor(getRowBackgroundColor(dr, idx)); - - cell.setHorizontalAlignment(Rectangle.ALIGN_CENTER); - - if(rfmt != null) { - formatterCell(rfmt,cell); - } - table.addCell(cell); - }*/ - - for (dr.resetNext(); dr.hasNext();j++) { - DataValue dv = dr.getNext(); - /*if(j == 0) { - HtmlFormatter cfmt = dv.getCellFormatter(); - HtmlFormatter rfmt = dv.getRowFormatter(); - - Font cellFont = FontFactory.getFont(Globals.getDataFontFamily(), - Globals.getDataFontSize(), - Font.NORMAL, Color.BLACK); - if(cfmt!= null) { - cellFormatterFont(cfmt,cellFont); - } - else if(rfmt != null) { - cellFormatterFont(rfmt,cellFont); - } - else { - if(dv.isBold()) { - cellFont.setStyle(Font.BOLD); - } - } - - //String cellValue = strip.stripHtml(value.trim()); - PdfPCell cell = new PdfPCell(new Paragraph(rowCount+"",cellFont)); - - //row background color can be overwritten by cell background color - cell.setBackgroundColor(getRowBackgroundColor(dr, idx)); - - if(nvl(dv.getAlignment()).trim().length()>0) - cell.setHorizontalAlignment(ElementTags.alignmentValue(dv.getAlignment())); - else - cell.setHorizontalAlignment(Rectangle.ALIGN_CENTER); - - if(cfmt!= null) { - formatterCell(cfmt,cell); - } - else if(rfmt != null) { - formatterCell(rfmt,cell); - } - table.addCell(cell); - }*/ - - //for (chr.resetNext(); chr.hasNext();) { - //ColumnHeader ch = chr.getNext(); - String value = nvl((String)colHash.get(dv.getColId().toUpperCase())); - if(dv.isVisible()) { - - HtmlFormatter cfmt = dv.getCellFormatter(); - HtmlFormatter rfmt = dv.getRowFormatter(); - - Font cellFont = FontFactory.getFont(FONT_FAMILY, - FONT_SIZE, - Font.NORMAL, Color.BLACK); - if(cfmt!= null) { - cellFormatterFont(cfmt,cellFont); - } - else if(rfmt != null) { - cellFormatterFont(rfmt,cellFont); - } - else { - if(dv.isBold()) { - cellFont.setStyle(Font.BOLD); - } - } - - String cellValue = strip.stripHtml(value.trim()); - PdfPCell cell = new PdfPCell(new Paragraph(cellValue,cellFont)); - - //row background color can be overwritten by cell background color - cell.setBackgroundColor(getRowBackgroundColor(dr, idx)); - - if(nvl(dv.getAlignment()).trim().length()>0) - cell.setHorizontalAlignment(ElementTags.alignmentValue(dv.getAlignment())); - else - cell.setHorizontalAlignment(Rectangle.ALIGN_CENTER); - - if(cfmt!= null) { - formatterCell(cfmt,cell); - } - else if(rfmt != null) { - formatterCell(rfmt,cell); - } - - - - table.addCell(cell); - - }//if isVisible() - - - } - - } - if(rd.reportDataTotalRow!=null) { - for (rd.reportDataTotalRow.resetNext(); rd.reportDataTotalRow.hasNext();idx++) { - dr = rd.reportDataTotalRow.getNext(); - table.getDefaultCell().setHorizontalAlignment(Rectangle.ALIGN_CENTER); - Font rowHeaderFont = FontFactory.getFont(FONT_FAMILY, - FONT_SIZE, - Font.NORMAL, Color.BLACK); - rowHeaderFont.setStyle(Font.BOLD); - rowHeaderFont.setSize(FONT_SIZE+1f); - table.getDefaultCell().setBackgroundColor(getRowBackgroundColor(dr, idx)); - table.addCell(new Paragraph("Total",rowHeaderFont)); - - - addTotalRowColumns(table,dr,idx); - if (idx % fragmentsize == fragmentsize - 1) { - document.add(table); - table.deleteBodyRows(); - table.setSkipFirstHeader(true); - } - - } - } - } catch (SQLException ex) { - throw new RaptorException(ex); - } catch (ReportSQLException ex) { - throw new RaptorException(ex); - } catch (Exception ex) { - if(!(ex.getCause() instanceof java.net.SocketException) ) - throw new RaptorException (ex); - } finally { - try { - if(conn!=null) - conn.close(); - if(st!=null) - st.close(); - if(rs!=null) - rs.close(); - } catch (SQLException ex) { - throw new RaptorException(ex); - } - } - - -// if (idx % fragmentsize == fragmentsize - 1) { -// document.add(table); -// table.deleteBodyRows(); -// table.setSkipFirstHeader(true); -// } - - //document.add(table); - } else { - if(rr.getReportType().equals(AppConstants.RT_LINEAR)) { - int rowCount = 0; - for(rd.reportDataRows.resetNext();rd.reportDataRows.hasNext();idx++) - { - rowCount++; - - /*if(rd.reportTotalRowHeaderCols!=null) { - HtmlFormatter rfmt = dr.getRowFormatter(); - - Font cellFont = FontFactory.getFont(Globals.getDataFontFamily(), - Globals.getDataFontSize(), - Font.NORMAL, Color.BLACK); - if(rfmt != null) { - cellFormatterFont(rfmt,cellFont); - } - - //String cellValue = new Integer(rowCount).toString(); - //PdfPCell cell = new PdfPCell(new Paragraph(cellValue,cellFont)); - - //row background color can be overwritten by cell background color - //cell.setBackgroundColor(getRowBackgroundColor(dr, idx)); - - //cell.setHorizontalAlignment(Rectangle.ALIGN_CENTER); - - //if(rfmt != null) { - //formatterCell(rfmt,cell); - //} - //table.addCell(cell); - }*/ - - - - if(runtime.freeMemory()/mb <= ((runtime.maxMemory()/mb)*Globals.getMemoryThreshold()/100) ) { - returnValue = 1; - } - - dr = rd.reportDataRows.getNext(); - - addRowHeader(table,dr,idx,rd); - - addRowColumns(table,dr,idx); - - if (idx % fragmentsize == fragmentsize - 1) { - document.add(table); - table.deleteBodyRows(); - table.setSkipFirstHeader(true); - } - } - - if(rd.reportDataTotalRow!=null) { - for (rd.reportDataTotalRow.resetNext(); rd.reportDataTotalRow.hasNext();idx++) { - dr = rd.reportDataTotalRow.getNext(); - table.getDefaultCell().setHorizontalAlignment(Rectangle.ALIGN_CENTER); - Font rowHeaderFont = FontFactory.getFont(FONT_FAMILY, - FONT_SIZE, - Font.NORMAL, Color.BLACK); - rowHeaderFont.setStyle(Font.BOLD); - rowHeaderFont.setSize(FONT_SIZE+1f); - table.getDefaultCell().setBackgroundColor(getRowBackgroundColor(dr, idx)); - table.addCell(new Paragraph("Total",rowHeaderFont)); - - - addTotalRowColumns(table,dr,idx); - if (idx % fragmentsize == fragmentsize - 1) { - document.add(table); - table.deleteBodyRows(); - table.setSkipFirstHeader(true); - } - - } - } - - } else if (rr.getReportType().equals(AppConstants.RT_CROSSTAB)) { - int rowCount = 0; - List l = rd.getReportDataList(); - boolean first = true; - for (int dataRow = 0; dataRow < l.size(); dataRow++) { - first = true; - rowCount++; - dr = (DataRow) l.get(dataRow); - Vector rowNames = dr.getRowValues(); - for(dr.resetNext(); dr.hasNext(); ) { - - if(first) { - HtmlFormatter rfmt = dr.getRowFormatter(); - - Font cellFont = FontFactory.getFont(FONT_FAMILY, - FONT_SIZE, - Font.NORMAL, Color.BLACK); - if(rfmt != null) { - cellFormatterFont(rfmt,cellFont); - } - String cellValue = ""; - PdfPCell cell = null; - //String cellValue = new Integer(rowCount).toString(); - //PdfPCell cell = new PdfPCell(new Paragraph(cellValue,cellFont)); - //row background color can be overwritten by cell background color - //cell.setBackgroundColor(getRowBackgroundColor(dr, idx)); - - //cell.setHorizontalAlignment(Rectangle.ALIGN_CENTER); - - //if(rfmt != null) { - //formatterCell(rfmt,cell); - // } - //table.addCell(cell); - if(rowNames!=null) { - for(int i=0; i0) { - table.getDefaultCell().setColspan(rh.getColSpan()); - table.getDefaultCell().setBackgroundColor(getRowBackgroundColor(dr, idx)); - table.addCell(new Paragraph(strip.stripHtml(rh.getRowTitle()),rowHeaderFont)); - } - } - } - - private void addRowColumns(PdfPTable table, DataRow dr, int idx) { - - table.getDefaultCell().setColspan(1); - - for(dr.resetNext();dr.hasNext();) - { - DataValue dv = dr.getNext(); - //System.out.println(columnCount +" --> "+dv); - if(dv.isVisible()) { - HtmlFormatter cfmt = dv.getCellFormatter(); - HtmlFormatter rfmt = dv.getRowFormatter(); - - Font cellFont = FontFactory.getFont(FONT_FAMILY, - FONT_SIZE, - Font.NORMAL, Color.BLACK); - if(cfmt!= null) { - cellFormatterFont(cfmt,cellFont); - } - else if(rfmt != null) { - cellFormatterFont(rfmt,cellFont); - } - else { - if(dv.isBold()) { - cellFont.setStyle(Font.BOLD); - } - } - - String cellValue = strip.stripHtml(dv.getDisplayValue().trim()); - PdfPCell cell = new PdfPCell(new Paragraph(cellValue,cellFont)); - - //row background color can be overwritten by cell background color - cell.setBackgroundColor(getRowBackgroundColor(dr, idx)); - - if(nvl(dv.getAlignment()).trim().length()>0) - cell.setHorizontalAlignment(ElementTags.alignmentValue(dv.getAlignment())); - else - cell.setHorizontalAlignment(Rectangle.ALIGN_CENTER); - - if(cfmt!= null) { - formatterCell(cfmt,cell); - } - else if(rfmt != null) { - formatterCell(rfmt,cell); - } - - table.addCell(cell); - - }//if isVisible() - } - } - - - private void addTotalRowColumns(PdfPTable table, DataRow dr, int idx) { - - table.getDefaultCell().setColspan(1); - dr.resetNext(); - dr.getNext(); - for(;dr.hasNext();) - { - DataValue dv = dr.getNext(); - //System.out.println(columnCount +" --> "+dv); - if(dv.isVisible()) { - HtmlFormatter cfmt = dv.getCellFormatter(); - HtmlFormatter rfmt = dv.getRowFormatter(); - - Font cellFont = FontFactory.getFont(FONT_FAMILY, - FONT_SIZE, - Font.NORMAL, Color.BLACK); - if(cfmt!= null) { - cellFormatterFont(cfmt,cellFont); - } - else if(rfmt != null) { - cellFormatterFont(rfmt,cellFont); - } - else { - if(dv.isBold()) { - cellFont.setStyle(Font.BOLD); - } - } - - String cellValue = strip.stripHtml(dv.getDisplayValue().trim()); - PdfPCell cell = new PdfPCell(new Paragraph(cellValue,cellFont)); - - //row background color can be overwritten by cell background color - cell.setBackgroundColor(getRowBackgroundColor(dr, idx)); - - if(nvl(dv.getAlignment()).trim().length()>0) - cell.setHorizontalAlignment(ElementTags.alignmentValue(dv.getAlignment())); - else - cell.setHorizontalAlignment(Rectangle.ALIGN_CENTER); - - if(cfmt!= null) { - formatterCell(cfmt,cell); - } - else if(rfmt != null) { - formatterCell(rfmt,cell); - } - - table.addCell(cell); - - }//if isVisible() - } - } - - - private void formatterCell(HtmlFormatter fmt, PdfPCell cell) { - - if(nvl(fmt.getBgColor()).trim().length()>0) - cell.setBackgroundColor(Color.decode(fmt.getBgColor())); - if(nvl(fmt.getAlignment()).trim().length()>0) - cell.setHorizontalAlignment(ElementTags.alignmentValue(fmt.getAlignment())); - } - - private void cellFormatterFont(HtmlFormatter fmt, Font font) { - - if(fmt.isBold()) - font.setStyle(Font.BOLD); - if(fmt.isItalic()) - font.setStyle(Font.ITALIC); - if(fmt.isUnderline()) - font.setStyle(Font.UNDERLINE); - if(fmt.getFontColor().trim().length()>0) - font.setColor(Color.decode(fmt.getFontColor())); - if(fmt.getFontSize().trim().length()>0) - font.setSize(Float.parseFloat(fmt.getFontSize())-Globals.getDataFontSizeOffset()); -// if(fmt.getFontFace().trim().length()>0) -// cellFont.setFamily() - - } - - private Color getRowBackgroundColor(DataRow dr, int idx) { - - Color color = Color.decode(Globals.getDataDefaultBackgroundHexCode()); - - HtmlFormatter rhf = dr.getRowFormatter(); - if(rhf!=null && nvl(rhf.getBgColor()).trim().length()>0) - - color = Color.decode(rhf.getBgColor()); - - else if(pb.isAlternateColor() && idx%2==0) - - color = Color.decode(Globals.getDataBackgroundAlternateHexCode()); - - return color; - - } - - private int getTotalVisbleColumns(ReportData rd) { - - int totalVisbleColumn = rd.getTotalColumnCount(); - for(rd.reportDataRows.resetNext();rd.reportDataRows.hasNext();) - { - DataRow dr = rd.reportDataRows.getNext(); - for(dr.resetNext();dr.hasNext();) { - DataValue dv = dr.getNext(); - if(!dv.isVisible()) totalVisbleColumn--; - } - - break; - } - - return totalVisbleColumn; - } - - /* - private int getFirstRowIndex(ReportRuntime rr) { - return (pb.getCurrentPage()>0)?pb.getCurrentPage()*rr.getPageSize()+1 : 1; - } - */ - private float[] getRelativeWidths(ReportData rd, boolean crosstab){ - - int totalColumns = getTotalVisbleColumns(rd); - /*if(rd.reportTotalRowHeaderCols!=null) { - totalColumns += 1; - }*/ - if(crosstab) { - totalColumns += 1; - } - - if(totalColumns == 0 ) - totalColumns=1; - - float[] relativeWidths = new float[totalColumns]; - //initial widths are even - for(int i=0; i0) { - //PdfPTable table = new PdfPTable(1); - table.setWidthPercentage(100f); - table.getDefaultCell().setHorizontalAlignment(Rectangle.ALIGN_CENTER); - table.getDefaultCell().setVerticalAlignment(Rectangle.ALIGN_BOTTOM); - - - Font font = FontFactory.getFont(FONT_FAMILY, - FONT_SIZE-2f, - Font.BOLD, - Color.BLACK); - - //addEmptyRows(table,1); - table.getDefaultCell().setHorizontalAlignment(Rectangle.ALIGN_CENTER); - //table.getDefaultCell().setBackgroundColor(Color.decode(Globals.getDataTableHeaderBackgroundFontColor())); - title = Utils.replaceInString(title, "
", " "); - title = Utils.replaceInString(title, "
", " "); - title = Utils.replaceInString(title, "
", " "); - title = strip.stripHtml(nvl(title).trim()); - //subtitle = Utils.replaceInString(subtitle, "
", " "); - //subtitle = Utils.replaceInString(subtitle, "
", " "); - //subtitle = Utils.replaceInString(subtitle, "
", " "); - //subtitle = strip.stripHtml(nvl(subtitle).trim()); - StyleSheet styles = new StyleSheet(); - - HTMLWorker htmlWorker = new HTMLWorker(document); - ArrayList cc = new ArrayList(); - cc = htmlWorker.parseToList(new StringReader(subtitle), styles); - - Phrase p1 = new Phrase(); - for (int i = 0; i < cc.size(); i++){ - Element elem = (Element)cc.get(i); - ArrayList al = elem.getChunks(); - for (int j = 0; j < al.size(); j++) { - Chunk chunk = (Chunk) al.get(j); - chunk.font().setSize(6.0f); - } - p1.add(elem); - } - //cell = new PdfPCell(p1); - StyleSheet style = new StyleSheet(); - style.loadTagStyle("font", "font-size", "3"); - style.loadTagStyle("font", "size", "3"); - styles.loadStyle("pdfFont1", "size", "11px"); - styles.loadStyle("pdfFont1", "font-size", "11px"); - /*ArrayList p = HTMLWorker.parseToList(new StringReader(nvl(title)), style); - for (int k = 0; k < p.size(); ++k){ - document.add((com.lowagie.text.Element)p.get(k)); - }*/ - //p1.font().setSize(3.0f); - PdfPCell titleCell = new PdfPCell(new Phrase(title, font)); - titleCell.setColspan(rr.getVisibleColumnCount()); - PdfPCell subtitleCell = new PdfPCell(p1); - subtitleCell.setColspan(rr.getVisibleColumnCount()); - titleCell.setHorizontalAlignment(1); - subtitleCell.setHorizontalAlignment(1); - table.addCell(titleCell); - table.addCell(subtitleCell); - //document.add(table); - } - return table; - } - - - private void paintPdfReportFooter(HttpServletRequest request, Document document, ReportRuntime rr, float[] f) - throws DocumentException, IOException { - - 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 title = (String) session.getAttribute("FOOTER_"+index); - if(nvl(title).length()>0) { - PdfPTable table = new PdfPTable(1); - table.setWidthPercentage(100f); - table.getDefaultCell().setHorizontalAlignment(Rectangle.ALIGN_CENTER); - table.getDefaultCell().setVerticalAlignment(Rectangle.ALIGN_BOTTOM); - - Font font = FontFactory.getFont(FONT_FAMILY, - FONT_SIZE-3f, - Font.BOLD, - Color.BLACK); - - - //addEmptyRows(table,1); - table.getDefaultCell().setHorizontalAlignment(Rectangle.ALIGN_CENTER); - //table.getDefaultCell().setBackgroundColor(Color.decode(Globals.getDataTableHeaderBackgroundFontColor())); - /*title = Utils.replaceInString(title, "
", " "); - title = Utils.replaceInString(title, "
", " "); - title = Utils.replaceInString(title, "
", " "); - title = strip.stripHtml(nvl(title).trim());*/ - StyleSheet style = new StyleSheet(); - - HTMLWorker htmlWorker = new HTMLWorker(document); - ArrayList cc = new ArrayList(); - cc = htmlWorker.parseToList(new StringReader(title), style); - - Phrase p1 = new Phrase(); - for (int i = 0; i < cc.size(); i++){ - Element elem = (Element)cc.get(i); - ArrayList al = elem.getChunks(); - for (int j = 0; j < al.size(); j++) { - Chunk chunk = (Chunk) al.get(j); - chunk.font().setSize(6.0f); - } - p1.add(elem); - } - -/* - HTMLWorker.parseToList(new StringReader(nvl(title)), style);*/ - PdfPCell titleCell = new PdfPCell(p1); - titleCell.setHorizontalAlignment(Element.ALIGN_LEFT); - table.addCell(titleCell); - //table. - document.add(table); - } - //return table; - } - - - private void paintPdfTableHeader(Document document, ReportData rd, PdfPTable table) - throws DocumentException { - - Font font = FontFactory.getFont(FONT_FAMILY, - FONT_SIZE+1f, - Font.BOLD, - Color.decode(Globals.getDataTableHeaderFontColor())); - //table.setHeaderRows(1); - table.getDefaultCell().setHorizontalAlignment(Rectangle.ALIGN_CENTER); - table.getDefaultCell().setBackgroundColor(Color.decode(Globals.getDataTableHeaderBackgroundFontColor())); - String title = ""; - - boolean firstPass = true; - - /*if(rd.reportTotalRowHeaderCols!=null) { - if(firstPass) { - table.addCell(new Paragraph("No.", font)); - firstPass = false; - } - }*/ - for (rd.reportColumnHeaderRows.resetNext(); rd.reportColumnHeaderRows.hasNext();) - { - if(firstPass) { - for(rd.reportRowHeaderCols.resetNext();rd.reportRowHeaderCols.hasNext();) { - /*if(firstPass) { - table.addCell(new Paragraph("No.", font)); - firstPass = false; - } else {*/ - RowHeaderCol rhc = rd.reportRowHeaderCols.getNext(); - title = rhc.getColumnTitle(); - title = Utils.replaceInString(title,"_nl_", " \n"); - table.addCell(new Paragraph(title,font)); - //} - } - } - - ColumnHeaderRow chr = rd.reportColumnHeaderRows.getNext(); - for (chr.resetNext(); chr.hasNext();) { - ColumnHeader ch = chr.getNext(); - //System.out.println(ch); - if(ch.isVisible()) { - title = ch.getColumnTitle(); - title = Utils.replaceInString(title,"_nl_", " \n"); - table.addCell(new Paragraph(title,font)); - } - } - } - } - - public static String currentTime(String pattern) { - try { - SimpleDateFormat oracleDateFormat = new SimpleDateFormat("MM/dd/yyyy kk:mm:ss"); - Date sysdate = oracleDateFormat.parse(ReportLoader.getSystemDateTime()); - SimpleDateFormat dtimestamp = new SimpleDateFormat(Globals.getScheduleDatePattern()); - return dtimestamp.format(sysdate)+" "+Globals.getTimeZone(); - //paramList.add(new IdNameValue("DATE", dtimestamp.format(sysdate)+" "+Globals.getTimeZone())); - } catch(Exception ex) {} - - SimpleDateFormat s = new SimpleDateFormat(pattern); - s.setTimeZone(TimeZone.getTimeZone(Globals.getTimeZone())); - //System.out.println("^^^^^^^^^^^^^^^^^^^^ " + Calendar.getInstance().getTime()); - //System.out.println("^^^^^^^^^^^^^^^^^^^^ " + s.format(Calendar.getInstance().getTime())); - return s.format(Calendar.getInstance().getTime()); - } - - private PdfBean preparePdfBean(HttpServletRequest request,ReportRuntime rr) { - PdfBean pb = new PdfBean(); - - pb.setUserId(AppUtils.getUserID(request)); - - pb.setWhereToShowPageNumber(Globals.getPageNumberPosition()); - pb.setAlternateColor(Globals.isDataAlternateColor()); - pb.setTimestampPattern(Globals.getDatePattern()); - - int temp = -1; - try { - temp = Integer.parseInt(request.getParameter(AppConstants.RI_NEXT_PAGE)); - } catch (NumberFormatException e) {} - pb.setCurrentPage(temp); - - //pb.setPortrait( trueORfalse(request.getParameter("isPortrait"),true)); - pb.setPortrait(trueORfalse(rr.getPDFOrientation() == "portait"?"true":"false", true)); - //pb.setCoverPageIncluded( trueORfalse(request.getParameter("isCoverPageIncluded"), true)); - //if(Globals.isCoverPageNeeded()) { - pb.setCoverPageIncluded(Globals.isCoverPageNeeded()?rr.isPDFCoverPage():false); - //} - pb.setTitle(nvl(request.getParameter("title"))); - pb.setPagesize(nvls(request.getParameter("pagesize"),"LETTER")); - - pb.setLogo1Url(rr.getPDFLogo1()); - pb.setLogo2Url(rr.getPDFLogo2()); - pb.setLogo1Size(rr.getPDFLogo1Size()); - pb.setLogo2Size(rr.getPDFLogo2Size()); - pb.setFullWebContextPath(request.getSession().getServletContext().getRealPath(File.separator)); - - - pb.setDisplayChart(nvl(rr.getChartType()).trim().length()>0 && rr.getDisplayChart()); - - String id = nvl(request.getParameter("pdfAttachmentKey")).trim(); - String log_id = nvl(request.getParameter("log_id")).trim(); - if(id.length()>0 && log_id.length()>0) - pb.setAttachmentOfEmail(true); - - return pb; - } - - private boolean trueORfalse(String str) { - return (str != null) && (str.equalsIgnoreCase("true")); - } - - private boolean trueORfalse(String str,boolean b_default) { - return str==null ? b_default : (str.equalsIgnoreCase("true")); - } - - -} -- cgit 1.2.3-korg