Example usage for com.lowagie.text Cell setLeading

List of usage examples for com.lowagie.text Cell setLeading

Introduction

In this page you can find the example usage for com.lowagie.text Cell setLeading.

Prototype

public void setLeading(float value) 

Source Link

Document

Sets the leading.

Usage

From source file:QMSMultiQuoteController.java

License:Open Source License

private int doPDFGeneration(MultiQuoteFinalDOB finalDOB, HttpServletRequest request,
        HttpServletResponse response) throws Exception {
    int mailFlag = 0;
    int faxFlag = 0;
    int printFlag = 0;
    int returnFlag = 3;
    //@@Modified by kiran.v on 01/08/2011 for Wpbn Issue 271485
    ArrayList Sd = null;/*  w  w w.  ja va  2  s.  c  om*/
    ArrayList Cd = null;
    ArrayList Cdn = null;
    boolean frequencyFlag = false;
    boolean carrierFlag = false;
    boolean serviceFlag = false;
    Map<String, String> surChargesMap = null;
    //Kiran ends
    String transitTime = null;
    String[] contents = null;
    String[] levels = null;
    String[] aligns = null;
    String[] headFoot = null;
    String charge_desc = null;//@@Added by govind for the issue 258189
    //@@Added by Kameswari for the WPBN issue-61289
    ArrayList dobList = new ArrayList();
    MultiQuoteAttachmentDOB attachmentDOB = null;
    //@@Added by Kameswari for the WPBN issue-146448
    ArrayList charges = null;
    int chargesSize = 0;
    int noOfLanes = 0;
    MultiQuoteCharges chargesDOB = null;
    MultiQuoteChargeInfo multiQuoteChargeInfo = null;
    ArrayList freightCharges = null;
    MultiQuoteFreightLegSellRates legCharges = null;
    MultiQuoteFreightLegSellRates legOrginCharges = null;
    MultiQuoteFreightLegSellRates legDestCharges = null;
    String str1[] = null;
    ArrayList frequency = new ArrayList();
    ArrayList carrier = new ArrayList();
    ArrayList transittime = new ArrayList();
    ArrayList ratevalidity = new ArrayList();
    ArrayList frequency_o = new ArrayList();
    ArrayList frequency_d = new ArrayList();
    ArrayList carrier_o = new ArrayList();
    ArrayList carrier_d = new ArrayList();
    ArrayList transit_o = new ArrayList();
    ArrayList transit_d = new ArrayList();
    ArrayList validity_o = new ArrayList();
    ArrayList validity_d = new ArrayList();
    int size = 0;

    int gTemp = 0; // Added By Gowtham For PDF View Issue
    String placeDesc = null; // Added By Gowtham For PDF View Issue
    String tmpOrgPort = ""; // Added by Gowtham
    int gTemp1 = 0;
    String tmpfrq = "";
    String tmpServl = "";
    String tmpCarrier = "";
    String tmpDestPort = "";
    int LegSize = 0;
    HashSet PortAbbSet = null;
    //@@WPBN issue-146448
    ArrayList filesList = new ArrayList();
    File file = null;
    byte[] buffer = null;
    ArrayList bufferList = new ArrayList();
    ArrayList pdfFilesList = new ArrayList();
    HttpSession session = request.getSession();
    // Added by kiran.v on 16/09/2011
    String operation = finalDOB.getOperation() != null ? finalDOB.getOperation()
            : finalDOB.getMasterDOB().getOperation();

    PdfWriter writer = null; //Method: doPDFGeneration Defect: PdfWriter is not closedSuggestion: Close and nullify the writer in the finally block.
    //   @@ Added by subrahmanyam for the WPBN ISSUE: 146460 on 29/01/2009    
    QMSMultiQuoteSessionHome home = null;
    QMSMultiQuoteSession remote = null;
    int incoSize = 0; // Added by Gowtham on 24Feb2011 for IncoTerms display in PDF
    //   @@ Ended by subrahmanyam for the WPBN ISSUE: 146460 on 29/01/2009   

    //@@ WPBN issue-61289
    PdfPTable pTable;
    PdfPCell pCell;

    try {
        Sd = new ArrayList();
        Cd = new ArrayList();
        Cdn = new ArrayList();
        String carrierChecked = request.getParameter("selectCarrier");
        String serviceLevelChecked = request.getParameter("selectService");
        String frequencyChecked = request.getParameter("selectFrequecy");
        String transitTimeChecked = request.getParameter("selectTransitTime");
        String validityChecked = request.getParameter("selectFrieghtValidity");
        boolean carrierflag = false;
        boolean serviceflag = false;
        boolean frequencyflag = false;
        //@@Added by kiran.v on 23/09/2011 for Wpbn Issue 272712
        boolean transittimeflag = false;
        boolean freightValidity = false;
        DecimalFormat df = new DecimalFormat("###,###,###,##0.00");
        MultiQuoteHeader headerDOB = finalDOB.getHeaderDOB();
        MultiQuoteMasterDOB masterDOB = finalDOB.getMasterDOB();
        ESupplyDateUtility eSupplyDateUtility = new ESupplyDateUtility();
        ESupplyGlobalParameters loginbean = (ESupplyGlobalParameters) request.getSession()
                .getAttribute("loginbean");

        eSupplyDateUtility.setPatternWithTime("DD-MONTH-YYYY");
        //eSupplyDateUtility.setPatternWithTime(loginbean.getUserPreferences().getDateFormat());
        //@@ Commented & Added by subrahmanyam for the Effective pbn Issue 212006 on # 26-Jul-10
        /* String[] strDate  = eSupplyDateUtility.getDisplayStringArray(headerDOB.getDateOfQuotation());
        String[] effDate  = eSupplyDateUtility.getDisplayStringArray(headerDOB.getEffDate());
        */
        String[] strDate = null;
        String[] effDate = null;
        if ("View".equalsIgnoreCase(request.getParameter("Operation"))) {
            if ("PDF".equalsIgnoreCase(request.getParameter("pdf"))) {
                strDate = eSupplyDateUtility.getDisplayStringArray(masterDOB.getModifiedDate());
                effDate = eSupplyDateUtility.getDisplayStringArray(masterDOB.getEffDate());
            } else {
                strDate = eSupplyDateUtility.getDisplayStringArray(masterDOB.getModifiedDate());
                //effDate  = eSupplyDateUtility.getDisplayStringArray(masterDOB.getCreatedDate());
                //@@Modified by kiran.v on 28/07/2011 for Wpbn Issue -256087
                effDate = eSupplyDateUtility.getDisplayStringArray(masterDOB.getEffDate());
            }

        } else {
            strDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getDateOfQuotation());
            effDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getEffDate());

        }

        String[] validDate;
        String validUptoStr = null;
        if (headerDOB.getValidUpto() != null) {
            validDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getValidUpto());
            validUptoStr = validDate[0];
        }

        StringBuffer attentionTo = new StringBuffer("");
        if (masterDOB.getCustContactNames() != null) {
            for (int i = 0; i < masterDOB.getCustContactNames().length; i++) {
                attentionTo.append(
                        masterDOB.getCustContactNames()[i] != null ? masterDOB.getCustContactNames()[i] : "");
                if (i != (masterDOB.getCustContactNames().length - 1))
                    attentionTo.append(",");
            }
        }
        charges = finalDOB.getLegDetails();

        chargesSize = charges.size();
        // System.out.println("Before Document Objec--------------------------->");
        Document document = new Document(PageSize.A4, 54f, 54f, 68.4f, 68.4f);//@@ 36 points represent 0.5 inch
        if (!"Charges".equalsIgnoreCase(masterDOB.getQuoteWith()))
            document.setPageSize(PageSize.A4.rotate());
        String PDF_FILE_NAME = "Approved.pdf";
        document.addTitle("Approved Report");
        document.addSubject("Report PDF");
        document.addKeywords("Test, Key Words");
        document.addAuthor("QuoteShop");
        document.addCreator("QuoteShop");
        document.addCreationDate();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ByteArrayOutputStream baosFile = new ByteArrayOutputStream();
        writer = PdfWriter.getInstance(document, baos);
        // int b = writer.getPageNumber();
        baos.close();

        document.open();

        //jyothi
        PdfContentByte cb = writer.getDirectContent();
        cb.rectangle(document.left(), document.bottom(), document.right() - document.left(),
                document.top() - document.bottom());

        cb.stroke();
        //jyothi
        // Graphic horizontalLine = new Graphic();
        //horizontalLine.setHorizontalLine(1f, 100f);
        // horizontalLine.setColorStroke(Color.BLACK);
        //horizontalLine.setLineWidth(100);

        // PdfFileStamp fileStamp = new PdfFileStamp("Approved.pdf");

        //PdfPageEventHelper helper

        //writer.setPageEvent(new PdfPageEventHelper());

        //document.setMargins(15,15,15,15);            
        // Draw a rectangle inside the page's margins.
        //PdfContentByte cb = writer.getDirectContent();
        //cb.rectangle (document.left (), document.bottom (), document.right ()-document.left (),document.top ()-document.bottom ());
        //cb.stroke ();
        int[] widths = { 12, 12, 12, 12, 12, 12, 28 };
        /*Table mainT = new Table(2);
        mainT.setWidth(80);
        //mainT.setWidths(widths);
        mainT.setBorderColor(Color.white);
        mainT.setPadding(1);
        mainT.setSpacing(0);*/

        int[] width = { 4, 1 };
        Table mainT = new Table(2, 2);
        mainT.setWidth(100);
        mainT.setWidths(width);
        mainT.setBorderColor(Color.white);
        mainT.setPadding(3);
        mainT.setSpacing(0);

        Phrase headingPhrase = new Phrase("", FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.BLACK));
        Cell cellHeading = new Cell(headingPhrase);
        cellHeading.setBorderColor(new Color(255, 255, 255));
        cellHeading.setHorizontalAlignment(cellHeading.ALIGN_CENTER);
        cellHeading.setBorderWidth(0);
        // cellHeading.setColspan(6);
        mainT.addCell(cellHeading);

        Cell imageCell = new Cell();
        java.net.URL url = getServletConfig().getServletContext().getResource("/images/DHLlogo.gif");
        Image img0 = Image.getInstance(url);
        img0.setAlignment(Image.ALIGN_RIGHT);
        // img0.scaleToFit(6.0f, 1.9f);
        //System.out.println("Lower Left:   "" Upper   Left:   "+img0.getRight()+"   "+);

        // imageCell.setWidth("6");

        // imageCell.setColspan(2);
        imageCell.setHorizontalAlignment(imageCell.ALIGN_LEFT);
        imageCell.add(img0);
        imageCell.setBorderWidth(0);
        imageCell.setNoWrap(true);
        System.out.println(imageCell.cellWidth());
        mainT.addCell(imageCell);
        mainT.setAlignment(mainT.ALIGN_CENTER);

        document.add(mainT);

        pTable = new PdfPTable(1);
        pTable.setSpacingAfter(10f);
        pCell = new PdfPCell(new Phrase(new Chunk("")));
        pCell.setBorder(0);
        pTable.addCell(pCell);

        document.add(pTable);
        // System.out.println("After Image && Before Content--------------------------->");

        Table partCountry = new Table(4, 5);

        Table partCountry1 = new Table(4);
        int[] widths1 = { 30, 20, 30, 20 };
        //partCountry1.setBorderWidth(0);
        partCountry1.setBorderWidth(1f);//modified by silpa.p on 3-06-11
        partCountry1.setWidths(widths1);
        partCountry1.setWidth(100);
        partCountry1.setBorderColor(Color.black);
        partCountry1.setPadding(1);
        partCountry1.setSpacing(0);
        partCountry1.setBorder(1);//added by silpa.p on 3-06-11
        partCountry1.setAutoFillEmptyCells(true);
        //partCountry.setTableFitsPage(true);
        partCountry.setAlignment(partCountry.ALIGN_CENTER);
        partCountry.setBorderWidth(0);
        ;

        int[] widths2 = { 20, 30, 20, 30 };
        partCountry.setBorderWidth(0);
        partCountry.setBorderWidth(1f);//modified by silpa.p on 3-06-11
        partCountry.setWidths(widths2);
        partCountry.setWidth(100);
        partCountry.setBorderColor(Color.black);
        partCountry.setPadding(1);
        partCountry.setBorder(1);//added by silpa.p on 3-06-11
        partCountry.setSpacing(0);
        partCountry.setAutoFillEmptyCells(true);
        //partCountry.setTableFitsPage(true);
        partCountry.setAlignment(partCountry.ALIGN_CENTER);
        //Jyothi
        partCountry.setBorderWidthBottom(1);
        partCountry.setBorderWidthTop(0);
        partCountry.setBorderWidthLeft(1);
        partCountry.setBorderWidthRight(1);
        //Jyothi
        partCountry.setBorderWidth(0);
        ;
        Cell cellCountry;

        String shipmentMode = "";
        if (!finalDOB.isMultiModalQuote()) {
            if (finalDOB.getMasterDOB().getShipmentMode() == 1) {
                shipmentMode = "AIR FREIGHT PROPOSAL";
                transitTime = "Approximate Transit Time";
            } else if (finalDOB.getMasterDOB().getShipmentMode() == 2) {
                shipmentMode = "SEA FREIGHT PROPOSAL";
                transitTime = "Approximate Transit Days";
            } else if (finalDOB.getMasterDOB().getShipmentMode() == 4) {
                shipmentMode = "TRUCK FREIGHT PROPOSAL";
                transitTime = "Approximate Transit Time";
            }
        } else {
            shipmentMode = " MULTI-MODAL FREIGHT PROPOSAL ";
            transitTime = "Approximate Transit time and Days";

        }

        Chunk chk = new Chunk(shipmentMode, FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setWidth("100");
        //cellCountry.setColspan(1);
        cellCountry.setBorderWidth(0);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
        partCountry1.addCell(cellCountry);

        chk = new Chunk("");
        cellCountry = new Cell(chk);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setWidth("100");
        //cellCountry.setColspan(1);
        cellCountry.setBorderWidth(0);
        partCountry1.addCell(cellCountry);

        chk = new Chunk("SERVICE INFORMATION", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setWidth("100");
        //cellCountry.setColspan(2);
        cellCountry.setBorderWidth(0);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
        partCountry1.addCell(cellCountry);

        chk = new Chunk("");
        cellCountry = new Cell(chk);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setWidth("100");
        //cellCountry.setColspan(1);
        cellCountry.setBorderWidth(0);
        partCountry1.addCell(cellCountry);

        document.add(partCountry1);

        chk = new Chunk("Customer Name: ", FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setHeader(true);
        cellCountry.setWidth("30");
        cellCountry.setBorderWidth(0);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_LEFT);
        partCountry.addCell(cellCountry);

        chk = new Chunk(headerDOB.getCustomerName() != null ? toTitleCase(headerDOB.getCustomerName()) : "",
                FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setHeader(true);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_LEFT);
        partCountry.addCell(cellCountry);

        chk = new Chunk("Agent: ", FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setHeader(true);
        cellCountry.setWidth("30");
        cellCountry.setBorderWidth(0);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_LEFT);
        partCountry.addCell(cellCountry);

        chk = new Chunk(headerDOB.getAgent() != null ? headerDOB.getAgent() : "",
                FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setHeader(true);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_LEFT);
        partCountry.addCell(cellCountry);

        chk = new Chunk("Attention To: ", FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setHeader(true);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setLeading(10.0f);
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_LEFT);
        partCountry.addCell(cellCountry);

        chk = new Chunk(toTitleCase(attentionTo.toString()),
                FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setHeader(true);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setLeading(10.0f);
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_LEFT);
        partCountry.addCell(cellCountry);

        chk = new Chunk("Commodity Or Product: ", FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setHeader(true);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setLeading(10.0f);
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_LEFT);
        partCountry.addCell(cellCountry);

        //chk = new Chunk(headerDOB.getCommodity()!=null?toTitleCase(headerDOB.getCommodity()):"",FontFactory.getFont("ARIAL", 7, Font.NORMAL,Color.BLACK));//commented by silpa.p on 21-06-11
        chk = new Chunk(headerDOB.getCommodity() != null ? (headerDOB.getCommodity()) : "",
                FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));//added by silpa.p on 21-06-11
        cellCountry = new Cell(chk);
        cellCountry.setHeader(true);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setLeading(10.0f);
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_LEFT);
        partCountry.addCell(cellCountry);

        chk = new Chunk("Quote Reference: ", FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setHeader(true);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_LEFT);
        partCountry.addCell(cellCountry);

        chk = new Chunk(masterDOB.getQuoteId() != null ? masterDOB.getQuoteId() : "",
                FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setHeader(true);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_LEFT);
        partCountry.addCell(cellCountry);

        chk = new Chunk("Notes: ", FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));//modified by silpa.p on 13-06-11
        cellCountry = new Cell(chk);
        cellCountry.setHeader(true);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setLeading(10.0f);
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_LEFT);
        partCountry.addCell(cellCountry);

        chk = new Chunk(headerDOB.getNotes() != null ? toTitleCase(headerDOB.getNotes()) : "",
                FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setHeader(true);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_LEFT);
        partCountry.addCell(cellCountry);

        chk = new Chunk("Date Of Quotation: ", FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setHeader(true);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_LEFT);
        partCountry.addCell(cellCountry);

        chk = new Chunk(strDate[0], FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setHeader(true);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_LEFT);
        partCountry.addCell(cellCountry);

        chk = new Chunk("Date Effective: ", FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setHeader(true);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_LEFT);
        partCountry.addCell(cellCountry);

        chk = new Chunk((effDate[0] != null ? effDate[0] : ""),
                FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setHeader(true);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_LEFT);
        partCountry.addCell(cellCountry);

        chk = new Chunk("Sales Person : ", FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setHeader(true);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_LEFT);
        partCountry.addCell(cellCountry);

        chk = new Chunk((headerDOB.getPreparedBy() != null ? toTitleCase(headerDOB.getPreparedBy()) : ""),
                FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setHeader(true);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setLeading(10.0f);
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_LEFT);
        partCountry.addCell(cellCountry);

        chk = new Chunk("Validity Of Quote: ", FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setHeader(true);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_LEFT);
        partCountry.addCell(cellCountry);

        chk = new Chunk((validUptoStr != null ? validUptoStr : "VALID UNTIL FURTHER NOTICE"),
                FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setHeader(true);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setBackgroundColor(Color.LIGHT_GRAY);//modified by silpa.p on 3-06-11
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_LEFT);
        partCountry.addCell(cellCountry);

        document.add(partCountry);

        pTable = new PdfPTable(1);
        pTable.setSpacingAfter(10f);
        pCell = new PdfPCell(new Phrase(new Chunk("")));
        pCell.setBorder(0);
        pTable.addCell(pCell);

        document.add(pTable);

        /* if(chargesSize==1)
         {
         if("MY".equalsIgnoreCase(masterDOB.getCountryId()))
         {
         chk = new Chunk((headerDOB.getOriginCountry()!=null?headerDOB.getOriginCountry()[0].toUpperCase():"")+" TO "+(headerDOB.getDestinationCountry()!=null?headerDOB.getDestinationCountry()[0].toUpperCase():""),FontFactory.getFont("ARIAL", 16, Font.BOLD,Color.BLUE));
         cellCountry = new Cell(chk);
         cellCountry.setWidth("100");cellCountry.setBorderWidth(0);
         cellCountry.setNoWrap(true); 
         cellCountry.setLeading(13.0f);//@@Do Not Decrease.
         cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
         partCountry.addCell(cellCountry);
                
         cellCountry = new Cell("");
         cellCountry.setBorderWidth(0);
         cellCountry.setLeading(5.0f);
         partCountry.addCell(cellCountry);
                 
                 
         chk = new Chunk(headerDOB.getCustomerName(),FontFactory.getFont("ARIAL", 14, Font.BOLD,Color.BLUE));
         cellCountry = new Cell(chk);
         cellCountry.setHeader(true);
         cellCountry.setWidth("100");cellCountry.setBorderWidth(0);
         cellCountry.setNoWrap(true); 
         cellCountry.setLeading(10.0f);
         cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
         partCountry.addCell(cellCountry);
                 
         chk = new Chunk("ATTENTION TO: "+attentionTo.toString(),FontFactory.getFont("ARIAL", 14, Font.BOLD,Color.BLUE));
         cellCountry = new Cell(chk);
         cellCountry.setWidth("100");cellCountry.setBorderWidth(0);
         cellCountry.setNoWrap(true); 
         cellCountry.setLeading(10.0f);
         cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
         partCountry.addCell(cellCountry);
         }
         else
         {
         chk = new Chunk((headerDOB.getOriginCountry()!=null?headerDOB.getOriginCountry()[0].toUpperCase():"")+" TO "+(headerDOB.getDestinationCountry()!=null?headerDOB.getDestinationCountry()[0].toUpperCase():""),FontFactory.getFont("ARIAL", 16, Font.BOLD,Color.RED));
         cellCountry = new Cell(chk);
         cellCountry.setWidth("100");cellCountry.setBorderWidth(0);
         cellCountry.setNoWrap(true); 
         cellCountry.setLeading(13.0f);//@@Do Not Decrease.
         cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
         partCountry.addCell(cellCountry);
                 
         cellCountry = new Cell("");
         cellCountry.setBorderWidth(0);
         cellCountry.setLeading(5.0f);
         partCountry.addCell(cellCountry);
                 
                 
         chk = new Chunk(headerDOB.getCustomerName(),FontFactory.getFont("ARIAL", 14, Font.BOLD,Color.RED));
         cellCountry = new Cell(chk);
         cellCountry.setHeader(true);
         cellCountry.setWidth("100");cellCountry.setBorderWidth(0);
         cellCountry.setNoWrap(true); 
         cellCountry.setLeading(10.0f);
         cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
         partCountry.addCell(cellCountry);
                 
         chk = new Chunk("ATTENTION TO: "+attentionTo.toString(),FontFactory.getFont("ARIAL", 14, Font.BOLD,Color.RED));
         cellCountry = new Cell(chk);
         cellCountry.setWidth("100");cellCountry.setBorderWidth(0);
         cellCountry.setNoWrap(true); 
         cellCountry.setLeading(10.0f);
         cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
         partCountry.addCell(cellCountry);
         }
         }else{
          if("MY".equalsIgnoreCase(masterDOB.getCountryId()))
          {
          //chk = new Chunk("Multi-Lane/Multi-Carrier",FontFactory.getFont("ARIAL", 16, Font.BOLD,Color.BLUE)); // Commented by Gowtham on 24Feb2011
          chk = new Chunk("Multiple Origins And/Or Destinations",FontFactory.getFont("ARIAL", 16, Font.BOLD,Color.BLUE));
          cellCountry = new Cell(chk);
          cellCountry.setWidth("100");cellCountry.setBorderWidth(0);
          cellCountry.setNoWrap(true); 
          cellCountry.setLeading(13.0f);//@@Do Not Decrease.
          cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
          partCountry.addCell(cellCountry);
                   
          cellCountry = new Cell("");
          cellCountry.setBorderWidth(0);
          cellCountry.setLeading(5.0f);
          partCountry.addCell(cellCountry);
                  
                  
          chk = new Chunk(headerDOB.getCustomerName(),FontFactory.getFont("ARIAL", 14, Font.BOLD,Color.BLUE));
          cellCountry = new Cell(chk);
          cellCountry.setHeader(true);
          cellCountry.setWidth("100");cellCountry.setBorderWidth(0);
          cellCountry.setNoWrap(true); 
          cellCountry.setLeading(10.0f);
          cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
          partCountry.addCell(cellCountry);
                  
          chk = new Chunk("ATTENTION TO: "+attentionTo.toString(),FontFactory.getFont("ARIAL", 14, Font.BOLD,Color.BLUE));
          cellCountry = new Cell(chk);
          cellCountry.setWidth("100");cellCountry.setBorderWidth(0);
          cellCountry.setNoWrap(true); 
          cellCountry.setLeading(10.0f);
          cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
          partCountry.addCell(cellCountry);
          }
          else
          {
            //chk = new Chunk("Multi-Lane/Multi-Carrier",FontFactory.getFont("ARIAL", 16, Font.BOLD,Color.RED));
            chk = new Chunk("Multiple Origins And/Or Destinations",FontFactory.getFont("ARIAL", 16, Font.BOLD,Color.RED)); // Commented by Gowtham on 24Feb2011
            cellCountry = new Cell(chk);
            cellCountry.setWidth("100");cellCountry.setBorderWidth(0);
            cellCountry.setNoWrap(true); 
            cellCountry.setLeading(13.0f);//@@Do Not Decrease.
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            partCountry.addCell(cellCountry);
                    
            cellCountry = new Cell("");
            cellCountry.setBorderWidth(0);
            cellCountry.setLeading(5.0f);
            partCountry.addCell(cellCountry);
                    
                    
            chk = new Chunk(headerDOB.getCustomerName(),FontFactory.getFont("ARIAL", 14, Font.BOLD,Color.RED));
            cellCountry = new Cell(chk);
            cellCountry.setHeader(true);
            cellCountry.setWidth("100");cellCountry.setBorderWidth(0);
            cellCountry.setNoWrap(true); 
            cellCountry.setLeading(10.0f);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            partCountry.addCell(cellCountry);
                    
            chk = new Chunk("ATTENTION TO: "+attentionTo.toString(),FontFactory.getFont("ARIAL", 14, Font.BOLD,Color.RED));
            cellCountry = new Cell(chk);
            cellCountry.setWidth("100");cellCountry.setBorderWidth(0);
            cellCountry.setNoWrap(true); 
            cellCountry.setLeading(10.0f);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            partCountry.addCell(cellCountry);
          }
         }
         cellCountry = new Cell("");
         cellCountry.setBorderWidth(0);
         cellCountry.setLeading(5.0f);
         partCountry.addCell(cellCountry);
                 
         chk = new Chunk("QUOTE REFERENCE: "+masterDOB.getQuoteId(),FontFactory.getFont("ARIAL", 12, Font.BOLD,Color.BLACK));
         cellCountry = new Cell(chk);
         cellCountry.setWidth("100");
         cellCountry.setBorderWidth(0);
         cellCountry.setNoWrap(true); 
         cellCountry.setLeading(10.0f);
         cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
         partCountry.addCell(cellCountry);  
         chk = new Chunk("DATE OF QUOTATION: "+strDate[0],FontFactory.getFont("ARIAL", 12, Font.BOLD,Color.BLACK));
         cellCountry = new Cell(chk);
         cellCountry.setWidth("100");cellCountry.setBorderWidth(0);
         cellCountry.setNoWrap(true); 
         cellCountry.setLeading(10.0f);
         cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
         partCountry.addCell(cellCountry); */

        contents = masterDOB.getContentOnQuote();
        levels = masterDOB.getLevels();
        aligns = masterDOB.getAlign();
        headFoot = masterDOB.getHeaderFooter();
        Table content = null;
        if (contents != null && contents.length > 0) {
            content = new Table(1);
            content.setOffset(5);
            content.setWidth(100);
            content.setPadding(1);
            content.setSpacing(0);
            content.setBackgroundColor(Color.WHITE);
            content.setBorderColor(Color.black);
            content.setBorderWidth(1f);
            Cell cellContent = null;
            chk = null;
            int headFootLen = headFoot.length;
            for (int i = 0; i < headFootLen; i++) {
                if (headFoot[i] != null && "H".equalsIgnoreCase(headFoot[i])) {
                    chk = new Chunk(contents[i], FontFactory.getFont("ARIAL", 7, Font.ITALIC, Color.BLACK));
                    cellContent = new Cell(chk);
                    cellContent.setBorder(0);
                    cellContent.setLeading(8.0f);
                    cellContent.setBackgroundColor(Color.LIGHT_GRAY);
                    if ("L".equalsIgnoreCase(aligns[i]))
                        cellContent.setHorizontalAlignment(cellContent.ALIGN_LEFT);
                    else if ("C".equalsIgnoreCase(aligns[i]))
                        cellContent.setHorizontalAlignment(cellContent.ALIGN_CENTER);
                    else if ("R".equalsIgnoreCase(aligns[i]))
                        cellContent.setHorizontalAlignment(cellContent.ALIGN_RIGHT);
                    content.addCell(cellContent);
                }
            }
            document.add(content);
            /*content = null;
            cellContent =  null;*/
        }
        /*content = new Table(1);
        Cell cellContent1 = new Cell(new Chunk(""));
        content.addCell(cellContent1); */

        if (!"Charges".equalsIgnoreCase(masterDOB.getQuoteWith())) {
            //@@Added by Kameswari for the WPBN issue-146448 on 03/12/08
            for (int i = 0; i < chargesSize; i++) {
                legCharges = (MultiQuoteFreightLegSellRates) charges.get(0);
                freightCharges = legCharges.getFreightChargesList();
                int tempCount = freightCharges.size();
                for (int j = 0; j < tempCount; j++) {
                    multiQuoteChargeInfo = (MultiQuoteChargeInfo) freightCharges.get(i);//govind

                    if (multiQuoteChargeInfo.getSelectedLaneNum() == i) {
                        if (multiQuoteChargeInfo != null && multiQuoteChargeInfo.getValidUpto() != null) {
                            str1 = eSupplyDateUtility
                                    .getDisplayStringArray(multiQuoteChargeInfo.getValidUpto());
                        }
                        ///////////////////////////////////////////Second Table////////////////////////////
                        if (chargesSize > 1) {
                            if ("Y".equalsIgnoreCase(multiQuoteChargeInfo.getFrequencyChecked())
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo.getFrequencyChecked())) {
                                //Added by kiran.v on 16/09/2011
                                frequencyFlag = true;
                                frequency.add(multiQuoteChargeInfo.getFrequency());
                                frequency_o.add(legCharges.getOrigin());
                                frequency_d.add(legCharges.getDestination());
                            }
                            if ("Y".equalsIgnoreCase(multiQuoteChargeInfo.getTransitTimeChecked())
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo.getTransitTimeChecked())) {
                                transittime.add(multiQuoteChargeInfo.getTransitTime());
                                transit_o.add(legCharges.getOrigin());
                                transit_d.add(legCharges.getDestination());
                            }
                            if ("Y".equalsIgnoreCase(multiQuoteChargeInfo.getCarrierChecked())
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo.getCarrierChecked())) {
                                carrierFlag = true;
                                carrier.add(multiQuoteChargeInfo.getCarrier());
                                carrier_o.add(legCharges.getOrigin());
                                carrier_d.add(legCharges.getDestination());
                            }
                            if ("Y".equalsIgnoreCase(multiQuoteChargeInfo.getRateValidityChecked())
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo.getRateValidityChecked())) {
                                if (multiQuoteChargeInfo.getValidUpto() != null) {
                                    str1 = eSupplyDateUtility
                                            .getDisplayStringArray(multiQuoteChargeInfo.getValidUpto());
                                    ratevalidity.add(str1[0]);
                                }

                                validity_o.add(legCharges.getOrigin());
                                validity_d.add(legCharges.getDestination());
                            }
                        } else {

                            if ("Y".equalsIgnoreCase(multiQuoteChargeInfo.getFrequencyChecked())
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo.getFrequencyChecked())) {
                                frequency.add(multiQuoteChargeInfo.getFrequency());
                            }
                            if ("Y".equalsIgnoreCase(multiQuoteChargeInfo.getTransitTimeChecked())
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo.getTransitTimeChecked())) {
                                transittime.add(multiQuoteChargeInfo.getTransitTime());
                            }
                            if ("Y".equalsIgnoreCase(multiQuoteChargeInfo.getCarrierChecked())
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo.getCarrierChecked())) {
                                carrier.add(multiQuoteChargeInfo.getCarrier());
                            }
                            if ("Y".equalsIgnoreCase(multiQuoteChargeInfo.getRateValidityChecked())
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo.getRateValidityChecked())) {
                                if (multiQuoteChargeInfo.getValidUpto() != null) {
                                    str1 = eSupplyDateUtility
                                            .getDisplayStringArray(multiQuoteChargeInfo.getValidUpto());
                                    ratevalidity.add(str1[0]);
                                }

                            }
                        }
                    }
                }
            }
        } // partCountry  =  new Table(2,13);
        size = frequency.size() + transittime.size() + carrier.size() + ratevalidity.size();
        /* Table prepareTable = new Table(1) ;
         prepareTable.setWidth(100);
         prepareTable.setBackgroundColor(Color.white);
         prepareTable.setBorderColor(Color.white);
         prepareTable.setPadding(1);
         chk = new Chunk("Prepared By: "+(headerDOB.getPreparedBy()!=null?headerDOB.getPreparedBy().toUpperCase():""),FontFactory.getFont("ARIAL", 10, Font.BOLD,Color.BLACK));
         cellCountry = new Cell(chk);
        // cellCountry.setBackgroundColor(Color.lightGray);
         cellCountry.setBorder(0);
         cellCountry.setNoWrap(true);
         cellCountry.setHorizontalAlignment(cellCountry.ALIGN_LEFT);
         cellCountry.setBorder(0);
         cellCountry.setLeading(8.0f);
         prepareTable.addCell(cellCountry);
                
         document.add(prepareTable); */

        /*  partCountry  =  new Table(2,13+size);
                  
        //@@WPBN issue-146448 on 03/12/08
          partCountry.setOffset(5);
          partCountry.setWidth(100);
          partCountry.setPadding(1);
          partCountry.setSpacing(0);
          partCountry.setBackgroundColor(Color.WHITE);
          partCountry.setBorderColor(Color.WHITE);
          partCountry.setBorderWidth(1f);
                  
          /*chk = new Chunk("Prepared By: ",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
          cellCountry = new Cell(chk);
         // cellCountry.setBackgroundColor(Color.lightGray);
          cellCountry.setBorder(0);
          cellCountry.setNoWrap(true);
          cellCountry.setHorizontalAlignment(cellCountry.ALIGN_RIGHT);
          cellCountry.setBorder(0);
          cellCountry.setLeading(8.0f);
          partCountry.addCell(cellCountry);*/

        /* chk = new Chunk("SERVICE INFORMATION ",FontFactory.getFont("Courier-Bold", 12, Font.UNDERLINE,Color.blue));
         cellCountry = new Cell(chk);
         cellCountry.setColspan(2);
         cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
         //cellCountry.setBackgroundColor(Color.ORANGE);
         cellCountry.setBorder(0);
         cellCountry.setNoWrap(true); 
         cellCountry.setLeading(8.0f);
         partCountry.addCell(cellCountry);
                 
         chk = new Chunk("Agent: ",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
         cellCountry = new Cell(chk); 
         //cellCountry.setBackgroundColor(Color.lightGray);
         cellCountry.setBorder(0);
         cellCountry.setNoWrap(true); 
         cellCountry.setHorizontalAlignment(cellCountry.ALIGN_RIGHT);
         cellCountry.setLeading(8.0f);
         partCountry.addCell(cellCountry);
                 
         chk = new Chunk("   "+(headerDOB.getAgent()!=null?headerDOB.getAgent().toUpperCase():""),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
         cellCountry = new Cell(chk);
         cellCountry.setNoWrap(true);
         cellCountry.setBorder(0);
         cellCountry.setLeading(8.0f);
         partCountry.addCell(cellCountry);
                
         chk = new Chunk("Commodity or Product: ",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
         cellCountry = new Cell(chk);
        // cellCountry.setBackgroundColor(Color.lightGray);
         cellCountry.setNoWrap(true); 
         cellCountry.setBorder(0);
         cellCountry.setHorizontalAlignment(cellCountry.ALIGN_RIGHT);
         cellCountry.setLeading(8.0f);
         partCountry.addCell(cellCountry);
                 
         chk = new Chunk("   "+(headerDOB.getCommodity()!=null?headerDOB.getCommodity().toUpperCase():""),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
         cellCountry = new Cell(chk);
         cellCountry.setNoWrap(true); 
         cellCountry.setBorder(0);
         cellCountry.setLeading(8.0f);
         partCountry.addCell(cellCountry);
                 
         chk = new Chunk("Type Of Service Quoted: ",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
         cellCountry = new Cell(chk);
        // cellCountry.setBackgroundColor(Color.lightGray);
         cellCountry.setNoWrap(true); 
         cellCountry.setBorder(0);
         cellCountry.setHorizontalAlignment(cellCountry.ALIGN_RIGHT);
         cellCountry.setLeading(8.0f);
         partCountry.addCell(cellCountry);
                 
         chk = new Chunk("   "+(headerDOB.getTypeOfService()!=null?headerDOB.getTypeOfService().toUpperCase():""),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
         cellCountry = new Cell(chk);
         cellCountry.setNoWrap(true); 
         cellCountry.setBorder(0);
         cellCountry.setLeading(8.0f);
          partCountry.addCell(cellCountry);
                 
         chk = new Chunk("Notes: ",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
         cellCountry = new Cell(chk);
        // cellCountry.setBackgroundColor(Color.lightGray);
         cellCountry.setNoWrap(true); 
         cellCountry.setBorder(0);
         cellCountry.setHorizontalAlignment(cellCountry.ALIGN_RIGHT);
         cellCountry.setLeading(8.0f);
         partCountry.addCell(cellCountry);
                 
         chk = new Chunk(" "+(headerDOB.getNotes()!=null?headerDOB.getNotes().toUpperCase()+'\n':""),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
         cellCountry = new Cell(chk);
         cellCountry.setLeading(8.0f);
         cellCountry.setBorder(0);
         partCountry.addCell(cellCountry);
                 
         chk = new Chunk("Date Effective: ",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
         cellCountry = new Cell(chk);
         //cellCountry.setBackgroundColor(Color.lightGray);
         cellCountry.setNoWrap(true); 
         cellCountry.setBorder(0);
         cellCountry.setHorizontalAlignment(cellCountry.ALIGN_RIGHT);
         cellCountry.setLeading(8.0f);
         partCountry.addCell(cellCountry);
                 
         chk = new Chunk("   "+(effDate[0]!=null?effDate[0]:""),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
         cellCountry = new Cell(chk);
         cellCountry.setNoWrap(true); 
         cellCountry.setBorder(0);
         cellCountry.setLeading(8.0f);
         partCountry.addCell(cellCountry);
                 
         chk = new Chunk("Validity Of Quote: ",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
         cellCountry = new Cell(chk);
        //  cellCountry.setBackgroundColor(Color.lightGray);
         cellCountry.setNoWrap(true); 
         cellCountry.setBorder(0);
         cellCountry.setHorizontalAlignment(cellCountry.ALIGN_RIGHT);
         cellCountry.setLeading(8.0f);
         partCountry.addCell(cellCountry);
                 
         chk = new Chunk("   "+(validUptoStr!=null?validUptoStr:"VALID UNTIL FURTHER NOTICE"),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
         cellCountry = new Cell(chk);
         cellCountry.setNoWrap(true);
         cellCountry.setBorder(0);
         cellCountry.setLeading(8.0f);
         partCountry.addCell(cellCountry);
                 
         if(headerDOB.getPaymentTerms()!=null && headerDOB.getPaymentTerms().trim().length()!=0)
         {
         chk = new Chunk("Payment Terms: ",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
         cellCountry = new Cell(chk);
         //cellCountry.setBackgroundColor(Color.lightGray);
         cellCountry.setNoWrap(true);
         cellCountry.setBorder(0);
         cellCountry.setHorizontalAlignment(cellCountry.ALIGN_RIGHT);
         cellCountry.setLeading(8.0f);
         partCountry.addCell(cellCountry);
                 
         chk = new Chunk("   "+headerDOB.getPaymentTerms(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
         cellCountry = new Cell(chk);
         cellCountry.setNoWrap(true); 
         cellCountry.setBorder(0);
         cellCountry.setLeading(8.0f);
         partCountry.addCell(cellCountry);
         }
                 
         document.add(partCountry);*/
        partCountry.complete();
        //System.out.println("After Page Country-------------------------------->");
        //Origin Charges
        //document.setMargins(10,10,10,10);
        // b1= writer.getPageNumber();

        //@@Added by Kameswari for the WPBN issue-146448
        charges = finalDOB.getLegDetails();
        noOfLanes = charges.size();
        //Added by kiran.v on 16/09/2011
        // session.setAttribute("legSize",noOfLanes);           
        PdfPTable chargeCountry2 = null;
        Table chargeCountry = null;
        PdfPCell cell2 = null;
        Cell cell = null;
        Table frtHeader = null;
        Table chargeTitle = null;
        Table chargeCountry1 = null;
        Cell cell1 = null;
        CustomCell border = new CustomCell();
        // float cellWidths[]   = {40,20,10,15,25};//@@Added by Kameswari for the WPBN issue - on 12/11/08
        float cellWidths[] = { 40, 15, 15, 15, 25, 15 };
        float cellWidths1 = 40;

        /* chk = new Chunk("Charge Name",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
         Cell cell = new Cell(chk);
         cell.setHeader(true);
         cell.setBackgroundColor(Color.ORANGE);
         cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
         chargeCountry.addCell(cell);
                 
         chk = new Chunk("Breakpoint",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
        cell = new Cell(chk);
         cell.setHeader(true);
         cell.setBackgroundColor(Color.ORANGE);
         cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
         chargeCountry.addCell(cell);
                 
         chk = new Chunk("Currency",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
        cell = new Cell(chk);
         cell.setHeader(true);
         cell.setBackgroundColor(Color.ORANGE);
         cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
         chargeCountry.addCell(cell);
                 
         chk = new Chunk("Rate",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
        cell = new Cell(chk);
         cell.setHeader(true);
         cell.setBackgroundColor(Color.ORANGE);
         cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
         chargeCountry.addCell(cell);
                 
         chk = new Chunk("Basis",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
        cell = new Cell(chk);
         cell.setHeader(true);
         cell.setBackgroundColor(Color.ORANGE);
         cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
         chargeCountry.addCell(cell);           
                 
         chargeCountry.endHeaders();
         System.out.println("End of Charge Headers--------------------------------->");
         System.out.println("");*/
        //    boolean b3 = document.newPage();
        //  QuoteCharges chargesDOB           = null;
        ArrayList originChargeInfo = null;
        int originChargesInfoSize = 0;
        MultiQuoteChargeInfo chargeInfo = null;
        ArrayList originLaneCharges = finalDOB.getLegDetails();//.get(0)).getOriginChargesList();
        for (int c = 0; c < noOfLanes; c++) //charges........
        {
            legOrginCharges = (MultiQuoteFreightLegSellRates) originLaneCharges.get(c);
            ArrayList originCharges = legOrginCharges.getOriginChargesList();
            int[] originIndices = legOrginCharges.getSelectedOriginChargesListIndices();
            int originChargesSize = 0;
            if (originIndices != null)
                originChargesSize = originIndices.length;
            else
                originChargesSize = 0;

            /*PdfPCell hLine = new PdfPCell(new Phrase(""));
            hLine.setBorder(PdfPCell.NO_BORDER);*/

            if (originChargesSize <= 0) {
                continue;
            }
            /*  if(b1>1)
             {
            chk = new Chunk("QUOTE REFERENCE:"+masterDOB.getQuoteId(),FontFactory.getFont("ARIAL", 10, Font.BOLD,Color.BLACK));
             cell = new Cell(chk);
             cell.setColspan(5);cell.setLeading(10.0f);
             cell.setBackgroundColor(Color.WHITE);                
             cell.setHeader(true);
             cell.setBorder(0);
             chargeCountry.addCell(cell); 
             }*/
            // chargeCountry  = new Table(5);
            home = (QMSMultiQuoteSessionHome) LookUpBean.getEJBHome("QMSMultiQuoteSessionBean");
            remote = home.create();
            //document.add(horizontalLine);

            chargeTitle = new Table(1);
            chargeTitle.setWidth(100);
            chargeTitle.setPadding(1);
            chargeTitle.setSpacing(1);
            chargeTitle.setBorderColor(Color.BLACK);
            chargeTitle.setDefaultHorizontalAlignment(Element.ALIGN_LEFT);
            chargeTitle.setBackgroundColor(Color.ORANGE);//modified by silpa.p on 3-06-11
            chargeTitle.setBorderWidth(1f);
            //chargeTitle.setBorder(1);

            if (legOrginCharges.getShipmentMode() == 2)
                chk = new Chunk(remote.getPortName(legOrginCharges.getOrigin()) + "-Origin Charges",
                        FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.black));
            else
                chk = new Chunk(remote.getLocationName(legOrginCharges.getOrigin()) + "-Origin Charges",
                        FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.black));
            cell1 = new Cell(chk);
            cell1.setLeading(10.0f);
            cell1.setBorder(0);
            cell1.setHeader(true);
            chargeTitle.addCell(cell1);
            document.add(chargeTitle);

            //chargeCountry  = new PdfPTable(6);
            chargeCountry = new Table(6);
            //chargeCountry.setWidth(100);
            chargeCountry.setWidths(cellWidths);
            chargeCountry.setBorder(1);
            chargeCountry.setWidth(100);
            chargeCountry.setDefaultVerticalAlignment(cell.ALIGN_MIDDLE);
            chargeCountry.setDefaultHorizontalAlignment(cell.ALIGN_CENTER);
            chargeCountry.setPadding(3);
            chargeCountry.setSpacing(0);
            //chargeCountry.setOffset(5);
            //chargeCountry.setBackgroundColor(Color.WHITE);
            // chargeCountry.setBorderColor(Color.WHITE);
            // chargeCountry.setDefaultHorizontalAlignment(Element.ALIGN_CENTER);
            chargeCountry.setBorderWidth(1f);
            //chargeCountry.setWidthPercentage(100);

            chargeCountry.setWidths(cellWidths);
            //document.add(horizontalLine);
            chk = new Chunk("Charge Description", FontFactory.getFont("ARIAL", 7, Font.BOLD, Color.BLACK)); // Added by Gowtham on 01-Feb-2011.
            // cell = new PdfPCell(new Phrase(chk));
            cell = new Cell(new Phrase(chk));
            //cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
            // cell.setColspan(6);
            //cell.setLeading(10.0f);
            cell.setHorizontalAlignment(cell.ALIGN_LEFT);
            // cell.setBackgroundColor(Color.ORANGE);  
            ////cell.setBorder(0);
            //cell.setHeader(true);
            //cell.setBorder(Rectangle.BOTTOM);
            cell.setBorderWidth(1);
            //cell.setCellEvent(border); 
            chargeCountry.addCell(cell);

            chk = new Chunk("Weight Break Slab", FontFactory.getFont("ARIAL", 7, Font.BOLD, Color.BLACK));
            cell = new Cell(new Phrase(chk));
            //cell.setBorder(Rectangle.BOTTOM);
            //cell.setCellEvent(border); 
            cell.setHorizontalAlignment(cell.ALIGN_CENTER);
            cell.setBorderWidth(1);
            chargeCountry.addCell(cell);

            chk = new Chunk("Currency", FontFactory.getFont("ARIAL", 7, Font.BOLD, Color.BLACK));
            cell = new Cell(new Phrase(chk));
            //cell.setBorder(Rectangle.BOTTOM);
            //cell.setCellEvent(border);
            cell.setBorderWidth(1);
            cell.setHorizontalAlignment(cell.ALIGN_CENTER);
            chargeCountry.addCell(cell);

            chk = new Chunk("Charge Rate", FontFactory.getFont("ARIAL", 7, Font.BOLD, Color.BLACK));
            cell = new Cell(new Phrase(chk));
            //cell.setBorder(Rectangle.BOTTOM);
            //cell.setCellEvent(border);
            cell.setBorderWidth(1);
            cell.setHorizontalAlignment(cell.ALIGN_CENTER);
            chargeCountry.addCell(cell);

            chk = new Chunk("Basis", FontFactory.getFont("ARIAL", 7, Font.BOLD, Color.BLACK));
            cell = new Cell(new Phrase(chk));
            //cell.setBorder(Rectangle.BOTTOM);
            //cell.setCellEvent(border);
            cell.setBorderWidth(1);
            cell.setHorizontalAlignment(cell.ALIGN_LEFT);
            chargeCountry.addCell(cell);

            chk = new Chunk("Density Ratio", FontFactory.getFont("ARIAL", 7, Font.BOLD, Color.BLACK));
            cell = new Cell(new Phrase(chk));
            //cell.setBorder(Rectangle.BOTTOM);
            //cell.setCellEvent(border);
            cell.setBorderWidth(1);
            cell.setHorizontalAlignment(cell.ALIGN_CENTER);
            chargeCountry.addCell(cell);

            //@@Commented and Modified by Kameswari for the internal issue on 09/04/09
            /*chk = new Chunk("ORIGIN CHARGES",FontFactory.getFont("ARIAL", 8, Font.BOLD,Color.BLACK));
            cell = new Cell(chk);
            //cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
            cell.setColspan(6);
            cell.setLeading(10.0f);
            cell.setBackgroundColor(Color.ORANGE);                
            cell.setHeader(true);
            chargeCountry.addCell(cell);*/
            //   boolean b = document.newPage();
            // charge_desc  = "";
            for (int lc = 0; lc < originChargesSize; lc++) {
                if ((operation != null && "view".equalsIgnoreCase(operation) || ("Y".equalsIgnoreCase(
                        legOrginCharges.getOriginChargesSelectedFlag()[originIndices[lc]])))) {

                    //chargeCountry.endHeaders();
                    chargesDOB = (MultiQuoteCharges) originCharges.get(originIndices[lc]);

                    // for(int i=0;i<originChargesSize;i++)
                    //{
                    if (originIndices[lc] != -1) {

                        logger.info("Origin Charges doPDFGeneration::" + lc + ":" + chargesDOB); // newly added                  
                        originChargeInfo = chargesDOB.getChargeInfoList();
                        originChargesInfoSize = originChargeInfo.size();
                        int m = 0;//146455
                        String breakPoint = null;//146455

                        for (int k = 0; k < originChargesInfoSize; k++) {
                            chargeInfo = (MultiQuoteChargeInfo) originChargeInfo.get(k);
                            if (k == 0) {
                                if ("B".equalsIgnoreCase(chargesDOB.getSellBuyFlag())
                                        || "S".equalsIgnoreCase(chargesDOB.getSellBuyFlag()))//||"BC".equalsIgnoreCase(chargesDOB.getSellBuyFlag())||"SC".equalsIgnoreCase(chargesDOB.getSellBuyFlag())) // Added by Gowtham
                                    chk = new Chunk(
                                            chargesDOB.getExternalName() != null ? chargesDOB.getExternalName()
                                                    : "",
                                            FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                                else
                                    chk = new Chunk(
                                            chargesDOB.getChargeDescriptionId() != null
                                                    ? chargesDOB.getChargeDescriptionId()
                                                    : "",
                                            FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));

                                cell = new Cell(new Phrase(chk));
                                cell.setLeading(7.0f);
                                cell.setBorder(1);
                                cell.setRowspan(originChargesInfoSize);
                                cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                                cell.setVerticalAlignment(cell.ALIGN_LEFT);
                                cell.setBorderWidthTop(0);
                                cell.setBorderWidthBottom(0.1f);
                                if (lc == originChargesSize - 1 && k == originChargesInfoSize - 1) {
                                    cell.setBorderWidthBottom(0.1f);
                                    cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                                    //cell.setVerticalAlignment(cell.ALIGN_MIDDLE);

                                } else if (k == originChargesInfoSize - 1) {
                                    cell.setBorderWidthBottom(0.1f);
                                    cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                                    //cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                                    //cell.setBorderWidthBottom(0.1f);                            
                                } else {
                                    cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                                    //cell.setVerticalAlignment(cell.ALIGN_CENTER);

                                }
                                chargeCountry.addCell(cell);

                            }
                            /* else if (k==originChargesInfoSize-1) 
                             {
                               cell = new Cell(new Phrase(new Chunk("")));
                             //  cell.setLeading(15.0f);
                               //cell.setBorder(Rectangle.BOTTOM);
                            // cell.setCellEvent(border);                        
                               if(lc!=originChargesSize-1){
                               cell.setBorder(0);
                               cell.setBorderWidth(0f);
                               }    
                               else{
                                  cell.setBorderWidthBottom(0.1f);  
                                      
                               }
                             cell.setHorizontalAlignment(cell.ALIGN_BOTTOM);
                                      
                            cell.setVerticalAlignment(cell.ALIGN_CENTER);
                             chargeCountry.addCell(cell);
                                    
                             }*/

                            /*else{
                               cell = new Cell(new Phrase(new Chunk("")));
                              //cell.setBorder(0);
                               //cell.setCellEvent(border); 
                              cell.setBorder(0);
                                 cell.setBorderWidth(0f);
                                // cell.setLeading(15.0f);
                               cell.setHorizontalAlignment(cell.ALIGN_BOTTOM);
                                     
                              cell.setVerticalAlignment(cell.ALIGN_CENTER);
                                     
                              chargeCountry.addCell(cell);
                                       
                            }*/
                            //@@ Commented by subrahmanyam for 146455 on 19/02/09
                            /* chk = new Chunk((chargeInfo.getBreakPoint()!=null && !"Absolute".equalsIgnoreCase(chargeInfo.getBreakPoint()) && !"Percent".equalsIgnoreCase(chargeInfo.getBreakPoint()))?chargeInfo.getBreakPoint().toUpperCase():"",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                             cell = new Cell(chk);cell.setLeading(8.0f);
                             cell.setBackgroundColor(Color.lightGray);
                             cell.setHeader(true);
                             chargeCountry.addCell(cell);*/
                            //@@ Added by subrahmanyam for 146455 on 19/02/09                      

                            if (chargeInfo.getBreakPoint().equalsIgnoreCase("MIN")) {
                                breakPoint = "Min";
                            }

                            else if (chargeInfo.getBreakPoint().equalsIgnoreCase("FLAT")) {
                                breakPoint = "Flat";
                            }

                            else if (chargeInfo.getBreakPoint().equalsIgnoreCase("MAX")) {
                                breakPoint = "Max";
                            } else if (chargeInfo.getBreakPoint().equalsIgnoreCase("CSF")) {
                                breakPoint = "Absolute";
                            } else if (chargeInfo.getBreakPoint().equalsIgnoreCase("SURCHARGE")) {
                                breakPoint = "Percent";
                            } else if (chargeInfo.getBreakPoint().equalsIgnoreCase("BASE")) {
                                breakPoint = "Base";
                            }

                            else {
                                breakPoint = chargeInfo.getBreakPoint();
                            }

                            //chk = new Chunk(breakPoint!=null&& !"Absolute".equalsIgnoreCase(breakPoint)&&!"Percent".equalsIgnoreCase(breakPoint)?breakPoint:"",FontFactory.getFont("ARIAL", 7, Font.NORMAL,Color.BLACK)); Commented by silpa for not displaying the abslute brak in pdf
                            chk = new Chunk(breakPoint != null ? breakPoint : "",
                                    FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));//added by silpa.p on 16-06-11
                            cell = new Cell(new Phrase(chk));
                            cell.setLeading(7.0f);
                            if (k == originChargesInfoSize - 1) {
                                //cell.setBorder(Rectangle.ALIGN_CENTER);
                                // cell.setCellEvent(border); 
                                //  cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                                cell.setHorizontalAlignment(cell.ALIGN_CENTER);
                            } else {
                                ;
                                //cell.setBorder(0);
                                //cell.setCellEvent(border); 
                                // cell.setBorder(Rectangle.ALIGN_CENTER);                          
                                //cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                                cell.setHorizontalAlignment(cell.ALIGN_CENTER);
                            }

                            chargeCountry.addCell(cell);
                            //   @@ Ended by subrahmanyam for 146455 on 19/02/09                

                            chk = new Chunk(chargeInfo.getCurrency(),
                                    FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                            cell = new Cell(new Phrase(chk));
                            cell.setLeading(7.0f);
                            if (k == originChargesInfoSize - 1) {
                                //cell.setBorder(Rectangle.BOTTOM);
                                // cell.setCellEvent(border); 
                                cell.setHorizontalAlignment(cell.ALIGN_CENTER);
                            } else {
                                //cell.setBorder(0);
                                //cell.setCellEvent(border); 
                                cell.setHorizontalAlignment(cell.ALIGN_CENTER);
                            }
                            chargeCountry.addCell(cell);

                            chk = new Chunk(
                                    df.format(chargeInfo.getSellRate())
                                            + (chargeInfo.isPercentValue() ? " %" : ""),
                                    FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                            cell = new Cell(new Phrase(chk));
                            cell.setLeading(7.0f);
                            if (k == originChargesInfoSize - 1) {
                                //cell.setBorder(Rectangle.BOTTOM);
                                //cell.setCellEvent(border); 
                                cell.setHorizontalAlignment(cell.ALIGN_CENTER);
                            } else {
                                //cell.setBorder(0);
                                //cell.setCellEvent(border); 
                                cell.setHorizontalAlignment(cell.ALIGN_CENTER);
                            }
                            chargeCountry.addCell(cell);

                            chk = new Chunk(chargeInfo.getBasis() != null ? chargeInfo.getBasis() : "",
                                    FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                            cell = new Cell(new Phrase(chk));
                            cell.setLeading(7.0f);
                            if (k == originChargesInfoSize - 1) {
                                //cell.setBorder(Rectangle.BOTTOM);
                                //cell.setCellEvent(border); 
                                cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                            } else {
                                //cell.setBorder(0);
                                //cell.setCellEvent(border); 
                                cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                            }
                            chargeCountry.addCell(cell);

                            //@@Added by Kameswari for the WPBN issue- on 12/11/08
                            chk = new Chunk(chargeInfo.getRatio() != null ? "1:" + chargeInfo.getRatio() : "",
                                    FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                            cell = new Cell(new Phrase(chk));
                            cell.setLeading(7.0f);
                            if (k == originChargesInfoSize - 1) {
                                //cell.setBorder(Rectangle.BOTTOM);
                                //cell.setCellEvent(border); 
                                cell.setHorizontalAlignment(cell.ALIGN_CENTER);
                            } else {
                                //cell.setBorder(0);
                                //cell.setCellEvent(border); 
                                cell.setHorizontalAlignment(cell.ALIGN_CENTER);
                            }
                            chargeCountry.addCell(cell);

                        }
                    }
                    //}
                }
            }

            if (chargeCountry != null)
                document.add(chargeCountry);

            pTable = new PdfPTable(1);
            pTable.setSpacingAfter(10f);
            pCell = new PdfPCell(new Phrase(new Chunk("")));
            pCell.setBorder(0);
            pTable.addCell(pCell);
            document.add(pTable);

            //} // Added by Gowtham on 01-Feb-2011.
            //@@Added by kiran.v on 31/01/2012 for Wpbn Issue-287659

        }
        pTable = new PdfPTable(1);
        pTable.setSpacingAfter(10f);
        pCell = new PdfPCell(new Phrase(new Chunk("")));
        pCell.setBorder(0);
        pTable.addCell(pCell);

        document.add(pTable);

        // document.newPage();

        // boolean b1 = document.newPage();

        //Freight Charges
        //document.setMargins(10,10,10,10);
        //System.out.println("After         Origin Charges --------------------------------->");

        if (!"Charges".equalsIgnoreCase(masterDOB.getQuoteWith())) {
            // Added by Gowtham. to skip in case of quote with charges.
            //Table   chargeCountry1 = null;
            //Cell   cell1         =null;
            int freightChargesSize = 0;
            int freightChargesInfoSize = 0;
            int[] frtIndices = null;
            int tableColwidth = 0; //Added by Gowtham for Landscape Issue.
            String tmpBasis = "";
            int tmpBrkptsize = 0;
            String tmpmultiBrkpt = "";
            int tmpTableWidth = 0;
            String rates = null;
            Double rates1 = 0.00;
            int tmpCount = 0;
            String basis = "";
            String orgDesc = "";
            String destDesc = "";
            String breakpt = "";
            String tmpFreq = "";
            String tmpFreq1 = "";
            int tmpFrCnt = 0; //Added by Gowtham for Landscape Issue
            MultiQuoteChargeInfo viewDOB = null;
            ArrayList chargesInfolist = new ArrayList();
            int[] tmpBrksize = null;

            //QuoteFreightLegSellRates       legCharges       = null;
            // ArrayList                      freightCharges = null;
            ArrayList freightChargeInfo = null;
            int m = 0;
            String breakPoint = null;
            String space = "";
            Table country = null;
            String serviceLevelDesc = "";//Added by silpa on 16-05-2011
            String carrierDesc = "";//Added by silpa on 16-05-2011

            // b2= writer.getPageNumber();
            // int[] frtCellWidths = {15,16,15,15,18,12,25,12,12,20,15}; // Modified by Gowtham on 24Feb2011

            if ("View".equalsIgnoreCase(request.getParameter("Operation"))) {
                home = (QMSMultiQuoteSessionHome) LookUpBean.getEJBHome("QMSMultiQuoteSessionBean");
                remote = home.create();

                chargesInfolist = remote.getChargeInfoDetailsforView(masterDOB.getQuoteId());
                viewDOB = (MultiQuoteChargeInfo) chargesInfolist.get(0);
                tmpBrkptsize = viewDOB.getMultiBreakPoints().length;
                surChargesMap = viewDOB.getSurChragesMap();

            } else {

                surChargesMap = new HashMap<String, String>();
                for (int lane = 0; lane < noOfLanes; lane++) {
                    legCharges = (MultiQuoteFreightLegSellRates) charges.get(lane);
                    freightCharges = legCharges.getFreightChargesList();
                    MultiQuoteChargeInfo tempChargeInfo = freightCharges != null
                            ? (MultiQuoteChargeInfo) freightCharges.get(lane)
                            : null;
                    // tmpBrkptsize =   tempChargeInfo!=null?finalDOB.getMultiQuoteSelectedBreaks().split(",").length:0;

                    String[] breakpoints = tempChargeInfo != null ? tempChargeInfo.getMultiBreakPoints() : null;
                    String[] rateDescs = tempChargeInfo != null ? tempChargeInfo.getMultiRateDescriptions()
                            : null;
                    String chargeDesc = null;

                    for (int i = 0; i < (breakpoints != null ? breakpoints.length : 0); i++) {
                        chargeDesc = rateDescs[i];
                        /*if(chargeDesc!=null && !"-".equals(chargeDesc) && !"A FREIGHT RATE".equals(chargeDesc)){
                           surChargesMap.put(breakpoints[i].length()>=7?breakpoints[i].substring(0, 3):breakpoints[i],chargeDesc.substring(0, chargeDesc.length()-3) );
                        }*/
                        if (!"List".equalsIgnoreCase(finalDOB.getMasterDOB().getMultiquoteweightBrake())) {
                            if (chargeDesc != null && !"-".equals(chargeDesc)
                                    && !"A FREIGHT RATE".equals(chargeDesc)) {
                                if (breakpoints[i].length() >= 7)
                                    surChargesMap.put(breakpoints[i].substring(0, 3),
                                            chargeDesc.substring(0, chargeDesc.length() - 3));
                            }
                        }

                        if ("List".equalsIgnoreCase(finalDOB.getMasterDOB().getMultiquoteweightBrake())) {
                            if (chargeDesc != null && !"-".equals(chargeDesc)
                                    && !"A FREIGHT RATE".equals(chargeDesc)) {
                                if (breakpoints[i].length() > 4 && breakpoints[i].length() < 10)
                                    surChargesMap.put(breakpoints[i].substring(4, 7),
                                            chargeDesc.substring(0, chargeDesc.length() - 3));
                            }
                        }
                    }
                }

                legCharges = (MultiQuoteFreightLegSellRates) charges.get(0);
                freightCharges = legCharges.getFreightChargesList();
                MultiQuoteChargeInfo tempChargeInfo = freightCharges != null
                        ? (MultiQuoteChargeInfo) freightCharges.get(0)
                        : null;
                tmpBrkptsize = tempChargeInfo != null ? finalDOB.getMultiQuoteSelectedBreaks().split(",").length
                        : 0;

                tmpBrksize = new int[tmpBrkptsize];
                int tmpBrk = 0;
                for (int frtCnt1 = 0; frtCnt1 < tmpBrkptsize; frtCnt1++) {
                    tmpBrk = Integer.parseInt(finalDOB.getMultiQuoteSelectedBreaks().split(",")[frtCnt1]);
                    //if("Y".equalsIgnoreCase(tempChargeInfo.getChecked_Flag().split(",")[frtCnt1]))
                    //{ 
                    tmpBasis = tmpBasis != "" ? (tmpBasis + tempChargeInfo.getBasis().split(",")[tmpBrk] + ",")
                            : (tempChargeInfo.getBasis().split(",")[tmpBrk] + ",");
                    tmpmultiBrkpt = tmpmultiBrkpt != ""
                            ? (tmpmultiBrkpt + tempChargeInfo.getMultiBreakPoints()[tmpBrk] + ",")
                            : (tempChargeInfo.getMultiBreakPoints()[tmpBrk] + ",");
                    tmpBrksize[frtCnt1] = tmpBrk;
                    // tmpTableWidth++;
                    // }
                }
            }

            /* if("Add".equalsIgnoreCase(request.getParameter("Operation"))||"Modify".equalsIgnoreCase(request.getParameter("Operation"))||"Copy".equalsIgnoreCase(request.getParameter("Operation")))
             {      
                     
             tableColwidth = tmpBrkptsize;
                     
             }
             else
             tableColwidth =  tmpBrkptsize;*/

            // tableColwidth = tmpBrkptsize + 4;   //added by silpa.p on 16-05-11//commented by silpa.p on 23-06-11
            tableColwidth = tmpBrkptsize + 5; //added by silpa.p on 23-06-11 for currency add
            //@@Modified by kiran on 10/08/2011 for WPBN Issue-258778
            // 09/11/2011
            if ("add".equalsIgnoreCase(operation) || "modify".equalsIgnoreCase(operation)
                    || "Copy".equalsIgnoreCase(operation)) {
                if ("checked".equalsIgnoreCase(request.getParameter("selectCarrier"))) {
                    tableColwidth = tableColwidth + 1;
                }
                if ("checked".equalsIgnoreCase(request.getParameter("selectService"))) {
                    tableColwidth = tableColwidth + 1;
                }
                if ("checked".equalsIgnoreCase(request.getParameter("selectFrequecy"))) {
                    tableColwidth = tableColwidth + 1;
                }
                //@@Added by kiran.v on 23/09/2011 for Wpbn Issue 272712
                if ("checked".equalsIgnoreCase(request.getParameter("selectTransitTime"))) {
                    tableColwidth = tableColwidth + 1;
                }
                if ("checked".equalsIgnoreCase(request.getParameter("selectFrieghtValidity"))) {
                    tableColwidth = tableColwidth + 1;
                }
            } else {
                if ("checked".equalsIgnoreCase(request.getParameter("selectCarrier"))
                        || "Y".equalsIgnoreCase(
                                multiQuoteChargeInfo != null ? multiQuoteChargeInfo.getCarrierChecked() : "N")
                        || "on".equalsIgnoreCase(
                                multiQuoteChargeInfo != null ? multiQuoteChargeInfo.getCarrierChecked() : "")) {
                    tableColwidth = tableColwidth + 1;
                }
                if ("checked".equalsIgnoreCase(request.getParameter("selectService"))
                        || "Y".equalsIgnoreCase(
                                multiQuoteChargeInfo != null ? multiQuoteChargeInfo.getServiceChecked() : "N")
                        || "on".equalsIgnoreCase(
                                multiQuoteChargeInfo != null ? multiQuoteChargeInfo.getServiceChecked() : "")) {
                    tableColwidth = tableColwidth + 1;
                }
                if ("checked".equalsIgnoreCase(request.getParameter("selectFrequecy"))
                        || "Y".equalsIgnoreCase(
                                multiQuoteChargeInfo != null ? multiQuoteChargeInfo.getFrequencyChecked() : "N")
                        || "on".equalsIgnoreCase(
                                multiQuoteChargeInfo != null ? multiQuoteChargeInfo.getFrequencyChecked()
                                        : "")) {
                    tableColwidth = tableColwidth + 1;
                }
                //@@Added by kiran.v on 23/09/2011 for Wpbn Issue 272712
                if ("checked".equalsIgnoreCase(request.getParameter("selectTransitTime"))
                        || "Y".equalsIgnoreCase(
                                multiQuoteChargeInfo != null ? multiQuoteChargeInfo.getTransitTimeChecked()
                                        : "N")
                        || "on".equalsIgnoreCase(
                                multiQuoteChargeInfo != null ? multiQuoteChargeInfo.getTransitTimeChecked()
                                        : "")) {
                    tableColwidth = tableColwidth + 1;
                }
                if ("checked".equalsIgnoreCase(request.getParameter("selectFrieghtValidity"))
                        || "Y".equalsIgnoreCase(
                                multiQuoteChargeInfo != null ? multiQuoteChargeInfo.getRateValidityChecked()
                                        : "N")
                        || "on".equalsIgnoreCase(
                                multiQuoteChargeInfo != null ? multiQuoteChargeInfo.getRateValidityChecked()
                                        : "")) {
                    tableColwidth = tableColwidth + 1;
                }
            }
            //@@Ended by kiran.v
            int[] frtCellWidths = new int[tableColwidth];//modified by silpa.p 0n 16-05-11
            for (int frtcnt = 0; frtcnt < tableColwidth; frtcnt++)//modified by silpa.p 0n 16-05-11
            {
                frtCellWidths[frtcnt] = 10;
            }
            if (noOfLanes > 0) {

                //if( originChargesSize >0)
                //document.newPage(); 
                //document.add(horizontalLine);
                frtHeader = new Table(1);
                frtHeader.setWidth(100);
                frtHeader.setBackgroundColor(Color.white);
                frtHeader.setBorderColor(Color.BLACK);
                //frtHeader.setBorder(Rectangle.TOP);
                frtHeader.setBorderWidth(1f);
                frtHeader.setDefaultHorizontalAlignment(Element.ALIGN_LEFT);
                frtHeader.setPadding(1);
                frtHeader.setSpacing(1);
                frtHeader.setTableFitsPage(true);

                chk = new Chunk("FREIGHT CHARGES", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                cell1 = new Cell(chk);
                cell1.setLeading(10.0f);
                cell1.setBorder(0);
                cell1.setBackgroundColor(Color.ORANGE);//modified by silpa.p on 3-06-11
                frtHeader.addCell(cell1);
                document.add(frtHeader);
                //document.add(horizontalLine);
                chargeCountry2 = new PdfPTable(tableColwidth);//modified by silpa.p on 16-05-11
                chargeCountry2.setWidthPercentage(100);
                chargeCountry2.setWidths(frtCellWidths);

                /*chargeCountry.setPadding(1);
                chargeCountry.setSpacing(0);
                chargeCountry.setOffset(5);*/

                /*
                cell = new PdfPCell(new Phrase(new Chunk("")));
                 cell.setBorder(Rectangle.BOTTOM);
                cell.setCellEvent(border); 
                cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                chargeCountry.addCell(cell);*/

                /* chargeCountry.setBackgroundColor(Color.WHITE);
                 chargeCountry.setBorderColor(Color.white);
                 chargeCountry.setDefaultHorizontalAlignment(Element.ALIGN_CENTER);
                 //chargeCountry.setBorderWidth(1f);
                 chargeCountry.setTableFitsPage(true);//@@Added by kameswari 
                */
                if (!"Charges".equalsIgnoreCase(masterDOB.getQuoteWith())) {//Added by Anil.k
                    //for(int i=0;i<noOfLanes;i++)//testttttttttttinggggggggg

                    legCharges = (MultiQuoteFreightLegSellRates) charges.get(0);
                    freightCharges = legCharges.getFreightChargesList();

                    freightChargesSize = freightCharges.size();//No of rates per lane
                    //Added By Kishore Podili (this change was over rided)
                    if ("View".equalsIgnoreCase(request.getParameter("Operation")))
                        freightChargesSize = chargesInfolist.size();

                    //added by silpa.p on 16-05-11
                    //ended                      
                    if (freightChargesSize > 0) {

                        chk = new Chunk("Origin",
                                FontFactory.getFont("Courier-Bold ", 7, Font.BOLD, Color.BLACK));
                        cell2 = new PdfPCell(new Phrase(chk));
                        cell2.setBorder(Rectangle.BOTTOM);
                        cell2.setCellEvent(border);
                        cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                        chargeCountry2.addCell(cell2);

                        chk = new Chunk("Destination",
                                FontFactory.getFont("Courier-Bold ", 7, Font.BOLD, Color.BLACK));
                        cell2 = new PdfPCell(new Phrase(chk));
                        cell2.setBorder(Rectangle.BOTTOM);
                        cell2.setCellEvent(border);
                        cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                        chargeCountry2.addCell(cell2);
                        System.out.println("operation" + operation);
                        //@@Modified by kiran on 10/08/2011 for WPBN Issue-258778
                        // 09/11/2011
                        if ("add".equalsIgnoreCase(operation) || "modify".equalsIgnoreCase(operation)
                                || "Copy".equalsIgnoreCase(operation)) {
                            if ("checked".equalsIgnoreCase(carrierChecked)) {//added by silpa.p on 14-05-11
                                chk = new Chunk("Carrier",
                                        FontFactory.getFont("Courier-Bold ", 7, Font.BOLD, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            } //ended

                            if ("checked".equalsIgnoreCase(serviceLevelChecked)) {//added by silpa.p on 14-05-11
                                chk = new Chunk("Service level",
                                        FontFactory.getFont("Courier-Bold ", 7, Font.BOLD, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                // serviceflag=true;
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);

                            } //ended
                            if ("checked".equalsIgnoreCase(frequencyChecked)) {//added by silpa.p on 16-05-11
                                chk = new Chunk("Frequency",
                                        FontFactory.getFont("Courier-Bold ", 7, Font.BOLD, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                // frequencyflag=true;
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }
                            //@@Added by kiran.v on 23/09/2011 for Wpbn Issue 272712
                            if ("checked".equalsIgnoreCase(transitTimeChecked)) {
                                chk = new Chunk("TransitTime",
                                        FontFactory.getFont("Courier-Bold ", 7, Font.BOLD, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                // frequencyflag=true;
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }
                            if ("checked".equalsIgnoreCase(validityChecked)) {
                                chk = new Chunk("FreightValidity",
                                        FontFactory.getFont("Courier-Bold ", 7, Font.BOLD, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                // frequencyflag=true;
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }
                        } else {
                            if ("checked".equalsIgnoreCase(carrierChecked)
                                    || "Y".equalsIgnoreCase(multiQuoteChargeInfo.getCarrierChecked())
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo.getCarrierChecked())) {//added by silpa.p on 14-05-11
                                chk = new Chunk("Carrier",
                                        FontFactory.getFont("Courier-Bold ", 7, Font.BOLD, Color.BLACK));
                                carrierFlag = true;
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            } //ended
                            if ("checked".equalsIgnoreCase(serviceLevelChecked)
                                    || "Y".equalsIgnoreCase(multiQuoteChargeInfo.getServiceChecked())
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo.getServiceChecked())) {//added by silpa.p on 14-05-11
                                chk = new Chunk("Service level",
                                        FontFactory.getFont("Courier-Bold ", 7, Font.BOLD, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                serviceflag = true;
                                serviceFlag = true;
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);

                            } //ended
                            if ("checked".equalsIgnoreCase(frequencyChecked)
                                    || "Y".equalsIgnoreCase(multiQuoteChargeInfo.getFrequencyChecked())
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo.getFrequencyChecked())) {//added by silpa.p on 16-05-11
                                chk = new Chunk("Frequency",
                                        FontFactory.getFont("Courier-Bold ", 7, Font.BOLD, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                frequencyflag = true;
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }
                            //@@Added by kiran.v on 23/09/2011 for Wpbn Issue 272712
                            if ("checked".equalsIgnoreCase(transitTimeChecked)
                                    || "Y".equalsIgnoreCase(multiQuoteChargeInfo.getTransitTimeChecked())
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo.getTransitTimeChecked())) {
                                chk = new Chunk("TransitTime",
                                        FontFactory.getFont("Courier-Bold ", 7, Font.BOLD, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                transittimeflag = true;
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }
                            if ("checked".equalsIgnoreCase(validityChecked)
                                    || "Y".equalsIgnoreCase(multiQuoteChargeInfo.getRateValidityChecked())
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo.getRateValidityChecked())) {
                                chk = new Chunk("FreightValidity",
                                        FontFactory.getFont("Courier-Bold ", 7, Font.BOLD, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                freightValidity = true;
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }
                        }
                        //@@ Ended by kiran.v
                        chk = new Chunk("Incoterms",
                                FontFactory.getFont("Courier-Bold ", 7, Font.BOLD, Color.BLACK));
                        cell2 = new PdfPCell(new Phrase(chk));
                        cell2.setBorder(Rectangle.BOTTOM);
                        cell2.setCellEvent(border);
                        cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                        chargeCountry2.addCell(cell2);
                        //added by silpa.p on 23-06-11 for currency add
                        chk = new Chunk("Currency",
                                FontFactory.getFont("Courier-Bold ", 7, Font.BOLD, Color.BLACK));
                        cell2 = new PdfPCell(new Phrase(chk));
                        cell2.setBorder(Rectangle.BOTTOM);
                        cell2.setCellEvent(border);
                        cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                        chargeCountry2.addCell(cell2);//ended

                        if ("Add".equalsIgnoreCase(request.getParameter("Operation"))
                                || "Modify".equalsIgnoreCase(request.getParameter("Operation"))
                                || "Copy".equalsIgnoreCase(request.getParameter("Operation"))) {
                            for (int brk1 = 0; brk1 < tmpBrkptsize; brk1++) {

                                if (tmpmultiBrkpt.split(",")[brk1] != null
                                        && tmpmultiBrkpt.split(",")[brk1].toUpperCase().endsWith("MIN")) {
                                    if (tmpmultiBrkpt.split(",")[brk1].length() > 7)
                                        breakpt = "MIN" + "\n" + tmpmultiBrkpt.split(",")[brk1].substring(0, 3);
                                    //breakpt = "MIN";
                                    else
                                        breakpt = "MIN";
                                } else if (tmpmultiBrkpt.split(",")[brk1] != null
                                        && tmpmultiBrkpt.split(",")[brk1].toUpperCase().endsWith("BASIC")) {

                                    if (tmpmultiBrkpt.split(",")[brk1].length() > 7)
                                        breakpt = "BASIC" + "\n"
                                                + tmpmultiBrkpt.split(",")[brk1].substring(0, 3);
                                    //breakpt = "BASIC";
                                    else
                                        breakpt = "BASIC";
                                } else if (tmpmultiBrkpt.split(",")[brk1] != null
                                        && tmpmultiBrkpt.split(",")[brk1].toUpperCase().endsWith("FLAT")) {

                                    if (tmpmultiBrkpt.split(",")[brk1].length() > 7)
                                        breakpt = "FLAT" + "\n"
                                                + tmpmultiBrkpt.split(",")[brk1].substring(0, 3);
                                    //breakpt ="FLAT";
                                    else
                                        breakpt = "FLAT";
                                } else if (tmpmultiBrkpt.split(",")[brk1] != null
                                        && tmpmultiBrkpt.split(",")[brk1].toUpperCase().endsWith("ABSOLUTE")) {

                                    if (tmpmultiBrkpt.split(",")[brk1].length() > 10)
                                        breakpt = "ABSOLUTE" + "\n"
                                                + tmpmultiBrkpt.split(",")[brk1].substring(0, 3);
                                    //breakpt = "ABSOLUTE";
                                    else
                                        breakpt = "ABSOLUTE";
                                } else if (tmpmultiBrkpt.split(",")[brk1] != null
                                        && tmpmultiBrkpt.split(",")[brk1].toUpperCase().endsWith("PERCENT")) {

                                    if (tmpmultiBrkpt.split(",")[brk1].length() > 10)
                                        breakpt = "PERCENT" + "\n"
                                                + tmpmultiBrkpt.split(",")[brk1].substring(0, 3);
                                    //breakpt = "PERCENT";
                                    else
                                        breakpt = "PERCENT";
                                } else if (isInteger(tmpmultiBrkpt.split(",")[brk1])
                                        || isDouble(tmpmultiBrkpt.split(",")[brk1])) {
                                    breakpt = tmpmultiBrkpt.split(",")[brk1];
                                } else
                                    breakpt = tmpmultiBrkpt
                                            .split(",")[brk1] != null
                                                    ? (tmpmultiBrkpt.split(",")[brk1].length() > 5
                                                            ? tmpmultiBrkpt.split(",")[brk1].substring(0, 4)
                                                                    + "\n"
                                                                    + tmpmultiBrkpt.split(",")[brk1].substring(
                                                                            4,
                                                                            tmpmultiBrkpt.split(",")[brk1]
                                                                                    .length() - 2)
                                                            : tmpmultiBrkpt.split(",")[brk1])
                                                    : "";
                                basis = tmpBasis.split(",")[brk1] != null ? tmpBasis.split(",")[brk1] : "";

                                //chk = new Chunk(breakpt+"\n"+basis,FontFactory.getFont("Courier-Bold ", 8, Font.BOLD,Color.BLACK));
                                chk = new Chunk(breakpt,
                                        FontFactory.getFont("Courier-Bold ", 7, Font.BOLD, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }
                        } else {
                            for (int t = 0; t < tmpBrkptsize; t++) {
                                if (viewDOB.getMultiBreakPoints()[t].toUpperCase().endsWith("MIN")) {
                                    if (viewDOB.getMultiBreakPoints()[t].length() > 7)
                                        breakpt = "MIN" + "\n"
                                                + viewDOB.getMultiBreakPoints()[t].substring(0, 3);
                                    //breakpt= "MIN";
                                    else
                                        breakpt = "MIN";
                                } else if (viewDOB.getMultiBreakPoints()[t].toUpperCase().endsWith("BASIC")) {
                                    if (viewDOB.getMultiBreakPoints()[t].length() > 7)
                                        breakpt = "BASIC" + "\n"
                                                + viewDOB.getMultiBreakPoints()[t].substring(0, 3);
                                    //breakpt= "BASIC";
                                    else
                                        breakpt = "BASIC";
                                } else if (viewDOB.getMultiBreakPoints()[t].toUpperCase().endsWith("FLAT")) {
                                    if (viewDOB.getMultiBreakPoints()[t].length() > 7)
                                        breakpt = "FLAT" + "\n"
                                                + viewDOB.getMultiBreakPoints()[t].substring(0, 3);
                                    //breakpt= "FLAT";

                                    else
                                        breakpt = "FLAT";
                                } else if (viewDOB.getMultiBreakPoints()[t].toUpperCase()
                                        .endsWith("ABSOLUTE")) {
                                    if (viewDOB.getMultiBreakPoints()[t].length() > 10)
                                        breakpt = "ABSOLUTE" + "\n"
                                                + viewDOB.getMultiBreakPoints()[t].substring(0, 3);
                                    //breakpt= "ABSOLUTE";
                                    else
                                        breakpt = "ABSOLUTE";
                                } else if (viewDOB.getMultiBreakPoints()[t].toUpperCase().endsWith("PERCENT")) {
                                    if (viewDOB.getMultiBreakPoints()[t].length() > 7)
                                        breakpt = "PERCENT" + "\n"
                                                + viewDOB.getMultiBreakPoints()[t].substring(0, 3);
                                    //breakpt= "PERCENT";
                                    else
                                        breakpt = "PERCENT";
                                } else
                                    breakpt = viewDOB.getMultiBreakPoints()[t] != null
                                            ? (viewDOB.getMultiBreakPoints()[t].length() > 5
                                                    ? viewDOB.getMultiBreakPoints()[t].substring(0, 4) + "\n"
                                                            + viewDOB.getMultiBreakPoints()[t].substring(4,
                                                                    viewDOB.getMultiBreakPoints()[t].length()
                                                                            - 2)
                                                    : viewDOB.getMultiBreakPoints()[t])
                                            : "";

                                //chk = new Chunk(breakpt+"\n"+viewDOB.getBasis().split(",")[t],FontFactory.getFont("Courier-Bold ", 8, Font.BOLD,Color.BLACK));
                                chk = new Chunk(breakpt,
                                        FontFactory.getFont("Courier-Bold ", 7, Font.BOLD, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);

                            }
                        }

                        chk = new Chunk("Density Ratio",
                                FontFactory.getFont("Courier-Bold ", 7, Font.BOLD, Color.BLACK));
                        cell2 = new PdfPCell(new Phrase(chk));
                        cell2.setBorder(Rectangle.BOTTOM);
                        cell2.setCellEvent(border);
                        cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                        chargeCountry2.addCell(cell2);

                    }

                    //added by silpa.p on 16-05-11 for adding new line for pdf
                    if (freightChargesSize > 0) {

                        chk = new Chunk("", FontFactory.getFont("Courier-Bold ", 8, Font.BOLD, Color.BLACK));
                        cell2 = new PdfPCell(new Phrase(chk));
                        cell2.setBorder(Rectangle.BOTTOM);
                        cell2.setCellEvent(border);
                        cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                        chargeCountry2.addCell(cell2);

                        cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                        chargeCountry2.addCell(cell2);
                        chk = new Chunk("", FontFactory.getFont("Courier-Bold ", 8, Font.BOLD, Color.BLACK));
                        cell2 = new PdfPCell(new Phrase(chk));
                        cell2.setBorder(Rectangle.BOTTOM);
                        cell2.setCellEvent(border);
                        //@@ Modified by kiran.v on 28/08/2011 for Wpbn Issue -258778
                        // 09/11/2011
                        if ("add".equalsIgnoreCase(operation) || "modify".equalsIgnoreCase(operation)
                                || "Copy".equalsIgnoreCase(operation)) {
                            if ("checked".equalsIgnoreCase(carrierChecked)) {//added by silpa.p on 14-05-11
                                chk = new Chunk("",
                                        FontFactory.getFont("Courier-Bold ", 8, Font.BOLD, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }

                            if ("checked".equalsIgnoreCase(serviceLevelChecked)) {//added by silpa.p on 14-05-11
                                chk = new Chunk("",
                                        FontFactory.getFont("Courier-Bold ", 8, Font.BOLD, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);

                            }
                            if ("checked".equalsIgnoreCase(frequencyChecked)) {//added by silpa.p on 16-05-11
                                chk = new Chunk("",
                                        FontFactory.getFont("Courier-Bold ", 8, Font.BOLD, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }
                            //@@Added by kiran.v on 23/09/2011 for Wpbn Issue 272712
                            if ("checked".equalsIgnoreCase(transitTimeChecked)) {
                                chk = new Chunk("",
                                        FontFactory.getFont("Courier-Bold ", 8, Font.BOLD, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }
                            if ("checked".equalsIgnoreCase(validityChecked)) {
                                chk = new Chunk("",
                                        FontFactory.getFont("Courier-Bold ", 8, Font.BOLD, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }
                        } else {
                            if ("Y".equalsIgnoreCase(
                                    multiQuoteChargeInfo != null ? multiQuoteChargeInfo.getCarrierChecked()
                                            : "N")
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo != null
                                            ? multiQuoteChargeInfo.getCarrierChecked()
                                            : "")) {//added by silpa.p on 14-05-11
                                chk = new Chunk(" ",
                                        FontFactory.getFont("Courier-Bold ", 8, Font.BOLD, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }

                            if ("Y".equalsIgnoreCase(
                                    multiQuoteChargeInfo != null ? multiQuoteChargeInfo.getServiceChecked()
                                            : "N")
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo != null
                                            ? multiQuoteChargeInfo.getServiceChecked()
                                            : "")) {//added by silpa.p on 14-05-11
                                chk = new Chunk(" ",
                                        FontFactory.getFont("Courier-Bold ", 8, Font.BOLD, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);

                            }
                            if ("Y".equalsIgnoreCase(
                                    multiQuoteChargeInfo != null ? multiQuoteChargeInfo.getFrequencyChecked()
                                            : "N")
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo != null
                                            ? multiQuoteChargeInfo.getFrequencyChecked()
                                            : "")) {//added by silpa.p on 16-05-11
                                chk = new Chunk(" ",
                                        FontFactory.getFont("Courier-Bold ", 8, Font.BOLD, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }
                            //@@Added by kiran.v on 23/09/2011 for Wpbn Issue 272712
                            if ("Y".equalsIgnoreCase(
                                    multiQuoteChargeInfo != null ? multiQuoteChargeInfo.getTransitTimeChecked()
                                            : "N")
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo != null
                                            ? multiQuoteChargeInfo.getTransitTimeChecked()
                                            : "")) {
                                chk = new Chunk(" ",
                                        FontFactory.getFont("Courier-Bold ", 8, Font.BOLD, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }
                            if ("Y".equalsIgnoreCase(
                                    multiQuoteChargeInfo != null ? multiQuoteChargeInfo.getRateValidityChecked()
                                            : "N")
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo != null
                                            ? multiQuoteChargeInfo.getRateValidityChecked()
                                            : "")) {
                                chk = new Chunk(" ",
                                        FontFactory.getFont("Courier-Bold ", 8, Font.BOLD, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }
                        }
                        chk = new Chunk("", FontFactory.getFont("Courier-Bold ", 8, Font.BOLD, Color.BLACK));
                        cell2 = new PdfPCell(new Phrase(chk));
                        cell2.setBorder(Rectangle.BOTTOM);
                        cell2.setCellEvent(border);
                        cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                        chargeCountry2.addCell(cell2);
                        //added by silpa.p on 23-06-11 for currency add
                        chk = new Chunk("", FontFactory.getFont("Courier-Bold ", 8, Font.BOLD, Color.BLACK));
                        cell2 = new PdfPCell(new Phrase(chk));
                        cell2.setBorder(Rectangle.BOTTOM);
                        cell2.setCellEvent(border);
                        cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                        chargeCountry2.addCell(cell2);//ended

                        if ("Add".equalsIgnoreCase(request.getParameter("Operation"))
                                || "Modify".equalsIgnoreCase(request.getParameter("Operation"))
                                || "Copy".equalsIgnoreCase(request.getParameter("Operation"))) {
                            for (int brk1 = 0; brk1 < tmpBrkptsize; brk1++) {

                                if (tmpmultiBrkpt.split(",")[brk1] != null
                                        && tmpmultiBrkpt.split(",")[brk1].toUpperCase().endsWith("MIN")) {
                                    if (tmpmultiBrkpt.split(",")[brk1].length() > 7)
                                        breakpt = "MIN" + "\n" + tmpmultiBrkpt.split(",")[brk1].substring(0, 3);
                                    //breakpt = "MIN";
                                    else
                                        breakpt = "MIN";
                                } else if (tmpmultiBrkpt.split(",")[brk1] != null
                                        && tmpmultiBrkpt.split(",")[brk1].toUpperCase().endsWith("BASIC")) {

                                    if (tmpmultiBrkpt.split(",")[brk1].length() > 7)
                                        breakpt = "BASIC" + "\n"
                                                + tmpmultiBrkpt.split(",")[brk1].substring(0, 3);
                                    //breakpt = "BASIC";
                                    else
                                        breakpt = "BASIC";
                                } else if (tmpmultiBrkpt.split(",")[brk1] != null
                                        && tmpmultiBrkpt.split(",")[brk1].toUpperCase().endsWith("FLAT")) {

                                    if (tmpmultiBrkpt.split(",")[brk1].length() > 7)
                                        breakpt = "FLAT" + "\n"
                                                + tmpmultiBrkpt.split(",")[brk1].substring(0, 3);
                                    //breakpt ="FLAT";
                                    else
                                        breakpt = "FLAT";
                                } else if (tmpmultiBrkpt.split(",")[brk1] != null
                                        && tmpmultiBrkpt.split(",")[brk1].toUpperCase().endsWith("ABSOLUTE")) {

                                    if (tmpmultiBrkpt.split(",")[brk1].length() > 10)
                                        breakpt = "ABSOLUTE" + "\n"
                                                + tmpmultiBrkpt.split(",")[brk1].substring(0, 3);
                                    //breakpt = "ABSOLUTE";
                                    else
                                        breakpt = "ABSOLUTE";
                                } else if (tmpmultiBrkpt.split(",")[brk1] != null
                                        && tmpmultiBrkpt.split(",")[brk1].toUpperCase().endsWith("PERCENT")) {

                                    if (tmpmultiBrkpt.split(",")[brk1].length() > 10)
                                        breakpt = "PERCENT" + "\n"
                                                + tmpmultiBrkpt.split(",")[brk1].substring(0, 3);
                                    //breakpt = "PERCENT";
                                    else
                                        breakpt = "PERCENT";
                                } else if (isInteger(tmpmultiBrkpt.split(",")[brk1])
                                        || isDouble(tmpmultiBrkpt.split(",")[brk1])) {
                                    breakpt = tmpmultiBrkpt.split(",")[brk1];
                                } else
                                    breakpt = tmpmultiBrkpt
                                            .split(",")[brk1] != null
                                                    ? (tmpmultiBrkpt.split(",")[brk1].length() > 5
                                                            ? tmpmultiBrkpt.split(",")[brk1].substring(0, 4)
                                                                    + "\n"
                                                                    + tmpmultiBrkpt.split(",")[brk1].substring(
                                                                            4,
                                                                            tmpmultiBrkpt.split(",")[brk1]
                                                                                    .length() - 2)
                                                            : tmpmultiBrkpt.split(",")[brk1])
                                                    : "";
                                basis = tmpBasis.split(",")[brk1] != null ? tmpBasis.split(",")[brk1] : "";

                                //chk = new Chunk(breakpt+"\n"+basis,FontFactory.getFont("Courier-Bold ", 8, Font.BOLD,Color.BLACK));
                                chk = new Chunk(basis,
                                        FontFactory.getFont("Courier-Bold ", 7, Font.NORMAL, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }

                        } else {
                            for (int t = 0; t < tmpBrkptsize; t++) {
                                if (viewDOB.getMultiBreakPoints()[t].toUpperCase().endsWith("MIN")) {
                                    if (viewDOB.getMultiBreakPoints()[t].length() > 7)
                                        breakpt = "MIN" + "\n"
                                                + viewDOB.getMultiBreakPoints()[t].substring(0, 3);
                                    //breakpt= "MIN";
                                    else
                                        breakpt = "MIN";
                                } else if (viewDOB.getMultiBreakPoints()[t].toUpperCase().endsWith("BASIC")) {
                                    if (viewDOB.getMultiBreakPoints()[t].length() > 7)
                                        breakpt = "BASIC" + "\n"
                                                + viewDOB.getMultiBreakPoints()[t].substring(0, 3);
                                    //breakpt= "BASIC";
                                    else
                                        breakpt = "BASIC";
                                } else if (viewDOB.getMultiBreakPoints()[t].toUpperCase().endsWith("FLAT")) {
                                    if (viewDOB.getMultiBreakPoints()[t].length() > 7)
                                        breakpt = "FLAT" + "\n"
                                                + viewDOB.getMultiBreakPoints()[t].substring(0, 3);
                                    //breakpt= "FLAT";

                                    else
                                        breakpt = "FLAT";
                                } else if (viewDOB.getMultiBreakPoints()[t].toUpperCase()
                                        .endsWith("ABSOLUTE")) {
                                    if (viewDOB.getMultiBreakPoints()[t].length() > 10)
                                        breakpt = "ABSOLUTE" + "\n"
                                                + viewDOB.getMultiBreakPoints()[t].substring(0, 3);
                                    //breakpt= "ABSOLUTE";
                                    else
                                        breakpt = "ABSOLUTE";
                                } else if (viewDOB.getMultiBreakPoints()[t].toUpperCase().endsWith("PERCENT")) {
                                    if (viewDOB.getMultiBreakPoints()[t].length() > 7)
                                        breakpt = "PERCENT" + "\n"
                                                + viewDOB.getMultiBreakPoints()[t].substring(0, 3);
                                    //breakpt= "PERCENT";
                                    else
                                        breakpt = "PERCENT";
                                } else
                                    breakpt = viewDOB.getMultiBreakPoints()[t] != null
                                            ? (viewDOB.getMultiBreakPoints()[t].length() > 5
                                                    ? viewDOB.getMultiBreakPoints()[t].substring(0, 4) + "\n"
                                                            + viewDOB.getMultiBreakPoints()[t].substring(4,
                                                                    viewDOB.getMultiBreakPoints()[t].length()
                                                                            - 2)
                                                    : viewDOB.getMultiBreakPoints()[t])
                                            : "";

                                //chk = new Chunk(breakpt+"\n"+viewDOB.getBasis().split(",")[t],FontFactory.getFont("Courier-Bold ", 8, Font.BOLD,Color.BLACK));
                                chk = new Chunk(viewDOB.getBasis().split(",")[t],
                                        FontFactory.getFont("Courier-Bold ", 7, Font.NORMAL, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);

                            }
                        }
                        chk = new Chunk("", FontFactory.getFont("Courier-Bold ", 7, Font.BOLD, Color.BLACK));
                        cell2 = new PdfPCell(new Phrase(chk));
                        cell2.setBorder(Rectangle.BOTTOM);
                        cell2.setCellEvent(border);
                        cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                        chargeCountry2.addCell(cell2);

                    } //ended
                    if ("View".equalsIgnoreCase(request.getParameter("Operation")))
                        freightChargesSize = chargesInfolist.size();
                    for (int j = 0; j < freightChargesSize; j++) {
                        if ("View".equalsIgnoreCase(request.getParameter("Operation"))) {
                            multiQuoteChargeInfo = (MultiQuoteChargeInfo) chargesInfolist.get(j);
                            // multiQuoteChargeInfo         = (MultiQuoteChargeInfo)freightCharges.get(j);
                        } else
                            multiQuoteChargeInfo = (MultiQuoteChargeInfo) freightCharges.get(j);
                        logger.info("Freight Charges doPDFGeneration::" + j + ":" + chargesDOB); // newly added

                        home = (QMSMultiQuoteSessionHome) LookUpBean.getEJBHome("QMSMultiQuoteSessionBean");
                        remote = home.create();
                        //orgDesc = remote.getLocationName(multiQuoteChargeInfo.getOrginLoc());//Commented by silpa.p on 5-07-11
                        orgDesc = multiQuoteChargeInfo.getOrginLoc();//modified by silpa.p on 5-07-11
                        chk = new Chunk(orgDesc != null ? orgDesc : "",
                                FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                        cell2 = new PdfPCell(new Phrase(chk));
                        cell2.setBorder(Rectangle.BOTTOM);
                        cell2.setCellEvent(border);
                        cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                        chargeCountry2.addCell(cell2);

                        //destDesc = remote.getLocationName(multiQuoteChargeInfo.getDestLoc());//commented by silpa.p on 5-07-11
                        destDesc = multiQuoteChargeInfo.getDestLoc();//modified by silpa.p on 5-07-11

                        chk = new Chunk(destDesc != null ? destDesc : "",
                                FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                        cell2 = new PdfPCell(new Phrase(chk));
                        cell2.setBorder(Rectangle.BOTTOM);
                        cell2.setCellEvent(border);
                        cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                        chargeCountry2.addCell(cell2);

                        // tmpCarrier1 = multiQuoteChargeInfo.getCarrier(); Commented by Gowtham
                        /* if("View".equalsIgnoreCase(request.getParameter("Operation"))&& ("C".equalsIgnoreCase(CarrierChecked)))
                        {     
                        chk = new Chunk(multiQuoteChargeInfo.getCarrier()!=null?multiQuoteChargeInfo.getCarrier():"",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                        cell = new PdfPCell(new Phrase(chk));
                          cell.setBorder(Rectangle.BOTTOM);
                        cell.setCellEvent(border); 
                        cell.setHorizontalAlignment(cell.ALIGN_CENTER);
                        chargeCountry.addCell(cell);
                                
                        }
                        else
                        {
                           if("C".equalsIgnoreCase(CarrierChecked)){
                           chk = new Chunk(multiQuoteChargeInfo.getCarrierName()!=null?multiQuoteChargeInfo.getCarrierName():"",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                           cell = new PdfPCell(new Phrase(chk));
                             cell.setBorder(Rectangle.BOTTOM);
                           cell.setCellEvent(border); 
                           cell.setHorizontalAlignment(cell.ALIGN_CENTER);
                           chargeCountry.addCell(cell);
                           }
                        }*/ //carrierDesc = remote.getServiceLevelName(multiQuoteChargeInfo.getServiceLevel());
                        //@@Added by kiran.v on 01/08/2011 for Wpbn Issue 258778
                        carrierDesc = multiQuoteChargeInfo.getCarrier();
                        Cd.add(carrierDesc);
                        String carrierName = remote.getCarrierName(multiQuoteChargeInfo.getCarrier());
                        Cdn.add(carrierName);
                        //@@Added by kiran.v on 23/09/2011 for Wpbn Issue 272712
                        String time = multiQuoteChargeInfo.getTransitTime();
                        //Cdn.add(multiQuoteChargeInfo.getCarrierName());
                        // carrierDesc = remote.getCarrierName(multiQuoteChargeInfo.getCarrier());//added by silpa.p on 16-05-11
                        if ("View".equalsIgnoreCase(request.getParameter("Operation")))
                            //chk = new Chunk(multiQuoteChargeInfo.getCarrierName()!=null?multiQuoteChargeInfo.getCarrierName():"",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                            chk = new Chunk(carrierDesc != null ? carrierDesc : "",
                                    FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));//modified by silpa.p on 16-05-11
                        //@@Modified by kiran on 10/08/2011 for WPBN Issue-258778
                        // 09/11/2011
                        if ("add".equalsIgnoreCase(operation) || "modify".equalsIgnoreCase(operation)
                                || "Copy".equalsIgnoreCase(operation)) {
                            if ("checked".equalsIgnoreCase(carrierChecked)) {//added by silpa.p on 14-05-11                            
                                // chk = new Chunk(multiQuoteChargeInfo.getCarrier()!=null?multiQuoteChargeInfo.getCarrier():"",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                chk = new Chunk(carrierDesc != null ? carrierDesc : "",
                                        FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            } //ended
                            //@@Added by kiran.v on 01/08/2011 for Wpbn Issue 258778
                            serviceLevelDesc = multiQuoteChargeInfo.getServiceLevel();

                            Sd.add(serviceLevelDesc);
                            // serviceLevelDesc = remote.getServiceLevelName(multiQuoteChargeInfo.getServiceLevel());//added by silpa.p on 16-05-11
                            //tmpServl1=multiQuoteChargeInfo.getServiceLevel(); Commented by Gowtham
                            if ("checked".equalsIgnoreCase(serviceLevelChecked)) {//added by silpa.p on 14-05-11
                                //chk = new Chunk(multiQuoteChargeInfo.getServiceLevel()!=null?multiQuoteChargeInfo.getServiceLevel():"",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                chk = new Chunk(serviceLevelDesc != null ? serviceLevelDesc : "",
                                        FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));//modified by silpa.p on 16-05-11
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }
                            if ("checked".equalsIgnoreCase(frequencyChecked)) {//added by silpa.p on 16-05-11
                                tmpFrCnt = multiQuoteChargeInfo.getFrequency() != null
                                        ? multiQuoteChargeInfo.getFrequency().split(",").length
                                        : 0;
                                if (tmpFrCnt > 1) {
                                    for (int tmpFc = 0; tmpFc < tmpFrCnt; tmpFc++) {
                                        if ("1".equals(multiQuoteChargeInfo.getFrequency().split(",")[tmpFc]))
                                            tmpFreq = "Mon";
                                        else if ("2"
                                                .equals(multiQuoteChargeInfo.getFrequency().split(",")[tmpFc]))
                                            tmpFreq = "Tue";
                                        else if ("3"
                                                .equals(multiQuoteChargeInfo.getFrequency().split(",")[tmpFc]))
                                            tmpFreq = "Wed";
                                        else if ("4"
                                                .equals(multiQuoteChargeInfo.getFrequency().split(",")[tmpFc]))
                                            tmpFreq = "Thr";
                                        else if ("5"
                                                .equals(multiQuoteChargeInfo.getFrequency().split(",")[tmpFc]))
                                            tmpFreq = "Fri";
                                        else if ("6"
                                                .equals(multiQuoteChargeInfo.getFrequency().split(",")[tmpFc]))
                                            tmpFreq = "Sat";
                                        else if ("7"
                                                .equals(multiQuoteChargeInfo.getFrequency().split(",")[tmpFc]))
                                            tmpFreq = "Sun";
                                        if (tmpFc == tmpFrCnt - 1)
                                            tmpFreq1 = tmpFreq1 + tmpFreq;
                                        else
                                            tmpFreq1 = tmpFreq1 + tmpFreq + ",";
                                    }
                                } else if (multiQuoteChargeInfo.getFrequency() != null
                                        && isInteger(multiQuoteChargeInfo.getFrequency())) {
                                    if ("1".equals(multiQuoteChargeInfo.getFrequency()))
                                        tmpFreq1 = "Mon";
                                    else if ("2".equals(multiQuoteChargeInfo.getFrequency()))
                                        tmpFreq1 = "Tue";
                                    else if ("3".equals(multiQuoteChargeInfo.getFrequency()))
                                        tmpFreq1 = "Wed";
                                    else if ("4".equals(multiQuoteChargeInfo.getFrequency()))
                                        tmpFreq1 = "Thr";
                                    else if ("5".equals(multiQuoteChargeInfo.getFrequency()))
                                        tmpFreq1 = "Fri";
                                    else if ("6".equals(multiQuoteChargeInfo.getFrequency()))
                                        tmpFreq1 = "Sat";
                                    else if ("7".equals(multiQuoteChargeInfo.getFrequency()))
                                        tmpFreq1 = "Sun";
                                } else
                                    tmpFreq1 = multiQuoteChargeInfo.getFrequency() != null
                                            ? multiQuoteChargeInfo.getFrequency()
                                            : "";

                                chk = new Chunk(tmpFreq1 != null ? tmpFreq1 : "",
                                        FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }
                            //@@Added by kiran.v on 23/09/2011 for Wpbn Issue 272712
                            String time1 = multiQuoteChargeInfo.getTransitTime();
                            String validity = multiQuoteChargeInfo.getRateValidity();
                            if ("checked".equalsIgnoreCase(transitTimeChecked)) {
                                //chk = new Chunk(multiQuoteChargeInfo.getServiceLevel()!=null?multiQuoteChargeInfo.getServiceLevel():"",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                chk = new Chunk(time1 != null ? time1 : "",
                                        FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }
                            if ("checked".equalsIgnoreCase(validityChecked)) {
                                //chk = new Chunk(multiQuoteChargeInfo.getServiceLevel()!=null?multiQuoteChargeInfo.getServiceLevel():"",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                chk = new Chunk(validity != null ? validity : "",
                                        FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }
                        } else {
                            if ("checked".equalsIgnoreCase(carrierChecked)
                                    || "Y".equalsIgnoreCase(multiQuoteChargeInfo.getCarrierChecked())
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo.getCarrierChecked())
                                    || carrierFlag) {//added by silpa.p on 14-05-11                            
                                // chk = new Chunk(multiQuoteChargeInfo.getCarrier()!=null?multiQuoteChargeInfo.getCarrier():"",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                chk = new Chunk(carrierDesc != null ? carrierDesc : "",
                                        FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            } //ended
                              //@@Added by kiran.v on 01/08/2011 for Wpbn Issue 258778
                            serviceLevelDesc = multiQuoteChargeInfo.getServiceLevel();

                            Sd.add(serviceLevelDesc);
                            // serviceLevelDesc = remote.getServiceLevelName(multiQuoteChargeInfo.getServiceLevel());//added by silpa.p on 16-05-11
                            //tmpServl1=multiQuoteChargeInfo.getServiceLevel(); Commented by Gowtham                     
                            if ("checked".equalsIgnoreCase(serviceLevelChecked)
                                    || "Y".equalsIgnoreCase(multiQuoteChargeInfo.getServiceChecked())
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo.getServiceChecked())
                                    || serviceflag) {//added by silpa.p on 14-05-11
                                //chk = new Chunk(multiQuoteChargeInfo.getServiceLevel()!=null?multiQuoteChargeInfo.getServiceLevel():"",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                chk = new Chunk(serviceLevelDesc != null ? serviceLevelDesc : "",
                                        FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));//modified by silpa.p on 16-05-11
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }
                            if ("checked".equalsIgnoreCase(frequencyChecked)
                                    || "Y".equalsIgnoreCase(multiQuoteChargeInfo.getFrequencyChecked())
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo.getFrequencyChecked())
                                    || frequencyflag) {//added by silpa.p on 16-05-11
                                tmpFrCnt = multiQuoteChargeInfo.getFrequency() != null
                                        ? multiQuoteChargeInfo.getFrequency().split(",").length
                                        : 0;
                                if (tmpFrCnt > 1) {
                                    for (int tmpFc = 0; tmpFc < tmpFrCnt; tmpFc++) {
                                        if ("1".equals(multiQuoteChargeInfo.getFrequency().split(",")[tmpFc]))
                                            tmpFreq = "Mon";
                                        else if ("2"
                                                .equals(multiQuoteChargeInfo.getFrequency().split(",")[tmpFc]))
                                            tmpFreq = "Tue";
                                        else if ("3"
                                                .equals(multiQuoteChargeInfo.getFrequency().split(",")[tmpFc]))
                                            tmpFreq = "Wed";
                                        else if ("4"
                                                .equals(multiQuoteChargeInfo.getFrequency().split(",")[tmpFc]))
                                            tmpFreq = "Thr";
                                        else if ("5"
                                                .equals(multiQuoteChargeInfo.getFrequency().split(",")[tmpFc]))
                                            tmpFreq = "Fri";
                                        else if ("6"
                                                .equals(multiQuoteChargeInfo.getFrequency().split(",")[tmpFc]))
                                            tmpFreq = "Sat";
                                        else if ("7"
                                                .equals(multiQuoteChargeInfo.getFrequency().split(",")[tmpFc]))
                                            tmpFreq = "Sun";
                                        if (tmpFc == tmpFrCnt - 1)
                                            tmpFreq1 = tmpFreq1 + tmpFreq;
                                        else
                                            tmpFreq1 = tmpFreq1 + tmpFreq + ",";
                                    }
                                } else if (multiQuoteChargeInfo.getFrequency() != null
                                        && isInteger(multiQuoteChargeInfo.getFrequency())) {
                                    if ("1".equals(multiQuoteChargeInfo.getFrequency()))
                                        tmpFreq1 = "Mon";
                                    else if ("2".equals(multiQuoteChargeInfo.getFrequency()))
                                        tmpFreq1 = "Tue";
                                    else if ("3".equals(multiQuoteChargeInfo.getFrequency()))
                                        tmpFreq1 = "Wed";
                                    else if ("4".equals(multiQuoteChargeInfo.getFrequency()))
                                        tmpFreq1 = "Thr";
                                    else if ("5".equals(multiQuoteChargeInfo.getFrequency()))
                                        tmpFreq1 = "Fri";
                                    else if ("6".equals(multiQuoteChargeInfo.getFrequency()))
                                        tmpFreq1 = "Sat";
                                    else if ("7".equals(multiQuoteChargeInfo.getFrequency()))
                                        tmpFreq1 = "Sun";
                                } else
                                    tmpFreq1 = multiQuoteChargeInfo.getFrequency() != null
                                            ? multiQuoteChargeInfo.getFrequency()
                                            : "";

                                chk = new Chunk(tmpFreq1 != null ? tmpFreq1 : "",
                                        FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }
                            //@@Added by kiran.v on 23/09/2011 for Wpbn Issue 272712
                            String time1 = multiQuoteChargeInfo.getTransitTime();
                            if ("checked".equalsIgnoreCase(transitTimeChecked)
                                    || "Y".equalsIgnoreCase(multiQuoteChargeInfo.getTransitTimeChecked())
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo.getTransitTimeChecked())
                                    || transittimeflag) {
                                //chk = new Chunk(multiQuoteChargeInfo.getServiceLevel()!=null?multiQuoteChargeInfo.getServiceLevel():"",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                chk = new Chunk(time1 != null ? time1 : "",
                                        FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }
                            String validity = multiQuoteChargeInfo.getRateValidity();

                            if ("checked".equalsIgnoreCase(validityChecked)
                                    || "Y".equalsIgnoreCase(multiQuoteChargeInfo.getRateValidityChecked())
                                    || "on".equalsIgnoreCase(multiQuoteChargeInfo.getRateValidityChecked())
                                    || freightValidity) {
                                //chk = new Chunk(multiQuoteChargeInfo.getServiceLevel()!=null?multiQuoteChargeInfo.getServiceLevel():"",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                chk = new Chunk(validity != null ? validity : "",
                                        FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                                cell2 = new PdfPCell(new Phrase(chk));
                                cell2.setBorder(Rectangle.BOTTOM);
                                cell2.setCellEvent(border);
                                cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry2.addCell(cell2);
                            }
                        }
                        //@@Ended by kiran.v
                        chk = new Chunk((multiQuoteChargeInfo.getIncoTerms() != null
                                ? multiQuoteChargeInfo.getIncoTerms()
                                : ""), FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                        cell2 = new PdfPCell(new Phrase(chk));
                        cell2.setBorder(Rectangle.BOTTOM);
                        cell2.setCellEvent(border);
                        cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                        chargeCountry2.addCell(cell2);
                        //added by silpa.p on 23-06-11 for currency add
                        if ("View".equalsIgnoreCase(request.getParameter("Operation"))) {
                            chk = new Chunk((multiQuoteChargeInfo.getCurrency() != null
                                    ? multiQuoteChargeInfo.getCurrency()
                                    : ""), FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                        } else {
                            chk = new Chunk((multiQuoteChargeInfo.getCurrency() != null
                                    ? multiQuoteChargeInfo.getCurrency()
                                    : ""), FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                        }
                        cell2 = new PdfPCell(new Phrase(chk));
                        cell2.setBorder(Rectangle.BOTTOM);
                        cell2.setCellEvent(border);
                        cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                        chargeCountry2.addCell(cell2);//ended

                        for (int trc = 0; trc < tmpBrkptsize; trc++) {
                            if ("View".equalsIgnoreCase(request.getParameter("Operation"))) {
                                rates1 = Double.parseDouble(multiQuoteChargeInfo.getMultiBuyRates()[trc]);
                                rates = ("0.00".equals(rates1.toString()) || "0".equals(rates1.toString()))
                                        ? "-"
                                        : rates1.toString();
                            } else
                                rates = multiQuoteChargeInfo.getMultiCalSellRates()[tmpBrksize[trc]] != null
                                        ? ("0.00".equals(
                                                multiQuoteChargeInfo.getMultiCalSellRates()[tmpBrksize[trc]])
                                                || ("0".equals(multiQuoteChargeInfo
                                                        .getMultiCalSellRates()[tmpBrksize[trc]]))
                                                                ? "-"
                                                                : multiQuoteChargeInfo
                                                                        .getMultiCalSellRates()[tmpBrksize[trc]])
                                        : "0.00";//modified by silpa.p on 3-06-11

                            chk = new Chunk(rates, FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                            cell2 = new PdfPCell(new Phrase(chk));
                            cell2.setBorder(Rectangle.BOTTOM);
                            cell2.setCellEvent(border);
                            cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                            chargeCountry2.addCell(cell2);
                        }

                        chk = new Chunk(
                                multiQuoteChargeInfo.getRatio() != null ? "1:" + multiQuoteChargeInfo.getRatio()
                                        : "",
                                FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                        cell2 = new PdfPCell(new Phrase(chk));
                        cell2.setBorder(Rectangle.BOTTOM);
                        cell2.setCellEvent(border);
                        cell2.setHorizontalAlignment(cell.ALIGN_CENTER);
                        chargeCountry2.addCell(cell2);

                        tmpFreq1 = "";
                    }
                    //02Mar11
                }

                document.add(chargeCountry2);

            } //end of if(charge)
              //document.newPage();

        } // Added by Gowtham. to skip in case of quote with charges.

        pTable = new PdfPTable(1);
        pTable.setSpacingAfter(20f);
        pCell = new PdfPCell(new Phrase(new Chunk("")));
        pCell.setBorder(0);
        pTable.addCell(pCell);

        document.add(pTable);

        ArrayList destChargeInfo = null;
        //Destination
        MultiQuoteChargeInfo chargeInfo1 = null;
        ArrayList destLaneCharges = finalDOB.getLegDetails();//.get(0)).getOriginChargesList();

        for (int dc = 0; dc < noOfLanes; dc++) {
            legDestCharges = (MultiQuoteFreightLegSellRates) destLaneCharges.get(dc);
            ArrayList destCharges = legDestCharges.getDestChargesList();
            int[] destIndices = legDestCharges.getSelctedDestChargesListIndices();
            int destChargesSize = 0;
            String breakPoint = "";
            if (destIndices != null)
                destChargesSize = destIndices.length;
            else
                destChargesSize = 0;

            int destChargesInfoSize = 0;
            if (destChargesSize > 0) { //document.newPage();  
                //document.add(horizontalLine);
                chargeTitle = new Table(1);
                chargeTitle.setWidth(100);
                chargeTitle.setPadding(1);
                chargeTitle.setSpacing(1);
                chargeTitle.setBorderColor(Color.BLACK);
                chargeTitle.setDefaultHorizontalAlignment(Element.ALIGN_LEFT);
                chargeTitle.setBackgroundColor(Color.ORANGE);//modified by silpa.p on 3-06-11
                chargeTitle.setBorderWidth(1f);

                home = (QMSMultiQuoteSessionHome) LookUpBean.getEJBHome("QMSMultiQuoteSessionBean");
                remote = home.create();
                if (legOrginCharges.getShipmentMode() == 2
                        && !"Charges".equalsIgnoreCase(masterDOB.getQuoteWith()))//added by silpa.p on 16-06-11
                {
                    chk = new Chunk(
                            (legDestCharges.getDestination() != null
                                    ? remote.getPortName(legDestCharges.getDestination())
                                    : "") + "-Destination Charges",
                            FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK)); // Added by Gowtham on 01-Feb-2011.   
                } else
                    chk = new Chunk(
                            (legDestCharges.getDestination() != null
                                    ? remote.getLocationName(legDestCharges.getDestination())
                                    : "") + "-Destination Charges",
                            FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));// Added by Gowtham on 01-Feb-2011.
                cell1 = new Cell(chk);

                cell1.setLeading(10.0f);
                cell1.setBackgroundColor(Color.WHITE);
                cell1.setHeader(true);
                cell1.setBorder(0);
                cell1.setBackgroundColor(Color.ORANGE);//modified by silpa.p on 3-06-11
                chargeTitle.addCell(cell1);
                //document.newPage();
                document.add(chargeTitle);

                //document.add(horizontalLine);

                /* chargeCountry1  = new Table(6);
                 chargeCountry1.setWidth(100);
                 chargeCountry1.setWidths(cellWidths);
                 chargeCountry1.setPadding(1);
                 chargeCountry1.setSpacing(0);
                 chargeCountry1.setOffset(5);
                 chargeCountry1.setBackgroundColor(Color.WHITE);
                 chargeCountry1.setBorderColor(Color.WHITE);
                 chargeCountry1.setDefaultHorizontalAlignment(Element.ALIGN_CENTER);
                 chargeCountry1.setBorderWidth(1f);
                 chargeCountry1.setTableFitsPage(true);*/

                chargeTitle.setWidth(100);
                chargeTitle.setBorderWidth(1f);

                chargeCountry = new Table(6);
                chargeCountry.setWidths(cellWidths);
                //chargeCountry.setWidthPercentage(100);
                chargeCountry.setPadding(3);
                chargeCountry.setSpacing(0);
                chargeCountry.setWidths(cellWidths);
                chargeCountry.setBorder(1);
                chargeCountry.setWidth(100);
                chargeCountry.setBorderWidth(1f);
                /* home        = (QMSMultiQuoteSessionHome)LookUpBean.getEJBHome("QMSMultiQuoteSessionBean");//146460
                remote      = home.create();
                 if(legOrginCharges.getShipmentMode()==2)
                 {       
                 chk = new Chunk((legDestCharges.getDestination()!=null?remote.getPortName(legDestCharges.getDestination()):"")+"-Destination Charges",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK)); // Added by Gowtham on 01-Feb-2011.   
                 }
                 else
                chk = new Chunk((legDestCharges.getDestination()!=null ? remote.getLocationName(legDestCharges.getDestination()):"")+"-Destination Charges",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));// Added by Gowtham on 01-Feb-2011.
                cell = new Cell(chk);
                        
                cell.setLeading(10.0f);
                cell.setBackgroundColor(Color.ORANGE);                
                cell.setHeader(true);
                chargeCountry.addCell(cell);*/
                chk = new Chunk("Charge Description", FontFactory.getFont("ARIAL", 7, Font.BOLD, Color.BLACK));
                cell = new Cell(new Phrase(chk));
                cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                ////cell.setBorder(Rectangle.BOTTOM);
                cell.setBorderWidth(1);
                chargeCountry.addCell(cell);

                chk = new Chunk("Weight Break Slab", FontFactory.getFont("ARIAL", 7, Font.BOLD, Color.BLACK));
                cell = new Cell(new Phrase(chk));
                ////cell.setBorder(Rectangle.BOTTOM);
                cell.setBorderWidth(1);
                cell.setHorizontalAlignment(cell.ALIGN_CENTER);
                chargeCountry.addCell(cell);

                chk = new Chunk("Currency", FontFactory.getFont("ARIAL", 7, Font.BOLD, Color.BLACK));
                cell = new Cell(new Phrase(chk));
                ////cell.setBorder(Rectangle.BOTTOM);
                cell.setBorderWidth(1);
                cell.setHorizontalAlignment(cell.ALIGN_CENTER);
                chargeCountry.addCell(cell);

                chk = new Chunk("Charge Rate", FontFactory.getFont("ARIAL", 7, Font.BOLD, Color.BLACK));
                cell = new Cell(new Phrase(chk));
                ////cell.setBorder(Rectangle.BOTTOM);
                cell.setBorderWidth(1);
                cell.setHorizontalAlignment(cell.ALIGN_CENTER);
                chargeCountry.addCell(cell);

                chk = new Chunk("Basis", FontFactory.getFont("ARIAL", 7, Font.BOLD, Color.BLACK));
                cell = new Cell(new Phrase(chk));
                ////cell.setBorder(Rectangle.BOTTOM);
                cell.setBorderWidth(1);
                cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                chargeCountry.addCell(cell);

                chk = new Chunk("Density Ratio", FontFactory.getFont("ARIAL", 7, Font.BOLD, Color.BLACK));
                cell = new Cell(new Phrase(chk));
                ////cell.setBorder(Rectangle.BOTTOM);
                cell.setBorderWidth(1);
                cell.setHorizontalAlignment(cell.ALIGN_CENTER);
                chargeCountry.addCell(cell);

                for (int dcc = 0; dcc < destChargesSize; dcc++) {
                    if ((operation != null && operation.equals("View")) || ("Y"
                            .equalsIgnoreCase(legDestCharges.getDestChargesSelectedFlag()[destIndices[dcc]])))//modified by silpa.p on 21-06-11
                    {

                        chargesDOB = (MultiQuoteCharges) destCharges.get(destIndices[dcc]);

                        //  for(int j=0;j<destChargesSize;j++)
                        //{
                        if (destIndices[dcc] != -1) {
                            // chargesDOB            = (MultiQuoteCharges)destCharges.get(destIndices[j]);
                            logger.info("Destination Charges doPDFGeneration::" + dcc + ":" + chargesDOB); // newly added                      
                            destChargeInfo = chargesDOB.getChargeInfoList();
                            destChargesInfoSize = destChargeInfo.size();
                            for (int k = 0; k < destChargesInfoSize; k++) {
                                chargeInfo = (MultiQuoteChargeInfo) destChargeInfo.get(k);
                                // if(k==destChargesInfoSize/2 )
                                if (k == 0) {
                                    if ("B".equalsIgnoreCase(chargesDOB.getSellBuyFlag())
                                            || "S".equalsIgnoreCase(chargesDOB.getSellBuyFlag()))
                                        chk = new Chunk(
                                                chargesDOB.getExternalName() != null
                                                        ? chargesDOB.getExternalName()
                                                        : "",
                                                FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                                    else
                                        chk = new Chunk(
                                                chargesDOB.getChargeDescriptionId() != null
                                                        ? chargesDOB.getChargeDescriptionId()
                                                        : "",
                                                FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));

                                    /*cell1 = new Cell(chk);
                                    cell1.setLeading(9.0f);
                                    //cell.setRowspan(destChargesInfoSize);
                                    //cell.setBorderWidth(0);
                                    //cell.setBackgroundColor(Color.lightGray);
                                    cell1.setBorder(0);
                                    cell1.setHeader(true);       
                                    cell1.setHorizontalAlignment(cell1.ALIGN_LEFT);
                                    chargeCountry1.addCell(cell1)*/;

                                    cell = new Cell(new Phrase(chk));
                                    cell.setLeading(7.0f);
                                    cell.setBorder(1);
                                    cell.setRowspan(destChargesInfoSize);
                                    cell.setBorderWidthTop(0);
                                    cell.setBorderWidthBottom(0.1f);
                                    cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                                    cell.setVerticalAlignment(cell.ALIGN_LEFT);

                                    if (dcc == destChargesSize - 1 && k == destChargesInfoSize - 1) {
                                        cell.setBorderWidthBottom(0.1f);
                                        cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                                    } else if (k == destChargesInfoSize - 1) {
                                        cell.setBorderWidthBottom(0.1f);
                                        cell.setHorizontalAlignment(cell.ALIGN_LEFT);

                                    } else {
                                        cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                                    }
                                    // cell.setBorderWidthTop(0);
                                    // cell.setHorizontalAlignment(cell.ALIGN_CENTER);
                                    chargeCountry.addCell(cell);

                                }
                                /*else if (k==destChargesInfoSize-1) 
                                {
                                   cell = new Cell(new Phrase(new Chunk("")));
                                   ////cell.setBorder(Rectangle.BOTTOM);
                                 ////cell.setCellEvent(border); 
                                   if(dcc!=destChargesSize-1){
                                 cell.setBorder(0);
                                 cell.setBorderWidth(0f);
                                 cell.setLeading(7.0f);
                                   }
                                   else
                                {
                                    cell.setBorder(1);  
                                    cell.setBorderWidthTop(0);
                                    cell.setBorderWidthBottom(0.1f);
                                    cell.setLeading(7.0f);
                                            
                                   }
                                  cell.setHorizontalAlignment(cell.ALIGN_CENTER);
                                  chargeCountry.addCell(cell);
                                        
                                }
                                else
                                {
                                     cell = new Cell(new Phrase(new Chunk("")));
                                  ////cell.setBorder(0);
                                  ////cell.setCellEvent(border); 
                                  cell.setBorder(0);
                                     cell.setLeading(7.0f);
                                    cell.setBorderWidth(0f);                                
                                  cell.setHorizontalAlignment(cell.ALIGN_CENTER);
                                  chargeCountry.addCell(cell);
                                }*/

                                //@@Commented by subrahmanyam for 146455 on 18/02/09                   
                                /* chk = new Chunk((chargeInfo.getBreakPoint()!=null && !"Absolute".equalsIgnoreCase(chargeInfo.getBreakPoint()) && !"Percent".equalsIgnoreCase(chargeInfo.getBreakPoint()))?chargeInfo.getBreakPoint().toUpperCase():"",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                 cell = new Cell(chk);cell.setLeading(8.0f);
                                 cell.setBackgroundColor(Color.lightGray);
                                 cell.setHeader(true);
                                 chargeCountry.addCell(cell);*/
                                //@@Added by subrahmanyam for 146455 on 18/02/09                        
                                if (chargeInfo.getBreakPoint().equalsIgnoreCase("MIN")) {
                                    breakPoint = "Min";
                                }

                                else if (chargeInfo.getBreakPoint().equalsIgnoreCase("FLAT")) {
                                    breakPoint = "Flat";
                                } else if (chargeInfo.getBreakPoint().equalsIgnoreCase("CSF")) {
                                    breakPoint = "Absolute";
                                } else if (chargeInfo.getBreakPoint().equalsIgnoreCase("SURCHARGE")) {
                                    breakPoint = "Percent";
                                } else if (chargeInfo.getBreakPoint().equalsIgnoreCase("MAX")) {
                                    breakPoint = "Max";
                                } else if (chargeInfo.getBreakPoint().equalsIgnoreCase("BASE")) {
                                    breakPoint = "Base";
                                }

                                else {
                                    breakPoint = chargeInfo.getBreakPoint();
                                }

                                // chk = new Chunk(breakPoint!=null&& !"Absolute".equalsIgnoreCase(breakPoint)&&!"Percent".equalsIgnoreCase(breakPoint)?breakPoint:"",FontFactory.getFont("ARIAL", 7, Font.NORMAL,Color.BLACK));

                                chk = new Chunk(breakPoint != null ? breakPoint : "",
                                        FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));//added by silpa.p on 16-06-11
                                /*cell1 = new Cell(chk);cell1.setLeading(8.0f);
                                // cell.setBackgroundColor(Color.lightGray);
                                cell1.setHeader(true);
                                cell1.setBorder(0);
                                  chargeCountry1.addCell(cell1);*/

                                cell = new Cell(new Phrase(chk));
                                cell.setLeading(7.0f);
                                if (k == destChargesInfoSize - 1) {
                                    ////cell.setBorder(Rectangle.BOTTOM);
                                    ////cell.setCellEvent(border); 

                                } else {
                                    // //cell.setBorder(0);
                                }
                                cell.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry.addCell(cell);

                                //@@Ended by subrahmanyam for 146455 on 18/02/09   

                                chk = new Chunk(chargeInfo.getCurrency(),
                                        FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                                cell = new Cell(new Phrase(chk));
                                cell.setLeading(7.0f);
                                if (k == destChargesInfoSize - 1) {
                                    ////cell.setBorder(Rectangle.BOTTOM);
                                    ////cell.setCellEvent(border); 

                                } else {
                                    ////cell.setBorder(0);
                                }
                                cell.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry.addCell(cell);

                                chk = new Chunk(
                                        df.format(chargeInfo.getSellRate())
                                                + (chargeInfo.isPercentValue() ? " %" : ""),
                                        FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                                cell = new Cell(new Phrase(chk));
                                cell.setLeading(7.0f);
                                if (k == destChargesInfoSize - 1) {
                                    ////cell.setBorder(Rectangle.BOTTOM);
                                    // //cell.setCellEvent(border); 

                                } else {
                                    ////cell.setBorder(0);
                                }
                                cell.setHorizontalAlignment(cell.ALIGN_CENTER);
                                chargeCountry.addCell(cell);

                                chk = new Chunk(chargeInfo.getBasis() != null ? chargeInfo.getBasis() : "",
                                        FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                                cell = new Cell(new Phrase(chk));
                                cell.setLeading(7.0f);
                                if (k == destChargesInfoSize - 1) {
                                    ////cell.setBorder(Rectangle.BOTTOM);
                                    ////cell.setCellEvent(border); 

                                } else {
                                    //cell.setBorder(0);
                                }
                                cell.setHorizontalAlignment(cell1.ALIGN_LEFT);
                                chargeCountry.addCell(cell);

                                //@@Added by Kameswari for the WPBN issue- on 12/11/08
                                chk = new Chunk(
                                        chargeInfo.getRatio() != null ? "1:" + chargeInfo.getRatio() : "",
                                        FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                                cell = new Cell(new Phrase(chk));
                                cell.setLeading(7.0f);
                                if (k == destChargesInfoSize - 1) {
                                    ////cell.setBorder(Rectangle.BOTTOM);
                                    //  //cell.setCellEvent(border); 

                                } else {
                                    //cell.setBorder(0);
                                }
                                cell.setHorizontalAlignment(cell1.ALIGN_CENTER);
                                chargeCountry.addCell(cell);
                            }
                        }
                        //}
                    }
                }
                document.add(chargeCountry);
                pTable = new PdfPTable(1);
                pTable.setSpacingAfter(10f);
                pCell = new PdfPCell(new Phrase(new Chunk("")));
                pCell.setBorder(0);
                pTable.addCell(pCell);

                document.add(pTable);
            }

        }
        if (finalDOB.getExternalNotes() != null && finalDOB.getExternalNotes().length > 0) {
            Table notes = new Table(1, finalDOB.getExternalNotes().length + 1);
            notes.setWidth(100);
            notes.setPadding(1);
            notes.setSpacing(1);
            notes.setOffset(5);
            notes.setBackgroundColor(Color.WHITE);
            notes.setBorderColor(Color.black);
            //@@Commented and Modified by Kameswari for the internal issue on 08/04/09
            notes.setDefaultHorizontalAlignment(Element.ALIGN_LEFT);
            notes.setBorderWidth(1f);
            Cell notesCell;

            chk = new Chunk("NOTES", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            notesCell = new Cell(chk);
            notesCell.setHeader(true);
            notesCell.setLeading(8.0f);
            notesCell.setBackgroundColor(Color.ORANGE);//MODIFIED BY SILPA.P ON 3-06-11
            notes.addCell(notesCell);
            for (int i = 0; i < finalDOB.getExternalNotes().length; i++) {
                if (finalDOB.getExternalNotes()[i] != null
                        && !"".equals(finalDOB.getExternalNotes()[i].trim())) {
                    chk = new Chunk(
                            finalDOB.getExternalNotes()[i] != null ? finalDOB.getExternalNotes()[i] : "",
                            FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
                    notesCell = new Cell(chk);
                    notesCell.setLeading(8.0f);
                    notes.addCell(notesCell);
                }
            }
            document.add(notes);
        }

        if (contents != null && contents.length > 0) {
            content = new Table(1);
            content.setOffset(5);
            content.setWidth(100);
            content.setPadding(1);
            content.setSpacing(0);
            content.setBackgroundColor(Color.WHITE);
            content.setBorderColor(Color.black);
            content.setBorderWidth(1f);
            content.setTableFitsPage(true);
            Cell cellContent = null;
            int hFLen = headFoot.length;
            for (int i = 0; i < hFLen; i++) {
                if (headFoot[i] != null && "F".equalsIgnoreCase(headFoot[i])) {
                    chk = new Chunk(contents[i], FontFactory.getFont("ARIAL", 7, Font.ITALIC, Color.BLACK));//modified by silpa.p on 2-06-11
                    cellContent = new Cell(chk);
                    cellContent.setBorder(0);
                    cellContent.setLeading(8.0f);
                    cellContent.setBackgroundColor(Color.LIGHT_GRAY);
                    if ("L".equalsIgnoreCase(aligns[i]))
                        cellContent.setHorizontalAlignment(cellContent.ALIGN_LEFT);
                    else if ("C".equalsIgnoreCase(aligns[i]))
                        cellContent.setHorizontalAlignment(cellContent.ALIGN_CENTER);
                    else if ("R".equalsIgnoreCase(aligns[i]))
                        cellContent.setHorizontalAlignment(cellContent.ALIGN_RIGHT);
                    content.addCell(cellContent);
                }
            }
            document.add(content);
        }
        //@@Modified by kiran.v on 19/09/2011 for Wpbn Issue 271485
        if (!"Charges".equalsIgnoreCase(masterDOB.getQuoteWith())) {
            String filename = "Abbrivation.pdf";
            doPdfAbbrivations(filename, finalDOB, request, response, Sd, Cd, Cdn, frequencyFlag, carrierFlag,
                    serviceFlag, surChargesMap);
        }
        //@@Ended by kiran.v
        PdfContentByte cb1 = writer.getDirectContent();
        cb1.rectangle(document.left(), document.bottom(), document.right() - document.left(),
                document.top() - document.bottom());
        cb1.stroke();

        //Jyothi
        document.close();

        //System.out.println("After     document Close----------------------------------------->");
        // write ByteArrayOutputStream to the ServletOutputStream            
        // ServletOutputStream sout = response.getOutputStream();
        //baos.writeTo(sout);
        //System.out.println("after writer");
        // sout.flush();
        //dataList  = (ArrayList)  remote.sendEmail(dataList);
        // Thread.sleep(1000);

        String file_tsmp = "" + new java.sql.Timestamp((new java.util.Date()).getTime())
                + masterDOB.getQuoteId();
        file_tsmp = file_tsmp.replaceAll("\\:", "");
        file_tsmp = file_tsmp.replaceAll("\\.", "");
        file_tsmp = file_tsmp.replaceAll("\\-", "");
        file_tsmp = file_tsmp.replaceAll(" ", "");
        File f = new File("Quote.pdf");
        FileOutputStream fileOutputStream = new FileOutputStream(f);
        baos.writeTo(fileOutputStream);
        //@@Added by Kameswari for the WPBN issue-80440
        PdfReader reader = new PdfReader("Quote.pdf");
        int n = reader.getNumberOfPages();
        File fs = new File("Quote" + file_tsmp + ".pdf");

        // we create a stamper that will copy the document to a new file
        PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(fs));

        // adding some metadata
        // adding content to each page

        int k = 0;
        PdfContentByte under = null;
        PdfContentByte over = null;
        BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED);
        while (k < n) {
            k++;
            over = stamp.getOverContent(k);
            under = stamp.getOverContent(k);
            //jyothi
            //over.rectangle(30, 30, 550, 800);
            over.rectangle(document.left(), document.bottom(), document.right() - document.left(),
                    document.top() - document.bottom());
            over.stroke();
            //jyothi
            over.beginText();
            over.setFontAndSize(bf, 8);
            over.setTextMatrix(15, 15);
            over.showText("page " + k + " of " + n);
            if (k > 1) {
                // over.setFontAndSize(bf, 10);
                over.setFontAndSize(bf, 7);
                over.showText(
                        "                                                                                                    QUOTE REFERENCE:"
                                + masterDOB.getQuoteId());
                //@@ Added by subrahmanyam for WPBN:146452 on 12/12/2008               
                over.endText();
                over.beginText();
                over.showText(
                        "                                                                                                                                CUSTOMER NAME: "
                                + headerDOB.getCustomerName() + "\n\n\n");//subrahmanyam 12/12/2008

                //   @@ Ended by subrahmanyam for WPBN ISSUE:146452 on 12/12/2008               

            }
            over.endText();
        }
        stamp.close();
        //@@WPBN issue-80440    
        file = new File("Concatenated" + file_tsmp + ".pdf");
        pdfFilesList.add((String) file.getName());
        //@@Added by Kameswari for the WPBN issue-61289
        //@@ Added by subrahmanyam for the  WPBN ISSUE:146460 on 29/01/09             
        if (finalDOB.getAttachmentDOBList() != null && finalDOB.getAttachmentDOBList().size() == 0
                && "View".equalsIgnoreCase(request.getParameter("Operation"))) {

            home = (QMSMultiQuoteSessionHome) LookUpBean.getEJBHome("QMSMultiQuoteSessionBean");//146460
            remote = home.create();//146460
            filesList = remote.getQuoteAttachmentDtls(finalDOB);
            if (filesList != null) {
                finalDOB.setAttachmentDOBList(filesList);
            }
        }
        //   @@ Ended by subrahmanyam for the WPBN ISSUE: 146460 on 29/01/09   
        /* if(finalDOB.getAttachmentDOBList()!=null)
        {
          //filesList = finalDOB.getAttachmentDOBList(); // commented for for 192431 on 16-dec-09
             //@@ Added by subrahmanyam for 192431 on 16-dec-09
               if("pdf".equalsIgnoreCase(request.getParameter("pdf")))
               {
                 home        = (QMSMultiQuoteSessionHome)LookUpBean.getEJBHome("QMSMultiQuoteSessionBean");   
                 remote      = home.create();//146460
                 filesList  = remote.getQuoteAttachmentDtls(finalDOB);
               }
              else
                filesList = finalDOB.getAttachmentDOBList();
                // ended for 192431 on 16-dec-09
                
               int fileListSize   = filesList.size();   
        for(int i=0;i<fileListSize;i++)
        {
             attachmentDOB = (MultiQuoteAttachmentDOB)filesList.get(i);
              FileOutputStream  fileStream= new FileOutputStream(attachmentDOB.getFileName());
              fileStream.write(attachmentDOB.getPdfFile());
              pdfFilesList.add((String)attachmentDOB.getFileName());
        }
        }
             buffer = concatPDF(pdfFilesList);
        //@@WPBN issue-61289  
                
        //@@ Commented By Subrahmanyam for enhancement 146460           
        //  if("on".equalsIgnoreCase(request.getParameter("print")))
        {     
        //     request.getSession().setAttribute("QuoteOuptutStream",fs);
        //     request.getSession().setAttribute("filepdf",buffer); //@@Added by Kameswari for the WPBN issue-61289
                
                
        //  }
        //@@ Added by subrahmanyam for the enhancement 146460
        if("PDF".equalsIgnoreCase(request.getParameter("pdf"))||"on".equalsIgnoreCase(request.getParameter("print")))
        {
        request.getSession().setAttribute("QuoteOuptutStream",fs);
        request.getSession().setAttribute("filepdf",buffer);
        }
        */
        //@@ Ended by subrahmanyam for the enhancement 146460
        //f.delete();
        //baos.close();

        String[] contactPersons = masterDOB.getCustContactNames();
        String contactName = "";
        int contactPersonsLength = 0;//added by silpa.p for sent mail modifications on 24-05-11
        boolean mailSent = false;//added by silpa.p for sent mail modifications  on 24-05-11

        String filename = "Annexure" + file_tsmp + ".pdf";
        StringBuffer subject = new StringBuffer("DHL Global Forwarding Quotation,");
        String body = "";

        if (!finalDOB.isMultiModalQuote()) {
            if (masterDOB.getShipmentMode() == 1)
                subject.append(" Airfreight ");
            if (masterDOB.getShipmentMode() == 2)
                subject.append(" Seafreight ");
            else if (masterDOB.getShipmentMode() == 4)
                subject.append(" Truckfreight ");
        } else {
            subject.append(" Multi-Modal ");
        }

        subject.append(
                (headerDOB.getOriginCountry() != null ? headerDOB.getOriginCountry()[0].toUpperCase() : ""))
                .append(" to ")
                .append((headerDOB.getDestinationCountry()[0] != null
                        ? headerDOB.getDestinationCountry()[0].toUpperCase()
                        : ""));
        subject.append(" Quote Reference ");
        if (finalDOB.getUpdatedReportDOB() != null)
            subject.append(request.getAttribute("quoteId")).append(" Replacing ")
                    .append(finalDOB.getUpdatedReportDOB().getQuoteId());
        else
            subject.append(masterDOB.getQuoteId() != null ? masterDOB.getQuoteId() + ""
                    : request.getAttribute("quoteId"));

        doGenerateCartagePDF(filename, finalDOB, request, response);

        if (finalDOB.getAttachmentDOBList() != null) {
            //filesList = finalDOB.getAttachmentDOBList(); // commented for for 192431 on 16-dec-09
            //@@ Added by subrahmanyam for 192431 on 16-dec-09
            if ("pdf".equalsIgnoreCase(request.getParameter("pdf"))) {
                home = (QMSMultiQuoteSessionHome) LookUpBean.getEJBHome("QMSMultiQuoteSessionBean");
                remote = home.create();//146460
                filesList = remote.getQuoteAttachmentDtls(finalDOB);
            } else
                filesList = finalDOB.getAttachmentDOBList();
            // ended for 192431 on 16-dec-09

            int fileListSize = filesList.size();
            for (int i = 0; i < fileListSize; i++) {
                attachmentDOB = (MultiQuoteAttachmentDOB) filesList.get(i);
                FileOutputStream fileStream = new FileOutputStream(attachmentDOB.getFileName());
                fileStream.write(attachmentDOB.getPdfFile());
                pdfFilesList.add((String) attachmentDOB.getFileName());
                fileStream.close();
            }
        }

        if (pdfFilesList.size() > 1) {
            for (int l = 1; l < pdfFilesList.size(); l++) {
                FileInputStream inputStream = new FileInputStream((String) pdfFilesList.get(l));
                buffer = new byte[inputStream.available()];
                inputStream.read(buffer);
                bufferList.add(buffer);
                inputStream.close();
            }
        }

        //buffer = concatPDF(pdfFilesList); 

        //@@WPBN issue-61289
        /* //@@ Commented By Subrahmanyam for enhancement 146460           
        /* if("on".equalsIgnoreCase(request.getParameter("print")))
         {     
              request.getSession().setAttribute("QuoteOuptutStream",fs);
             request.getSession().setAttribute("filepdf",buffer); //@@Added by Kameswari for the WPBN issue-61289
        }*/

        //@@ Added by subrahmanyam for the enhancement 146460
        if ("PDF".equalsIgnoreCase(request.getParameter("pdf"))
                || "on".equalsIgnoreCase(request.getParameter("print"))) {
            request.getSession().setAttribute("QuoteOuptutStream", fs);
            request.getSession().setAttribute("filepdf", bufferList);
        }

        for (int dc = 0; dc < noOfLanes; dc++) {
            legDestCharges = (MultiQuoteFreightLegSellRates) destLaneCharges.get(dc);

            try {
                if ("Y".equalsIgnoreCase(finalDOB.getFlagsDOB().getEmailFlag())) {
                    // mailFlag  = 1;
                    //finalDOB.getFlagsDOB().setQuoteStatusFlag("PEN");//@@Quote is Pending
                    //ReportsSessionBeanHome home      = (ReportsSessionBeanHome)LookUpBean.getEJBHome("ReportsSessionBean");
                    //ReportsSession remote   = (ReportsSession)home.create();
                    //@@Modified by kameswari for the WPBN issue-61289
                    //String to_emailIds = finalDOB.getHeaderDOB().getCustEmailId();
                    String to_emailIds = null;
                    if ("Y".equalsIgnoreCase(masterDOB.getSalesPersonFlag()))
                        to_emailIds = finalDOB.getHeaderDOB().getCustEmailId() + ','
                                + masterDOB.getSalesPersonEmail();
                    else
                        to_emailIds = finalDOB.getHeaderDOB().getCustEmailId();
                    //@@WPBN issue-61289
                    to_emailIds = to_emailIds.replaceAll(";", ",");

                    //System.out.println("Before Sending Mail------------------------------>");

                    if (contactPersons != null) {
                        int contPersonLen = contactPersons.length;
                        for (int i = 0; i < contPersonLen; i++) {
                            mailFlag = 1;

                            // if(i<contactPersons.length)//@@Added by Kameswari for the WPBN issue-61289
                            //    {
                            if (masterDOB.getCustomerContactsEmailIds()[i] != null
                                    && masterDOB.getCustomerContactsEmailIds()[i].trim().length() != 0) {

                                contactName = masterDOB.getCustContactNames()[i];
                                if (masterDOB.getCustContactNames()[i].indexOf("[") != -1)
                                    contactName = contactName.substring(0,
                                            masterDOB.getCustContactNames()[i].indexOf("["));
                                /* if(finalDOB.getUpdatedReportDOB()!=null)
                                 {
                                            
                                             
                                    body = "Dear "+contactName+",\n\nThis is a replacement quotation reference "+request.getAttribute("quoteId")+",replacing "+finalDOB.getUpdatedReportDOB().getQuoteId()+
                                      ", due to a change in "+(finalDOB.getEmailChargeName()!=null?finalDOB.getEmailChargeName():finalDOB.getUpdatedReportDOB().getChangeDesc())+". All information is contained within the attachment. "+
                                     "Should you have any queries, please do not hesitate to contact us.\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                                 }
                                 else
                                 {
                                   body = "Dear "+contactName+",\n\nThank you for the opportunity to provide this Quotation. All information is contained within the attachment."+
                                        " Should you have any queries, please do not hesitate to contact us.\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                                 }*/
                                //body  = "Dear "+contactName+",\n\n"+finalDOB.getEmailText()+"\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                                if (finalDOB.getUpdatedReportDOB() != null) {
                                    body = "Dear " + (contactName != null ? contactName : "")
                                            + ",\n\nThis is a replacement quotation reference "
                                            + request.getAttribute("quoteId") + ",replacing "
                                            + finalDOB.getUpdatedReportDOB().getQuoteId()
                                            + ", due to a change in "
                                            + (finalDOB.getEmailChargeName() != null
                                                    ? finalDOB.getEmailChargeName()
                                                    : finalDOB.getUpdatedReportDOB().getChangeDesc())
                                            + ",\n\n"
                                            + (finalDOB.getEmailText() != null ? finalDOB.getEmailText() : "")
                                            + "\n\n\n"
                                            + (masterDOB.getCreatorDetails() != null
                                                    ? masterDOB.getCreatorDetails()
                                                    : "")
                                            + "\n\n"
                                            + (masterDOB.getCompanyName() != null ? masterDOB.getCompanyName()
                                                    : "")
                                            + "\n"
                                            + (masterDOB.getTerminalAddress() != null
                                                    ? masterDOB.getTerminalAddress()
                                                    : "")
                                            + "\n\n" + "Phone  "
                                            + (masterDOB.getPhoneNo() != null ? masterDOB.getPhoneNo() : "")
                                            + "\n" + "Fax    "
                                            + (masterDOB.getFaxNo() != null ? masterDOB.getFaxNo() : "") + "\n"
                                            + "Mobile "
                                            + (masterDOB.getMobileNo() != null ? masterDOB.getMobileNo() : "")
                                            + "\n\nEmail "
                                            + (masterDOB.getUserEmailId() != null ? masterDOB.getUserEmailId()
                                                    : ""); //@@Modified by Kameswari for the WPBN issue-61303

                                } else {
                                    body = "Dear " + (contactName != null ? contactName : "") + ",\n\n"
                                            + (finalDOB.getEmailText() != null ? finalDOB.getEmailText() : "")
                                            + "\n\n\n"
                                            + (masterDOB.getCreatorDetails() != null
                                                    ? masterDOB.getCreatorDetails()
                                                    : "")
                                            + "\n\n"
                                            + (masterDOB.getCompanyName() != null ? masterDOB.getCompanyName()
                                                    : "")
                                            + "\n"
                                            + (masterDOB.getTerminalAddress() != null
                                                    ? masterDOB.getTerminalAddress()
                                                    : "")
                                            + "\n\n" + "Phone  "
                                            + (masterDOB.getPhoneNo() != null ? masterDOB.getPhoneNo() : "")
                                            + "\n" + "Fax    "
                                            + (masterDOB.getFaxNo() != null ? masterDOB.getFaxNo() : "") + "\n"
                                            + "Mobile "
                                            + (masterDOB.getMobileNo() != null ? masterDOB.getMobileNo() : "")
                                            + "\n\nEmail "
                                            + (masterDOB.getUserEmailId() != null ? masterDOB.getUserEmailId()
                                                    : ""); //@@Modified by Kameswari for the WPBN issue-61303

                                }
                                if (masterDOB.getShipperZipCode() == null
                                        || masterDOB.getConsigneeZipCode() == null) {
                                    if ((legDestCharges.getPickZoneZipMap() != null
                                            && legDestCharges.getPickZoneZipMap().size() > 0)
                                            || (legDestCharges.getDeliveryZoneZipMap() != null
                                                    && legDestCharges.getDeliveryZoneZipMap().size() > 0)) {
                                        if (!mailSent || contactPersonsLength < contPersonLen) {//added by silpa.p for sent mail modifications  on 24-05-11
                                            sendMail(finalDOB.getMasterDOB().getUserEmailId(),
                                                    masterDOB.getCustomerContactsEmailIds()[i],
                                                    subject.toString(), body,
                                                    "Quote" + file_tsmp + ".pdf,Annexure" + file_tsmp + ".pdf",
                                                    finalDOB.getAttachmentDOBList());
                                            mailSent = true;
                                            contactPersonsLength++;
                                        } //ended
                                    }

                                    else if (!mailSent || contactPersonsLength < contPersonLen) {//added by silpa.p for sent mail modifications  on 24-05-11

                                        sendMail(finalDOB.getMasterDOB().getUserEmailId(),
                                                masterDOB.getCustomerContactsEmailIds()[i], subject.toString(),
                                                body, "Quote" + file_tsmp + ".pdf",
                                                finalDOB.getAttachmentDOBList());
                                        mailSent = true;
                                        contactPersonsLength++;
                                    } //ended

                                } else if (!mailSent || contactPersonsLength < contPersonLen) {//added by silpa.p for sent mail modifications  on 24-05-11
                                    sendMail(finalDOB.getMasterDOB().getUserEmailId(),
                                            masterDOB.getCustomerContactsEmailIds()[i], subject.toString(),
                                            body, "Quote" + file_tsmp + ".pdf",
                                            finalDOB.getAttachmentDOBList());
                                    mailSent = true;
                                    contactPersonsLength++;
                                } //ended
                                //  }
                                //@@Added by Kameswari for the WPBN issue-61289
                            }
                        }
                        if ("Y".equalsIgnoreCase(masterDOB.getSalesPersonFlag())) {
                            if (masterDOB.getShipperZipCode() == null
                                    || masterDOB.getConsigneeZipCode() == null) {
                                if ((legDestCharges.getPickZoneZipMap() != null
                                        && legDestCharges.getPickZoneZipMap().size() > 0)
                                        || (legDestCharges.getDeliveryZoneZipMap() != null
                                                && legDestCharges.getDeliveryZoneZipMap().size() > 0))
                                    if (!mailSent || contactPersonsLength < contPersonLen) {//added by silpa.p for sent mail modifications  on 24-05-11

                                        sendMail(finalDOB.getMasterDOB().getUserEmailId(),
                                                masterDOB.getSalesPersonEmail(), subject.toString(), body,
                                                "Quote" + file_tsmp + ".pdf,Annexure" + file_tsmp + ".pdf",
                                                finalDOB.getAttachmentDOBList());
                                        mailSent = true;
                                        contactPersonsLength++;
                                    } //ended
                                    else if (!mailSent || contactPersonsLength < contPersonLen) {//added by silpa.p for sent mail modifications on 24-05-11
                                        sendMail(finalDOB.getMasterDOB().getUserEmailId(),
                                                masterDOB.getSalesPersonEmail(), subject.toString(), body,
                                                "Quote" + file_tsmp + ".pdf", finalDOB.getAttachmentDOBList());
                                        mailSent = true;
                                        contactPersonsLength++;
                                    } //ended
                            } else if (!mailSent || contactPersonsLength < contPersonLen) {//added by silpa.p for sent mail modifications  on 24-05-11
                                sendMail(finalDOB.getMasterDOB().getUserEmailId(),
                                        masterDOB.getSalesPersonEmail(), subject.toString(), body,
                                        "Quote" + file_tsmp + ".pdf", finalDOB.getAttachmentDOBList());
                                mailSent = true;
                                contactPersonsLength++;
                            } //ended
                        }
                        //@@ the WPBN issue-61289

                    } else {
                        mailFlag = 0;

                        /*if(finalDOB.getUpdatedReportDOB()!=null)
                        {
                                  
                          body = "Dear Customer,\n\nThis is a replacement quotation reference "+request.getAttribute("quoteId")+",replacing "+finalDOB.getUpdatedReportDOB().getQuoteId()+
                         ", due to a change in "+(finalDOB.getEmailChargeName()!=null?finalDOB.getEmailChargeName():finalDOB.getUpdatedReportDOB().getChangeDesc())+". All information is contained within the attachment. "+
                         "Should you have any queries, please do not hesitate to contact us.\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                        }
                        else
                        {
                          body = "Dear Customer,\n\nThank you for the opportunity to provide this Quotation. All information is contained within the attachment."+
                            " Should you have any queries, please do not hesitate to contact us.\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                        }*/
                        //
                        //body  ="Dear Customer,\n\n"+finalDOB.getEmailText()+"\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                        /*body  = "Dear Customer,\n\n"+finalDOB.getEmailText()+"\n\n\n"+masterDOB.getCreatorDetails()+"\n\n"+masterDOB.getCompanyName()+
                            "\n"+masterDOB.getTerminalAddress()+"\n\n"+"Phone  "+masterDOB.getPhoneNo()+"\n"+"Fax    "+masterDOB.getFaxNo()+"\n"+"Mobile "+masterDOB.getMobileNo()+"\n\nEmail "+masterDOB.getUserEmailId(); */
                        //@@Modified by Kameswari for the WPBN issue-61303

                        if (finalDOB.getUpdatedReportDOB() != null) {
                            body = "Dear Customer,\n\nThis is a replacement quotation reference "
                                    + request.getAttribute("quoteId") + ",replacing "
                                    + finalDOB.getUpdatedReportDOB().getQuoteId() + ", due to a change in "
                                    + (finalDOB.getEmailChargeName() != null ? finalDOB.getEmailChargeName()
                                            : finalDOB.getUpdatedReportDOB().getChangeDesc())
                                    + ",\n\n" + (finalDOB.getEmailText() != null ? finalDOB.getEmailText() : "")
                                    + "\n\n\n"
                                    + (masterDOB.getCreatorDetails() != null ? masterDOB.getCreatorDetails()
                                            : "")
                                    + "\n\n"
                                    + (masterDOB.getCompanyName() != null ? masterDOB.getCompanyName() : "")
                                    + "\n"
                                    + (masterDOB.getTerminalAddress() != null ? masterDOB.getTerminalAddress()
                                            : "")
                                    + "\n\n" + "Phone  "
                                    + (masterDOB.getPhoneNo() != null ? masterDOB.getPhoneNo() : "") + "\n"
                                    + "Fax    " + (masterDOB.getFaxNo() != null ? masterDOB.getFaxNo() : "")
                                    + "\n" + "Mobile "
                                    + (masterDOB.getMobileNo() != null ? masterDOB.getMobileNo() : "")
                                    + "\n\nEmail "
                                    + (masterDOB.getUserEmailId() != null ? masterDOB.getUserEmailId() : ""); //@@Modified by Kameswari for the WPBN issue-61303
                        } else {
                            body = "Dear Customer,\n\n"
                                    + (finalDOB.getEmailText() != null ? finalDOB.getEmailText() : "")
                                    + "\n\n\n"
                                    + (masterDOB.getCreatorDetails() != null ? masterDOB.getCreatorDetails()
                                            : "")
                                    + "\n\n"
                                    + (masterDOB.getCompanyName() != null ? masterDOB.getCompanyName() : "")
                                    + "\n"
                                    + (masterDOB.getTerminalAddress() != null ? masterDOB.getTerminalAddress()
                                            : "")
                                    + "\n\n" + "Phone  "
                                    + (masterDOB.getPhoneNo() != null ? masterDOB.getPhoneNo() : "") + "\n"
                                    + "Fax    " + (masterDOB.getFaxNo() != null ? masterDOB.getFaxNo() : "")
                                    + "\n" + "Mobile "
                                    + (masterDOB.getMobileNo() != null ? masterDOB.getMobileNo() : "")
                                    + "\n\nEmail "
                                    + (masterDOB.getUserEmailId() != null ? masterDOB.getUserEmailId() : ""); //@@Modified by Kameswari for the WPBN issue-61303
                        }
                        if (masterDOB.getShipperZipCode() == null || masterDOB.getConsigneeZipCode() == null) {
                            if ((legDestCharges.getPickZoneZipMap() != null
                                    && legDestCharges.getPickZoneZipMap().size() > 0)
                                    || (legDestCharges.getDeliveryZoneZipMap() != null
                                            && legDestCharges.getDeliveryZoneZipMap().size() > 0))
                                if (!mailSent) {//added by silpa.p for sent mail modifications  on 24-05-11
                                    sendMail(finalDOB.getMasterDOB().getUserEmailId(), to_emailIds,
                                            subject.toString(), body,
                                            "Quote" + file_tsmp + ".pdf,Annexure" + file_tsmp + ".pdf",
                                            finalDOB.getAttachmentDOBList());
                                    mailSent = true;

                                } //ended
                                else if (!mailSent) {//added by silpa.p for sent mail modifications mail on 24-05-11
                                    sendMail(finalDOB.getMasterDOB().getUserEmailId(), to_emailIds,
                                            subject.toString(), body, "Quote" + file_tsmp + ".pdf",
                                            finalDOB.getAttachmentDOBList());
                                    mailSent = true;
                                } //ended
                        } else if (!mailSent) {//added by silpa.p for sent mail modifications mail on 24-05-11
                            sendMail(finalDOB.getMasterDOB().getUserEmailId(), to_emailIds, subject.toString(),
                                    body, "Quote" + file_tsmp + ".pdf", finalDOB.getAttachmentDOBList());
                            mailSent = true;
                        } //ended
                    }

                    //System.out.println("End of mail sending and PDF Generation --------------------------------->");
                }
            } catch (Exception e) {
                //Logger.error(FILE_NAME,"Error while sending mail "+e); 
                logger.error(FILE_NAME + "Error while sending mail " + e);
                e.printStackTrace();
                mailFlag = 0;
            }
            try {
                if ("Y".equalsIgnoreCase(finalDOB.getFlagsDOB().getFaxFlag())) {
                    //faxFlag   = 2;
                    //finalDOB.getFlagsDOB().setQuoteStatusFlag("PEN");//@@Quote is Pending
                    //ReportsSessionBeanHome home      = (ReportsSessionBeanHome)LookUpBean.getEJBHome("ReportsSessionBean");
                    //ReportsSession  remote   = (ReportsSession)home.create();
                    String customerFax = headerDOB.getCustFaxNo() != null ? headerDOB.getCustFaxNo() : "";
                    String countrycode = headerDOB.getCustCountyCode() != null ? headerDOB.getCustCountyCode()
                            : "";
                    String contactFax = null;
                    if ("SG".equalsIgnoreCase(countrycode)) {
                        if (customerFax != null && customerFax.length() > 0)
                            customerFax = "fax#" + customerFax + "@tcdhl.com";
                    } else {
                        if (customerFax != null && customerFax.length() > 0)
                            customerFax = "ifax#" + customerFax + "@tcdhl.com";
                    }

                    if (contactPersons != null) {
                        int contPersonLen = contactPersons.length;
                        for (int i = 0; i < contPersonLen; i++) {
                            faxFlag = 2;
                            contactName = masterDOB.getCustContactNames()[i];
                            if (masterDOB.getCustContactNames()[i].indexOf("[") != -1)
                                contactName = contactName.substring(0,
                                        masterDOB.getCustContactNames()[i].indexOf("["));
                            if (masterDOB.getCustomerContactsFax()[i] != null
                                    && masterDOB.getCustomerContactsFax()[i].trim().length() != 0) {
                                if ("SG".equalsIgnoreCase(countrycode))
                                    contactFax = "fax#" + masterDOB.getCustomerContactsFax()[i] + "@tcdhl.com";
                                else
                                    contactFax = "ifax#" + masterDOB.getCustomerContactsFax()[i] + "@tcdhl.com";

                                /*if(finalDOB.getUpdatedReportDOB()!=null)
                                {
                                  body = "Dear "+contactName+",\n\nThis is a replacement quotation reference "+request.getAttribute("quoteId")+",replacing "+finalDOB.getUpdatedReportDOB().getQuoteId()+
                                     ", due to a change in "+(finalDOB.getEmailChargeName()!=null?finalDOB.getEmailChargeName():finalDOB.getUpdatedReportDOB().getChangeDesc())+". All information is contained within the attachment. "+
                                    "Should you have any queries, please do not hesitate to contact us.\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                                 }
                                else
                                {
                                  body = "Dear "+contactName+",\n\nThank you for the opportunity to provide this Quotation. All information is contained within the attachment."+
                                       " Should you have any queries, please do not hesitate to contact us.\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                                }*/
                                // body  = "Dear "+contactName+",\n\n"+finalDOB.getEmailText()+"\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                                if (finalDOB.getUpdatedReportDOB() != null) {
                                    body = "Dear " + (contactName != null ? contactName : "")
                                            + ",\n\nThis is a replacement quotation reference "
                                            + request.getAttribute("quoteId") + ",replacing "
                                            + finalDOB.getUpdatedReportDOB().getQuoteId()
                                            + ", due to a change in "
                                            + (finalDOB.getEmailChargeName() != null
                                                    ? finalDOB.getEmailChargeName()
                                                    : finalDOB.getUpdatedReportDOB().getChangeDesc())
                                            + ",\n\n"
                                            + (finalDOB.getEmailText() != null ? finalDOB.getEmailText() : "")
                                            + "\n\n\n"
                                            + (masterDOB.getCreatorDetails() != null
                                                    ? masterDOB.getCreatorDetails()
                                                    : "")
                                            + "\n\n"
                                            + (masterDOB.getCompanyName() != null ? masterDOB.getCompanyName()
                                                    : "")
                                            + "\n"
                                            + (masterDOB.getTerminalAddress() != null
                                                    ? masterDOB.getTerminalAddress()
                                                    : "")
                                            + "\n\n" + "Phone  "
                                            + (masterDOB.getPhoneNo() != null ? masterDOB.getPhoneNo() : "")
                                            + "\n" + "Fax    "
                                            + (masterDOB.getFaxNo() != null ? masterDOB.getFaxNo() : "") + "\n"
                                            + "Mobile "
                                            + (masterDOB.getMobileNo() != null ? masterDOB.getMobileNo() : "")
                                            + "\n\nEmail "
                                            + (masterDOB.getUserEmailId() != null ? masterDOB.getUserEmailId()
                                                    : ""); //@@Modified by Kameswari for the WPBN issue-61303
                                } else {
                                    body = "Dear " + (contactName != null ? contactName : "") + ",\n\n"
                                            + (finalDOB.getEmailText() != null ? finalDOB.getEmailText() : "")
                                            + "\n\n\n"
                                            + (masterDOB.getCreatorDetails() != null
                                                    ? masterDOB.getCreatorDetails()
                                                    : "")
                                            + "\n\n"
                                            + (masterDOB.getCompanyName() != null ? masterDOB.getCompanyName()
                                                    : "")
                                            + "\n"
                                            + (masterDOB.getTerminalAddress() != null
                                                    ? masterDOB.getTerminalAddress()
                                                    : "")
                                            + "\n\n" + "Phone  "
                                            + (masterDOB.getPhoneNo() != null ? masterDOB.getPhoneNo() : "")
                                            + "\n" + "Fax    "
                                            + (masterDOB.getFaxNo() != null ? masterDOB.getFaxNo() : "") + "\n"
                                            + "Mobile "
                                            + (masterDOB.getMobileNo() != null ? masterDOB.getMobileNo() : "")
                                            + "\n\nEmail "
                                            + (masterDOB.getUserEmailId() != null ? masterDOB.getUserEmailId()
                                                    : ""); //@@Modified by Kameswari for the WPBN issue-61303

                                }
                                if (masterDOB.getShipperZipCode() == null
                                        || masterDOB.getConsigneeZipCode() == null) {
                                    if ((legDestCharges.getPickZoneZipMap() != null
                                            && legDestCharges.getPickZoneZipMap().size() > 0)
                                            || (legDestCharges.getDeliveryZoneZipMap() != null
                                                    && legDestCharges.getDeliveryZoneZipMap().size() > 0))
                                        sendMail(finalDOB.getMasterDOB().getUserEmailId(), contactFax,
                                                subject.toString(), body,
                                                "Quote" + file_tsmp + ".pdf,Annexure" + file_tsmp + ".pdf",
                                                finalDOB.getAttachmentDOBList());
                                    else
                                        sendMail(finalDOB.getMasterDOB().getUserEmailId(), contactFax,
                                                subject.toString(), body, "Quote" + file_tsmp + ".pdf",
                                                finalDOB.getAttachmentDOBList());
                                } else
                                    sendMail(finalDOB.getMasterDOB().getUserEmailId(), contactFax,
                                            subject.toString(), body, "Quote" + file_tsmp + ".pdf",
                                            finalDOB.getAttachmentDOBList());
                            } else
                                faxFlag = 0;
                        }
                    } else {
                        if (customerFax != null && customerFax.length() > 0) {
                            /* if(finalDOB.getUpdatedReportDOB()!=null)
                            {
                             body = "Dear Customer,\n\nThis is a replacement quotation reference "+request.getAttribute("quoteId")+",replacing "+finalDOB.getUpdatedReportDOB().getQuoteId()+
                                   ", due to a change in "+(finalDOB.getEmailChargeName()!=null?finalDOB.getEmailChargeName():finalDOB.getUpdatedReportDOB().getChangeDesc())+". All information is contained within the attachment. "+
                                   "Should you have any queries, please do not hesitate to contact us.\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                            }
                            else
                            {
                             body = "Dear Customer,\n\nThank you for the opportunity to provide this Quotation. All information is contained within the attachment."+
                            " Should you have any queries, please do not hesitate to contact us.\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                            }*/
                            // body  = "Dear Customer,\n\n"+finalDOB.getEmailText()+"\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress(); 
                            if (finalDOB.getUpdatedReportDOB() != null) {
                                body = "Dear Customer,\n\nThis is a replacement quotation reference "
                                        + request.getAttribute("quoteId") + ",replacing "
                                        + finalDOB.getUpdatedReportDOB().getQuoteId() + ", due to a change in "
                                        + (finalDOB.getEmailChargeName() != null ? finalDOB.getEmailChargeName()
                                                : finalDOB.getUpdatedReportDOB().getChangeDesc())
                                        + ",\n\n"
                                        + (finalDOB.getEmailText() != null ? finalDOB.getEmailText() : "")
                                        + "\n\n\n"
                                        + (masterDOB.getCreatorDetails() != null ? masterDOB.getCreatorDetails()
                                                : "")
                                        + "\n\n"
                                        + (masterDOB.getCompanyName() != null ? masterDOB.getCompanyName() : "")
                                        + "\n"
                                        + (masterDOB.getTerminalAddress() != null
                                                ? masterDOB.getTerminalAddress()
                                                : "")
                                        + "\n\n" + "Phone  "
                                        + (masterDOB.getPhoneNo() != null ? masterDOB.getPhoneNo() : "") + "\n"
                                        + "Fax    " + (masterDOB.getFaxNo() != null ? masterDOB.getFaxNo() : "")
                                        + "\n" + "Mobile "
                                        + (masterDOB.getMobileNo() != null ? masterDOB.getMobileNo() : "")
                                        + "\n\nEmail "
                                        + (masterDOB.getUserEmailId() != null ? masterDOB.getUserEmailId()
                                                : ""); //@@Modified by Kameswari for the WPBN issue-61303
                            } else {
                                body = "Dear Customer,\n\n"
                                        + (finalDOB.getEmailText() != null ? finalDOB.getEmailText() : "")
                                        + "\n\n\n"
                                        + (masterDOB.getCreatorDetails() != null ? masterDOB.getCreatorDetails()
                                                : "")
                                        + "\n\n"
                                        + (masterDOB.getCompanyName() != null ? masterDOB.getCompanyName() : "")
                                        + "\n"
                                        + (masterDOB.getTerminalAddress() != null
                                                ? masterDOB.getTerminalAddress()
                                                : "")
                                        + "\n\n" + "Phone  "
                                        + (masterDOB.getPhoneNo() != null ? masterDOB.getPhoneNo() : "") + "\n"
                                        + "Fax    " + (masterDOB.getFaxNo() != null ? masterDOB.getFaxNo() : "")
                                        + "\n" + "Mobile "
                                        + (masterDOB.getMobileNo() != null ? masterDOB.getMobileNo() : "")
                                        + "\n\nEmail "
                                        + (masterDOB.getUserEmailId() != null ? masterDOB.getUserEmailId()
                                                : ""); //@@Modified by Kameswari for the WPBN issue-61303
                            }
                            if (masterDOB.getShipperZipCode() == null
                                    || masterDOB.getConsigneeZipCode() == null) {
                                if ((legDestCharges.getPickZoneZipMap() != null
                                        && legDestCharges.getPickZoneZipMap().size() > 0)
                                        || (legDestCharges.getDeliveryZoneZipMap() != null
                                                && legDestCharges.getDeliveryZoneZipMap().size() > 0))
                                    sendMail(finalDOB.getMasterDOB().getUserEmailId(), customerFax,
                                            subject.toString(), body,
                                            "Quote" + file_tsmp + ".pdf,Annexure" + file_tsmp + ".pdf",
                                            finalDOB.getAttachmentDOBList());
                                else
                                    sendMail(finalDOB.getMasterDOB().getUserEmailId(), customerFax,
                                            subject.toString(), body, "Quote" + file_tsmp + ".pdf",
                                            finalDOB.getAttachmentDOBList());
                            } else
                                sendMail(finalDOB.getMasterDOB().getUserEmailId(), customerFax,
                                        subject.toString(), body, "Quote" + file_tsmp + ".pdf",
                                        finalDOB.getAttachmentDOBList());
                        } else
                            faxFlag = 0;
                    }
                }
            } catch (Exception e) {
                //Logger.error(FILE_NAME,"Error while sending fax "+e); 
                logger.error(FILE_NAME + "Error while sending fax " + e);
                e.printStackTrace();
                faxFlag = 0;
            }
        }
        if ("Y".equalsIgnoreCase(finalDOB.getFlagsDOB().getPrintFlag())) {
            //finalDOB.getFlagsDOB().setQuoteStatusFlag("PEN");//@@Quote is Pending
            printFlag = 4;
        } else {
            f.delete();
            File annexure = new File(filename);
            annexure.delete();
        }
        returnFlag = mailFlag + faxFlag + printFlag;
    } catch (Exception e) {
        e.printStackTrace();
        //Logger.error(FILE_NAME,"Error while generating the PDF"+e.toString());
        logger.error(FILE_NAME + "Error while generating the PDF" + e.toString());
        returnFlag = 0;
        //throw new Exception("Error while generating PDF format");
    } finally {
        try {
            //Method: doPDFGeneration Defect: PdfWriter is not closedSuggestion: Close and nullify the writer in the finally block.
            if (writer != null) {
                writer.close();
                writer = null;
            }
            charges = null;
            freightCharges = null;
            frequency = null;
            carrier = null;
            transittime = null;
            ratevalidity = null;
            frequency_o = null;
            frequency_d = null;
            carrier_o = null;
            carrier_d = null;
            transit_o = null;
            transit_d = null;
            validity_o = null;
            validity_d = null;
            filesList = null;

        } catch (Exception ex) {
            //Logger.error(FILE_NAME,"Exception caught :: finally :: insertFclValues() " + ex.toString() );
            logger.error(FILE_NAME + "Error while generating the PDF" + ex.toString());
        }
    }
    return returnFlag;
}

From source file:QMSMultiQuoteController.java

License:Open Source License

private int doGenerateCartagePDF(String fileName, MultiQuoteFinalDOB finalDOB, HttpServletRequest request,
        HttpServletResponse response) throws Exception {
    try { //System.out.println("Starting zone PDF Generation------------------------------>");
        DecimalFormat df = new DecimalFormat("###,###,###,##0.00");
        // Added By Kishore Podili For Multi Zone Codes
        MultiQuoteCartageRates pickQuoteCartageRates = null;
        MultiQuoteCartageRates deliQuoteCartageRates = null;
        ArrayList pickUpQuoteCartageRates = null;
        ArrayList deliveryQuoteCartageRates = null;
        Set pickBreaks = null;//  w ww .j ava  2  s.c  om
        Set deliBreaks = null;
        Set pickUpZoneCodeSet = null;
        Set deliveryZoneCodeSet = null;
        HashMap pickUpZoneCodeMap = null;
        HashMap deliveryZoneCodeMap = null;
        HashMap pickUpZoneZipMap = null;
        HashMap deliveryZoneZipMap = null;
        ArrayList zipList = null;
        ArrayList pickupWeightBreaks = null;
        ArrayList delWeightBreaks = null;
        Iterator zones = null;
        Iterator breaksSet = null;
        int pickupWeightBreaksSize = 0;
        int delWeightBreaksSize = 0;
        HttpSession session = null;
        MultiQuoteFreightLegSellRates legDestCharges = null;
        ArrayList destLaneCharges = finalDOB.getLegDetails();
        int noOfLanes = destLaneCharges.size();
        MultiQuoteMasterDOB masterDOB = finalDOB.getMasterDOB();

        //Added by Kishore For Multiple Zip and Zone Codes

        Document document = null;
        ByteArrayOutputStream baos = null;
        PdfWriter writer = null;

        MultiQuoteHeader headerDOB = finalDOB.getHeaderDOB();

        ArrayList pickupChargeBasisList = null;
        ArrayList delChargeBasisList = null;
        int pickupChargeBasisSize = 0;
        int delChargeBasisSize = 0;

        for (int dc = 0; dc < noOfLanes; dc++) {
            legDestCharges = (MultiQuoteFreightLegSellRates) destLaneCharges.get(dc);
            //Added by Anil.k kishore for Quote Charges
            //if(!"Charges".equalsIgnoreCase(masterDOB.getQuoteWith())){//END
            //Added By Kishore Podili For CartagePDF Quote Add
            //if((masterDOB.getShipperZipCode()!=null && (masterDOB.getShipperZipCode()[dc]==null || "".equals(masterDOB.getShipperZipCode()[dc])))||( masterDOB.getConsigneeZipCode()!=null && (masterDOB.getConsigneeZipCode()[dc]==null || "".equals(masterDOB.getConsigneeZipCode()[dc]))))
            //{
            //Commented By Kishore Podili
            if ((legDestCharges.getPickZoneZipMap() != null && legDestCharges.getPickZoneZipMap().size() > 0)
                    || (legDestCharges.getDeliveryZoneZipMap() != null
                            && legDestCharges.getDeliveryZoneZipMap().size() > 0)) {

                pickUpQuoteCartageRates = legDestCharges.getPickUpCartageRatesList();

                deliveryQuoteCartageRates = legDestCharges.getDeliveryCartageRatesList();
                //Modified By Kishore For MultiZoneCodes
                pickupWeightBreaks = legDestCharges.getPickupWeightBreaks(); //finalDOB.getPickupWeightBreaks();
                delWeightBreaks = legDestCharges.getDeliveryWeightBreaks(); //finalDOB.getDeliveryWeightBreaks();

                if (pickupWeightBreaks != null)
                    pickupWeightBreaksSize = pickupWeightBreaks.size();
                if (delWeightBreaks != null)
                    delWeightBreaksSize = delWeightBreaks.size();

                pickupChargeBasisList = legDestCharges.getPickupChargeBasisList(); //finalDOB.getPickupWeightBreaks();
                delChargeBasisList = legDestCharges.getDelChargeBasisList(); //finalDOB.getDeliveryWeightBreaks();

                if (pickupChargeBasisList != null)
                    pickupChargeBasisSize = pickupChargeBasisList.size();
                if (delChargeBasisList != null)
                    delChargeBasisSize = delChargeBasisList.size();

                //Commented By Kishroe Podili

                //MultiQuoteHeader    headerDOB   =    finalDOB.getHeaderDOB();

                //MultiQuoteMasterDOB masterDOB  =   finalDOB.getMasterDOB();
                ESupplyDateUtility eSupplyDateUtility = new ESupplyDateUtility();
                ESupplyGlobalParameters loginbean = (ESupplyGlobalParameters) request.getSession()
                        .getAttribute("loginbean");
                eSupplyDateUtility.setPatternWithTime("DD-MONTH-YYYY");
                //eSupplyDateUtility.setPatternWithTime(loginbean.getUserPreferences().getDateFormat());
                //@@ Commented and added by subrahmanyam for the pbn issue 212006 on #26-jul-10
                /*          String[] strDate  = eSupplyDateUtility.getDisplayStringArray(headerDOB.getDateOfQuotation());
                String[] effDate  = eSupplyDateUtility.getDisplayStringArray(headerDOB.getEffDate());
                */
                String[] strDate = null;
                String[] effDate = null;
                if ("View".equalsIgnoreCase(request.getParameter("Operation"))) {
                    if ("PDF".equalsIgnoreCase(request.getParameter("PDF"))) {
                        strDate = eSupplyDateUtility.getDisplayStringArray(masterDOB.getModifiedDate());
                        effDate = eSupplyDateUtility.getDisplayStringArray(masterDOB.getEffDate());
                    } else {
                        strDate = eSupplyDateUtility.getDisplayStringArray(masterDOB.getModifiedDate());
                        effDate = eSupplyDateUtility.getDisplayStringArray(masterDOB.getCreatedDate());
                    }

                } else {
                    strDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getDateOfQuotation());
                    effDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getEffDate());

                }

                String[] validDate;
                String validUptoStr = "";
                if (headerDOB.getValidUpto() != null) {
                    validDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getValidUpto());
                    validUptoStr = validDate[0];
                }

                StringBuffer attentionTo = new StringBuffer("");
                if (masterDOB.getCustContactNames() != null) {
                    for (int i = 0; i < masterDOB.getCustContactNames().length; i++) {
                        //Logger.info(FILE_NAME,"masterDOB.getCustContactNames()[i]::"+masterDOB.getCustomerContacts()[i]);
                        attentionTo.append(
                                masterDOB.getCustContactNames()[i] != null ? masterDOB.getCustContactNames()[i]
                                        : "");
                        if (i != (masterDOB.getCustContactNames().length - 1))
                            attentionTo.append(",");
                    }
                }

                String chargeRate = null;

                //System.out.println("After getting data------------------------------>"+pickUpQuoteCartageRates.size());

                //Added By Kishore For MultiZone Codes
                Cell cellCountry;
                Chunk chk;
                if (dc == 0) {

                    //document = new Document(PageSize.A4,54f,54f,68.4f,68.4f);//@@ 36 points represent 0.5 inch  
                    document = new Document(PageSize.A4, 10f, 10f, 20f, 20f); //added by silpa on 27-06-11
                    document.addTitle("Approved Report");
                    document.addSubject("Report PDF");
                    document.addKeywords("Test, Key Words");
                    document.addAuthor("DHL");
                    document.addCreator("Auto Generated through 4S DHL");
                    document.addCreationDate();

                    baos = new ByteArrayOutputStream();
                    writer = PdfWriter.getInstance(document, baos);
                    //added by silpa on 27-06-11
                    document.open();
                    PdfContentByte cb = writer.getDirectContent();
                    cb.rectangle(document.left(), document.bottom(), document.right() - document.left(),
                            document.top() - document.bottom());
                    cb.stroke();//ended

                    int[] widths = { 10, 10, 10, 10, 10, 10, 12, 28 };

                    Table mainT = new Table(8);
                    mainT.setWidth(100);
                    mainT.setWidths(widths);
                    mainT.setBorderColor(Color.white);
                    mainT.setPadding(1);
                    mainT.setSpacing(0);

                    Phrase headingPhrase = new Phrase("",
                            FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.BLACK));
                    Cell cellHeading = new Cell(headingPhrase);
                    cellHeading.setBorderColor(new Color(255, 255, 255));
                    cellHeading.setHorizontalAlignment(cellHeading.ALIGN_CENTER);
                    cellHeading.setColspan(7);
                    mainT.addCell(cellHeading);

                    Cell imageCell = new Cell();
                    java.net.URL url = getServletConfig().getServletContext()
                            .getResource("/images/DHLlogo.gif");
                    Image img0 = Image.getInstance(url);
                    //img0.scalePercent(75);
                    imageCell.add(img0);
                    imageCell.setHorizontalAlignment(imageCell.ALIGN_RIGHT);
                    imageCell.setBorderWidth(0);
                    imageCell.setNoWrap(true);
                    imageCell.setColspan(1);
                    mainT.addCell(imageCell);
                    mainT.setAlignment(mainT.ALIGN_CENTER);
                    document.add(mainT);

                    //pickBreaks = pickQuoteCartageRates.getRates().keySet();
                    //System.out.println("After Heading ----------------pickBreaks----------->");            
                    Table partCountry = new Table(1, 4);
                    partCountry.setBorderWidth(0);
                    partCountry.setWidth(100);
                    partCountry.setBorderColor(Color.black);
                    //partCountry.setBackgroundColor(Color.ORANGE);
                    partCountry.setPadding(1);
                    partCountry.setSpacing(1);
                    partCountry.setAutoFillEmptyCells(true);
                    //partCountry.setTableFitsPage(true);
                    partCountry.setAlignment(partCountry.ALIGN_CENTER);
                    // partCountry.setWidth(100.0f);
                    /*Cell cellCountry;
                    Chunk chk;*/

                    chk = new Chunk("ANNEXURE", FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.BLACK));
                    cellCountry = new Cell(chk);
                    cellCountry.setWidth("100");
                    cellCountry.setBorderWidth(0);
                    cellCountry.setNoWrap(true);
                    cellCountry.setLeading(10.0f);
                    cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
                    partCountry.addCell(cellCountry);

                    if ("MY".equalsIgnoreCase(masterDOB.getCountryId())) {
                        chk = new Chunk((headerDOB.getOriginCountry() != null
                                ? headerDOB.getOriginCountry()[dc].toUpperCase()
                                : "")
                                + " TO "
                                + (headerDOB.getDestinationCountry() != null
                                        ? headerDOB.getDestinationCountry()[dc].toUpperCase()
                                        : ""),
                                FontFactory.getFont("ARIAL", 16, Font.BOLD, Color.BLUE));
                        cellCountry = new Cell(chk);
                        cellCountry.setWidth("100");
                        cellCountry.setBorderWidth(0);
                        cellCountry.setNoWrap(true);
                        cellCountry.setLeading(10.0f);
                        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
                        partCountry.addCell(cellCountry);

                        cellCountry = new Cell("");
                        cellCountry.setBorderWidth(0);
                        cellCountry.setLeading(5.0f);
                        partCountry.addCell(cellCountry);

                        chk = new Chunk(headerDOB.getCustomerName(),
                                FontFactory.getFont("ARIAL", 14, Font.BOLD, Color.BLUE));
                        cellCountry = new Cell(chk);
                        cellCountry.setHeader(true);
                        cellCountry.setWidth("100");
                        cellCountry.setBorderWidth(0);
                        cellCountry.setNoWrap(true);
                        cellCountry.setLeading(10.0f);
                        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
                        partCountry.addCell(cellCountry);
                        //Logger.info(FILE_NAME,"attentionTo.toString():"+attentionTo.toString());

                        chk = new Chunk("ATTENTION TO: " + toTitleCase(attentionTo.toString()),
                                FontFactory.getFont("ARIAL", 14, Font.BOLD, Color.BLUE));
                        cellCountry = new Cell(chk);
                        cellCountry.setWidth("100");
                        cellCountry.setBorderWidth(0);
                        cellCountry.setNoWrap(true);
                        cellCountry.setLeading(10.0f);
                        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
                        partCountry.addCell(cellCountry);

                        cellCountry = new Cell("");
                        cellCountry.setBorderWidth(0);
                        cellCountry.setLeading(5.0f);
                        partCountry.addCell(cellCountry);
                    } else {
                        chk = new Chunk((headerDOB.getOriginCountry() != null
                                ? headerDOB.getOriginCountry()[dc].toUpperCase()
                                : "")
                                + " TO "
                                + (headerDOB.getDestinationCountry() != null
                                        ? headerDOB.getDestinationCountry()[dc].toUpperCase()
                                        : ""),
                                FontFactory.getFont("ARIAL", 16, Font.BOLD, Color.RED));
                        cellCountry = new Cell(chk);
                        cellCountry.setWidth("100");
                        cellCountry.setBorderWidth(0);
                        cellCountry.setNoWrap(true);
                        cellCountry.setLeading(10.0f);
                        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
                        partCountry.addCell(cellCountry);

                        cellCountry = new Cell("");
                        cellCountry.setBorderWidth(0);
                        cellCountry.setLeading(5.0f);
                        partCountry.addCell(cellCountry);

                        chk = new Chunk(headerDOB.getCustomerName(),
                                FontFactory.getFont("ARIAL", 14, Font.BOLD, Color.RED));
                        cellCountry = new Cell(chk);
                        cellCountry.setHeader(true);
                        cellCountry.setWidth("100");
                        cellCountry.setBorderWidth(0);
                        cellCountry.setNoWrap(true);
                        cellCountry.setLeading(10.0f);
                        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
                        partCountry.addCell(cellCountry);
                        //Logger.info(FILE_NAME,"attentionTo.toString():"+attentionTo.toString());

                        chk = new Chunk("ATTENTION TO: " + toTitleCase(attentionTo.toString()),
                                FontFactory.getFont("ARIAL", 14, Font.BOLD, Color.RED));
                        cellCountry = new Cell(chk);
                        cellCountry.setWidth("100");
                        cellCountry.setBorderWidth(0);
                        cellCountry.setNoWrap(true);
                        cellCountry.setLeading(10.0f);
                        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
                        partCountry.addCell(cellCountry);

                        cellCountry = new Cell("");
                        cellCountry.setBorderWidth(0);
                        cellCountry.setLeading(5.0f);
                        partCountry.addCell(cellCountry);
                    }
                    chk = new Chunk("QUOTE REFERENCE: " + masterDOB.getQuoteId(),
                            FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.BLACK));
                    cellCountry = new Cell(chk);
                    cellCountry.setWidth("100");
                    cellCountry.setBorderWidth(0);
                    cellCountry.setNoWrap(true);
                    cellCountry.setLeading(10.0f);
                    cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
                    partCountry.addCell(cellCountry);
                    chk = new Chunk("DATE OF QUOTATION: " + strDate[0],
                            FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.BLACK));
                    cellCountry = new Cell(chk);
                    cellCountry.setWidth("100");
                    cellCountry.setBorderWidth(0);
                    cellCountry.setNoWrap(true);
                    cellCountry.setLeading(10.0f);
                    cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
                    partCountry.addCell(cellCountry);

                    document.add(partCountry);

                }

                if (dc > 0) {
                    document.newPage();

                }

                Table partZone = null;
                Cell cellZone;

                if (pickUpQuoteCartageRates != null && pickUpQuoteCartageRates.size() > 0) {
                    /*Set keys = null;            
                    for(int i=0;i<pickUpQuoteCartageRates.size();i++)
                    {              
                      if(i==0)
                      { 
                        pickBreaks = new TreeSet();//@@This is needed as only a new Set Implementation obj supports addAll() 
                      }
                      pickQuoteCartageRates = (QuoteCartageRates) pickUpQuoteCartageRates.get(i);
                      keys = pickQuoteCartageRates.getRates().keySet();
                      pickBreaks.addAll(keys);
                    }*/

                    //if(pickBreaks!=null && pickBreaks.size()>0)
                    //if(pickupWeightBreaks != null && pickupWeightBreaksSize>0)
                    partZone = new Table(pickupWeightBreaksSize + 2);
                    partZone.setOffset(30);
                    partZone.setDefaultHorizontalAlignment(partZone.ALIGN_CENTER);
                    partZone.setBorderWidth(1);
                    partZone.setBorderColor(Color.black);
                    partZone.setPadding(1);
                    partZone.setSpacing(1);
                    partZone.setAutoFillEmptyCells(true);
                    partZone.setWidth(100);
                    //partZone.setTableFitsPage(true);
                    //@@ Added by subrahmanyam for the enhancement #147062 on 09/12/2008
                    chk = new Chunk("PICKUP CARTAGE RATES AT: " + headerDOB.getOriginLocName()[dc],
                            FontFactory.getFont("ARIAL", 10, Font.BOLD, Color.RED));
                    cellZone = new Cell(chk);
                    cellZone.setNoWrap(true);
                    cellZone.setHeader(true);
                    cellZone.setVerticalAlignment(cellZone.ALIGN_BOTTOM);
                    cellZone.setLeading(10.0f);
                    cellZone.setBackgroundColor(Color.WHITE);
                    cellZone.setColspan(pickupWeightBreaksSize + 2);
                    partZone.addCell(cellZone);
                    //@@ Ended by subrahmanyam for the enhancement #147062 on 09/12/2008
                    chk = new Chunk("PICKUP CARTAGE RATES",
                            FontFactory.getFont("ARIAL", 10, Font.BOLD, Color.BLACK));
                    cellZone = new Cell(chk);
                    cellZone.setNoWrap(true);
                    cellZone.setHeader(true);
                    cellZone.setVerticalAlignment(cellZone.ALIGN_BOTTOM);
                    cellZone.setLeading(10.0f);
                    cellZone.setBackgroundColor(Color.ORANGE);
                    cellZone.setColspan(pickupWeightBreaksSize + 2);
                    partZone.addCell(cellZone);

                    chk = new Chunk("Zone", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                    cellZone = new Cell(chk);
                    //cellZone.setNoWrap(true);
                    cellZone.setLeading(8.0f);
                    cellZone.setHeader(true);
                    cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                    partZone.addCell(cellZone);

                    chk = new Chunk("Currency", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                    cellZone = new Cell(chk);
                    //cellZone.setNoWrap(true);
                    cellZone.setHeader(true);
                    cellZone.setLeading(8.0f);
                    cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                    partZone.addCell(cellZone);
                    //breaksSet = pickBreaks.iterator();  // logger.info("breaksSetbreaksSet::"+breaksSet);
                    /*while(breaksSet.hasNext())
                    {              
                      chk = new Chunk((String)breaksSet.next(),FontFactory.getFont("ARIAL", 8, Font.BOLD,Color.BLACK));
                      cellZone = new Cell(chk);              
                      cellZone.setNoWrap(true);
                      cellZone.setHeader(true);
                      partZone.addCell(cellZone);
                    }*/
                    //if(pickupWeightBreaks!=null)
                    //{
                    //logger.info("pickupWeightBreaks"+pickupWeightBreaks);
                    for (int i = 0; i < pickupWeightBreaksSize; i++) {
                        chk = new Chunk((String) pickupWeightBreaks.get(i),
                                FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                        cellZone = new Cell(chk);
                        //cellZone.setNoWrap(true);
                        cellZone.setLeading(8.0f);
                        cellZone.setHeader(true);
                        cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                        partZone.addCell(cellZone);
                    }
                    //}
                    partZone.endHeaders();

                    chk = new Chunk("");
                    cellZone = new Cell(chk);
                    cellZone.setLeading(8.0f);
                    // cellZone.setHeader(true);
                    // cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                    partZone.addCell(cellZone);

                    chk = new Chunk("");
                    cellZone = new Cell(chk);
                    cellZone.setLeading(8.0f);
                    //cellZone.setHeader(true);
                    //cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                    partZone.addCell(cellZone);

                    for (int i = 0; i < pickupChargeBasisSize; i++) {
                        chk = new Chunk(toTitleCase((String) pickupChargeBasisList.get(i)),
                                FontFactory.getFont("ARIAL", 7, Font.BOLD, Color.BLACK));
                        cellZone = new Cell(chk);
                        //cellZone.setNoWrap(true);
                        cellZone.setLeading(8.0f);
                        cellZone.setHeader(true);
                        //cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                        partZone.addCell(cellZone);
                    }

                    int pikupQuoteCartRatSize = pickUpQuoteCartageRates.size();
                    label0: for (int i = 0; i < pikupQuoteCartRatSize; i++) {
                        pickQuoteCartageRates = (MultiQuoteCartageRates) pickUpQuoteCartageRates.get(i); // By Kishore For Multiple Zone Code
                        chk = new Chunk(pickQuoteCartageRates.getZone(),
                                FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                        cellZone = new Cell(chk);
                        cellZone.setLeading(8.0f);
                        //cellZone.setNoWrap(true);            
                        partZone.addCell(cellZone);

                        chk = new Chunk(pickQuoteCartageRates.getCurrency(),
                                FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                        cellZone = new Cell(chk);
                        cellZone.setLeading(8.0f);
                        //cellZone.setNoWrap(true);            
                        partZone.addCell(cellZone);

                        pickUpZoneCodeMap = pickQuoteCartageRates.getRates();

                        /*breaksSet = pickBreaks.iterator();
                        while(breaksSet.hasNext())
                         {
                           String wBreak = (String)breaksSet.next();
                           if(pickUpZoneCodeMap.containsKey(wBreak))
                           {
                            chargeRate = (String)pickUpZoneCodeMap.get(wBreak);
                            chargeRate  = df.format(Double.parseDouble(chargeRate));
                           }
                           else
                           {
                            chargeRate = "--";              
                           }
                          chk = new Chunk(chargeRate,FontFactory.getFont("ARIAL", 8, Font.BOLD,Color.BLACK));
                          cellZone = new Cell(chk);
                          cellZone.setNoWrap(true);            
                          partZone.addCell(cellZone); 
                         }*/

                        // ------------------------------------------------------  //added by Brahmaiah.R on 31/5/2012 for WPBN issue 304241
                        if (pickupWeightBreaks == null) {
                            continue;
                        }
                        String wBreak = null;
                        int k = 0;
                        do {
                            if (k >= pickupWeightBreaksSize) {
                                continue label0;
                            }
                            wBreak = (String) pickupWeightBreaks.get(k);
                            if (wBreak != null && pickUpZoneCodeMap.containsKey(wBreak)) {
                                chargeRate = (String) pickUpZoneCodeMap.get(wBreak);
                                chargeRate = df.format(Double.parseDouble(chargeRate));
                            } else {
                                chargeRate = "--";
                            }
                            chk = new Chunk(chargeRate, FontFactory.getFont("ARIAL", 8F, 1, Color.BLACK));
                            cellZone = new Cell(chk);
                            cellZone.setLeading(8F);
                            partZone.addCell(cellZone);
                            k++;
                        } while (true);
                    }
                    document.add(partZone);
                }
                if (deliveryQuoteCartageRates != null && deliveryQuoteCartageRates.size() > 0) {
                    /*Set dkeys         = null;
                    for(int i=0;i<deliveryQuoteCartageRates.size();i++)
                    {       
                     if(i==0)
                     { 
                       deliBreaks = new TreeSet();//@@This is needed as only a new Set Implementation obj supports addAll() 
                     }
                     deliQuoteCartageRates = (QuoteCartageRates) deliveryQuoteCartageRates.get(i);
                     dkeys = deliQuoteCartageRates.getRates().keySet();
                     deliBreaks.addAll(dkeys);
                     //System.out.println("Before zone header------------------------------>"+deliBreaks);
                     //System.out.println("Before zone header------------------------------>"+deliBreaks.size());              
                    }*/

                    partZone = new Table(delWeightBreaksSize + 2);
                    partZone.setOffset(30);
                    partZone.setDefaultHorizontalAlignment(partZone.ALIGN_CENTER);
                    partZone.setBorderWidth(1);
                    partZone.setWidth(100);
                    partZone.setBorderColor(Color.black);
                    partZone.setPadding(1);
                    partZone.setSpacing(1);
                    partZone.setAutoFillEmptyCells(true);
                    //partZone.setTableFitsPage(true);
                    //@@ Added by subrahmanyam for the enhancement #147062 on 08/12/2008
                    chk = new Chunk("DELIVERY CARTAGE RATES AT: " + headerDOB.getDestLocName()[dc],
                            FontFactory.getFont("ARIAL", 10, Font.BOLD, Color.RED));
                    cellZone = new Cell(chk);
                    cellZone.setNoWrap(true);
                    cellZone.setLeading(10.0f);
                    cellZone.setHeader(true);
                    cellZone.setBackgroundColor(Color.WHITE);
                    cellZone.setVerticalAlignment(cellZone.ALIGN_BOTTOM);
                    cellZone.setColspan(delWeightBreaksSize + 2);
                    partZone.addCell(cellZone);
                    //@@ Ended by subrahmanyam for the enhancement #147062 on 08/12/2008
                    chk = new Chunk("DELIVERY CARTAGE RATES",
                            FontFactory.getFont("ARIAL", 10, Font.BOLD, Color.BLACK));
                    cellZone = new Cell(chk);
                    cellZone.setNoWrap(true);
                    cellZone.setLeading(10.0f);
                    cellZone.setHeader(true);
                    cellZone.setBackgroundColor(Color.ORANGE);
                    cellZone.setVerticalAlignment(cellZone.ALIGN_BOTTOM);
                    cellZone.setColspan(delWeightBreaksSize + 2);
                    partZone.addCell(cellZone);

                    chk = new Chunk("Zone", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                    cellZone = new Cell(chk);
                    cellZone.setLeading(8.0f);
                    //cellZone.setNoWrap(true);
                    cellZone.setHeader(true);
                    cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                    partZone.addCell(cellZone);

                    chk = new Chunk("Currency", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                    cellZone = new Cell(chk);
                    cellZone.setLeading(8.0f);
                    //cellZone.setNoWrap(true);
                    cellZone.setHeader(true);
                    cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                    partZone.addCell(cellZone);

                    //breaksSet = deliBreaks.iterator();

                    /*while(breaksSet.hasNext())
                    {              
                      String breaks = (String)breaksSet.next();
                            
                      chk = new Chunk(breaks,FontFactory.getFont("ARIAL", 8, Font.BOLD,Color.BLACK));
                      cellZone = new Cell(chk);              
                      cellZone.setNoWrap(true);
                      cellZone.setHeader(true);
                      partZone.addCell(cellZone);
                    }*/
                    for (int i = 0; i < delWeightBreaksSize; i++) {
                        chk = new Chunk((String) delWeightBreaks.get(i),
                                FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                        cellZone = new Cell(chk);
                        cellZone.setLeading(8.0f);
                        //cellZone.setNoWrap(true);
                        cellZone.setHeader(true);
                        cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                        partZone.addCell(cellZone);
                    }
                    partZone.endHeaders();

                    chk = new Chunk("");
                    cellZone = new Cell(chk);
                    cellZone.setLeading(8.0f);
                    //cellZone.setHeader(true);
                    //cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                    partZone.addCell(cellZone);

                    chk = new Chunk("");
                    cellZone = new Cell(chk);
                    cellZone.setLeading(8.0f);
                    //cellZone.setHeader(true);
                    //cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                    partZone.addCell(cellZone);

                    for (int i = 0; i < delChargeBasisSize; i++) {
                        chk = new Chunk(toTitleCase((String) delChargeBasisList.get(i)),
                                FontFactory.getFont("ARIAL", 7, Font.BOLD, Color.BLACK));
                        cellZone = new Cell(chk);
                        //cellZone.setNoWrap(true);
                        cellZone.setLeading(8.0f);
                        cellZone.setHeader(true);
                        //cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                        partZone.addCell(cellZone);
                    }

                    int delQuoteCartRtSize = deliveryQuoteCartageRates.size();
                    for (int i = 0; i < delQuoteCartRtSize; i++) {
                        deliQuoteCartageRates = (MultiQuoteCartageRates) deliveryQuoteCartageRates.get(i); // By Kishore For Multiple Zone Code

                        chk = new Chunk(deliQuoteCartageRates.getZone(),
                                FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                        cellZone = new Cell(chk);
                        cellZone.setLeading(8.0f);
                        //cellZone.setNoWrap(true);            
                        partZone.addCell(cellZone);

                        chk = new Chunk(deliQuoteCartageRates.getCurrency(),
                                FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                        cellZone = new Cell(chk);
                        cellZone.setLeading(8.0f);
                        //cellZone.setNoWrap(true);            
                        partZone.addCell(cellZone);
                        // String charge_type=deliQuoteCartageRates.getBuyOrSellRate();  //@@Added by kiran.v

                        deliveryZoneCodeMap = deliQuoteCartageRates.getRates();

                        //breaksSet = deliBreaks.iterator();
                        /*while(breaksSet.hasNext())
                         {
                           String wBreak = (String)breaksSet.next();
                           if(deliveryZoneCodeMap.containsKey(wBreak))
                           {
                            chargeRate = (String)deliveryZoneCodeMap.get(wBreak);  
                            chargeRate  = df.format(Double.parseDouble(chargeRate));
                           }
                           else
                           {
                            chargeRate = "--";              
                           }
                          chk = new Chunk(chargeRate,FontFactory.getFont("ARIAL", 8, Font.BOLD,Color.BLACK));
                          cellZone = new Cell(chk);
                          cellZone.setNoWrap(true);            
                          partZone.addCell(cellZone); 
                         }*/
                        String wBreak = null;
                        for (int k = 0; k < delWeightBreaksSize; k++) {
                            wBreak = (String) delWeightBreaks.get(k);
                            if (wBreak != null && deliveryZoneCodeMap.containsKey(wBreak)) {
                                chargeRate = (String) deliveryZoneCodeMap.get(wBreak);
                                chargeRate = df.format(Double.parseDouble(chargeRate));
                            } else {
                                chargeRate = "--";
                            }
                            chk = new Chunk(chargeRate,
                                    FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                            cellZone = new Cell(chk);
                            cellZone.setLeading(8.0f);
                            //cellZone.setNoWrap(true);            
                            partZone.addCell(cellZone);
                        }
                    }
                    //System.out.println("After zone header------------------------------>");
                    document.add(partZone);

                }

                pickUpZoneZipMap = legDestCharges.getPickZoneZipMap();
                //@@For Sorting the Zone Codes in an Order.
                List list = new ArrayList();
                Set zoneSet;
                //@@End of Declarations - Sorting
                if (pickUpZoneZipMap != null && pickUpZoneZipMap.size() > 0) {
                    //System.out.println("Before zipCode header--------Set size------->"+pickUpZoneZipMap.keySet().size());
                    //@@Sorting the Zone Codes (as TreeSet implements java.util.SortedSet)
                    list.addAll(pickUpZoneZipMap.keySet());
                    zoneSet = new TreeSet(list);
                    //@@End of Sorting- Added by Yuvraj

                    zones = zoneSet.iterator();

                    partZone = new Table(2);
                    partZone.setOffset(30);
                    partZone.setDefaultHorizontalAlignment(partZone.ALIGN_CENTER);
                    partZone.setBorderWidth(1);
                    partZone.setBorderColor(Color.black);
                    partZone.setPadding(1);
                    partZone.setSpacing(1);
                    partZone.setWidth(100);
                    //partZone.setAutoFillEmptyCells(true);
                    //partZone.setTableFitsPage(true);
                    //@@ Added by subrahmanyam for the enhancement #147062 on 08/12/2008
                    chk = new Chunk("PICKUP CHARGES AT: " + headerDOB.getOriginLocName()[dc],
                            FontFactory.getFont("ARIAL", 10, Font.BOLD, Color.RED));
                    cellZone = new Cell(chk);
                    cellZone.setLeading(10.0f);
                    //cellZone.setNoWrap(true);
                    cellZone.setHeader(true);
                    cellZone.setBackgroundColor(Color.WHITE);
                    cellZone.setVerticalAlignment(cellZone.ALIGN_BOTTOM);
                    cellZone.setColspan(2);
                    partZone.addCell(cellZone);

                    //@@ Ended by subrahmanyam for the enhancement #147062 on  08/12/2008
                    chk = new Chunk("PICKUP ZONE ZIP MAPPING",
                            FontFactory.getFont("ARIAL", 10, Font.BOLD, Color.BLACK));
                    cellZone = new Cell(chk);
                    cellZone.setLeading(10.0f);
                    //cellZone.setNoWrap(true);
                    cellZone.setHeader(true);
                    cellZone.setBackgroundColor(Color.ORANGE);
                    cellZone.setVerticalAlignment(cellZone.ALIGN_BOTTOM);
                    cellZone.setColspan(2);
                    partZone.addCell(cellZone);

                    chk = new Chunk("Zone", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                    cellZone = new Cell(chk);
                    cellZone.setLeading(8.0f);
                    //cellZone.setNoWrap(true);
                    cellZone.setHeader(true);
                    cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                    partZone.addCell(cellZone);
                    chk = new Chunk("Zip Code", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                    cellZone = new Cell(chk);
                    cellZone.setLeading(8.0f);
                    cellZone.setNoWrap(true);
                    cellZone.setHeader(true);
                    partZone.addCell(cellZone);
                    partZone.endHeaders();
                    // System.out.println("Before zipCode Body------------------------------>");

                    while (zones.hasNext()) {
                        String zone = (String) zones.next();
                        // System.out.println("zone------------------------------>"+zone);
                        zipList = (ArrayList) pickUpZoneZipMap.get(zone);
                        //System.out.println("zipList--------------------------->"+zipList);
                        int zipListSize = zipList.size();
                        for (int i = 0; i < zipListSize; i++) {
                            //System.out.println("zone for ------------------------------>"+zone);
                            if (zone != null && !zone.equals("null") && zipList.get(i) != null
                                    && !((String) zipList.get(i)).equals("null")) {
                                chk = new Chunk(zone, FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                                cellZone = new Cell(chk);
                                cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                                cellZone.setLeading(8.0f);
                                //cellZone.setNoWrap(true);            
                                partZone.addCell(cellZone);
                                //System.out.println("zipList.get(i)--------------------------->"+(String)zipList.get(i));
                                chk = new Chunk((String) zipList.get(i),
                                        FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                                cellZone = new Cell(chk);
                                cellZone.setLeading(8.0f);
                                cellZone.setNoWrap(true);
                                partZone.addCell(cellZone);
                            }
                        }
                    }
                    document.add(partZone);
                }

                deliveryZoneZipMap = legDestCharges.getDeliveryZoneZipMap();

                list = new ArrayList();
                zoneSet = null;

                if (deliveryZoneZipMap != null && deliveryZoneZipMap.size() > 0) {
                    //System.out.println("Before zipCode header--------Set size------->"+deliveryZoneZipMap.keySet().size());
                    list.addAll(deliveryZoneZipMap.keySet());
                    zoneSet = new TreeSet(list);
                    zones = zoneSet.iterator();

                    partZone = new Table(2);
                    partZone.setOffset(30);
                    partZone.setDefaultHorizontalAlignment(partZone.ALIGN_CENTER);
                    partZone.setBorderWidth(1);
                    partZone.setBorderColor(Color.black);
                    partZone.setPadding(1);
                    partZone.setSpacing(1);
                    partZone.setWidth(100);
                    //partZone.setAutoFillEmptyCells(true);
                    //partZone.setTableFitsPage(true);
                    //@@ Added by subrahmanyam for the enhancement #147062 on 08/12/2008
                    chk = new Chunk("DELIVERY CHARGES AT: " + headerDOB.getDestLocName()[dc],
                            FontFactory.getFont("ARIAL", 10, Font.BOLD, Color.RED));
                    cellZone = new Cell(chk);
                    cellZone.setLeading(10.0f);
                    //cellZone.setNoWrap(true);
                    cellZone.setHeader(true);
                    cellZone.setBackgroundColor(Color.WHITE);
                    cellZone.setVerticalAlignment(cellZone.ALIGN_BOTTOM);
                    cellZone.setColspan(2);
                    partZone.addCell(cellZone);
                    //@@ Ended by subrahmanyam for the enhancement #147062 on 08/12/2008 
                    chk = new Chunk("DELIVERY ZONE ZIP MAPPING",
                            FontFactory.getFont("ARIAL", 10, Font.BOLD, Color.BLACK));
                    cellZone = new Cell(chk);
                    cellZone.setLeading(10.0f);
                    //cellZone.setNoWrap(true);
                    cellZone.setHeader(true);
                    cellZone.setBackgroundColor(Color.ORANGE);
                    cellZone.setVerticalAlignment(cellZone.ALIGN_BOTTOM);

                    cellZone.setColspan(2);
                    partZone.addCell(cellZone);

                    chk = new Chunk("Zone", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                    cellZone = new Cell(chk);
                    cellZone.setLeading(8.0f);
                    cellZone.setNoWrap(true);
                    cellZone.setHeader(true);
                    cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                    partZone.addCell(cellZone);
                    chk = new Chunk("Zip Code", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                    cellZone = new Cell(chk);
                    cellZone.setLeading(8.0f);
                    cellZone.setNoWrap(true);
                    cellZone.setHeader(true);
                    partZone.addCell(cellZone);
                    partZone.endHeaders();
                    //System.out.println("Before zipCode Body------------------------------>");

                    while (zones.hasNext()) {
                        String zone = (String) zones.next();
                        //System.out.println("zone------------------------------>"+zone);
                        zipList = (ArrayList) deliveryZoneZipMap.get(zone);
                        if (zipList != null) {
                            //System.out.println("zipList--------------------------->"+zipList);
                            //logger.info("zipList--------------------------->"+zipList);
                            int zipListSize = zipList.size();
                            for (int i = 0; i < zipListSize; i++) {
                                //System.out.println("zone for ------------------------------>"+zone);
                                if (zone != null && !zone.equals("null") && zipList.get(i) != null
                                        && !((String) zipList.get(i)).equals("null")) {
                                    chk = new Chunk(zone,
                                            FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                                    cellZone = new Cell(chk);
                                    cellZone.setLeading(8.0f);
                                    cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                                    cellZone.setNoWrap(true);
                                    partZone.addCell(cellZone);
                                    //System.out.println("zipList.get(i)--------------------------->"+(String)zipList.get(i));
                                    chk = new Chunk((String) zipList.get(i),
                                            FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                                    cellZone = new Cell(chk);
                                    cellZone.setLeading(8.0f);
                                    cellZone.setNoWrap(true);
                                    partZone.addCell(cellZone);
                                }
                            }
                        }
                    }
                    document.add(partZone);
                }

                // Commmented by Kishore to move the code after the for loop for Multiple lanes 

                //System.out.println("After zipCode header------------------------------>");

                /*document.close();
                //System.out.println("After     document Close----------------------------------------->");               
                File f = new File("Cartage.pdf");
                FileOutputStream  fileOutputStream= new FileOutputStream(f);
                baos.writeTo(fileOutputStream);
                fileOutputStream.close();//added by sanjay on 20/03/2006
                //@@Added by Kameswari for the WPBN issue-80440
                PdfReader reader = new PdfReader("Cartage.pdf");
                int n = reader.getNumberOfPages();
                File fs = new File(fileName);
                String   space = " ";
                // we create a stamper that will copy the document to a new file
                PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(fs));
                        
                // adding some metadata
                // adding content to each page
                        
                int k = 0;
                PdfContentByte under;
                PdfContentByte over=null;
                BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED);
                while (k < n) {
                k++;
                   over = stamp.getOverContent(k);
                over.beginText();
                over.setFontAndSize(bf, 8);
                over.setTextMatrix(15, 15);
                over.showText("page " + k+" of "+n);
                        
                if(k>1)
                {
                over.setFontAndSize(bf, 7);
                over.showText("                                                                                                       QUOTE REFERENCE:"+masterDOB.getQuoteId());
                //@@Added by subrahmanyam for the WPBN:146452 on 12/12/2008
                over.endText();
                over.beginText();
                over.showText("                                                                                                                                    CUSTOMER NAME: "+headerDOB.getCustomerName());//subrahmanyam 12/12/2008
                //@@ Ended by subrahmanyam for the WPBM:146452 on 12/12/2008               
                }
                over.endText();
                }
                stamp.close();
                //@@WPBN issue-80440    
                //@@ Commented by subrahmanyam for 146460         
                if("on".equalsIgnoreCase(request.getParameter("print")))
                {
                        
                   request.getSession().setAttribute("CartageOuptutStream",fs);
                }
                //@@ Added by subrahmanyam for  146460                
                        
                 if("on".equalsIgnoreCase(request.getParameter("print"))||"PDF".equalsIgnoreCase(request.getParameter("pdf")))
                {
                           
                   request.getSession().setAttribute("CartageOuptutStream",fs);
                }
                        
                //@@ Ended by subrahmanyam for 146460
                //f.delete();
                baos.close();*/
                //}
            }
            //} //Added by Anil.k   kishore Charges
        }
        //System.out.println("End of generation header------------------------------>");
        //Added By Kishore Podili fpr multiple Zone Codes
        if (document != null) {

            document.close();
            // System.out.println("After document
            // Close----------------------------------------->");
            File f = new File("Cartage.pdf");
            FileOutputStream fileOutputStream = new FileOutputStream(f);
            baos.writeTo(fileOutputStream);
            fileOutputStream.close();// added by sanjay on 20/03/2006
            // @@Added by Kameswari for the WPBN issue-80440
            PdfReader reader = new PdfReader("Cartage.pdf");
            int n = reader.getNumberOfPages();
            File fs = new File(fileName);
            String space = " ";
            // we create a stamper that will copy the document to a new file
            PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(fs));

            // adding some metadata
            // adding content to each page

            int k = 0;
            PdfContentByte under;
            PdfContentByte over = null;
            BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED);
            while (k < n) {
                k++;
                over = stamp.getOverContent(k);
                //jyothi
                //over.rectangle(30, 30, 550, 800);
                over.rectangle(document.left(), document.bottom(), document.right() - document.left(),
                        document.top() - document.bottom());
                over.stroke();
                //jyothi
                over.beginText();
                over.setFontAndSize(bf, 8);
                over.setTextMatrix(15, 15);
                over.showText("page " + k + " of " + n);

                if (k > 1) {
                    over.setFontAndSize(bf, 7);
                    over.showText("QUOTE REFERENCE:" + masterDOB.getQuoteId());
                    // @@Added by subrahmanyam for the WPBN:146452 on
                    // 12/12/2008
                    over.endText();
                    over.beginText();
                    over.showText("CUSTOMER NAME: " + headerDOB.getCustomerName());// subrahmanyam
                    // 12/12/2008
                    // @@ Ended by subrahmanyam for the WPBM:146452 on
                    // 12/12/2008
                }
                over.endText();
            }
            stamp.close();
            // @@WPBN issue-80440
            // @@ Commented by subrahmanyam for 146460
            /*
             * if("on".equalsIgnoreCase(request.getParameter("print"))) {
             * 
             * request.getSession().setAttribute("CartageOuptutStream",fs); }
             */
            // @@ Added by subrahmanyam for 146460
            if ("on".equalsIgnoreCase(request.getParameter("print"))
                    || "PDF".equalsIgnoreCase(request.getParameter("pdf"))) {

                request.getSession().setAttribute("CartageOuptutStream", fs);
            }

            // @@ Ended by subrahmanyam for 146460
            // f.delete();
            baos.close();

            // Added by Kishore Podili For Cartage PDF Attachement in the MAIL.  
            FileInputStream fis = new FileInputStream(fileName);
            // PdfReader preader = new PdfReader()
            ArrayList attachmentDOBList = finalDOB.getAttachmentDOBList();

            if (attachmentDOBList == null)
                attachmentDOBList = new ArrayList();

            MultiQuoteAttachmentDOB attachementDOB = new MultiQuoteAttachmentDOB();
            attachementDOB.setFileName(fileName);
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            attachementDOB.setPdfFile(buffer);

            attachmentDOBList.add(attachementDOB);
            finalDOB.setAttachmentDOBList(attachmentDOBList);
            fis.close();
        }

        // System.out.println("End of generation
        // header------------------------------>");
    } catch (Exception e) {
        e.printStackTrace();
        //Logger.error(FILE_NAME,"Error while generating the PDF"+e.toString());
        logger.error(FILE_NAME + "Error while generating the PDF" + e.toString());
        throw new Exception("Error while generating PDF format");
    }
    return 1;
}

From source file:QMSMultiQuoteController.java

License:Open Source License

private ArrayList doPDFGenerationForQuoteGroup(ArrayList mainDtl, HttpServletRequest request,
        HttpServletResponse response) throws Exception {
    String[] contents = null;//from   www  . ja v a  2s  .  c o  m
    String[] levels = null;
    String[] aligns = null;
    String[] headFoot = null;
    Table content = null;
    String[] contactPersons = null;
    String contactName = null;
    ArrayList contactList = new ArrayList();
    ArrayList contactEmailList = new ArrayList();
    ArrayList contactFaxList = new ArrayList();
    ArrayList returnList = new ArrayList();
    ArrayList sentEmailsList = new ArrayList();
    ArrayList unsentEmailsList = new ArrayList();
    ArrayList sentFaxList = new ArrayList();
    ArrayList unsentFaxList = new ArrayList();
    ArrayList filesDOBList = new ArrayList();
    ArrayList filesList = new ArrayList();
    HttpSession session = null;

    try {
        //System.out.println("PDF Generation Startd----------------------------------->");
        MultiQuoteFinalDOB finalDOB = null;
        ESupplyDateUtility eSupplyDateUtility = new ESupplyDateUtility();
        MultiQuoteHeader headerDOB = null;
        MultiQuoteMasterDOB masterDOB = null;
        CostingMasterDOB costingMasterDOB = null;
        CostingChargeDetailsDOB detailsDOB = null;
        CostingLegDetailsDOB legDetails = null;
        CostingRateInfoDOB rateDetailsDOB = null;
        ArrayList rateDetails = new ArrayList();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        String formMailId = "";
        String to_emailIds = "";
        String to_FaxIds = "";
        String faxMailIds = "";
        Document document = new Document(PageSize.A4);
        String PDF_FILE_NAME = "Approved.pdf";
        document.addTitle("Approved Report");
        document.addSubject("Report PDF");
        document.addKeywords("Test, Key Words");
        document.addAuthor("DHL");
        document.addCreator("Auto Generated through 4S DHL");
        document.addCreationDate();
        PdfWriter writer = PdfWriter.getInstance(document, baos);
        document.open();
        Table partCountry;
        Chunk chk;
        Cell cellCountry;
        if (mainDtl != null && mainDtl.size() > 0) {

            finalDOB = (MultiQuoteFinalDOB) mainDtl.get(0);
            headerDOB = finalDOB.getHeaderDOB();
            masterDOB = finalDOB.getMasterDOB();
            formMailId = "webmaster@four-soft.com";
            ESupplyGlobalParameters loginbean = (ESupplyGlobalParameters) request.getSession()
                    .getAttribute("loginbean");
            eSupplyDateUtility.setPatternWithTime("DD-MONTH-YYYY");
            //eSupplyDateUtility.setPatternWithTime(loginbean.getUserPreferences().getDateFormat());

            String[] strDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getDateOfQuotation());
            String[] effDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getEffDate());
            String[] validDate;

            // System.out.println("Before Document Objec--------------------------->");

            //document.setMargins(10,10,10,10);

            Table mainT = new Table(8);
            mainT.setWidth(100);
            mainT.setBorderColor(Color.white);
            mainT.setPadding(1);
            mainT.setSpacing(0);

            Phrase headingPhrase = new Phrase("", FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.BLACK));
            Cell cellHeading = new Cell(headingPhrase);
            cellHeading.setBorderColor(new Color(255, 255, 255));
            cellHeading.setHorizontalAlignment(cellHeading.ALIGN_CENTER);
            cellHeading.setColspan(7);
            mainT.addCell(cellHeading);

            Cell imageCell = new Cell();
            java.net.URL url = getServletConfig().getServletContext().getResource("/images/DHLlogo.gif");
            Image img0 = Image.getInstance(url);
            imageCell.add(img0);
            imageCell.setHorizontalAlignment(imageCell.ALIGN_RIGHT);
            imageCell.setBorderWidth(0);
            imageCell.setNoWrap(true);
            mainT.addCell(imageCell);
            mainT.setAlignment(mainT.ALIGN_CENTER);
            document.add(mainT);

            //Default Header Content Starts
            contents = masterDOB.getDefaultContent();
            headFoot = masterDOB.getDefaultHeaderFooter();

            if (contents != null && contents.length > 0) {
                content = new Table(1);
                content.setOffset(5);
                content.setWidth(100);
                content.setPadding(1);
                content.setSpacing(0);
                content.setBackgroundColor(Color.WHITE);
                content.setBorderColor(Color.black);
                content.setBorderWidth(1f);
                Cell cellContent = null;
                chk = null;
                int hFLen = headFoot.length;
                for (int i = 0; i < hFLen; i++) {
                    if (headFoot[i] != null && "H".equalsIgnoreCase(headFoot[i])) {
                        chk = new Chunk(contents[i], FontFactory.getFont("ARIAL", 7, Font.ITALIC, Color.BLACK));
                        cellContent = new Cell(chk);
                        cellContent.setBorder(0);
                        cellContent.setLeading(6.0f);
                        cellContent.setBackgroundColor(Color.LIGHT_GRAY);
                        cellContent.setHorizontalAlignment(cellContent.ALIGN_LEFT);//Default content is left aligned                                    
                        content.addCell(cellContent);
                    }
                }
                document.add(content);
                contents = null;
                headFoot = null;
                content = null;
            }
            //End Default Header Content

            //System.out.println("After Heading --------------------------->");
        }
        String validUptoStr = null;
        String[] strDate = null;
        String[] effDate = null;
        String[] validDate = null;
        StringBuffer attentionTo = null;
        int mainDtlSize = mainDtl.size();
        for (int m = 0; m < mainDtlSize; m++) {

            finalDOB = (MultiQuoteFinalDOB) mainDtl.get(m);
            headerDOB = finalDOB.getHeaderDOB();
            masterDOB = finalDOB.getMasterDOB();
            //formMailId             =   "webmaster@four-soft.com";
            ESupplyGlobalParameters loginbean = (ESupplyGlobalParameters) request.getSession()
                    .getAttribute("loginbean");
            eSupplyDateUtility.setPatternWithTime("DD-MONTH-YYYY");
            //eSupplyDateUtility.setPatternWithTime(loginbean.getUserPreferences().getDateFormat());

            strDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getDateOfQuotation());
            effDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getEffDate());
            attentionTo = new StringBuffer("");

            if (headerDOB.getValidUpto() != null) {
                validDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getValidUpto());
                validUptoStr = validDate[0];
            }
            if (masterDOB.getCustContactNames() != null) {
                for (int i = 0; i < masterDOB.getCustContactNames().length; i++) {
                    // Logger.info(FILE_NAME,"headerDOB.getAttentionTo()::"+masterDOB.getCustomerContacts()[i]);
                    attentionTo.append(
                            masterDOB.getCustContactNames()[i] != null ? masterDOB.getCustContactNames()[i]
                                    : "");
                    if (i != masterDOB.getCustContactNames().length)
                        attentionTo.append(",");
                }
            }
            partCountry = new Table(1, 5);
            partCountry.setBorderWidth(0);
            partCountry.setWidth(100);
            partCountry.setBorderColor(Color.black);
            //partCountry.setBackgroundColor(Color.ORANGE);
            partCountry.setPadding(1);
            partCountry.setBorder(0);//Modified by silpa.p on 3-06-11
            partCountry.setSpacing(0);
            partCountry.setAutoFillEmptyCells(true);
            //partCountry.setTableFitsPage(true);
            partCountry.setAlignment(partCountry.ALIGN_CENTER);
            // partCountry.setWidth(100.0f);

            String shipmentMode = "";
            if (finalDOB.getMasterDOB().getShipmentMode() == 1)
                shipmentMode = "AIR FREIGHT PROPOSAL";
            else if (finalDOB.getMasterDOB().getShipmentMode() == 2)
                shipmentMode = "SEA FREIGHT PROPOSAL";
            else if (finalDOB.getMasterDOB().getShipmentMode() == 4)
                shipmentMode = "TRUCK FREIGHT PROPOSAL";

            chk = new Chunk(shipmentMode, FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setWidth("100");
            cellCountry.setBorderWidth(0);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(10.0f);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            partCountry.addCell(cellCountry);
            //@@Modified for the WPBN Change Request-71229
            if ("MY".equalsIgnoreCase(masterDOB.getCountryId())) {
                chk = new Chunk(headerDOB.getOriginCountry() + " TO " + headerDOB.getDestinationCountry(),
                        FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.RED));
                cellCountry = new Cell(chk);
                cellCountry.setWidth("100");
                cellCountry.setBorderWidth(0);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(10.0f);
                cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
                partCountry.addCell(cellCountry);

                chk = new Chunk(headerDOB.getCustomerName() == null ? "" : headerDOB.getCustomerName(),
                        FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.RED));
                cellCountry = new Cell(chk);
                cellCountry.setHeader(true);
                cellCountry.setWidth("100");
                cellCountry.setBorderWidth(0);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(10.0f);
                cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
                partCountry.addCell(cellCountry);

                chk = new Chunk("ATTENTION TO: " + toTitleCase(attentionTo.toString()),
                        FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.RED));
                cellCountry = new Cell(chk);
                cellCountry.setWidth("100");
                cellCountry.setBorderWidth(0);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(10.0f);
                cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
                partCountry.addCell(cellCountry);
            } else {
                chk = new Chunk(headerDOB.getOriginCountry() + " TO " + headerDOB.getDestinationCountry(),
                        FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.RED));
                cellCountry = new Cell(chk);
                cellCountry.setWidth("100");
                cellCountry.setBorderWidth(0);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(10.0f);
                cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
                partCountry.addCell(cellCountry);

                chk = new Chunk(headerDOB.getCustomerName() == null ? "" : headerDOB.getCustomerName(),
                        FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.RED));
                cellCountry = new Cell(chk);
                cellCountry.setHeader(true);
                cellCountry.setWidth("100");
                cellCountry.setBorderWidth(0);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(10.0f);
                cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
                partCountry.addCell(cellCountry);

                chk = new Chunk("ATTENTION TO: " + toTitleCase(attentionTo.toString()),
                        FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.RED));
                cellCountry = new Cell(chk);
                cellCountry.setWidth("100");
                cellCountry.setBorderWidth(0);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(10.0f);
                cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
                partCountry.addCell(cellCountry);
            }
            //@@WPBN Change Request-71229
            chk = new Chunk("QUOTE REFERENCE: " + masterDOB.getQuoteId(),
                    FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setWidth("100");
            cellCountry.setBorderWidth(0);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(10.0f);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            partCountry.addCell(cellCountry);
            chk = new Chunk("DATE OF QUOTATION: " + strDate[0],
                    FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setWidth("100");
            cellCountry.setBorderWidth(0);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(10.0f);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            partCountry.addCell(cellCountry);

            contents = masterDOB.getContentOnQuote();
            levels = masterDOB.getLevels();
            aligns = masterDOB.getAlign();
            headFoot = masterDOB.getHeaderFooter();

            if (contents != null && contents.length > 0) {
                content = new Table(1);
                content.setOffset(5);
                content.setWidth(100);
                content.setPadding(1);
                content.setSpacing(0);
                content.setBackgroundColor(Color.WHITE);
                content.setBorderColor(Color.black);
                content.setBorderWidth(1f);
                Cell cellContent = null;
                chk = null;
                int hFlen = headFoot.length;
                for (int i = 0; i < hFlen; i++) {
                    if (headFoot[i] != null && "H".equalsIgnoreCase(headFoot[i])) {
                        chk = new Chunk(contents[i], FontFactory.getFont("ARIAL", 7, Font.ITALIC, Color.BLACK));
                        cellContent = new Cell(chk);
                        cellContent.setBorder(0);
                        cellContent.setLeading(6.0f);
                        cellContent.setBackgroundColor(Color.LIGHT_GRAY);
                        if ("L".equalsIgnoreCase(aligns[i]))
                            cellContent.setHorizontalAlignment(cellContent.ALIGN_LEFT);
                        else if ("C".equalsIgnoreCase(aligns[i]))
                            cellContent.setHorizontalAlignment(cellContent.ALIGN_CENTER);
                        else if ("R".equalsIgnoreCase(aligns[i]))
                            cellContent.setHorizontalAlignment(cellContent.ALIGN_RIGHT);
                        content.addCell(cellContent);
                    }
                }
                document.add(content);
            }

            partCountry = new Table(2, 15);
            partCountry.setOffset(2);
            partCountry.setWidth(100);
            partCountry.setPadding(1);
            partCountry.setSpacing(0);
            partCountry.setBackgroundColor(Color.WHITE);
            partCountry.setBorderColor(Color.black);
            partCountry.setBorderWidth(1);
            //added by subrahmanyam for 182516
            partCountry.setTableFitsPage(true);
            partCountry.setCellsFitPage(true);
            //ended for 182516

            chk = new Chunk("SERVICE INFORMATION: ", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cellCountry = new Cell(chk);

            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            cellCountry.setBackgroundColor(Color.ORANGE);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            //@@ Commented by subrahmanyam for the enhancement #146970 & #146971            
            /*chk = new Chunk("QUOTE ID:"+new Long(masterDOB.getQuoteId()).toString(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            cellCountry.setBackgroundColor(Color.ORANGE);
            cellCountry.setNoWrap(true); cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);*/
            //@@ Added by subrahmanyam for the enhancement #146970 & #146971            
            chk = new Chunk("QUOTE ID:" + masterDOB.getQuoteId(),
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            cellCountry.setBackgroundColor(Color.ORANGE);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            /** chk = new Chunk("Origin : ",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
             cellCountry = new Cell(chk); 
             cellCountry.setBackgroundColor(Color.lightGray);
             cellCountry.setNoWrap(true); cellCountry.setLeading(8.0f);
             partCountry.addCell(cellCountry);
                     
             chk = new Chunk("   "+(headerDOB.getOriginLocName()!=null?headerDOB.getOriginLocName():""),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
             cellCountry = new Cell(chk);
             cellCountry.setNoWrap(true); cellCountry.setLeading(8.0f);
             partCountry.addCell(cellCountry);
                     
             chk = new Chunk("Destination : ",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
             cellCountry = new Cell(chk); 
             cellCountry.setBackgroundColor(Color.lightGray);
             cellCountry.setNoWrap(true); cellCountry.setLeading(8.0f);
             partCountry.addCell(cellCountry);
                     
             chk = new Chunk("   "+(headerDOB.getDestLocName()!=null?headerDOB.getDestLocName():""),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
             cellCountry = new Cell(chk);
             cellCountry.setNoWrap(true); cellCountry.setLeading(8.0f);
             partCountry.addCell(cellCountry);**/

            chk = new Chunk("Customer : ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("   " + (headerDOB.getCustomerName() != null ? headerDOB.getCustomerName() : ""),
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("Agent: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("   " + (headerDOB.getAgent() != null ? headerDOB.getAgent() : ""),
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            //@@ Added by subrahmanyam for the WPBN ISSUE: 150460 ON 23/12/2008                

            //@@ Ended by subrahmanyam for the WPBN ISSUE: 150460 ON 23/12/2008  

            // @@Commented by subrahmanyam for the enhancement #148546 on 09/12/2008            
            /* chk = new Chunk("Routing: ",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
             cellCountry = new Cell(chk);
             cellCountry.setBackgroundColor(Color.lightGray);
             cellCountry.setNoWrap(true); cellCountry.setLeading(8.0f);
             partCountry.addCell(cellCountry);          
             chk = new Chunk("   "+(headerDOB.getRouting()!=null?headerDOB.getRouting():""),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
             cellCountry = new Cell(chk);
             cellCountry.setNoWrap(true); cellCountry.setLeading(8.0f);
             partCountry.addCell(cellCountry);*/
            //@@ Ended by subrahmanyam for the enhanement #148546 on 09/12/2008 

            chk = new Chunk("Commodity or Product: ",
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            //chk = new Chunk("   "+(headerDOB.getCommodity()!=null?toTitleCase(headerDOB.getCommodity()):""),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));//commented by silpa.p on 21-06-11
            chk = new Chunk("   " + (headerDOB.getCommodity() != null ? (headerDOB.getCommodity()) : ""),
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));//modified by silpa.p on 21-06-11
            cellCountry = new Cell(chk);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("Type of service quoted: ",
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("   " + (headerDOB.getTypeOfService() != null ? headerDOB.getTypeOfService() : ""),
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("Notes: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            //@@ Commented by subrahmanyam for WPBN ISSUE:-145510                                      
            /* chk = new Chunk("   "+(headerDOB.getNotes()!=null?headerDOB.getNotes().toUpperCase()+'\n'+"nnnnnnnnnn":""),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
            Commented by subrahmanyam for WPBN ISSUE:-145510   
            cellCountry = new Cell(chk);
            cellCountry.setNoWrap(true); cellCountry.setLeading(8.0f);
                    
            partCountry.addCell(cellCountry);
            */
            //@@ Ended by subrahmanyam for WPBN ISSUE:-145510  
            //@@ Added by subrahmanyam for WPBN ISSUE:-145510  
            chk = new Chunk("   " + (headerDOB.getNotes() != null ? headerDOB.getNotes().toUpperCase() : " "),
                    FontFactory.getFont("ARIAL", 7, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);
            //@@ Ended by subrahmanyam for WPBN ISSUE:-145510   

            chk = new Chunk("Date Effective: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("   " + effDate[0], FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("Validity of Quote: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("   " + (validUptoStr != null ? validUptoStr : "VALID UNTIL FURTHER NOTICE"),
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            document.add(partCountry);
            partCountry.complete();
        }
        int originCount = 0;
        int freightCount = 0;
        int destCount = 0;
        for (int m = 0; m < mainDtlSize; m++) {

            finalDOB = (MultiQuoteFinalDOB) mainDtl.get(m);
            // added by kiran.v on 16/09/2011
            //added by Anusha V.
            session = request.getSession();
            session.setAttribute("finalDOBPdf", finalDOB);
            headerDOB = finalDOB.getHeaderDOB();
            masterDOB = finalDOB.getMasterDOB();
            // System.out.println("After Page Country-------------------------------->");
            //Origin Charges

            costingMasterDOB = finalDOB.getCostingMasterDOB();

            ArrayList originCharges = (ArrayList) costingMasterDOB.getOriginList();

            int[] originIndices = finalDOB.getSelectedOriginChargesListIndices();
            int originChargesSize = 0;

            if (originCharges != null)
                originChargesSize = originCharges.size();
            else
                originChargesSize = 0;

            //Destination
            ArrayList destCharges = new ArrayList();
            int[] destIndices = finalDOB.getSelctedDestChargesListIndices();
            int destChargesSize = 0;
            if (destIndices != null)
                destChargesSize = destIndices.length;
            else
                destChargesSize = 0;

            ArrayList frieghtChargeDetails = new ArrayList();
            destCharges = (ArrayList) costingMasterDOB.getDestinationList();
            ArrayList costingLegDetailsList = new ArrayList();
            costingLegDetailsList = (ArrayList) costingMasterDOB.getCostingLegDetailsList();
            //////////////////////////////
            int orgChargSize = originCharges.size();
            for (int i = 0; i < orgChargSize; i++) {
                detailsDOB = (CostingChargeDetailsDOB) originCharges.get(i);
                rateDetails = (ArrayList) detailsDOB.getCostingRateInfoDOB();
                int rateDtlSize = rateDetails.size();
                for (int k = 0; k < rateDtlSize; k++) {
                    originCount++;
                }
            }
            int destChargSize = destCharges.size();
            for (int i = 0; i < destChargSize; i++) {
                detailsDOB = (CostingChargeDetailsDOB) destCharges.get(i);
                rateDetails = (ArrayList) detailsDOB.getCostingRateInfoDOB();
                int rateDtlSize = rateDetails.size();
                for (int k = 0; k < rateDtlSize; k++) {
                    destCount++;
                }
            }
            int costLegDtlSize = costingLegDetailsList.size();
            for (int s = 0; s < costLegDtlSize; s++) {
                legDetails = (CostingLegDetailsDOB) costingLegDetailsList.get(s);
                frieghtChargeDetails = (ArrayList) legDetails.getCostingChargeDetailList();
                int frtChargDtlSize = frieghtChargeDetails.size();
                for (int n = 0; n < frtChargDtlSize; n++) {
                    detailsDOB = (CostingChargeDetailsDOB) frieghtChargeDetails.get(n);
                    rateDetails = (ArrayList) detailsDOB.getCostingRateInfoDOB();
                    int rateDtlSize = rateDetails.size();
                    for (int j = 0; j < rateDtlSize; j++) {
                        freightCount++;
                    }
                }
            }

        }

        //////////////////////////////
        ArrayList charges = finalDOB.getLegDetails();
        int chargesSize = charges.size();
        if (originCount > 0) {
            Table chargeCountry = new Table(7, originCount);
            chargeCountry.setWidth(100);
            chargeCountry.setPadding(1);
            chargeCountry.setSpacing(0);
            chargeCountry.setOffset(25);
            chargeCountry.setBackgroundColor(Color.WHITE);
            chargeCountry.setBorderColor(Color.black);
            chargeCountry.setDefaultHorizontalAlignment(Element.ALIGN_CENTER);
            chargeCountry.setBorderWidth(1);
            //@@ Added by subrahmanyam for wpbn id: 181349 on 07-sep-09
            chargeCountry.setTableFitsPage(true);
            chargeCountry.setCellsFitPage(true);
            // @@ Ended for wpbn id: 181349 on 07-sep-09

            Cell cell;
            String wBslab = "";
            chk = new Chunk("QUOTEID ", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell = new Cell(chk);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setNoWrap(true);
            cell.setLeading(8.0f);
            //cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
            chargeCountry.addCell(cell);

            chk = new Chunk("CHARGE NAME ", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell = new Cell(chk);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setNoWrap(true);
            cell.setLeading(8.0f);
            // cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
            chargeCountry.addCell(cell);

            chk = new Chunk("BREAKPOINT", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell = new Cell(chk);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setNoWrap(true);
            cell.setLeading(8.0f);
            // cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
            chargeCountry.addCell(cell);

            chk = new Chunk("CURRENCY", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell = new Cell(chk);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setNoWrap(true);
            cell.setLeading(8.0f);
            // cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
            chargeCountry.addCell(cell);

            chk = new Chunk("RATE", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell = new Cell(chk);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setNoWrap(true);
            cell.setLeading(8.0f);
            // cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
            chargeCountry.addCell(cell);

            chk = new Chunk("BASIS", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell = new Cell(chk);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setNoWrap(true);
            cell.setLeading(8.0f);
            //cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
            chargeCountry.addCell(cell);

            chk = new Chunk("RATIO", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell = new Cell(chk);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setNoWrap(true);
            cell.setLeading(8.0f);
            //cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
            chargeCountry.addCell(cell);

            chk = new Chunk("ORIGIN CHARGES", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell = new Cell(chk);
            cell.setColspan(7);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setNoWrap(true);
            cell.setLeading(8.0f);
            // cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
            chargeCountry.addCell(cell);
            for (int m = 0; m < mainDtlSize; m++) {

                finalDOB = (MultiQuoteFinalDOB) mainDtl.get(m);
                headerDOB = finalDOB.getHeaderDOB();
                masterDOB = finalDOB.getMasterDOB();

                costingMasterDOB = finalDOB.getCostingMasterDOB();
                ArrayList originCharges = (ArrayList) costingMasterDOB.getOriginList();

                MultiQuoteCharges chargesDOB = null;
                ArrayList originChargeInfo = null;
                int originChargesInfoSize = 0;
                MultiQuoteChargeInfo chargeInfo = null;
                if (originCharges.size() > 0) {

                    int orgChargSize = originCharges.size();
                    for (int i = 0; i < orgChargSize; i++) {
                        detailsDOB = (CostingChargeDetailsDOB) originCharges.get(i);
                        rateDetails = (ArrayList) detailsDOB.getCostingRateInfoDOB();

                        originChargesInfoSize = rateDetails.size();
                        for (int k = 0; k < originChargesInfoSize; k++) {
                            CostingRateInfoDOB crateDetailsDOB = (CostingRateInfoDOB) rateDetails.get(k);
                            if (k == 0) {
                                //@@ Commented by subrahmanyam for the enhancement #146971 and #146970 on 10/12/2008                    
                                /*chk = new Chunk(new Long(masterDOB.getQuoteId()).toString(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                cell = new Cell(chk);
                                //cell.setRowspan(originChargesInfoSize);
                                cell.setBackgroundColor(Color.lightGray);
                                cell.setNoWrap(true); cell.setLeading(8.0f);
                                //cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                                chargeCountry.addCell(cell);*/
                                //@@ Added by subrahmanyam for the enhancement #146971 and 146970 on 10/12/2008    
                                chk = new Chunk(masterDOB.getQuoteId(),
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                cell = new Cell(chk);
                                cell.setBackgroundColor(Color.lightGray);
                                cell.setNoWrap(true);
                                cell.setLeading(8.0f);
                                chargeCountry.addCell(cell);
                                //@@ Ended by subrahmanyam for the enhanemenet #146971 and #146970 on 10/12/2008 

                                //@@ commented and modified by subrahmanyam for 181349  on 07-sep-09 & 202166 on 7-apr-10
                                // chk = new Chunk(detailsDOB.getChargeDescId(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                chk = new Chunk(
                                        detailsDOB.getExternalName() != null ? detailsDOB.getExternalName()
                                                : detailsDOB.getChargeDescId(),
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));//ended for 181349
                                cell = new Cell(chk);
                                //cell.setRowspan(originChargesInfoSize);
                                cell.setBackgroundColor(Color.lightGray);
                                // cell.setNoWrap(true); //commented for 181349
                                cell.setLeading(8.0f);
                                //cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                                chargeCountry.addCell(cell);
                            } else {
                                cell = new Cell("");
                                //cell.setRowspan(originChargesInfoSize);
                                cell.setBackgroundColor(Color.lightGray);
                                cell.setNoWrap(true);
                                cell.setLeading(8.0f);
                                cell.setBorderWidth(0f);
                                //cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                                chargeCountry.addCell(cell);

                                cell = new Cell("");
                                //cell.setRowspan(originChargesInfoSize);
                                cell.setBackgroundColor(Color.lightGray);
                                cell.setNoWrap(true);
                                cell.setLeading(8.0f);
                                cell.setBorderWidth(0f);
                                //cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                                chargeCountry.addCell(cell);
                            }
                            chk = new Chunk(crateDetailsDOB.getWeightBreakSlab(),
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell = new Cell(chk);
                            cell.setBackgroundColor(Color.lightGray);
                            cell.setNoWrap(true);
                            cell.setLeading(8.0f);
                            chargeCountry.addCell(cell);

                            chk = new Chunk(detailsDOB.getCurrency(),
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell = new Cell(chk);
                            cell.setBackgroundColor(Color.lightGray);
                            cell.setNoWrap(true);
                            cell.setLeading(8.0f);
                            chargeCountry.addCell(cell);

                            chk = new Chunk(crateDetailsDOB.getRate() + "",
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell = new Cell(chk);
                            cell.setNoWrap(true);
                            cell.setLeading(8.0f);
                            chargeCountry.addCell(cell);

                            //added by subrahmanyam for 183812
                            if (crateDetailsDOB.getWeightBreakSlab().equalsIgnoreCase("Min")
                                    || ("BOTH".equalsIgnoreCase(detailsDOB.getRateType())
                                            && "F".equalsIgnoreCase(crateDetailsDOB.getRateIndicator()))) {
                                wBslab = "MIN";
                            } else
                                wBslab = detailsDOB.getChargeBasisDesc();
                            // @@ Commented & Added by subrahmanyam for the wpbn id: 182516 on 10/09/09
                            //chk = new Chunk(crateDetailsDOB.getWeightBreakSlab().equalsIgnoreCase("Min")?"Pershipment ":detailsDOB.getChargeBasisDesc(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                            //chk = new Chunk(crateDetailsDOB.getWeightBreakSlab().equalsIgnoreCase("Min")?" Per Shipment ":detailsDOB.getChargeBasisDesc(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                            chk = new Chunk(
                                    wBslab.equalsIgnoreCase("Min") ? " Per Shipment "
                                            : detailsDOB.getChargeBasisDesc(),
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell = new Cell(chk);
                            cell.setNoWrap(true);
                            cell.setLeading(8.0f);
                            chargeCountry.addCell(cell);

                            chk = new Chunk(
                                    detailsDOB.getDensityRatio() == null ? "" : detailsDOB.getDensityRatio(),
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell = new Cell(chk);
                            cell.setNoWrap(true);
                            cell.setLeading(8.0f);
                            chargeCountry.addCell(cell);

                        }
                    }
                }
            }
            document.add(chargeCountry);
        }
        if (freightCount > 0) {
            Table chargeCountry1 = new Table(7, freightCount);
            chargeCountry1.setWidth(100);
            chargeCountry1.setPadding(1);
            chargeCountry1.setSpacing(0);
            chargeCountry1.setOffset(25);
            chargeCountry1.setBackgroundColor(Color.WHITE);
            chargeCountry1.setBorderColor(Color.black);
            chargeCountry1.setDefaultHorizontalAlignment(Element.ALIGN_CENTER);
            chargeCountry1.setBorderWidth(1);
            //@@ Added by subrahmanyam for wpbn id: 181349 on 07-sep-09
            chargeCountry1.setTableFitsPage(true);
            chargeCountry1.setCellsFitPage(true);
            // @@ Ended for wpbn id: 181349 on 07-sep-09

            Cell cell1;
            chk = new Chunk(" QUOTEID", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell1 = new Cell(chk);
            cell1.setBackgroundColor(Color.ORANGE);
            cell1.setNoWrap(true);
            cell1.setLeading(8.0f);
            //cell1.setVerticalAlignment(cell1.ALIGN_MIDDLE);
            chargeCountry1.addCell(cell1);
            chk = new Chunk("CHARGE NAME ", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell1 = new Cell(chk);
            cell1.setBackgroundColor(Color.ORANGE);
            cell1.setNoWrap(true);
            cell1.setLeading(8.0f);
            //cell1.setVerticalAlignment(cell1.ALIGN_MIDDLE);
            chargeCountry1.addCell(cell1);

            chk = new Chunk("BREAKPOINT", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell1 = new Cell(chk);
            cell1.setBackgroundColor(Color.ORANGE);
            cell1.setNoWrap(true);
            cell1.setLeading(8.0f);
            //cell1.setVerticalAlignment(cell1.ALIGN_MIDDLE);
            chargeCountry1.addCell(cell1);

            chk = new Chunk("CURRENCY", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell1 = new Cell(chk);
            cell1.setBackgroundColor(Color.ORANGE);
            cell1.setNoWrap(true);
            cell1.setLeading(8.0f);
            //cell1.setVerticalAlignment(cell1.ALIGN_MIDDLE);
            chargeCountry1.addCell(cell1);

            chk = new Chunk("RATE", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell1 = new Cell(chk);
            cell1.setBackgroundColor(Color.ORANGE);
            cell1.setNoWrap(true);
            cell1.setLeading(8.0f);
            // cell1.setVerticalAlignment(cell1.ALIGN_MIDDLE);
            chargeCountry1.addCell(cell1);

            chk = new Chunk("BASIS", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell1 = new Cell(chk);
            cell1.setBackgroundColor(Color.ORANGE);
            cell1.setNoWrap(true);
            cell1.setLeading(8.0f);
            //cell1.setVerticalAlignment(cell1.ALIGN_MIDDLE);
            chargeCountry1.addCell(cell1);

            chk = new Chunk("RATIO", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell1 = new Cell(chk);
            cell1.setBackgroundColor(Color.ORANGE);
            cell1.setNoWrap(true);
            cell1.setLeading(8.0f);
            // cell1.setVerticalAlignment(cell1.ALIGN_MIDDLE);
            chargeCountry1.addCell(cell1);

            chk = new Chunk("FREIGHT CHARGES", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell1 = new Cell(chk);
            cell1.setColspan(7);
            cell1.setNoWrap(true);
            cell1.setLeading(8.0f);
            cell1.setBackgroundColor(Color.ORANGE);
            //cell1.setVerticalAlignment(cell1.ALIGN_MIDDLE);
            chargeCountry1.addCell(cell1);
            //Freight Charges
            // System.out.println("After         Origin Charges --------------------------------->");
            int freightChargesSize = 0;
            int freightChargesInfoSize = 0;
            int[] frtIndices = null;
            MultiQuoteFreightLegSellRates legCharges = null;
            String wBSlab = "";//added by subrahmanyam for 182516 on 10-sep-09             
            int mDtlSize = mainDtl.size();
            for (int m = 0; m < mDtlSize; m++) {

                finalDOB = (MultiQuoteFinalDOB) mainDtl.get(m);
                headerDOB = finalDOB.getHeaderDOB();
                masterDOB = finalDOB.getMasterDOB();
                ArrayList costingLegDetailsList = new ArrayList();
                costingMasterDOB = finalDOB.getCostingMasterDOB();
                costingLegDetailsList = (ArrayList) costingMasterDOB.getCostingLegDetailsList();
                ArrayList frieghtChargeDetails = new ArrayList();
                String rDescription = ""; // Added by subrahmanyam for 182516 on 10/09/09
                if (costingLegDetailsList.size() > 0) {

                    int costLegDtlSize = costingLegDetailsList.size();
                    for (int s = 0; s < costLegDtlSize; s++) {
                        legDetails = (CostingLegDetailsDOB) costingLegDetailsList.get(s);
                        frieghtChargeDetails = (ArrayList) legDetails.getCostingChargeDetailList();
                        int frtLegDtlSize = frieghtChargeDetails.size();
                        int frtChargDtlSize = frieghtChargeDetails.size();
                        for (int n = 0; n < frtChargDtlSize; n++) {
                            detailsDOB = (CostingChargeDetailsDOB) frieghtChargeDetails.get(n);
                            rateDetails = (ArrayList) detailsDOB.getCostingRateInfoDOB();
                            int rateDtlSize = rateDetails.size();
                            for (int j = 0; j < rateDtlSize; j++) {
                                rateDetailsDOB = (CostingRateInfoDOB) rateDetails.get(j);

                                if (j == 0) {

                                    chk = new Chunk(legDetails.getOrigin() + "-" + legDetails.getDestination(),
                                            FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                                    cell1 = new Cell(chk);
                                    cell1.setColspan(7);
                                    cell1.setBackgroundColor(Color.WHITE);
                                    cell1.setLeading(8.0f);
                                    chargeCountry1.addCell(cell1);

                                    //@@ Commented by subrahmanyam for the enhancement #146971 and 1469710 on 10/12/2008                      
                                    /*chk = new Chunk(new Long(masterDOB.getQuoteId()).toString(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                    cell1 = new Cell(chk);
                                    //cell1.setRowspan(rateDetails.size());
                                    cell1.setNoWrap(true); cell2.setLeading(8.0f);
                                    cell1.setBackgroundColor(Color.lightGray);
                                    chargeCountry1.addCell(cell1);*/
                                    //@@ Added by subrahmanyam for the enhancement #146971 and #146970 on 10/12/2008
                                    chk = new Chunk(masterDOB.getQuoteId(),
                                            FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                    cell1 = new Cell(chk);
                                    cell1.setNoWrap(true);
                                    cell1.setLeading(8.0f);
                                    cell1.setBackgroundColor(Color.lightGray);
                                    chargeCountry1.addCell(cell1);
                                    //@@ Ended by subrahmanyam for the enhancement #146971 and 146970 on 10/12/2008    
                                    // COMMENTED AND MODIFIED BY SUBRAHMANYAM FOR 182516
                                    //chk = new Chunk(detailsDOB.getChargeDescId()==null?"":detailsDOB.getChargeDescId(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                    chk = new Chunk(
                                            rateDetailsDOB.getRateDescription() == null ? ""
                                                    : rateDetailsDOB.getRateDescription(),
                                            FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                    cell1 = new Cell(chk);
                                    //cell1.setRowspan(rateDetails.size());
                                    cell1.setNoWrap(true);
                                    cell1.setLeading(8.0f);
                                    cell1.setBackgroundColor(Color.lightGray);
                                    chargeCountry1.addCell(cell1);
                                    rDescription = rateDetailsDOB.getRateDescription();
                                } else {
                                    cell1 = new Cell("");
                                    //cell1.setRowspan(rateDetails.size());
                                    cell1.setNoWrap(true);
                                    cell1.setLeading(8.0f);
                                    cell1.setBorderWidth(0f);
                                    cell1.setBackgroundColor(Color.lightGray);
                                    chargeCountry1.addCell(cell1);

                                    //@@ Commented by subrahmanyam for 182516 on 10/09/09
                                    /*
                                     cell1 = new Cell("");
                                     //cell1.setRowspan(rateDetails.size());
                                     cell1.setNoWrap(true); cell1.setLeading(8.0f);
                                     cell1.setBackgroundColor(Color.lightGray);
                                     cell1.setBorderWidth(0f);
                                     chargeCountry1.addCell(cell1);
                                     */
                                    //@@ added by subrahmanyam for 182516 on 10/09/09
                                    if (rDescription.equalsIgnoreCase(rateDetailsDOB.getRateDescription())) {
                                        chk = new Chunk("",
                                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                        cell1 = new Cell(chk);
                                        //cell1.setRowspan(rateDetails.size());
                                        cell1.setNoWrap(true);
                                        cell1.setLeading(8.0f);
                                        cell1.setBackgroundColor(Color.lightGray);
                                        cell1.setBorderWidth(0f);
                                        chargeCountry1.addCell(cell1);
                                    } else {
                                        chk = new Chunk(
                                                rateDetailsDOB.getRateDescription() == null ? ""
                                                        : rateDetailsDOB.getRateDescription(),
                                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                        cell1 = new Cell(chk);
                                        //cell1.setRowspan(rateDetails.size());
                                        //cell1.setNoWrap(true);
                                        cell1.setLeading(8.0f);
                                        cell1.setBackgroundColor(Color.lightGray);
                                        chargeCountry1.addCell(cell1);
                                        rDescription = rateDetailsDOB.getRateDescription();
                                    }
                                    //ended by subrahmanyam for 182516 on 10/09/09

                                }
                                if ("FSBASIC".equalsIgnoreCase(rateDetailsDOB.getWeightBreakSlab())
                                        || "SSBASIC".equalsIgnoreCase(rateDetailsDOB.getWeightBreakSlab()))
                                    rateDetailsDOB.setWeightBreakSlab("Basic Charge");
                                if ("FSMIN".equalsIgnoreCase(rateDetailsDOB.getWeightBreakSlab())
                                        || "SSMIN".equalsIgnoreCase(rateDetailsDOB.getWeightBreakSlab()))
                                    rateDetailsDOB.setWeightBreakSlab("Minimum");
                                if ("FSKG".equalsIgnoreCase(rateDetailsDOB.getWeightBreakSlab())
                                        || "SSKG".equalsIgnoreCase(rateDetailsDOB.getWeightBreakSlab()))
                                    rateDetailsDOB.setWeightBreakSlab("Flat Rate");

                                chk = new Chunk(rateDetailsDOB.getWeightBreakSlab(),
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                cell1 = new Cell(chk);
                                cell1.setNoWrap(true);
                                cell1.setLeading(8.0f);
                                cell1.setBackgroundColor(Color.lightGray);
                                chargeCountry1.addCell(cell1);

                                chk = new Chunk(detailsDOB.getCurrency(),
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                cell1 = new Cell(chk);
                                cell1.setNoWrap(true);
                                cell1.setLeading(8.0f);
                                cell1.setBackgroundColor(Color.lightGray);
                                chargeCountry1.addCell(cell1);

                                chk = new Chunk(rateDetailsDOB.getRate() + "",
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                cell1 = new Cell(chk);
                                cell1.setNoWrap(true);
                                cell1.setLeading(8.0f);
                                chargeCountry1.addCell(cell1);

                                //@@ Added by subrahmanyam for wpbn id: 182516
                                // MODIFIED BY SUBRAHMANYAM FOR 183812
                                if (rateDetailsDOB.getWeightBreakSlab().equalsIgnoreCase("Min")
                                        || rateDetailsDOB.getWeightBreakSlab().equalsIgnoreCase("Minimum")
                                        || ("BOTH".equalsIgnoreCase(detailsDOB.getRateType()) && "FLAT"
                                                .equalsIgnoreCase(rateDetailsDOB.getRateIndicator()))) {
                                    wBSlab = "MIN";
                                } else {
                                    wBSlab = rateDetailsDOB.getWeightBreakSlab();
                                }
                                //@@ commented by subrahmanyam for wpbn id: 182516
                                //chk = new Chunk(rateDetailsDOB.getWeightBreakSlab().equalsIgnoreCase("Min")?"Pershipment ":detailsDOB.getChargeBasisDesc(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                //@@ Added by subrahmanyam for wpbn id: 182516
                                chk = new Chunk(
                                        wBSlab.equalsIgnoreCase("Min") ? " Per Shipment "
                                                : detailsDOB.getChargeBasisDesc(),
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                //@@ Ended  for wpbn id: 182516
                                cell1 = new Cell(chk);
                                cell1.setNoWrap(true);
                                cell1.setLeading(8.0f);
                                chargeCountry1.addCell(cell1);

                                chk = new Chunk(
                                        detailsDOB.getDensityRatio() == null ? ""
                                                : detailsDOB.getDensityRatio(),
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                cell1 = new Cell(chk);
                                cell1.setNoWrap(true);
                                cell1.setLeading(8.0f);
                                chargeCountry1.addCell(cell1);

                            }
                        }
                    }
                }
            }
            document.add(chargeCountry1);
        }
        // System.out.println("After Charges--------------------------------->");
        ArrayList destChargeInfo = null;
        //int[]      destChargeInfo        =  null;
        int destChargesInfoSize = 0;
        if (destCount > 0) {
            Table chargeCountry2 = new Table(7, destCount);
            chargeCountry2.setWidth(100);
            chargeCountry2.setPadding(1);
            chargeCountry2.setSpacing(0);
            chargeCountry2.setOffset(25);
            chargeCountry2.setBackgroundColor(Color.WHITE);
            chargeCountry2.setBorderColor(Color.black);
            chargeCountry2.setDefaultHorizontalAlignment(Element.ALIGN_CENTER);
            chargeCountry2.setBorderWidth(1);
            //@@ Added by subrahmanyam for wpbn id: 181349 on 07-sep-09
            chargeCountry2.setTableFitsPage(true);
            chargeCountry2.setCellsFitPage(true);
            // @@ Ended for wpbn id: 181349 on 07-sep-09

            Cell cell2;
            String wBslab = "";
            chk = new Chunk("QUOTEID", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell2 = new Cell(chk);
            cell2.setNoWrap(true);
            cell2.setLeading(8.0f);
            cell2.setBackgroundColor(Color.ORANGE);
            //cell2.setVerticalAlignment(cell2.ALIGN_MIDDLE);
            chargeCountry2.addCell(cell2);

            chk = new Chunk("CHARGE NAME", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell2 = new Cell(chk);
            cell2.setNoWrap(true);
            cell2.setLeading(8.0f);
            cell2.setBackgroundColor(Color.ORANGE);
            //cell2.setVerticalAlignment(cell2.ALIGN_MIDDLE);
            chargeCountry2.addCell(cell2);

            chk = new Chunk("BREAKPOINT", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell2 = new Cell(chk);
            cell2.setNoWrap(true);
            cell2.setLeading(8.0f);
            cell2.setBackgroundColor(Color.ORANGE);
            //cell2.setVerticalAlignment(cell2.ALIGN_MIDDLE);
            chargeCountry2.addCell(cell2);

            chk = new Chunk("CURRENCY", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell2 = new Cell(chk);
            cell2.setNoWrap(true);
            cell2.setLeading(8.0f);
            cell2.setBackgroundColor(Color.ORANGE);
            //cell2.setVerticalAlignment(cell2.ALIGN_MIDDLE);
            chargeCountry2.addCell(cell2);

            chk = new Chunk("RATE", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell2 = new Cell(chk);
            cell2.setNoWrap(true);
            cell2.setLeading(8.0f);
            cell2.setBackgroundColor(Color.ORANGE);
            //cell2.setVerticalAlignment(cell2.ALIGN_MIDDLE);
            chargeCountry2.addCell(cell2);

            chk = new Chunk("BASIS", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell2 = new Cell(chk);
            cell2.setNoWrap(true);
            cell2.setLeading(8.0f);
            cell2.setBackgroundColor(Color.ORANGE);
            //cell2.setVerticalAlignment(cell2.ALIGN_MIDDLE);
            chargeCountry2.addCell(cell2);

            chk = new Chunk("RATIO", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell2 = new Cell(chk);
            cell2.setNoWrap(true);
            cell2.setLeading(8.0f);
            cell2.setBackgroundColor(Color.ORANGE);
            //cell2.setVerticalAlignment(cell2.ALIGN_MIDDLE);
            chargeCountry2.addCell(cell2);

            chk = new Chunk("DESTINATION CHARGES", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell2 = new Cell(chk);
            cell2.setNoWrap(true);
            cell2.setLeading(8.0f);
            cell2.setColspan(7);
            cell2.setBackgroundColor(Color.ORANGE);
            //cell2.setVerticalAlignment(cell2.ALIGN_MIDDLE);
            chargeCountry2.addCell(cell2);
            int mDtlSize = mainDtl.size();
            for (int m = 0; m < mDtlSize; m++) {

                finalDOB = (MultiQuoteFinalDOB) mainDtl.get(m);
                headerDOB = finalDOB.getHeaderDOB();
                masterDOB = finalDOB.getMasterDOB();
                costingMasterDOB = finalDOB.getCostingMasterDOB();
                ArrayList destCharges = (ArrayList) costingMasterDOB.getDestinationList();
                if (destCharges.size() > 0) {

                    int destChargSize = destCharges.size();

                    for (int i = 0; i < destChargSize; i++) {

                        detailsDOB = (CostingChargeDetailsDOB) destCharges.get(i);
                        rateDetails = (ArrayList) detailsDOB.getCostingRateInfoDOB();

                        //originChargesInfoSize   = rateDetails.size();
                        int rDtlSize = rateDetails.size();
                        for (int k = 0; k < rDtlSize; k++) {
                            CostingRateInfoDOB crateDetailsDOB = (CostingRateInfoDOB) rateDetails.get(k);

                            if (k == 0) {

                                //@@ Commented by subrahmanyam for the enhancement #146971 and 1469710 on 10/12/2008                      
                                /*chk = new Chunk(new Long(masterDOB.getQuoteId()).toString(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                cell2 = new Cell(chk);
                                //cell2.setRowspan(rateDetails.size());
                                cell2.setNoWrap(true); cell2.setLeading(8.0f);
                                cell2.setBackgroundColor(Color.lightGray);
                                chargeCountry2.addCell(cell2);*/
                                //@@ Added by subrahmanyam for the enhancement #146971 and #146970 on 10/12/2008
                                chk = new Chunk(masterDOB.getQuoteId(),
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                cell2 = new Cell(chk);
                                cell2.setNoWrap(true);
                                cell2.setLeading(8.0f);
                                cell2.setBackgroundColor(Color.lightGray);
                                chargeCountry2.addCell(cell2);
                                //@@ Ended by subrahmanyam for the enhancement #146971 and 146970 on 10/12/2008    

                                //  chk = new Chunk(detailsDOB.getChargeDescId(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                //@@ Added by subrahmanyam for the wpbn id: 181349  on 07-sep-09
                                chk = new Chunk(
                                        detailsDOB.getExternalName() != null ? detailsDOB.getExternalName()
                                                : detailsDOB.getChargeDescId(),
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));//ended for 181349
                                cell2 = new Cell(chk);
                                //cell2.setRowspan(rateDetails.size());
                                //cell2.setNoWrap(true); //commented for 181349
                                cell2.setLeading(8.0f);
                                cell2.setBackgroundColor(Color.lightGray);
                                chargeCountry2.addCell(cell2);
                            } else {
                                cell2 = new Cell("");
                                //cell2.setRowspan(rateDetails.size());
                                cell2.setNoWrap(true);
                                cell2.setLeading(8.0f);
                                cell2.setBackgroundColor(Color.lightGray);
                                cell2.setBorderWidth(0f);
                                chargeCountry2.addCell(cell2);

                                cell2 = new Cell("");
                                //cell2.setRowspan(rateDetails.size());
                                cell2.setNoWrap(true);
                                cell2.setLeading(8.0f);
                                cell2.setBackgroundColor(Color.lightGray);
                                cell2.setBorderWidth(0f);
                                chargeCountry2.addCell(cell2);
                            }
                            chk = new Chunk(crateDetailsDOB.getWeightBreakSlab(),
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell2 = new Cell(chk);
                            cell2.setNoWrap(true);
                            cell2.setLeading(8.0f);
                            cell2.setBackgroundColor(Color.lightGray);
                            chargeCountry2.addCell(cell2);

                            chk = new Chunk(detailsDOB.getCurrency(),
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell2 = new Cell(chk);
                            cell2.setNoWrap(true);
                            cell2.setLeading(8.0f);
                            cell2.setBackgroundColor(Color.lightGray);
                            chargeCountry2.addCell(cell2);

                            chk = new Chunk(crateDetailsDOB.getRate() + "",
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell2 = new Cell(chk);
                            cell2.setNoWrap(true);
                            cell2.setLeading(8.0f);
                            chargeCountry2.addCell(cell2);

                            //@@ Commented & Added  by subrahmanyam for 182516 on 10/09/09
                            // chk = new Chunk(crateDetailsDOB.getWeightBreakSlab().equalsIgnoreCase("Min")?"Pershipment ":detailsDOB.getChargeBasisDesc(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                            //ADDED BY SUBRAHMANYAM FOR 183812
                            if (crateDetailsDOB.getWeightBreakSlab().equalsIgnoreCase("Min")
                                    || ("BOTH".equalsIgnoreCase(detailsDOB.getRateType())
                                            && "F".equalsIgnoreCase(crateDetailsDOB.getRateIndicator()))) {
                                wBslab = "MIN";
                            } else
                                wBslab = detailsDOB.getChargeBasisDesc();
                            // COMMENTED & added FOR 183812 ON 24-09-09
                            //chk = new Chunk(crateDetailsDOB.getWeightBreakSlab().equalsIgnoreCase("Min")?" Per Shipment ":detailsDOB.getChargeBasisDesc(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                            chk = new Chunk(
                                    wBslab.equalsIgnoreCase("Min") ? " Per Shipment "
                                            : detailsDOB.getChargeBasisDesc(),
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell2 = new Cell(chk);
                            cell2.setNoWrap(true);
                            cell2.setLeading(8.0f);
                            chargeCountry2.addCell(cell2);

                            chk = new Chunk(
                                    detailsDOB.getDensityRatio() == null ? "" : detailsDOB.getDensityRatio(),
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell2 = new Cell(chk);
                            cell2.setNoWrap(true);
                            cell2.setLeading(8.0f);
                            chargeCountry2.addCell(cell2);
                        }
                    }
                }
            }
            document.add(chargeCountry2);
        }

        Table notes = new Table(2, mainDtl.size());
        boolean displayFlag = false;
        notes.setWidth(100);
        notes.setPadding(1);
        notes.setSpacing(0);
        notes.setOffset(5);
        notes.setBackgroundColor(Color.WHITE);
        notes.setBorderColor(Color.black);
        notes.setDefaultHorizontalAlignment(Element.ALIGN_CENTER);
        notes.setBorderWidth(1);
        notes.setTableFitsPage(true);// added by subrahmanyam for quoteGrouping issue 184848
        notes.setCellsFitPage(true);// added by subrahmanyam for quoteGrouping issue 184848

        Cell cell3;
        chk = new Chunk("QUOTEID ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cell3 = new Cell(chk);
        cell3.setNoWrap(true);
        cell3.setLeading(8.0f);
        cell3.setBackgroundColor(Color.ORANGE);
        //cell3.setVerticalAlignment(cell3.ALIGN_MIDDLE);
        //cell3.setBackgroundColor(Color.lightGray);
        notes.addCell(cell3);

        chk = new Chunk("NOTES", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cell3 = new Cell(chk);
        cell3.setNoWrap(true);
        cell3.setLeading(8.0f);
        cell3.setBackgroundColor(Color.ORANGE);
        //cell3.setVerticalAlignment(cell3.ALIGN_MIDDLE);

        notes.addCell(cell3);
        int mDtlSize = mainDtl.size();
        for (int m = 0; m < mDtlSize; m++) {

            finalDOB = (MultiQuoteFinalDOB) mainDtl.get(m);
            headerDOB = finalDOB.getHeaderDOB();
            masterDOB = finalDOB.getMasterDOB();
            costingMasterDOB = finalDOB.getCostingMasterDOB();
            if (costingMasterDOB != null) {
            }
            //@@ Commented by subrahmanyam for the enhancement #146971 and 1469710 on 10/12/2008                      
            /*chk = new Chunk(new Long(masterDOB.getQuoteId()).toString(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
            cell3 = new Cell(chk);
            //cell3.setRowspan(rateDetails.size());
            cell3.setNoWrap(true); cell3.setLeading(8.0f);
            cell3.setBackgroundColor(Color.lightGray);
            notes.addCell(cell3);*/
            //@@ Added by subrahmanyam for the enhancement #146971 and #146970 on 10/12/2008
            //commented by subrahmanyam for quote grouping issue
            /*
                 chk = new Chunk(masterDOB.getQuoteId(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
            cell3 = new Cell(chk);
            cell3.setNoWrap(true); cell3.setLeading(8.0f);
            cell3.setBackgroundColor(Color.lightGray);
            notes.addCell(cell3);
                //@@ Ended by subrahmanyam for the enhancement #146971 and 146970 on 10/12/2008
                    
            chk = new Chunk(" ",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
            cell3 = new Cell(chk);
            //cell3.setRowspan();
            cell3.setNoWrap(true); cell3.setLeading(8.0f);
            cell3.setBackgroundColor(Color.lightGray);
            notes.addCell(cell3);
            */
            //@@ Added by subrahmanyam for Quote Grouping Issue 184848 on 30/sep/09
            if (finalDOB.getExternalNotes() != null && finalDOB.getExternalNotes().length > 0) {
                int notesLength = finalDOB.getExternalNotes().length;
                for (int n = 0; n < notesLength; n++) {
                    if (n == 0) {
                        chk = new Chunk(masterDOB.getQuoteId(),
                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell3 = new Cell(chk);
                        cell3.setNoWrap(true);
                        cell3.setLeading(8.0f);
                        cell3.setBackgroundColor(Color.lightGray);
                        notes.addCell(cell3);
                        //@@ Ended by subrahmanyam for the enhancement #146971 and 146970 on 10/12/2008

                        chk = new Chunk(finalDOB.getExternalNotes()[n],
                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell3 = new Cell(chk);
                        //cell3.setRowspan();
                        //cell3.setNoWrap(true);
                        cell3.setHorizontalAlignment(cell3.ALIGN_LEFT);
                        cell3.setLeading(8.0f);
                        cell3.setBackgroundColor(Color.lightGray);
                        notes.addCell(cell3);
                    } else {
                        chk = new Chunk("", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell3 = new Cell(chk);
                        cell3.setNoWrap(true);
                        cell3.setLeading(8.0f);
                        cell3.setBackgroundColor(Color.lightGray);
                        notes.addCell(cell3);
                        //@@ Ended by subrahmanyam for the enhancement #146971 and 146970 on 10/12/2008

                        chk = new Chunk(finalDOB.getExternalNotes()[n],
                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell3 = new Cell(chk);
                        //cell3.setRowspan();
                        // cell3.setNoWrap(true);
                        cell3.setHorizontalAlignment(cell3.ALIGN_LEFT);
                        cell3.setLeading(8.0f);
                        cell3.setBackgroundColor(Color.lightGray);
                        notes.addCell(cell3);
                    }
                }
            } else {
                chk = new Chunk(masterDOB.getQuoteId(),
                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cell3 = new Cell(chk);
                cell3.setNoWrap(true);
                cell3.setLeading(8.0f);
                cell3.setBackgroundColor(Color.lightGray);
                notes.addCell(cell3);

                chk = new Chunk(" ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cell3 = new Cell(chk);
                //cell3.setRowspan();
                cell3.setNoWrap(true);
                cell3.setLeading(8.0f);
                cell3.setBackgroundColor(Color.lightGray);
                notes.addCell(cell3);
            }
            //@@ Ended by subrahmanyam for Quote Grouping Issue 184848 on 30/09/09

            contents = masterDOB.getContentOnQuote();
            levels = masterDOB.getLevels();
            aligns = masterDOB.getAlign();
            headFoot = masterDOB.getHeaderFooter();

            if (contents != null && contents.length > 0) {
                int hFLen = headFoot.length;
                for (int i = 0; i < hFLen; i++) {
                    if (headFoot[i] != null && "F".equalsIgnoreCase(headFoot[i])) {
                        displayFlag = true;
                        break;
                    }
                }
                if (displayFlag) {
                    content = new Table(1);
                    content.setOffset(5);
                    content.setWidth(100);
                    content.setPadding(1);
                    content.setSpacing(0);
                    content.setBackgroundColor(Color.WHITE);
                    content.setBorderColor(Color.black);
                    content.setBorderWidth(1f);
                    Cell cellContent = null;
                    chk = new Chunk("QUOTEID : " + masterDOB.getQuoteId(),
                            FontFactory.getFont("ARIAL", 7, Font.ITALIC, Color.BLACK));
                    cellContent = new Cell(chk);
                    cellContent.setBorder(0);
                    cellContent.setLeading(6.0f);
                    cellContent.setHorizontalAlignment(cellContent.ALIGN_CENTER);
                    cellContent.setBackgroundColor(Color.ORANGE);
                    content.addCell(cellContent);
                    for (int i = 0; i < hFLen; i++) {
                        if (headFoot[i] != null && "F".equalsIgnoreCase(headFoot[i])) {
                            chk = new Chunk(contents[i] != null ? contents[i].toUpperCase() : "",
                                    FontFactory.getFont("ARIAL", 7, Font.ITALIC, Color.BLACK));
                            cellContent = new Cell(chk);
                            cellContent.setBorder(0);
                            cellContent.setLeading(6.0f);
                            cellContent.setBackgroundColor(Color.LIGHT_GRAY);
                            if ("L".equalsIgnoreCase(aligns[i]))
                                cellContent.setHorizontalAlignment(cellContent.ALIGN_LEFT);
                            else if ("C".equalsIgnoreCase(aligns[i]))
                                cellContent.setHorizontalAlignment(cellContent.ALIGN_CENTER);
                            else if ("R".equalsIgnoreCase(aligns[i]))
                                cellContent.setHorizontalAlignment(cellContent.ALIGN_RIGHT);
                            content.addCell(cellContent);
                        }
                    }
                    document.add(content);
                }
            }
        }
        document.add(notes);
        //Default Footer Content Starts
        contents = masterDOB.getDefaultContent();
        headFoot = masterDOB.getDefaultHeaderFooter();
        int hFLen = 0;
        if (headFoot != null)
            hFLen = headFoot.length;
        if (contents != null && contents.length > 0) {
            content = new Table(1);
            content.setOffset(5);
            content.setWidth(100);
            content.setPadding(1);
            content.setSpacing(0);
            content.setBackgroundColor(Color.WHITE);
            content.setBorderColor(Color.black);
            content.setBorderWidth(1f);
            Cell cellContent = null;
            chk = null;
            for (int i = 0; i < hFLen; i++) {
                if (headFoot[i] != null && "F".equalsIgnoreCase(headFoot[i])) {
                    chk = new Chunk(contents[i], FontFactory.getFont("ARIAL", 7, Font.ITALIC, Color.BLACK));
                    cellContent = new Cell(chk);
                    cellContent.setBorder(0);
                    cellContent.setLeading(6.0f);
                    cellContent.setBackgroundColor(Color.LIGHT_GRAY);
                    cellContent.setHorizontalAlignment(cellContent.ALIGN_LEFT);//Default content is left aligned                                    
                    content.addCell(cellContent);

                }
            }
            document.add(content);
        }
        //End Default Footer Content

        // System.out.println("After     document Close----------------------------------------->");

        document.close();
        // Thread.sleep(100);
        //logger.info("thread");
        //String file_tsmp = ""+new java.sql.Timestamp((new java.util.Date()).getTime()+masterDOB.getQuoteId());  //@@ Commented by subrahmanyam for the Enhancement #146971 on 2/12/08
        // String file_tsmp = ""+new java.sql.Timestamp((new java.util.Date()).getTime()+Long.parseLong(masterDOB.getQuoteId()));  //@@ Added by subrahmanyam for the Enhancement #146971 on 2/12/08
        //Commenetd by Anusha V 
        //String file_tsmp = ""+new java.sql.Timestamp((new java.util.Date()).getTime())+masterDOB.getQuoteId(); //@@ Added by subrahmanyam for the Enhancement #146971 on 2/12/08
        //Added by Anusha V
        String file_tsmp = "" + new java.sql.Timestamp((new java.util.Date()).getTime());
        file_tsmp = file_tsmp.replaceAll("\\:", "");
        file_tsmp = file_tsmp.replaceAll("\\.", "");
        file_tsmp = file_tsmp.replaceAll("\\-", "");
        file_tsmp = file_tsmp.replaceAll(" ", "");
        File f = new File("Quote" + file_tsmp + ".pdf");
        FileOutputStream fileOutputStream = new FileOutputStream(f);
        baos.writeTo(fileOutputStream);
        fileOutputStream.close();
        //  logger.info("masterDOB.getUserId()"+masterDOB.getUserId());
        if ("on".equalsIgnoreCase(request.getParameter("print"))) {

            request.getSession().setAttribute("QuoteOuptutStream", f);
        }
        //  session.setAttribute("UserId",masterDOB.getUserId());

        int noOfQuotes = mainDtl.size();
        StringBuffer quoteIds = new StringBuffer("");
        String quoteType = "";
        String terminalAddress = "";
        String creatorDetails = "";
        String fromEmailId = "";
        String body = "";
        String countryCode = "";
        for (int i = 0; i < noOfQuotes; i++) {
            finalDOB = (MultiQuoteFinalDOB) mainDtl.get(i);
            /*  //@@Added for the WPBN issue-
              filesDOBList           =   finalDOB.getAttachmentDOBList(); 
              for(int j=0;j<filesDOBList.size();j++)
              {
               filesList.add(filesDOBList.get(j));
              } //@@Added for the WPBN issue-*/

            if (i == 0) {
                quoteType = "" + finalDOB.getMasterDOB().getShipmentMode();
                terminalAddress = finalDOB.getMasterDOB().getTerminalAddress();
                creatorDetails = finalDOB.getMasterDOB().getCreatorDetails();
                fromEmailId = finalDOB.getMasterDOB().getUserEmailId();
                countryCode = finalDOB.getHeaderDOB().getCustCountyCode();
                to_FaxIds = finalDOB.getHeaderDOB().getCustFaxNo();
                to_emailIds = finalDOB.getHeaderDOB().getCustEmailId();
            }
            quoteIds.append(finalDOB.getMasterDOB().getQuoteId());
            if (i != noOfQuotes - 1)
                quoteIds.append(",");

            contactPersons = finalDOB.getMasterDOB().getCustContactNames();
            if (contactPersons != null) {
                int contPersLen = contactPersons.length;
                for (int k = 0; k < contPersLen; k++) {
                    if (!contactList.contains(finalDOB.getMasterDOB().getCustContactNames()[k])) {
                        contactList.add(finalDOB.getMasterDOB().getCustContactNames()[k]);
                        contactEmailList.add(finalDOB.getMasterDOB().getCustomerContactsEmailIds()[k]);
                        contactFaxList.add(finalDOB.getMasterDOB().getCustomerContactsFax()[k]);
                    }
                }

            }

        }

        if ("1".equalsIgnoreCase(quoteType))
            quoteType = "Airfreight";
        else if ("2".equalsIgnoreCase(quoteType))
            quoteType = "Seafreight";
        else if ("4".equalsIgnoreCase(quoteType))
            quoteType = "Truckfreight";

        String subject = "DHL Global Forwarding Quotation, Multiple " + quoteType + ", Quote References "
                + quoteIds.toString();
        String message = "";
        //finalDOB.getFlagsDOB().setQuoteStatusFlag("PEN");//@@Quote is Pending
        //ReportsSessionBeanHome home      = (ReportsSessionBeanHome)LookUpBean.getEJBHome("ReportsSessionBean");
        //ReportsSession remote   = (ReportsSession)home.create();
        //if(contactList.size()==0)
        //{
        to_emailIds = to_emailIds.replaceAll(";", ",");
        /*message  = "Dear Customer,\n\nThank you for the opportunity to provide this quotation.  All information is contained within the attachment."+
                    "  Should you have any queries please do not hesitate to contact us.\n\n\nRegards,\n"+creatorDetails+"\n"+terminalAddress;*/
        //message   = "Dear Customer,\n\n"+finalDOB.getEmailText()+"\n\n\nRegards,\n"+creatorDetails+"\n"+terminalAddress+"\n"+;       
        if (finalDOB.getUpdatedReportDOB() != null) {
            body = "Dear Customer,\n\nThis is a replacement quotation reference "
                    + request.getAttribute("quoteId") + ",replacing "
                    + finalDOB.getUpdatedReportDOB().getQuoteId() + ", due to a change in "
                    + (finalDOB.getEmailChargeName() != null ? finalDOB.getEmailChargeName()
                            : finalDOB.getUpdatedReportDOB().getChangeDesc())
                    + ",\n\n" + (finalDOB.getEmailText() != null ? finalDOB.getEmailText() : "") + "\n\n\n"
                    + (masterDOB.getCreatorDetails() != null ? masterDOB.getCreatorDetails() : "") + "\n\n"
                    + (masterDOB.getCompanyName() != null ? masterDOB.getCompanyName() : "") + "\n"
                    + (masterDOB.getTerminalAddress() != null ? masterDOB.getTerminalAddress() : "") + "\n\n"
                    + "Phone  " + (masterDOB.getPhoneNo() != null ? masterDOB.getPhoneNo() : "") + "\n"
                    + "Fax    " + (masterDOB.getFaxNo() != null ? masterDOB.getFaxNo() : "") + "\n" + "Mobile "
                    + (masterDOB.getMobileNo() != null ? masterDOB.getMobileNo() : "") + "\n\nEmail "
                    + (masterDOB.getUserEmailId() != null ? masterDOB.getUserEmailId() : ""); //@@Modified by Kameswari for the WPBN issue-61303
        } else {
            body = "Dear Customer,\n\n" + (finalDOB.getEmailText() != null ? finalDOB.getEmailText() : "")
                    + "\n\n\n" + (masterDOB.getCreatorDetails() != null ? masterDOB.getCreatorDetails() : "")
                    + "\n\n" + (masterDOB.getCompanyName() != null ? masterDOB.getCompanyName() : "") + "\n"
                    + (masterDOB.getTerminalAddress() != null ? masterDOB.getTerminalAddress() : "") + "\n\n"
                    + "Phone  " + (masterDOB.getPhoneNo() != null ? masterDOB.getPhoneNo() : "") + "\n"
                    + "Fax    " + (masterDOB.getFaxNo() != null ? masterDOB.getFaxNo() : "") + "\n" + "Mobile "
                    + (masterDOB.getMobileNo() != null ? masterDOB.getMobileNo() : "") + "\n\nEmail "
                    + (masterDOB.getUserEmailId() != null ? masterDOB.getUserEmailId() : ""); //@@Modified by Kameswari for the WPBN issue-61303
        }
        if ("on".equalsIgnoreCase(request.getParameter("email"))) {
            try {
                sendMail(fromEmailId, to_emailIds, subject, message, "Quote" + file_tsmp + ".pdf", null);
                sentEmailsList.add(to_emailIds);
            } catch (FoursoftException fs) {
                //Logger.error(FILE_NAME,"Error While Sending Mail.."+fs.getMessage());
                logger.error(FILE_NAME + "Error While Sending Mail.." + fs.getMessage());
                fs.printStackTrace();
                unsentEmailsList.add(to_emailIds);
            }
        }
        if ("on".equalsIgnoreCase(request.getParameter("fax"))) {
            if ("SG".equalsIgnoreCase(countryCode))
                faxMailIds = "fax#" + to_FaxIds + "@tcdhl.com";
            else
                faxMailIds = "ifax#" + to_FaxIds + "@tcdhl.com";
            try {
                sendMail(fromEmailId, faxMailIds, subject, message, "Quote" + file_tsmp + ".pdf", null);
                sentFaxList.add(to_FaxIds);
            } catch (FoursoftException fs) {
                //Logger.error(FILE_NAME,"Error While Sending Fax.."+fs.getMessage());
                logger.error(FILE_NAME + "Error While Sending Fax.." + fs.getMessage());
                fs.printStackTrace();
                unsentFaxList.add(to_FaxIds);
            }
        }
        //}
        //else
        //{
        int contactSize = contactList.size();
        for (int i = 0; i < contactSize; i++) {
            contactName = (String) contactList.get(i);
            /*message = "Dear "+contactName+",\n\nThank you for the opportunity to provide this Quotation. All information is contained within the attachment."+
             " Should you have any queries, please do not hesitate to contact us.\n\n\nRegards,\n"+creatorDetails+"\n"+terminalAddress;*/
            // message = "Dear "+contactName+",\n\n"+finalDOB.getEmailText()+"\n\n\nRegards,\n"+creatorDetails+"\n"+terminalAddress;         
            if (finalDOB.getUpdatedReportDOB() != null) {
                body = "Dear " + (contactName != null ? contactName : "")
                        + ",\n\nThis is a replacement quotation reference " + request.getAttribute("quoteId")
                        + ",replacing " + finalDOB.getUpdatedReportDOB().getQuoteId() + ", due to a change in "
                        + (finalDOB.getEmailChargeName() != null ? finalDOB.getEmailChargeName()
                                : finalDOB.getUpdatedReportDOB().getChangeDesc())
                        + ",\n\n" + finalDOB.getEmailText() != null
                                ? finalDOB.getEmailText()
                                : "" + "\n\n\n" + masterDOB.getCreatorDetails() != null
                                        ? masterDOB.getCreatorDetails()
                                        : "" + "\n\n" + masterDOB.getCompanyName() != null
                                                ? masterDOB.getCompanyName()
                                                : "" + "\n" + masterDOB.getTerminalAddress() != null
                                                        ? masterDOB.getTerminalAddress()
                                                        : "" + "\n\n" + "Phone  "
                                                                + masterDOB.getPhoneNo() != null
                                                                        ? masterDOB.getPhoneNo()
                                                                        : "" + "\n" + "Fax    "
                                                                                + masterDOB.getFaxNo() != null
                                                                                        ? masterDOB.getFaxNo()
                                                                                        : "" + "\n" + "Mobile "
                                                                                                + masterDOB
                                                                                                        .getMobileNo() != null
                                                                                                                ? masterDOB
                                                                                                                        .getMobileNo()
                                                                                                                : "" + "\n\nEmail "
                                                                                                                        + masterDOB
                                                                                                                                .getUserEmailId() != null
                                                                                                                                        ? masterDOB
                                                                                                                                                .getUserEmailId()
                                                                                                                                        : ""; //@@Modified by Kameswari for the WPBN issue-61303
            } else {
                body = "Dear " + (contactName != null ? contactName : "") + ",\n\n"
                        + finalDOB.getEmailText() != null
                                ? finalDOB.getEmailText()
                                : "" + "\n\n\n" + masterDOB.getCreatorDetails() != null
                                        ? masterDOB.getCreatorDetails()
                                        : "" + "\n\n" + masterDOB.getCompanyName() != null
                                                ? masterDOB.getCompanyName()
                                                : "" + "\n" + masterDOB.getTerminalAddress() != null
                                                        ? masterDOB.getTerminalAddress()
                                                        : "" + "\n\n" + "Phone  "
                                                                + masterDOB.getPhoneNo() != null
                                                                        ? masterDOB.getPhoneNo()
                                                                        : "" + "\n" + "Fax    "
                                                                                + masterDOB.getFaxNo() != null
                                                                                        ? masterDOB.getFaxNo()
                                                                                        : "" + "\n" + "Mobile "
                                                                                                + masterDOB
                                                                                                        .getMobileNo() != null
                                                                                                                ? masterDOB
                                                                                                                        .getMobileNo()
                                                                                                                : "" + "\n\nEmail "
                                                                                                                        + masterDOB
                                                                                                                                .getUserEmailId() != null
                                                                                                                                        ? masterDOB
                                                                                                                                                .getUserEmailId()
                                                                                                                                        : ""; //@@Modified by Kameswari for the WPBN issue-61303

            }
            if ("on".equalsIgnoreCase(request.getParameter("email"))) {
                try {
                    sendMail(fromEmailId, (String) contactEmailList.get(i), subject, message,
                            "Quote" + file_tsmp + ".pdf", null);
                    sentEmailsList.add(contactEmailList.get(i));
                } catch (FoursoftException fs) {
                    //Logger.error(FILE_NAME,"Error While Sending Mail.."+fs.getMessage());
                    logger.error(FILE_NAME + "Error While Sending Mail.." + fs.getMessage());
                    fs.printStackTrace();
                    unsentEmailsList.add(contactEmailList.get(i));
                }
            }
            if ("on".equalsIgnoreCase(request.getParameter("fax"))) {
                if ("SG".equalsIgnoreCase(countryCode))
                    to_FaxIds = "fax#" + contactFaxList.get(i) + "@tcdhl.com";
                else
                    to_FaxIds = "ifax#" + contactFaxList.get(i) + "@tcdhl.com";
                try {
                    sendMail(fromEmailId, to_FaxIds, subject, message, "Quote" + file_tsmp + ".pdf", null);
                    sentFaxList.add(contactFaxList.get(i));
                } catch (FoursoftException fs) {
                    //Logger.error(FILE_NAME,"Error While Sending Fax.."+fs.getMessage());
                    logger.error(FILE_NAME + "Error While Sending Fax.." + fs.getMessage());
                    fs.printStackTrace();
                    unsentFaxList.add(
                            contactFaxList.get(i) != null ? contactFaxList.get(i) : "No Fax Number Provided");
                }
            }
        }
        //}
        returnList.add(sentEmailsList);
        returnList.add(unsentEmailsList);
        returnList.add(sentFaxList);
        returnList.add(unsentFaxList);

        // System.out.println("Before Sending Mail------------------------------>");

        // System.out.println("End of mail sending and PDF Generation --------------------------------->");

    } catch (Exception e) {
        e.printStackTrace();
        //Logger.error(FILE_NAME,"Error while generating the PDF"+e.toString());
        logger.error(FILE_NAME + "Error while generating the PDF" + e.toString());
        //return 0;
        //throw new Exception("Error while generating PDF format");
    }
    return returnList;
}

From source file:QMSQuoteController.java

License:Open Source License

private int doPDFGeneration(QuoteFinalDOB finalDOB, HttpServletRequest request, HttpServletResponse response)
        throws Exception {

    int mailFlag = 0;
    int faxFlag = 0;
    int printFlag = 0;
    int returnFlag = 3;
    String transitTime = null;//from www.ja va  2  s. c  om
    String[] contents = null;
    String[] levels = null;
    String[] aligns = null;
    String[] headFoot = null;
    //@@Added by Kameswari for the WPBN issue-61289
    ArrayList dobList = new ArrayList();
    QuoteAttachmentDOB attachmentDOB = null;
    //@@Added by Kameswari for the WPBN issue-146448
    ArrayList charges = null;
    int chargesSize = 0;
    QuoteCharges chargesDOB = null;
    ArrayList freightCharges = null;
    QuoteFreightLegSellRates legCharges = null;
    String str1[] = null;
    ArrayList frequency = new ArrayList();
    ArrayList carrier = new ArrayList();
    ArrayList transittime = new ArrayList();
    ArrayList ratevalidity = new ArrayList();
    ArrayList frequency_o = new ArrayList();
    ArrayList frequency_d = new ArrayList();
    ArrayList carrier_o = new ArrayList();
    ArrayList carrier_d = new ArrayList();
    ArrayList transit_o = new ArrayList();
    ArrayList transit_d = new ArrayList();
    ArrayList validity_o = new ArrayList();
    ArrayList validity_d = new ArrayList();
    int size = 0;
    //@@WPBN issue-146448
    ArrayList filesList = new ArrayList();
    File file = null;
    byte[] buffer = null;
    ArrayList bufferList = new ArrayList();
    ArrayList pdfFilesList = new ArrayList();
    HttpSession session = null;
    String percent = "";//Added by kiranv on 16/11/2011
    PdfWriter writer = null; //Method: doPDFGeneration Defect: PdfWriter is not closedSuggestion: Close and nullify the writer in the finally block.
    //@@ Added by subrahmanyam for the WPBN ISSUE: 146460 on 29/01/2009    
    QMSQuoteSessionHome home = null;
    QMSQuoteSession remote = null;
    //@@ Ended by subrahmanyam for the WPBN ISSUE: 146460 on 29/01/2009   

    //@@ WPBN issue-61289
    try {

        DecimalFormat df = new DecimalFormat("###,###,###,##0.00");
        QuoteHeader headerDOB = finalDOB.getHeaderDOB();
        QuoteMasterDOB masterDOB = finalDOB.getMasterDOB();
        ESupplyDateUtility eSupplyDateUtility = new ESupplyDateUtility();
        ESupplyGlobalParameters loginbean = (ESupplyGlobalParameters) request.getSession()
                .getAttribute("loginbean");
        eSupplyDateUtility.setPatternWithTime("DD-MONTH-YYYY");
        //eSupplyDateUtility.setPatternWithTime(loginbean.getUserPreferences().getDateFormat());
        //@@ Commented & Added by subrahmanyam for the Effective pbn Issue 212006 on # 26-Jul-10
        /* String[] strDate  = eSupplyDateUtility.getDisplayStringArray(headerDOB.getDateOfQuotation());
        String[] effDate  = eSupplyDateUtility.getDisplayStringArray(headerDOB.getEffDate());
        */
        String[] strDate = null;
        String[] effDate = null;
        if ("View".equalsIgnoreCase(request.getParameter("Operation"))) {
            //@@Modified by kiran.v on 05/08/2011 for Wpbn Issue-   256087
            if ("PDF".equalsIgnoreCase(request.getParameter("pdf"))) {
                strDate = eSupplyDateUtility.getDisplayStringArray(masterDOB.getCreatedDate());
                //   effDate  = eSupplyDateUtility.getDisplayStringArray(headerDOB.getEffDate());
                effDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getEffDate());
            } else {

                strDate = eSupplyDateUtility.getDisplayStringArray(masterDOB.getCreatedDate());
                effDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getEffDate());

            } //@@Ended by kiran.v

        } else {
            strDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getDateOfQuotation());
            effDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getEffDate());

        }

        String[] validDate;
        String validUptoStr = null;
        if (headerDOB.getValidUpto() != null) {
            validDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getValidUpto());
            validUptoStr = validDate[0];
        }

        StringBuffer attentionTo = new StringBuffer("");
        if (masterDOB.getCustContactNames() != null) {
            for (int i = 0; i < masterDOB.getCustContactNames().length; i++) {
                attentionTo.append(
                        masterDOB.getCustContactNames()[i] != null ? masterDOB.getCustContactNames()[i] : "");
                if (i != (masterDOB.getCustContactNames().length - 1))
                    attentionTo.append(",");
            }
        }
        charges = finalDOB.getLegDetails();

        chargesSize = charges.size();
        // System.out.println("Before Document Objec--------------------------->");
        Document document = new Document(PageSize.A4, 54f, 54f, 68.4f, 68.4f);//@@ 36 points represent 0.5 inch
        String PDF_FILE_NAME = "Approved.pdf";
        document.addTitle("Approved Report");
        document.addSubject("Report PDF");
        document.addKeywords("Test, Key Words");
        document.addAuthor("QuoteShop");
        document.addCreator("QuoteShop");
        document.addCreationDate();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ByteArrayOutputStream baosFile = new ByteArrayOutputStream();
        writer = PdfWriter.getInstance(document, baos);
        // int b = writer.getPageNumber();
        baos.close();

        document.open();
        // PdfFileStamp fileStamp = new PdfFileStamp("Approved.pdf");

        //PdfPageEventHelper helper

        //writer.setPageEvent(new PdfPageEventHelper());

        //document.setMargins(15,15,15,15);            
        // Draw a rectangle inside the page's margins.
        //PdfContentByte cb = writer.getDirectContent();
        //cb.rectangle (document.left (), document.bottom (), document.right ()-document.left (),document.top ()-document.bottom ());
        //cb.stroke ();
        int[] widths = { 12, 12, 12, 12, 12, 12, 28 };
        Table mainT = new Table(7);
        mainT.setWidth(100);
        mainT.setWidths(widths);
        mainT.setBorderColor(Color.white);
        mainT.setPadding(1);
        mainT.setSpacing(0);

        Phrase headingPhrase = new Phrase("", FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.BLACK));
        Cell cellHeading = new Cell(headingPhrase);
        cellHeading.setBorderColor(new Color(255, 255, 255));
        cellHeading.setHorizontalAlignment(cellHeading.ALIGN_CENTER);
        cellHeading.setBorderWidth(0);
        cellHeading.setColspan(6);
        mainT.addCell(cellHeading);

        Cell imageCell = new Cell();
        java.net.URL url = getServletConfig().getServletContext().getResource("/images/DHLlogo.gif");
        Image img0 = Image.getInstance(url);
        img0.setAlignment(Image.ALIGN_RIGHT);

        //imageCell.setWidth("");
        imageCell.setColspan(1);
        imageCell.setHorizontalAlignment(imageCell.ALIGN_RIGHT);
        imageCell.add(img0);
        imageCell.setBorderWidth(0);
        imageCell.setBorderWidth(0);
        imageCell.setNoWrap(true);
        mainT.addCell(imageCell);
        mainT.setAlignment(mainT.ALIGN_CENTER);
        document.add(mainT);

        // System.out.println("After Image && Before Content--------------------------->");

        Table partCountry = new Table(1, 6);
        partCountry.setBorderWidth(0);
        partCountry.setWidth(100);
        partCountry.setBorderColor(Color.black);
        partCountry.setPadding(1);
        partCountry.setSpacing(0);
        partCountry.setAutoFillEmptyCells(true);
        //partCountry.setTableFitsPage(true);
        partCountry.setAlignment(partCountry.ALIGN_CENTER);
        partCountry.setBorderWidth(0);
        ;
        Cell cellCountry;

        String shipmentMode = "";
        if (!finalDOB.isMultiModalQuote()) {
            if (finalDOB.getMasterDOB().getShipmentMode() == 1) {
                shipmentMode = "AIR FREIGHT PROPOSAL";
                transitTime = "Approximate Transit Time";
            } else if (finalDOB.getMasterDOB().getShipmentMode() == 2) {
                shipmentMode = "SEA FREIGHT PROPOSAL";
                transitTime = "Approximate Transit Days";
            } else if (finalDOB.getMasterDOB().getShipmentMode() == 4) {
                shipmentMode = "TRUCK FREIGHT PROPOSAL";
                transitTime = "Approximate Transit Time";
            }
        } else {
            shipmentMode = " MULTI-MODAL FREIGHT PROPOSAL ";
            transitTime = "Approximate Transit time and Days";

        }

        Chunk chk = new Chunk(shipmentMode, FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
        partCountry.addCell(cellCountry);

        if ("MY".equalsIgnoreCase(masterDOB.getCountryId())) {
            chk = new Chunk(
                    (headerDOB.getOriginCountry() != null ? headerDOB.getOriginCountry().toUpperCase() : "")
                            + " TO "
                            + (headerDOB.getDestinationCountry() != null
                                    ? headerDOB.getDestinationCountry().toUpperCase()
                                    : ""),
                    FontFactory.getFont("ARIAL", 16, Font.BOLD, Color.BLUE));
            cellCountry = new Cell(chk);
            cellCountry.setWidth("100");
            cellCountry.setBorderWidth(0);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(13.0f);//@@Do Not Decrease.
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            partCountry.addCell(cellCountry);

            cellCountry = new Cell("");
            cellCountry.setBorderWidth(0);
            cellCountry.setLeading(5.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk(headerDOB.getCustomerName(),
                    FontFactory.getFont("ARIAL", 14, Font.BOLD, Color.BLUE));
            cellCountry = new Cell(chk);
            cellCountry.setHeader(true);
            cellCountry.setWidth("100");
            cellCountry.setBorderWidth(0);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(10.0f);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            partCountry.addCell(cellCountry);

            chk = new Chunk("ATTENTION TO: " + attentionTo.toString(),
                    FontFactory.getFont("ARIAL", 14, Font.BOLD, Color.BLUE));
            cellCountry = new Cell(chk);
            cellCountry.setWidth("100");
            cellCountry.setBorderWidth(0);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(10.0f);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            partCountry.addCell(cellCountry);
        } else {
            chk = new Chunk(
                    (headerDOB.getOriginCountry() != null ? headerDOB.getOriginCountry().toUpperCase() : "")
                            + " TO "
                            + (headerDOB.getDestinationCountry() != null
                                    ? headerDOB.getDestinationCountry().toUpperCase()
                                    : ""),
                    FontFactory.getFont("ARIAL", 16, Font.BOLD, Color.RED));
            cellCountry = new Cell(chk);
            cellCountry.setWidth("100");
            cellCountry.setBorderWidth(0);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(13.0f);//@@Do Not Decrease.
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            partCountry.addCell(cellCountry);

            cellCountry = new Cell("");
            cellCountry.setBorderWidth(0);
            cellCountry.setLeading(5.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk(headerDOB.getCustomerName(),
                    FontFactory.getFont("ARIAL", 14, Font.BOLD, Color.RED));
            cellCountry = new Cell(chk);
            cellCountry.setHeader(true);
            cellCountry.setWidth("100");
            cellCountry.setBorderWidth(0);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(10.0f);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            partCountry.addCell(cellCountry);

            chk = new Chunk("ATTENTION TO: " + attentionTo.toString(),
                    FontFactory.getFont("ARIAL", 14, Font.BOLD, Color.RED));
            cellCountry = new Cell(chk);
            cellCountry.setWidth("100");
            cellCountry.setBorderWidth(0);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(10.0f);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            partCountry.addCell(cellCountry);
        }
        cellCountry = new Cell("");
        cellCountry.setBorderWidth(0);
        cellCountry.setLeading(5.0f);
        partCountry.addCell(cellCountry);

        chk = new Chunk("QUOTE REFERENCE: " + masterDOB.getQuoteId(),
                FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
        partCountry.addCell(cellCountry);
        chk = new Chunk("DATE OF QUOTATION: " + strDate[0],
                FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
        partCountry.addCell(cellCountry);

        document.add(partCountry);

        contents = masterDOB.getContentOnQuote();
        levels = masterDOB.getLevels();
        aligns = masterDOB.getAlign();
        headFoot = masterDOB.getHeaderFooter();
        Table content = null;
        if (contents != null && contents.length > 0) {
            content = new Table(1);
            content.setOffset(5);
            content.setWidth(100);
            content.setPadding(1);
            content.setSpacing(0);
            content.setBackgroundColor(Color.WHITE);
            content.setBorderColor(Color.black);
            content.setBorderWidth(1f);
            Cell cellContent = null;
            chk = null;
            int headFootLen = headFoot.length;
            for (int i = 0; i < headFootLen; i++) {
                if (headFoot[i] != null && "H".equalsIgnoreCase(headFoot[i])) {
                    chk = new Chunk(contents[i], FontFactory.getFont("ARIAL", 7, Font.ITALIC, Color.BLACK));
                    cellContent = new Cell(chk);
                    cellContent.setBorder(0);
                    cellContent.setLeading(8.0f);
                    cellContent.setBackgroundColor(Color.LIGHT_GRAY);
                    if ("L".equalsIgnoreCase(aligns[i]))
                        cellContent.setHorizontalAlignment(cellContent.ALIGN_LEFT);
                    else if ("C".equalsIgnoreCase(aligns[i]))
                        cellContent.setHorizontalAlignment(cellContent.ALIGN_CENTER);
                    else if ("R".equalsIgnoreCase(aligns[i]))
                        cellContent.setHorizontalAlignment(cellContent.ALIGN_RIGHT);
                    content.addCell(cellContent);
                }
            }
            document.add(content);
        }
        //@@Added by Kameswari for the WPBN issue-146448 on 03/12/08
        for (int i = 0; i < chargesSize; i++) {
            legCharges = (QuoteFreightLegSellRates) charges.get(i);

            freightCharges = legCharges.getFreightChargesList();
            chargesDOB = (QuoteCharges) freightCharges.get(0);
            if (chargesDOB.getValidUpto() != null) {
                str1 = eSupplyDateUtility.getDisplayStringArray(chargesDOB.getValidUpto());
            }
            ///////////////////////////////////////////Second Table////////////////////////////
            if (chargesSize > 1) {
                if ("Y".equalsIgnoreCase(chargesDOB.getFrequencyChecked())
                        || "on".equalsIgnoreCase(chargesDOB.getFrequencyChecked())) {
                    frequency.add(chargesDOB.getFrequency());
                    frequency_o.add(legCharges.getOrigin());
                    frequency_d.add(legCharges.getDestination());
                }
                if ("Y".equalsIgnoreCase(chargesDOB.getTransitTimeChecked())
                        || "on".equalsIgnoreCase(chargesDOB.getTransitTimeChecked())) {
                    transittime.add(chargesDOB.getTransitTime());
                    transit_o.add(legCharges.getOrigin());
                    transit_d.add(legCharges.getDestination());
                }
                if ("Y".equalsIgnoreCase(chargesDOB.getCarrierChecked())
                        || "on".equalsIgnoreCase(chargesDOB.getCarrierChecked())) {
                    carrier.add(chargesDOB.getCarrier());
                    carrier_o.add(legCharges.getOrigin());
                    carrier_d.add(legCharges.getDestination());
                }
                if ("Y".equalsIgnoreCase(chargesDOB.getRateValidityChecked())
                        || "on".equalsIgnoreCase(chargesDOB.getRateValidityChecked())) {
                    if (chargesDOB.getValidUpto() != null) {
                        str1 = eSupplyDateUtility.getDisplayStringArray(chargesDOB.getValidUpto());
                    }
                    ratevalidity.add(str1[0]);
                    validity_o.add(legCharges.getOrigin());
                    validity_d.add(legCharges.getDestination());
                }
            } else {

                if ("Y".equalsIgnoreCase(chargesDOB.getFrequencyChecked())
                        || "on".equalsIgnoreCase(chargesDOB.getFrequencyChecked())) {
                    frequency.add(chargesDOB.getFrequency());
                }
                if ("Y".equalsIgnoreCase(chargesDOB.getTransitTimeChecked())
                        || "on".equalsIgnoreCase(chargesDOB.getTransitTimeChecked())) {
                    transittime.add(chargesDOB.getTransitTime());
                }
                if ("Y".equalsIgnoreCase(chargesDOB.getCarrierChecked())
                        || "on".equalsIgnoreCase(chargesDOB.getCarrierChecked())) {
                    carrier.add(chargesDOB.getCarrier());
                }
                if ("Y".equalsIgnoreCase(chargesDOB.getRateValidityChecked())
                        || "on".equalsIgnoreCase(chargesDOB.getRateValidityChecked())) {
                    if (chargesDOB.getValidUpto() != null) {
                        str1 = eSupplyDateUtility.getDisplayStringArray(chargesDOB.getValidUpto());
                        ratevalidity.add(str1[0]);
                    }

                }

            }
        } // partCountry  =  new Table(2,13);
        size = frequency.size() + transittime.size() + carrier.size() + ratevalidity.size();

        partCountry = new Table(2, 13 + size);
        //@@WPBN issue-146448 on 03/12/08
        partCountry.setOffset(5);
        partCountry.setWidth(100);
        partCountry.setPadding(1);
        partCountry.setSpacing(0);
        partCountry.setBackgroundColor(Color.WHITE);
        partCountry.setBorderColor(Color.black);
        partCountry.setBorderWidth(1f);

        chk = new Chunk("Prepared By: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setBackgroundColor(Color.lightGray);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);

        chk = new Chunk(
                "   " + (headerDOB.getPreparedBy() != null ? headerDOB.getPreparedBy().toUpperCase() : ""),
                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);

        chk = new Chunk("SERVICE INFORMATION: ", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setColspan(2);
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
        cellCountry.setBackgroundColor(Color.ORANGE);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);

        chk = new Chunk("Agent: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setBackgroundColor(Color.lightGray);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);

        chk = new Chunk("   " + (headerDOB.getAgent() != null ? headerDOB.getAgent().toUpperCase() : ""),
                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);

        //@@ Added by subrahmanyam for the WPBN ISSUE: 150460 ON 23/12/2008                
        if ("EXW".equalsIgnoreCase(headerDOB.getIncoTerms()) || "FAS".equalsIgnoreCase(headerDOB.getIncoTerms())
                || "FCA".equalsIgnoreCase(headerDOB.getIncoTerms())
                || "FOB".equalsIgnoreCase(headerDOB.getIncoTerms())) {
            chk = new Chunk("Place Of Acceptance: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);
        } else {
            chk = new Chunk("Place Of Delivery: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);
        }
        //@@ Ended by subrahmanyam for the WPBN ISSUE: 150460 ON 23/12/2008    

        chk = new Chunk("   " + (headerDOB.getCargoAcceptancePlace() != null
                ? headerDOB.getCargoAcceptancePlace().toUpperCase()
                : ""), FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);

        chk = new Chunk("Origin Port: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setBackgroundColor(Color.lightGray);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);

        chk = new Chunk("   "
                + ((headerDOB.getOriginPortName() != null ? headerDOB.getOriginPortName().toUpperCase() + ", "
                        : ""))
                + (headerDOB.getOriginPortCountry() != null ? headerDOB.getOriginPortCountry().toUpperCase()
                        : ""),
                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);

        chk = new Chunk("Destination Port: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setBackgroundColor(Color.lightGray);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);

        chk = new Chunk("   "
                + ((headerDOB.getDestPortName() != null ? headerDOB.getDestPortName().toUpperCase() + ", "
                        : ""))
                + (headerDOB.getDestPortCountry() != null ? headerDOB.getDestPortCountry().toUpperCase() : ""),
                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);

        // @@Commented by subrahmanyam for the enhancement #148546 on 09/12/2008            
        /* chk = new Chunk("Routing: ",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
         cellCountry = new Cell(chk);
         cellCountry.setBackgroundColor(Color.lightGray);
         cellCountry.setNoWrap(true); cellCountry.setLeading(8.0f);
         partCountry.addCell(cellCountry);          
         chk = new Chunk("   "+(headerDOB.getRouting()!=null?headerDOB.getRouting():""),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
         cellCountry = new Cell(chk);
         cellCountry.setNoWrap(true); cellCountry.setLeading(8.0f);
         partCountry.addCell(cellCountry);
                
                
         chk = new Chunk("   "+(headerDOB.getRouting()!=null?headerDOB.getRouting().toUpperCase():""),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
         cellCountry = new Cell(chk);
         cellCountry.setNoWrap(true); cellCountry.setLeading(8.0f);
         partCountry.addCell(cellCountry);*/
        //@@ Ended by subrahmanyam for the enhanement #148546 on 09/12/2008             

        chk = new Chunk("Commodity or Product: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setBackgroundColor(Color.lightGray);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);

        chk = new Chunk(
                "   " + (headerDOB.getCommodity() != null ? headerDOB.getCommodity().toUpperCase() : ""),
                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);

        chk = new Chunk("Type Of Service Quoted: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setBackgroundColor(Color.lightGray);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);
        //@@Added by kiran.v on 04/11/2011 for Wpbn Issue -277534
        int index = headerDOB.getTypeOfService() != null ? headerDOB.getTypeOfService().length() : 0;
        if (index < 47)
            chk = new Chunk("   "
                    + (headerDOB.getTypeOfService() != null ? headerDOB.getTypeOfService().toUpperCase() : ""),
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        else
            chk = new Chunk(
                    "   " + (headerDOB.getTypeOfService() != null
                            ? headerDOB.getTypeOfService().toUpperCase().substring(0, 47) + "\n   "
                                    + headerDOB.getTypeOfService().toUpperCase().substring(47)
                            : ""),
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        // ended by kiran.v
        cellCountry = new Cell(chk);
        //@@commented by kiran.v on 03/11/2011 for Wpbn Issue
        //cellCountry.setNoWrap(true); 
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);

        //@@Added by Kameswari for the WPBN issue-146448 on 03/12/08
        int freqSize = frequency.size();
        for (int i = 0; i < freqSize; i++) {
            if (chargesSize > 1) {
                chk = new Chunk("Frequency (" + frequency_o.get(i) + "-" + frequency_d.get(i) + ")",
                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cellCountry = new Cell(chk);
                cellCountry.setBackgroundColor(Color.lightGray);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(8.0f);
                partCountry.addCell(cellCountry);
                chk = new Chunk("   " + frequency.get(i).toString().toUpperCase(),
                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cellCountry = new Cell(chk);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(8.0f);
                partCountry.addCell(cellCountry);
            } else {
                chk = new Chunk("Frequency ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cellCountry = new Cell(chk);
                cellCountry.setBackgroundColor(Color.lightGray);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(8.0f);
                partCountry.addCell(cellCountry);
                chk = new Chunk("   " + frequency.get(i).toString().toUpperCase(),
                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cellCountry = new Cell(chk);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(8.0f);
                partCountry.addCell(cellCountry);
            }
        }
        int carierSize = carrier.size();
        for (int i = 0; i < carierSize; i++) {
            if (chargesSize > 1) {
                chk = new Chunk("Carrier (" + carrier_o.get(i) + "-" + carrier_d.get(i) + ")",
                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cellCountry = new Cell(chk);
                cellCountry.setBackgroundColor(Color.lightGray);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(8.0f);
                partCountry.addCell(cellCountry);
                chk = new Chunk("   " + carrier.get(i).toString().toUpperCase(),
                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cellCountry = new Cell(chk);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(8.0f);
                partCountry.addCell(cellCountry);
            } else {
                chk = new Chunk("Carrier ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cellCountry = new Cell(chk);
                cellCountry.setBackgroundColor(Color.lightGray);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(8.0f);
                partCountry.addCell(cellCountry);
                chk = new Chunk("   " + carrier.get(i).toString().toUpperCase(),
                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cellCountry = new Cell(chk);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(8.0f);
                partCountry.addCell(cellCountry);
            }
        }
        int tTimeSize = transittime.size();
        for (int i = 0; i < tTimeSize; i++) {
            if (chargesSize > 1) {
                chk = new Chunk(transitTime + "(" + transit_o.get(i) + "-" + transit_d.get(i) + ")",
                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cellCountry = new Cell(chk);
                cellCountry.setBackgroundColor(Color.lightGray);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(8.0f);
                partCountry.addCell(cellCountry);
                chk = new Chunk("   " + transittime.get(i).toString().toUpperCase(),
                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cellCountry = new Cell(chk);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(8.0f);
                partCountry.addCell(cellCountry);
            } else {
                chk = new Chunk(transitTime + " ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cellCountry = new Cell(chk);
                cellCountry.setBackgroundColor(Color.lightGray);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(8.0f);
                partCountry.addCell(cellCountry);
                chk = new Chunk("   " + transittime.get(i).toString().toUpperCase(),
                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cellCountry = new Cell(chk);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(8.0f);
                partCountry.addCell(cellCountry);
            }
        }
        int rTvalSize = ratevalidity.size();
        for (int i = 0; i < rTvalSize; i++) {
            if (chargesSize > 1) {
                chk = new Chunk("Freight Rate Validity(" + validity_o.get(i) + "-" + validity_d.get(i) + ")",
                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cellCountry = new Cell(chk);
                cellCountry.setBackgroundColor(Color.lightGray);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(8.0f);
                partCountry.addCell(cellCountry);
                chk = new Chunk("   " + ratevalidity.get(i).toString().toUpperCase(),
                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cellCountry = new Cell(chk);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(8.0f);
                partCountry.addCell(cellCountry);
            } else {
                chk = new Chunk("Freight Rate Validity ",
                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cellCountry = new Cell(chk);
                cellCountry.setBackgroundColor(Color.lightGray);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(8.0f);
                partCountry.addCell(cellCountry);
                chk = new Chunk("   " + ratevalidity.get(i).toString().toUpperCase(),
                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cellCountry = new Cell(chk);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(8.0f);
                partCountry.addCell(cellCountry);
            }
        }
        //@@WPBN issue-146448 on 03/12/08
        chk = new Chunk("Incoterms: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setBackgroundColor(Color.lightGray);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);

        chk = new Chunk(
                "   " + (headerDOB.getIncoTerms() != null ? headerDOB.getIncoTerms().toUpperCase() : ""),
                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);

        chk = new Chunk("Notes: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setBackgroundColor(Color.lightGray);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);

        //@@ COmmented by subrahmanyam for the wpbn issue:145510  on 10/12/2008     
        /*  chk = new Chunk("   "+(headerDOB.getNotes()!=null?headerDOB.getNotes().toUpperCase()+'\n'+"nnnnnnnnnn":""),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setNoWrap(true); cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);*/
        //@@ Added by subrahmanyam for the wpbn issue: 145510on 10/12/2008          
        chk = new Chunk(" " + (headerDOB.getNotes() != null ? headerDOB.getNotes().toUpperCase() + '\n' : ""),
                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);
        //@@ ended by subrahmanyam for the wpbn issue: 145510  on 10/12/2008 

        chk = new Chunk("Date Effective: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setBackgroundColor(Color.lightGray);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);

        chk = new Chunk("   " + (effDate[0] != null ? effDate[0] : ""),
                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);

        chk = new Chunk("Validity Of Quote: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setBackgroundColor(Color.lightGray);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);

        chk = new Chunk("   " + (validUptoStr != null ? validUptoStr : "VALID UNTIL FURTHER NOTICE"),
                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(8.0f);
        partCountry.addCell(cellCountry);

        if (headerDOB.getPaymentTerms() != null && headerDOB.getPaymentTerms().trim().length() != 0) {
            chk = new Chunk("Payment Terms: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("   " + headerDOB.getPaymentTerms(),
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);
        }

        document.add(partCountry);
        partCountry.complete();
        //System.out.println("After Page Country-------------------------------->");
        //Origin Charges
        //document.setMargins(10,10,10,10);
        // b1= writer.getPageNumber();

        ArrayList originCharges = finalDOB.getOriginChargesList();

        int[] originIndices = finalDOB.getSelectedOriginChargesListIndices();
        int originChargesSize = 0;
        if (originIndices != null)
            originChargesSize = originIndices.length;
        else
            originChargesSize = 0;

        //Destination
        ArrayList destCharges = finalDOB.getDestChargesList();
        int[] destIndices = finalDOB.getSelctedDestChargesListIndices();
        int destChargesSize = 0;
        if (destIndices != null)
            destChargesSize = destIndices.length;
        else
            destChargesSize = 0;

        //@@Added by Kameswari for the WPBN issue-146448
        charges = finalDOB.getLegDetails();
        chargesSize = charges.size();

        Table chargeCountry = null;
        //Table chargeCountry1= null;
        Cell cell = null;
        // float cellWidths[]   = {40,20,10,15,25};//@@Added by Kameswari for the WPBN issue - on 12/11/08
        float cellWidths[] = { 40, 20, 10, 15, 25, 15 };
        float cellWidths1 = 40;

        /* chk = new Chunk("Charge Name",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
         Cell cell = new Cell(chk);
         cell.setHeader(true);
         cell.setBackgroundColor(Color.ORANGE);
         cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
         chargeCountry.addCell(cell);
                 
         chk = new Chunk("Breakpoint",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
          cell = new Cell(chk);
         cell.setHeader(true);
         cell.setBackgroundColor(Color.ORANGE);
         cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
         chargeCountry.addCell(cell);
                 
         chk = new Chunk("Currency",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
          cell = new Cell(chk);
         cell.setHeader(true);
         cell.setBackgroundColor(Color.ORANGE);
         cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
         chargeCountry.addCell(cell);
                 
         chk = new Chunk("Rate",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
          cell = new Cell(chk);
         cell.setHeader(true);
         cell.setBackgroundColor(Color.ORANGE);
         cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
         chargeCountry.addCell(cell);
                 
         chk = new Chunk("Basis",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
          cell = new Cell(chk);
         cell.setHeader(true);
         cell.setBackgroundColor(Color.ORANGE);
         cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
         chargeCountry.addCell(cell);           
                 
         chargeCountry.endHeaders();
         System.out.println("End of Charge Headers--------------------------------->");
         System.out.println("");*/
        //    boolean b3 = document.newPage();
        //  QuoteCharges chargesDOB           = null;
        ArrayList originChargeInfo = null;
        int originChargesInfoSize = 0;
        QuoteChargeInfo chargeInfo = null;
        if (originChargesSize > 0) {
            /*  if(b1>1)
             {
              chk = new Chunk("QUOTE REFERENCE:"+masterDOB.getQuoteId(),FontFactory.getFont("ARIAL", 10, Font.BOLD,Color.BLACK));
             cell = new Cell(chk);
             cell.setColspan(5);cell.setLeading(10.0f);
             cell.setBackgroundColor(Color.WHITE);                
             cell.setHeader(true);
             cell.setBorder(0);
             chargeCountry.addCell(cell); 
             }*/
            // chargeCountry  = new Table(5);
            chargeCountry = new Table(6);
            chargeCountry.setWidth(100);
            chargeCountry.setWidths(cellWidths);
            chargeCountry.setPadding(1);
            chargeCountry.setSpacing(0);
            chargeCountry.setOffset(5);
            chargeCountry.setBackgroundColor(Color.WHITE);
            chargeCountry.setBorderColor(Color.black);
            chargeCountry.setDefaultHorizontalAlignment(Element.ALIGN_CENTER);
            chargeCountry.setBorderWidth(1f);

            //@@Commented and Modified by Kameswari for the internal issue on 09/04/09
            /*chk = new Chunk("ORIGIN CHARGES",FontFactory.getFont("ARIAL", 8, Font.BOLD,Color.BLACK));
            cell = new Cell(chk);
            //cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
            cell.setColspan(6);
            cell.setLeading(10.0f);
            cell.setBackgroundColor(Color.ORANGE);                
            cell.setHeader(true);
            chargeCountry.addCell(cell);*/
            //   boolean b = document.newPage();

            chk = new Chunk("Origin Charges", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cell = new Cell(chk);
            //cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
            // cell.setColspan(6);
            cell.setLeading(10.0f);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setHeader(true);
            chargeCountry.addCell(cell);
            chk = new Chunk("Weight Break Slab", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cell = new Cell(chk);
            //cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
            // cell.setColspan(6);
            cell.setLeading(10.0f);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setHeader(true);
            chargeCountry.addCell(cell);
            chk = new Chunk("Currency", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cell = new Cell(chk);
            //cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
            // cell.setColspan(6);
            cell.setLeading(10.0f);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setHeader(true);
            chargeCountry.addCell(cell);
            chk = new Chunk("Charge Rate", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cell = new Cell(chk);
            //cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
            // cell.setColspan(6);
            cell.setLeading(10.0f);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setHeader(true);
            chargeCountry.addCell(cell);
            chk = new Chunk("Basis", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell = new Cell(chk);
            //cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
            // cell.setColspan(6);
            cell.setLeading(10.0f);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setHeader(true);
            chargeCountry.addCell(cell);
            chk = new Chunk("Density Ratio", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cell = new Cell(chk);
            //cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
            // cell.setColspan(6);
            cell.setLeading(10.0f);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setHeader(true);
            chargeCountry.addCell(cell);

            //chargeCountry.endHeaders();

            for (int i = 0; i < originChargesSize; i++) {
                if (originIndices[i] != -1) {
                    chargesDOB = (QuoteCharges) originCharges.get(originIndices[i]);
                    logger.info("Origin Charges doPDFGeneration::" + i + ":" + chargesDOB); // newly added                  
                    originChargeInfo = chargesDOB.getChargeInfoList();
                    originChargesInfoSize = originChargeInfo.size();
                    int m = 0;//146455
                    String breakPoint = null;//146455
                    for (int k = 0; k < originChargesInfoSize; k++) {
                        chargeInfo = (QuoteChargeInfo) originChargeInfo.get(k);
                        if (k == 0) {
                            if ("B".equalsIgnoreCase(chargesDOB.getSellBuyFlag())
                                    || "S".equalsIgnoreCase(chargesDOB.getSellBuyFlag()))
                                chk = new Chunk(
                                        chargesDOB.getExternalName() != null ? chargesDOB.getExternalName()
                                                : "",
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            else
                                chk = new Chunk(
                                        chargesDOB.getChargeDescriptionId() != null
                                                ? chargesDOB.getChargeDescriptionId()
                                                : "",
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));

                            cell = new Cell(chk);
                            cell.setLeading(9.0f);
                            //cell.setRowspan(originChargesInfoSize);
                            //cell.setBorderWidth(0);
                            cell.setBackgroundColor(Color.lightGray);
                            cell.setHeader(true);
                            cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                            chargeCountry.addCell(cell);
                        } else {
                            cell = new Cell("");
                            cell.setLeading(8.0f);
                            cell.setBackgroundColor(Color.lightGray);
                            cell.setHeader(true);
                            cell.setBorderWidth(0);
                            chargeCountry.addCell(cell);
                        }
                        //@@ Commented by subrahmanyam for 146455 on 19/02/09
                        /* chk = new Chunk((chargeInfo.getBreakPoint()!=null && !"Absolute".equalsIgnoreCase(chargeInfo.getBreakPoint()) && !"Percent".equalsIgnoreCase(chargeInfo.getBreakPoint()))?chargeInfo.getBreakPoint().toUpperCase():"",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                         cell = new Cell(chk);cell.setLeading(8.0f);
                         cell.setBackgroundColor(Color.lightGray);
                         cell.setHeader(true);
                         chargeCountry.addCell(cell);*/
                        //@@ Added by subrahmanyam for 146455 on 19/02/09                      

                        if (chargeInfo.getBreakPoint().equalsIgnoreCase("MIN")) {
                            breakPoint = "Min";
                        }

                        else if (chargeInfo.getBreakPoint().equalsIgnoreCase("FLAT")) {
                            breakPoint = "Flat";
                        }

                        else if (chargeInfo.getBreakPoint().equalsIgnoreCase("MAX")) {
                            breakPoint = "Max";
                        } else if (chargeInfo.getBreakPoint().equalsIgnoreCase("CSF")) {
                            breakPoint = "Absolute";
                        } else if (chargeInfo.getBreakPoint().equalsIgnoreCase("SURCHARGE")) {
                            breakPoint = "Percent";
                        } else if (chargeInfo.getBreakPoint().equalsIgnoreCase("BASE")) {
                            breakPoint = "Base";
                        }

                        else {
                            breakPoint = chargeInfo.getBreakPoint();
                        }

                        chk = new Chunk(
                                breakPoint != null && !"Absolute".equalsIgnoreCase(breakPoint)
                                        && !"Percent".equalsIgnoreCase(breakPoint) ? breakPoint : "",
                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell = new Cell(chk);
                        cell.setLeading(8.0f);
                        cell.setBackgroundColor(Color.lightGray);
                        cell.setHeader(true);
                        chargeCountry.addCell(cell);
                        //@@ Ended by subrahmanyam for 146455 on 19/02/09                

                        chk = new Chunk(chargeInfo.getCurrency(),
                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell = new Cell(chk);
                        cell.setHeader(true);
                        cell.setLeading(8.0f);
                        //cell.setBackgroundColor(Color.lightGray);
                        chargeCountry.addCell(cell);
                        //@@Modified by kiran.v on 03/11/2011 for Wpbn Issue
                        // chk = new Chunk(df.format(chargeInfo.getSellRate())+(chargeInfo.isPercentValue()?" %":""),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                        //@@Added by kiran.v on 16/11/2011
                        percent = chargeInfo.isPercentValue() ? "%" : "";
                        chk = new Chunk(round1(chargeInfo.getSellRate(), percent) + (percent),
                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell = new Cell(chk);
                        cell.setHeader(true);
                        cell.setLeading(8.0f);
                        chargeCountry.addCell(cell);

                        chk = new Chunk(chargeInfo.getBasis() != null ? chargeInfo.getBasis() : "",
                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell = new Cell(chk);
                        cell.setHeader(true);
                        cell.setLeading(8.0f);
                        cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                        chargeCountry.addCell(cell);

                        //@@Added by Kameswari for the WPBN issue- on 12/11/08
                        chk = new Chunk(chargeInfo.getRatio() != null ? "1:" + chargeInfo.getRatio() : "",
                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell = new Cell(chk);
                        cell.setHeader(true);
                        cell.setLeading(8.0f);
                        cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                        chargeCountry.addCell(cell);

                    }
                }
            }
            document.add(chargeCountry);
        }

        // boolean b1 = document.newPage();

        //Freight Charges
        //document.setMargins(10,10,10,10);
        //System.out.println("After         Origin Charges --------------------------------->");
        int freightChargesSize = 0;
        int freightChargesInfoSize = 0;
        int[] frtIndices = null;
        //QuoteFreightLegSellRates       legCharges       = null;
        // ArrayList                      freightCharges = null;
        ArrayList freightChargeInfo = null;
        int m = 0;
        String breakPoint = null;
        String space = "";
        Table country = null;
        // b2= writer.getPageNumber();

        if (chargesSize > 0) {
            // chargeCountry  = new Table(5);//@@Added by Kameswari for the WPBN issue - on 12/11/08
            chargeCountry = new Table(6);
            chargeCountry.setWidth(100);
            chargeCountry.setWidths(cellWidths);
            chargeCountry.setPadding(1);
            chargeCountry.setSpacing(0);
            chargeCountry.setOffset(5);
            chargeCountry.setBackgroundColor(Color.WHITE);
            chargeCountry.setBorderColor(Color.black);
            chargeCountry.setDefaultHorizontalAlignment(Element.ALIGN_CENTER);
            chargeCountry.setBorderWidth(1f);
            chargeCountry.setTableFitsPage(true);//@@Added by kameswari 

            for (int i = 0; i < chargesSize; i++) {
                legCharges = (QuoteFreightLegSellRates) charges.get(i);
                freightCharges = legCharges.getFreightChargesList();

                frtIndices = legCharges.getSelectedFreightChargesListIndices();

                if (frtIndices != null)
                    freightChargesSize = frtIndices.length;
                else
                    freightChargesSize = 0;

                if (i == 0 && freightChargesSize > 0) {
                    //@@Commented and Modified by Kameswari for the internal issue on 09/04/09
                    /* chk = new Chunk("FREIGHT CHARGES",FontFactory.getFont("ARIAL", 8, Font.BOLD,Color.BLACK));
                     cell = new Cell(chk);
                     cell.setLeading(8.0f);
                     cell.setBackgroundColor(Color.ORANGE);
                    //cell.setColspan(5);//@@Added by Kameswari for the WPBN issue - on 12/11/08
                     cell.setColspan(6);
                     cell.setHeader(true);
                     chargeCountry.addCell(cell);*/
                    chk = new Chunk("Freight Charges",
                            FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                    cell = new Cell(chk);
                    //cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
                    // cell.setColspan(6);
                    cell.setLeading(10.0f);
                    cell.setBackgroundColor(Color.ORANGE);
                    cell.setHeader(true);
                    chargeCountry.addCell(cell);
                    chk = new Chunk("Weight Break Slab",
                            FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                    cell = new Cell(chk);
                    //cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
                    // cell.setColspan(6);
                    cell.setLeading(10.0f);
                    cell.setBackgroundColor(Color.ORANGE);
                    cell.setHeader(true);
                    chargeCountry.addCell(cell);
                    chk = new Chunk("Currency", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                    cell = new Cell(chk);
                    //cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
                    // cell.setColspan(6);
                    cell.setLeading(10.0f);
                    cell.setBackgroundColor(Color.ORANGE);
                    cell.setHeader(true);
                    chargeCountry.addCell(cell);
                    chk = new Chunk("Charge Rate", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                    cell = new Cell(chk);
                    //cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
                    // cell.setColspan(6);
                    cell.setLeading(10.0f);
                    cell.setBackgroundColor(Color.ORANGE);
                    cell.setHeader(true);
                    chargeCountry.addCell(cell);
                    chk = new Chunk("Basis", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                    cell = new Cell(chk);
                    //cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
                    // cell.setColspan(6);
                    cell.setLeading(10.0f);
                    cell.setBackgroundColor(Color.ORANGE);
                    cell.setHeader(true);
                    chargeCountry.addCell(cell);
                    chk = new Chunk("Density Ratio", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                    cell = new Cell(chk);
                    //cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
                    // cell.setColspan(6);
                    cell.setLeading(10.0f);
                    cell.setBackgroundColor(Color.ORANGE);
                    cell.setHeader(true);
                    chargeCountry.addCell(cell);

                    //chargeCountry.endHeaders();
                }
                for (int j = 0; j < freightChargesSize; j++) {
                    chargesDOB = (QuoteCharges) freightCharges.get(frtIndices[j]);
                    logger.info("Freight Charges doPDFGeneration::" + j + ":" + chargesDOB); // newly added
                    freightChargeInfo = chargesDOB.getChargeInfoList();
                    freightChargesInfoSize = freightChargeInfo.size();
                    int count = 0; //Added by subrahmanyam for 181430
                    String tempDesc = "";//Added by subrahmanyam for 181430
                    for (int k = 0; k < freightChargesInfoSize; k++) {
                        String temp = "";
                        if (k > 0) {
                            chargeInfo = (QuoteChargeInfo) freightChargeInfo.get(k - 1);
                            temp = chargeInfo.getRateDescription();

                        }
                        chargeInfo = (QuoteChargeInfo) freightChargeInfo.get(k);
                        if (k == 0) {
                            chk = new Chunk(legCharges.getOrigin() + "-" + legCharges.getDestination(),
                                    FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                            cell = new Cell(chk);
                            // cell.setColspan(5);//@@Added by Kameswari for the WPBN issue - on 12/11/08
                            cell.setColspan(6);
                            cell.setBackgroundColor(Color.WHITE);
                            cell.setLeading(8.0f);
                            chargeCountry.addCell(cell);
                            //@@ Commented by subrahmanyam for 146455 on 19/02/09                      
                            /*//chk = new Chunk(chargesDOB.getChargeDescriptionId()!=null?chargesDOB.getChargeDescriptionId():"Freight Rate",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                            chk = new Chunk(chargeInfo.getRateDescription(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                            cell = new Cell(chk);cell.setHeader(true);
                            //cell.setRowspan(freightChargesInfoSize);
                            //cell.setBorderWidth(0);
                            cell.setBackgroundColor(Color.lightGray);
                            cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                            cell.setLeading(9.0f);                         
                            chargeCountry.addCell(cell);*/
                            //@@Added by subrahmanyam for 146455 on 18/02/09
                            String fRate = "";
                            if ("FREIGHT RATE".equalsIgnoreCase(chargeInfo.getRateDescription())) {
                                fRate = "Freight Rate";
                            } else
                                fRate = chargeInfo.getRateDescription();
                            chk = new Chunk(fRate != null ? fRate : "",
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell = new Cell(chk);
                            cell.setHeader(true);
                            //cell.setRowspan(freightChargesInfoSize);
                            //cell.setBorderWidth(0);
                            cell.setBackgroundColor(Color.lightGray);
                            cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                            cell.setLeading(9.0f);
                            chargeCountry.addCell(cell);
                            //@@ Ended by subrahmanym for 146455 on 18/02/09
                        } else if (temp.equalsIgnoreCase(chargeInfo.getRateDescription())) {
                            cell = new Cell("");
                            cell.setBackgroundColor(Color.lightGray);
                            cell.setHeader(true);
                            cell.setBorderWidth(0);
                            cell.setLeading(9.0f);
                            chargeCountry.addCell(cell);
                        } else {
                            //@@ Commented by subrahmanyam for 146455 on 19/02/09  
                            /* chk = new Chunk(chargeInfo.getRateDescription(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                               cell = new Cell(chk);cell.setHeader(true);
                               //cell.setRowspan(freightChargesInfoSize);
                               //cell.setBorderWidth(0);
                               cell.setBackgroundColor(Color.lightGray);
                               cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                               cell.setLeading(9.0f);                         
                               chargeCountry.addCell(cell);*/
                            //@@Added by subrahmanyam for 146455 on 18/02/09                          
                            String rateDes = "";
                            if ("FUEL SURCHARGE".equalsIgnoreCase(chargeInfo.getRateDescription())) {
                                rateDes = "Fuel Surcharge";
                            } else if ("SECURITY SURCHARGE".equalsIgnoreCase(chargeInfo.getRateDescription())) {
                                rateDes = "Security Surcharge";
                            } else if ("C.A.F%".equalsIgnoreCase(chargeInfo.getRateDescription())
                                    || "CAF%".equalsIgnoreCase(chargeInfo.getRateDescription())) {
                                rateDes = "C.a.f%";
                            } else if ("B.A.F".equalsIgnoreCase(chargeInfo.getRateDescription())
                                    || "BAF".equalsIgnoreCase(chargeInfo.getRateDescription())) {
                                rateDes = "B.a.f";
                            } else if ("P.S.S".equalsIgnoreCase(chargeInfo.getRateDescription())
                                    || "PSS".equalsIgnoreCase(chargeInfo.getRateDescription())) {
                                rateDes = "P.s.s";
                            } else if ("C.S.F".equalsIgnoreCase(chargeInfo.getRateDescription())
                                    || "CSF".equalsIgnoreCase(chargeInfo.getRateDescription())) {
                                rateDes = "C.s.f";
                            } else {

                                rateDes = chargeInfo.getRateDescription();
                                rateDes = rateDes != null && rateDes.indexOf(".") != -1
                                        ? rateDes.substring(0, rateDes.length() - 3)
                                        : (rateDes != null && rateDes.indexOf("-") == -1) ? rateDes
                                                : rateDes.substring(0, rateDes.length() - 3); // Added by Gowtham to trim surcharge Description
                            }

                            chk = new Chunk(rateDes != null ? rateDes : "",
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell = new Cell(chk);
                            cell.setHeader(true);
                            //cell.setRowspan(freightChargesInfoSize);
                            //cell.setBorderWidth(0);
                            cell.setBackgroundColor(Color.lightGray);
                            cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                            cell.setLeading(9.0f);
                            chargeCountry.addCell(cell);
                            //@@ Ended by subrahmanym for 146455 on 18/02/09
                        }
                        /*if("FSBASIC".equalsIgnoreCase(chargeInfo.getBreakPoint())||"SSBASIC".equalsIgnoreCase(chargeInfo.getBreakPoint()))
                            chargeInfo.setBreakPoint("Basic Charge");
                        if("FSMIN".equalsIgnoreCase(chargeInfo.getBreakPoint())||"SSMIN".equalsIgnoreCase(chargeInfo.getBreakPoint()))
                            chargeInfo.setBreakPoint("Minimum");
                        if("FSKG".equalsIgnoreCase(chargeInfo.getBreakPoint())||"SSKG".equalsIgnoreCase(chargeInfo.getBreakPoint()))
                            chargeInfo.setBreakPoint("Flat Rate");*/

                        if (chargeInfo.getBreakPoint().equalsIgnoreCase("BAFM3")
                                || chargeInfo.getBreakPoint().equalsIgnoreCase("PSSM3")) {
                            //breakPoint = "Or";   // commented by subrahmanyam for the wpbn id: 181430 on 08-sep-09
                            // added by subrahmanyam for the wpbn id: 181430 on 08-sep-09
                            if (count == 0 || (count == 1
                                    && tempDesc.equalsIgnoreCase(chargeInfo.getRateDescription()))) {
                                breakPoint = "Flat";
                                count = 0;
                            } else
                                breakPoint = "Absolute";
                            //ended for 181430

                        } else if (chargeInfo.getBreakPoint().equalsIgnoreCase("CAF%")
                                || chargeInfo.getBreakPoint().equalsIgnoreCase("CAFPFPERCENT")) {
                            if (count == 0 || (count == 1
                                    && tempDesc.equalsIgnoreCase(chargeInfo.getRateDescription()))) {
                                breakPoint = "Percent";
                                count = 0;
                            } else
                                breakPoint = "Absolute";

                        }
                        //@@ Commented by subrahmanyam for 146455 on 19/02/09  
                        /*else if(chargeInfo.getBreakPoint().equalsIgnoreCase("BAFMIN")||chargeInfo.getBreakPoint().equalsIgnoreCase("CAFMIN")
                                   ||chargeInfo.getBreakPoint().equalsIgnoreCase("PSSMIN")||chargeInfo.getBreakPoint().equalsIgnoreCase("FSMIN")||chargeInfo.getBreakPoint().equalsIgnoreCase("SSMIN")
                                   )
                         {
                                breakPoint = "Min";
                         }*/
                        //@@Added by subrahmanyam for 146455 on 18/02/09  
                        else if (chargeInfo.getBreakPoint().equalsIgnoreCase("BAFMIN")
                                || chargeInfo.getBreakPoint().equalsIgnoreCase("CAFMIN")
                                || chargeInfo.getBreakPoint().equalsIgnoreCase("PSSMIN")
                                || chargeInfo.getBreakPoint().equalsIgnoreCase("FSMIN")
                                || chargeInfo.getBreakPoint().equalsIgnoreCase("SSMIN")
                                || chargeInfo.getBreakPoint().equalsIgnoreCase("MIN")
                                || chargeInfo.getBreakPoint().toUpperCase().endsWith("MIN")) // Added by gowtham to show surcharge description as min
                        {
                            // added by subrahmanyam for the wpbn id: 181430 on 08-sep-09
                            if (chargeInfo.getBreakPoint().equalsIgnoreCase("BAFMIN")
                                    || chargeInfo.getBreakPoint().equalsIgnoreCase("CAFMIN")
                                    || chargeInfo.getBreakPoint().equalsIgnoreCase("PSSMIN")) {
                                count = 1;
                                tempDesc = chargeInfo.getRateDescription();
                            }
                            //ended for 181430

                            breakPoint = "Min";
                        } else if (chargeInfo.getBreakPoint().equalsIgnoreCase("FSBASIC")
                                || chargeInfo.getBreakPoint().equalsIgnoreCase("SSBASIC")
                                || chargeInfo.getBreakPoint().toUpperCase().endsWith("BASIC")) //Added by gowtham to show surcharge description as min
                        {
                            breakPoint = "Basic";
                        }
                        /* else if(chargeInfo.getBreakPoint().equalsIgnoreCase("FSKG")||chargeInfo.getBreakPoint().equalsIgnoreCase("SSKG"))
                           {
                                  breakPoint = "Flat";
                        }*/
                        //Added by subrahmanyam for 154381
                        else if (chargeInfo.getBreakPoint().equalsIgnoreCase("FSKG")
                                || chargeInfo.getBreakPoint().equalsIgnoreCase("SSKG")
                                || chargeInfo.getBreakPoint().equalsIgnoreCase("FLAT")
                                || chargeInfo.getBreakPoint().toUpperCase().endsWith("FLAT"))//Added by gowtham to show surcharge description as min
                        {
                            breakPoint = "Flat";
                        } else if (chargeInfo.getBreakPoint().equalsIgnoreCase("CSF")
                                || chargeInfo.getBreakPoint().toUpperCase().endsWith("ABSOLUTE"))// Added by Gowtham on 18-Feb2011
                        {
                            breakPoint = "Absolute";
                        } else if (chargeInfo.getBreakPoint().equalsIgnoreCase("SURCHARGE")
                                || chargeInfo.getBreakPoint().toUpperCase().endsWith("PERCENT"))// Added by Gowtham on 18-Feb2011)
                        {
                            breakPoint = "Percent";
                        } else if (chargeInfo.getBreakPoint().endsWith("CAF")
                                || chargeInfo.getBreakPoint().endsWith("BAF")
                                || chargeInfo.getBreakPoint().endsWith("CSF")
                                || chargeInfo.getBreakPoint().endsWith("PSS")
                                || chargeInfo.getBreakPoint().endsWith("caf")
                                || chargeInfo.getBreakPoint().endsWith("baf")
                                || chargeInfo.getBreakPoint().endsWith("csf")
                                || chargeInfo.getBreakPoint().endsWith("pss")) {
                            m = chargeInfo.getBreakPoint().length() - 3;
                            breakPoint = chargeInfo.getBreakPoint().substring(0, m);

                        }
                        //@@Added by subrahmanyam for 146455 on 18/02/09  
                        else if (chargeInfo.getBreakPoint().toUpperCase().equalsIgnoreCase("MAX")) // Added by Gowtham on18-Feb-2011
                        {
                            breakPoint = "Max";
                        } else {
                            breakPoint = chargeInfo.getBreakPoint().length() > 5
                                    ? chargeInfo.getBreakPoint().substring(0, 4)
                                    : chargeInfo.getBreakPoint(); // Modified by Gowtham for Quote View Issue on 17 Feb2011
                        }
                        /* chk = new Chunk(chargeInfo.getBreakPoint()!=null?chargeInfo.getBreakPoint().toUpperCase():"",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                         cell = new Cell(chk);cell.setHeader(true);
                         cell.setBackgroundColor(Color.lightGray);cell.setLeading(8.0f);
                         chargeCountry.addCell(cell);*/
                        //chk = new Chunk(breakPoint!=null?breakPoint.toUpperCase():"",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                        chk = new Chunk(breakPoint != null ? breakPoint : "",
                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell = new Cell(chk);
                        cell.setHeader(true);
                        cell.setBackgroundColor(Color.lightGray);
                        cell.setLeading(8.0f);
                        chargeCountry.addCell(cell);

                        chk = new Chunk(chargeInfo.getCurrency(),
                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell = new Cell(chk);
                        cell.setHeader(true);
                        cell.setLeading(8.0f);
                        //cell.setBackgroundColor(Color.lightGray);
                        chargeCountry.addCell(cell);

                        chk = new Chunk(df.format(chargeInfo.getSellRate()),
                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell = new Cell(chk);
                        cell.setHeader(true);
                        cell.setLeading(8.0f);
                        chargeCountry.addCell(cell);

                        chk = new Chunk(chargeInfo.getBasis() != null ? chargeInfo.getBasis() : "",
                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell = new Cell(chk);
                        cell.setHeader(true);
                        cell.setLeading(8.0f);
                        cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                        chargeCountry.addCell(cell);
                        //@@Added by Kameswari for the WPBN issue- on 12/11/08
                        chk = new Chunk(chargeInfo.getRatio() != null ? "1:" + chargeInfo.getRatio() : "",
                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell = new Cell(chk);
                        cell.setHeader(true);
                        cell.setLeading(8.0f);
                        cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                        chargeCountry.addCell(cell);

                    }
                }
            }
            document.add(chargeCountry);

        } //end of if(charge)
          //  boolean b2 = document.newPage();

        //System.out.println("After Charges--------------------------------->");
        //document.setMargins(10,10,10,10);
        ArrayList destChargeInfo = null;
        //int[]      destChargeInfo        =  null;
        int destChargesInfoSize = 0;
        if (destChargesSize > 0) {
            //chargeCountry  = new Table(5);
            chargeCountry = new Table(6);
            chargeCountry.setWidth(100);
            chargeCountry.setWidths(cellWidths);
            chargeCountry.setPadding(1);
            chargeCountry.setSpacing(0);
            chargeCountry.setOffset(5);
            chargeCountry.setBackgroundColor(Color.WHITE);
            chargeCountry.setBorderColor(Color.black);
            chargeCountry.setDefaultHorizontalAlignment(Element.ALIGN_CENTER);
            chargeCountry.setBorderWidth(1f);
            chargeCountry.setTableFitsPage(true);

            //    b2 = writer.getPageNumber();

            /*   if(b2-b1>0)
               {
                chk = new Chunk("QUOTE REFERENCE:"+masterDOB.getQuoteId(),FontFactory.getFont("ARIAL", 10, Font.BOLD,Color.BLACK));
               cell = new Cell(chk);
               cell.setColspan(5);cell.setLeading(10.0f);
               cell.setBackgroundColor(Color.WHITE);                
               cell.setHeader(true);
               cell.setBorder(0);
               chargeCountry.addCell(cell); 
               }*/
            //@@Commented and Modified by Kameswari for the internal issue on 09/04/09
            /* chk = new Chunk("DESTINATION CHARGES",FontFactory.getFont("ARIAL", 8, Font.BOLD,Color.BLACK));
            cell = new Cell(chk);
            cell.setBackgroundColor(Color.ORANGE);
            // cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
            cell.setColspan(6);
            cell.setLeading(8.0f);
            cell.setHeader(true);
            chargeCountry.addCell(cell);*/
            //chargeCountry.endHeaders();
            chk = new Chunk("Destination Charges", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cell = new Cell(chk);
            //cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
            // cell.setColspan(6);
            cell.setLeading(10.0f);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setHeader(true);
            chargeCountry.addCell(cell);
            chk = new Chunk("Weight Break Slab", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cell = new Cell(chk);
            //cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
            // cell.setColspan(6);
            cell.setLeading(10.0f);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setHeader(true);
            chargeCountry.addCell(cell);
            chk = new Chunk("Currency", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cell = new Cell(chk);
            //cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
            // cell.setColspan(6);
            cell.setLeading(10.0f);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setHeader(true);
            chargeCountry.addCell(cell);
            chk = new Chunk("Charge Rate", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cell = new Cell(chk);
            //cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
            // cell.setColspan(6);
            cell.setLeading(10.0f);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setHeader(true);
            chargeCountry.addCell(cell);
            chk = new Chunk("Basis", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cell = new Cell(chk);
            //cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
            // cell.setColspan(6);
            cell.setLeading(10.0f);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setHeader(true);
            chargeCountry.addCell(cell);
            chk = new Chunk("Density Ratio", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cell = new Cell(chk);
            //cell.setColspan(5);/@@Added by Kameswari for the WPBN issue - on 12/11/08
            // cell.setColspan(6);
            cell.setLeading(10.0f);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setHeader(true);
            chargeCountry.addCell(cell);

            for (int j = 0; j < destChargesSize; j++) {
                if (destIndices[j] != -1) {
                    chargesDOB = (QuoteCharges) destCharges.get(destIndices[j]);
                    logger.info("Destination Charges doPDFGeneration::" + j + ":" + chargesDOB); // newly added                      
                    destChargeInfo = chargesDOB.getChargeInfoList();
                    destChargesInfoSize = destChargeInfo.size();
                    for (int k = 0; k < destChargesInfoSize; k++) {
                        chargeInfo = (QuoteChargeInfo) destChargeInfo.get(k);
                        if (k == 0) {
                            if ("B".equalsIgnoreCase(chargesDOB.getSellBuyFlag())
                                    || "S".equalsIgnoreCase(chargesDOB.getSellBuyFlag()))
                                chk = new Chunk(
                                        chargesDOB.getExternalName() != null ? chargesDOB.getExternalName()
                                                : "",
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            else
                                chk = new Chunk(
                                        chargesDOB.getChargeDescriptionId() != null
                                                ? chargesDOB.getChargeDescriptionId()
                                                : "",
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell = new Cell(chk);
                            cell.setLeading(9.0f);
                            //cell.setRowspan(destChargesInfoSize);
                            //cell.setBorderWidth(0);
                            cell.setBackgroundColor(Color.lightGray);
                            cell.setHeader(true);
                            cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                            chargeCountry.addCell(cell);
                        } else {
                            cell = new Cell("");
                            cell.setBackgroundColor(Color.lightGray);
                            cell.setHeader(true);
                            cell.setBorderWidth(0);
                            cell.setLeading(9.0f);
                            chargeCountry.addCell(cell);
                        }

                        //@@Commented by subrahmanyam for 146455 on 18/02/09                   
                        /* chk = new Chunk((chargeInfo.getBreakPoint()!=null && !"Absolute".equalsIgnoreCase(chargeInfo.getBreakPoint()) && !"Percent".equalsIgnoreCase(chargeInfo.getBreakPoint()))?chargeInfo.getBreakPoint().toUpperCase():"",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                         cell = new Cell(chk);cell.setLeading(8.0f);
                         cell.setBackgroundColor(Color.lightGray);
                         cell.setHeader(true);
                         chargeCountry.addCell(cell);*/
                        //@@Added by subrahmanyam for 146455 on 18/02/09                        
                        if (chargeInfo.getBreakPoint().equalsIgnoreCase("MIN")) {
                            breakPoint = "Min";
                        }

                        else if (chargeInfo.getBreakPoint().equalsIgnoreCase("FLAT")) {
                            breakPoint = "Flat";
                        } else if (chargeInfo.getBreakPoint().equalsIgnoreCase("CSF")) {
                            breakPoint = "Absolute";
                        } else if (chargeInfo.getBreakPoint().equalsIgnoreCase("SURCHARGE")) {
                            breakPoint = "Percent";
                        } else if (chargeInfo.getBreakPoint().equalsIgnoreCase("MAX")) {
                            breakPoint = "Max";
                        } else if (chargeInfo.getBreakPoint().equalsIgnoreCase("BASE")) {
                            breakPoint = "Base";
                        }

                        else {
                            breakPoint = chargeInfo.getBreakPoint();
                        }

                        chk = new Chunk(
                                breakPoint != null && !"Absolute".equalsIgnoreCase(breakPoint)
                                        && !"Percent".equalsIgnoreCase(breakPoint) ? breakPoint : "",
                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell = new Cell(chk);
                        cell.setLeading(8.0f);
                        cell.setBackgroundColor(Color.lightGray);
                        cell.setHeader(true);
                        chargeCountry.addCell(cell);
                        //@@Ended by subrahmanyam for 146455 on 18/02/09   

                        chk = new Chunk(chargeInfo.getCurrency(),
                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell = new Cell(chk);
                        cell.setHeader(true);
                        cell.setLeading(8.0f);
                        //cell.setBackgroundColor(Color.lightGray);
                        chargeCountry.addCell(cell);
                        //@@Modified by kiran.v on 03/11/2011 for Wpbn Issue
                        // chk = new Chunk(df.format(chargeInfo.getSellRate())+(chargeInfo.isPercentValue()?" %":""),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                        //@@Added by kiran.v on 16/11/2011
                        percent = chargeInfo.isPercentValue() ? "%" : "";
                        chk = new Chunk(round1(chargeInfo.getSellRate(), percent) + (percent),
                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell = new Cell(chk);
                        cell.setHeader(true);
                        cell.setLeading(8.0f);
                        chargeCountry.addCell(cell);

                        chk = new Chunk(chargeInfo.getBasis() != null ? chargeInfo.getBasis() : "",
                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell = new Cell(chk);
                        cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                        cell.setHeader(true);
                        cell.setLeading(8.0f);
                        chargeCountry.addCell(cell);
                        //@@Added by Kameswari for the WPBN issue- on 12/11/08
                        chk = new Chunk(chargeInfo.getRatio() != null ? "1:" + chargeInfo.getRatio() : "",
                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell = new Cell(chk);
                        cell.setHeader(true);
                        cell.setLeading(8.0f);
                        cell.setHorizontalAlignment(cell.ALIGN_LEFT);
                        chargeCountry.addCell(cell);
                    }
                }
            }
            document.add(chargeCountry);
        }
        if (finalDOB.getExternalNotes() != null && finalDOB.getExternalNotes().length > 0) {
            Table notes = new Table(1, finalDOB.getExternalNotes().length + 1);
            notes.setWidth(100);
            notes.setPadding(1);
            notes.setSpacing(0);
            notes.setOffset(5);
            notes.setBackgroundColor(Color.WHITE);
            notes.setBorderColor(Color.black);
            //@@Commented and Modified by Kameswari for the internal issue on 08/04/09
            notes.setDefaultHorizontalAlignment(Element.ALIGN_LEFT);
            notes.setBorderWidth(1f);
            Cell notesCell;

            chk = new Chunk("NOTES", FontFactory.getFont("ARIAL", 10, Font.BOLD, Color.BLACK));
            notesCell = new Cell(chk);
            notesCell.setHeader(true);
            notesCell.setLeading(8.0f);
            notesCell.setBackgroundColor(Color.WHITE);
            notes.addCell(notesCell);
            for (int i = 0; i < finalDOB.getExternalNotes().length; i++) {
                chk = new Chunk(finalDOB.getExternalNotes()[i] != null ? finalDOB.getExternalNotes()[i] : "",
                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                notesCell = new Cell(chk);
                notesCell.setLeading(8.0f);
                notes.addCell(notesCell);
            }
            document.add(notes);
        }

        if (contents != null && contents.length > 0) {
            content = new Table(1);
            content.setOffset(5);
            content.setWidth(100);
            content.setPadding(1);
            content.setSpacing(0);
            content.setBackgroundColor(Color.WHITE);
            content.setBorderColor(Color.black);
            content.setBorderWidth(1f);
            content.setTableFitsPage(true);
            Cell cellContent = null;
            int hFLen = headFoot.length;

            for (int i = 0; i < hFLen; i++) {
                if (headFoot[i] != null && "F".equalsIgnoreCase(headFoot[i])) {
                    chk = new Chunk(contents[i], FontFactory.getFont("ARIAL", 7, Font.ITALIC, Color.BLACK));
                    /////////////////chk.setUnderline(+1f,-2f);

                    cellContent = new Cell(chk);
                    cellContent.setBorder(0);
                    cellContent.setLeading(8.0f);
                    cellContent.setBackgroundColor(Color.LIGHT_GRAY);
                    if ("L".equalsIgnoreCase(aligns[i]))
                        cellContent.setHorizontalAlignment(cellContent.ALIGN_LEFT);
                    else if ("C".equalsIgnoreCase(aligns[i]))
                        cellContent.setHorizontalAlignment(cellContent.ALIGN_CENTER);
                    else if ("R".equalsIgnoreCase(aligns[i]))
                        cellContent.setHorizontalAlignment(cellContent.ALIGN_RIGHT);
                    content.addCell(cellContent);
                }
            }
            document.add(content);
        }

        document.close();

        //System.out.println("After     document Close----------------------------------------->");
        // write ByteArrayOutputStream to the ServletOutputStream            
        // ServletOutputStream sout = response.getOutputStream();
        //baos.writeTo(sout);
        //System.out.println("after writer");
        // sout.flush();
        //dataList  = (ArrayList)  remote.sendEmail(dataList);
        // Thread.sleep(1000);

        String file_tsmp = "" + new java.sql.Timestamp((new java.util.Date()).getTime())
                + masterDOB.getQuoteId();
        file_tsmp = file_tsmp.replaceAll("\\:", "");
        file_tsmp = file_tsmp.replaceAll("\\.", "");
        file_tsmp = file_tsmp.replaceAll("\\-", "");
        file_tsmp = file_tsmp.replaceAll(" ", "");
        File f = new File("Quote.pdf");
        FileOutputStream fileOutputStream = new FileOutputStream(f);
        baos.writeTo(fileOutputStream);
        //@@Added by Kameswari for the WPBN issue-80440
        PdfReader reader = new PdfReader("Quote.pdf");
        int n = reader.getNumberOfPages();
        File fs = new File("Quote" + file_tsmp + ".pdf");

        // we create a stamper that will copy the document to a new file
        PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(fs));

        // adding some metadata
        // adding content to each page

        int k = 0;
        PdfContentByte under = null;
        PdfContentByte over = null;
        BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED);
        while (k < n) {
            k++;
            over = stamp.getOverContent(k);
            under = stamp.getOverContent(k);
            over.beginText();
            over.setFontAndSize(bf, 8);
            over.setTextMatrix(15, 15);
            over.showText("page " + k + " of " + n);
            if (k > 1) {
                // over.setFontAndSize(bf, 10);
                over.setFontAndSize(bf, 7);
                over.showText(
                        "                                                                                                    QUOTE REFERENCE:"
                                + masterDOB.getQuoteId());
                //@@ Added by subrahmanyam for WPBN:146452 on 12/12/2008               
                over.endText();
                over.beginText();
                over.showText(
                        "                                                                                                                                CUSTOMER NAME: "
                                + headerDOB.getCustomerName() + "\n\n\n");//subrahmanyam 12/12/2008

                //@@ Ended by subrahmanyam for WPBN ISSUE:146452 on 12/12/2008               

            }
            over.endText();
        }
        stamp.close();
        //@@WPBN issue-80440    
        file = new File("Concatenated.pdf" + file_tsmp);
        pdfFilesList.add((String) file.getName());
        //@@Added by Kameswari for the WPBN issue-61289
        //@@ Added by subrahmanyam for the  WPBN ISSUE:146460 on 29/01/09             
        if (finalDOB.getAttachmentDOBList().size() == 0
                && "View".equalsIgnoreCase(request.getParameter("Operation"))) {

            home = (QMSQuoteSessionHome) LookUpBean.getEJBHome("QMSQuoteSessionBean");//146460
            remote = home.create();//146460
            filesList = remote.getQuoteAttachmentDtls(finalDOB);
            if (filesList != null) {
                finalDOB.setAttachmentDOBList(filesList);
            }
        }
        //@@ Ended by subrahmanyam for the WPBN ISSUE: 146460 on 29/01/09   
        if (finalDOB.getAttachmentDOBList() != null) {
            //filesList = finalDOB.getAttachmentDOBList(); // commented for for 192431 on 16-dec-09
            //@@ Added by subrahmanyam for 192431 on 16-dec-09
            if ("pdf".equalsIgnoreCase(request.getParameter("pdf"))) {
                home = (QMSQuoteSessionHome) LookUpBean.getEJBHome("QMSQuoteSessionBean");
                remote = home.create();//146460
                filesList = remote.getQuoteAttachmentDtls(finalDOB);
            } else
                filesList = finalDOB.getAttachmentDOBList();
            // ended for 192431 on 16-dec-09

            int fileListSize = filesList.size();
            for (int i = 0; i < fileListSize; i++) {
                attachmentDOB = (QuoteAttachmentDOB) filesList.get(i);
                FileOutputStream fileStream = new FileOutputStream(attachmentDOB.getFileName());
                fileStream.write(attachmentDOB.getPdfFile());
                pdfFilesList.add((String) attachmentDOB.getFileName());
            }
        }
        if (pdfFilesList.size() > 1) {
            for (int l = 1; l < pdfFilesList.size(); l++) {
                FileInputStream inputStream = new FileInputStream((String) pdfFilesList.get(l));
                buffer = new byte[inputStream.available()];
                inputStream.read(buffer);
                bufferList.add(buffer);
                inputStream.close();
            }
        }

        // buffer = concatPDF(pdfFilesList);GOVIND COMMENTED 
        //@@WPBN issue-61289  

        //@@ Commented By Subrahmanyam for enhancement 146460           
        /* if("on".equalsIgnoreCase(request.getParameter("print")))
        {     
                
                
                 
                  
            request.getSession().setAttribute("QuoteOuptutStream",fs);
            request.getSession().setAttribute("filepdf",buffer); //@@Added by Kameswari for the WPBN issue-61289
                
                
          }*/
        //@@ Added by subrahmanyam for the enhancement 146460
        if ("PDF".equalsIgnoreCase(request.getParameter("pdf"))
                || "on".equalsIgnoreCase(request.getParameter("print"))) {
            request.getSession().setAttribute("QuoteOuptutStream", fs);
            request.getSession().setAttribute("filepdf", bufferList);
        }
        //@@ Ended by subrahmanyam for the enhancement 146460
        //f.delete();
        //baos.close();

        String[] contactPersons = masterDOB.getCustContactNames();
        String contactName = "";

        String filename = "Annexure" + file_tsmp + ".pdf";
        StringBuffer subject = new StringBuffer("DHL Global Forwarding Quotation,");
        String body = "";

        if (!finalDOB.isMultiModalQuote()) {
            if (masterDOB.getShipmentMode() == 1)
                subject.append(" Airfreight ");
            if (masterDOB.getShipmentMode() == 2)
                subject.append(" Seafreight ");
            else if (masterDOB.getShipmentMode() == 4)
                subject.append(" Truckfreight ");
        } else {
            subject.append(" Multi-Modal ");
        }

        subject.append((headerDOB.getOriginCountry() != null ? headerDOB.getOriginCountry().toUpperCase() : ""))
                .append(" to ")
                .append((headerDOB.getDestinationCountry() != null
                        ? headerDOB.getDestinationCountry().toUpperCase()
                        : ""));
        subject.append(" Quote Reference ");
        if (finalDOB.getUpdatedReportDOB() != null)
            subject.append(request.getAttribute("quoteId")).append(" Replacing ")
                    .append(finalDOB.getUpdatedReportDOB().getQuoteId());
        else
            subject.append(masterDOB.getQuoteId() != null ? masterDOB.getQuoteId() + ""
                    : request.getAttribute("quoteId"));
        //Commented By Kishore Podili For Multiple Zone Codes: 236286
        //if(masterDOB.getShipperZipCode()==null || masterDOB.getConsigneeZipCode()==null)
        // {
        if ((finalDOB.getPickZoneZipMap() != null && finalDOB.getPickZoneZipMap().size() > 0)
                || (finalDOB.getDeliveryZoneZipMap() != null && finalDOB.getDeliveryZoneZipMap().size() > 0))

            doGenerateCartagePDF(filename, finalDOB, request, response);
        //}
        try {
            if ("Y".equalsIgnoreCase(finalDOB.getFlagsDOB().getEmailFlag())) {
                // mailFlag  = 1;
                //finalDOB.getFlagsDOB().setQuoteStatusFlag("PEN");//@@Quote is Pending
                //ReportsSessionBeanHome home      = (ReportsSessionBeanHome)LookUpBean.getEJBHome("ReportsSessionBean");
                //ReportsSession remote   = (ReportsSession)home.create();
                //@@Modified by kameswari for the WPBN issue-61289
                //String to_emailIds = finalDOB.getHeaderDOB().getCustEmailId();
                String to_emailIds = null;
                if ("Y".equalsIgnoreCase(masterDOB.getSalesPersonFlag()))
                    to_emailIds = finalDOB.getHeaderDOB().getCustEmailId() + ','
                            + masterDOB.getSalesPersonEmail();
                else
                    to_emailIds = finalDOB.getHeaderDOB().getCustEmailId();
                //@@WPBN issue-61289
                to_emailIds = to_emailIds.replaceAll(";", ",");

                //System.out.println("Before Sending Mail------------------------------>");

                if (contactPersons != null) {
                    int contPersonLen = contactPersons.length;
                    for (int i = 0; i < contPersonLen; i++) {
                        mailFlag = 1;

                        // if(i<contactPersons.length)//@@Added by Kameswari for the WPBN issue-61289
                        //    {
                        if (masterDOB.getCustomerContactsEmailIds()[i] != null
                                && masterDOB.getCustomerContactsEmailIds()[i].trim().length() != 0) {

                            contactName = masterDOB.getCustContactNames()[i];
                            if (masterDOB.getCustContactNames()[i].indexOf("[") != -1)
                                contactName = contactName.substring(0,
                                        masterDOB.getCustContactNames()[i].indexOf("["));
                            /* if(finalDOB.getUpdatedReportDOB()!=null)
                             {
                                        
                                         
                                body = "Dear "+contactName+",\n\nThis is a replacement quotation reference "+request.getAttribute("quoteId")+",replacing "+finalDOB.getUpdatedReportDOB().getQuoteId()+
                                  ", due to a change in "+(finalDOB.getEmailChargeName()!=null?finalDOB.getEmailChargeName():finalDOB.getUpdatedReportDOB().getChangeDesc())+". All information is contained within the attachment. "+
                                 "Should you have any queries, please do not hesitate to contact us.\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                             }
                             else
                             {
                               body = "Dear "+contactName+",\n\nThank you for the opportunity to provide this Quotation. All information is contained within the attachment."+
                                    " Should you have any queries, please do not hesitate to contact us.\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                             }*/
                            //body  = "Dear "+contactName+",\n\n"+finalDOB.getEmailText()+"\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                            if (finalDOB.getUpdatedReportDOB() != null) {
                                body = "Dear " + (contactName != null ? contactName : "")
                                        + ",\n\nThis is a replacement quotation reference "
                                        + request.getAttribute("quoteId") + ",replacing "
                                        + finalDOB.getUpdatedReportDOB().getQuoteId() + ", due to a change in "
                                        + (finalDOB.getEmailChargeName() != null ? finalDOB.getEmailChargeName()
                                                : finalDOB.getUpdatedReportDOB().getChangeDesc())
                                        + ",\n\n"
                                        + (finalDOB.getEmailText() != null ? finalDOB.getEmailText() : "")
                                        + "\n\n\n"
                                        + (masterDOB.getCreatorDetails() != null ? masterDOB.getCreatorDetails()
                                                : "")
                                        + "\n\n"
                                        + (masterDOB.getCompanyName() != null ? masterDOB.getCompanyName() : "")
                                        + "\n"
                                        + (masterDOB.getTerminalAddress() != null
                                                ? masterDOB.getTerminalAddress()
                                                : "")
                                        + "\n\n" + "Phone  "
                                        + (masterDOB.getPhoneNo() != null ? masterDOB.getPhoneNo() : "") + "\n"
                                        + "Fax    " + (masterDOB.getFaxNo() != null ? masterDOB.getFaxNo() : "")
                                        + "\n" + "Mobile "
                                        + (masterDOB.getMobileNo() != null ? masterDOB.getMobileNo() : "")
                                        + "\n\nEmail "
                                        + (masterDOB.getUserEmailId() != null ? masterDOB.getUserEmailId()
                                                : ""); //@@Modified by Kameswari for the WPBN issue-61303

                            } else {
                                body = "Dear " + (contactName != null ? contactName : "") + ",\n\n"
                                        + (finalDOB.getEmailText() != null ? finalDOB.getEmailText() : "")
                                        + "\n\n\n"
                                        + (masterDOB.getCreatorDetails() != null ? masterDOB.getCreatorDetails()
                                                : "")
                                        + "\n\n"
                                        + (masterDOB.getCompanyName() != null ? masterDOB.getCompanyName() : "")
                                        + "\n"
                                        + (masterDOB.getTerminalAddress() != null
                                                ? masterDOB.getTerminalAddress()
                                                : "")
                                        + "\n\n" + "Phone  "
                                        + (masterDOB.getPhoneNo() != null ? masterDOB.getPhoneNo() : "") + "\n"
                                        + "Fax    " + (masterDOB.getFaxNo() != null ? masterDOB.getFaxNo() : "")
                                        + "\n" + "Mobile "
                                        + (masterDOB.getMobileNo() != null ? masterDOB.getMobileNo() : "")
                                        + "\n\nEmail "
                                        + (masterDOB.getUserEmailId() != null ? masterDOB.getUserEmailId()
                                                : ""); //@@Modified by Kameswari for the WPBN issue-61303

                            }
                            if (masterDOB.getShipperZipCode() == null
                                    || masterDOB.getConsigneeZipCode() == null) {
                                if ((finalDOB.getPickZoneZipMap() != null
                                        && finalDOB.getPickZoneZipMap().size() > 0)
                                        || (finalDOB.getDeliveryZoneZipMap() != null
                                                && finalDOB.getDeliveryZoneZipMap().size() > 0))
                                    sendMail(finalDOB.getMasterDOB().getUserEmailId(),
                                            masterDOB.getCustomerContactsEmailIds()[i], subject.toString(),
                                            body, "Quote" + file_tsmp + ".pdf,Annexure" + file_tsmp + ".pdf",
                                            finalDOB.getAttachmentDOBList());
                                else
                                    sendMail(finalDOB.getMasterDOB().getUserEmailId(),
                                            masterDOB.getCustomerContactsEmailIds()[i], subject.toString(),
                                            body, "Quote" + file_tsmp + ".pdf",
                                            finalDOB.getAttachmentDOBList());
                            } else
                                sendMail(finalDOB.getMasterDOB().getUserEmailId(),
                                        masterDOB.getCustomerContactsEmailIds()[i], subject.toString(), body,
                                        "Quote" + file_tsmp + ".pdf", finalDOB.getAttachmentDOBList());
                            //  }
                            //@@Added by Kameswari for the WPBN issue-61289
                        }
                    }
                    if ("Y".equalsIgnoreCase(masterDOB.getSalesPersonFlag())) {
                        if (masterDOB.getShipperZipCode() == null || masterDOB.getConsigneeZipCode() == null) {
                            if ((finalDOB.getPickZoneZipMap() != null
                                    && finalDOB.getPickZoneZipMap().size() > 0)
                                    || (finalDOB.getDeliveryZoneZipMap() != null
                                            && finalDOB.getDeliveryZoneZipMap().size() > 0))

                                sendMail(finalDOB.getMasterDOB().getUserEmailId(),
                                        masterDOB.getSalesPersonEmail(), subject.toString(), body,
                                        "Quote" + file_tsmp + ".pdf,Annexure" + file_tsmp + ".pdf",
                                        finalDOB.getAttachmentDOBList());
                            else
                                sendMail(finalDOB.getMasterDOB().getUserEmailId(),
                                        masterDOB.getSalesPersonEmail(), subject.toString(), body,
                                        "Quote" + file_tsmp + ".pdf", finalDOB.getAttachmentDOBList());
                        } else
                            sendMail(finalDOB.getMasterDOB().getUserEmailId(), masterDOB.getSalesPersonEmail(),
                                    subject.toString(), body, "Quote" + file_tsmp + ".pdf",
                                    finalDOB.getAttachmentDOBList());

                    }
                    //@@ the WPBN issue-61289

                } else {
                    mailFlag = 0;

                    /*if(finalDOB.getUpdatedReportDOB()!=null)
                    {
                              
                      body = "Dear Customer,\n\nThis is a replacement quotation reference "+request.getAttribute("quoteId")+",replacing "+finalDOB.getUpdatedReportDOB().getQuoteId()+
                      ", due to a change in "+(finalDOB.getEmailChargeName()!=null?finalDOB.getEmailChargeName():finalDOB.getUpdatedReportDOB().getChangeDesc())+". All information is contained within the attachment. "+
                      "Should you have any queries, please do not hesitate to contact us.\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                    }
                    else
                    {
                      body = "Dear Customer,\n\nThank you for the opportunity to provide this Quotation. All information is contained within the attachment."+
                         " Should you have any queries, please do not hesitate to contact us.\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                    }*/
                    //
                    //body  ="Dear Customer,\n\n"+finalDOB.getEmailText()+"\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                    /*body  = "Dear Customer,\n\n"+finalDOB.getEmailText()+"\n\n\n"+masterDOB.getCreatorDetails()+"\n\n"+masterDOB.getCompanyName()+
                    "\n"+masterDOB.getTerminalAddress()+"\n\n"+"Phone  "+masterDOB.getPhoneNo()+"\n"+"Fax    "+masterDOB.getFaxNo()+"\n"+"Mobile "+masterDOB.getMobileNo()+"\n\nEmail "+masterDOB.getUserEmailId(); */
                    //@@Modified by Kameswari for the WPBN issue-61303

                    if (finalDOB.getUpdatedReportDOB() != null) {
                        body = "Dear Customer,\n\nThis is a replacement quotation reference "
                                + request.getAttribute("quoteId") + ",replacing "
                                + finalDOB.getUpdatedReportDOB().getQuoteId() + ", due to a change in "
                                + (finalDOB.getEmailChargeName() != null ? finalDOB.getEmailChargeName()
                                        : finalDOB.getUpdatedReportDOB().getChangeDesc())
                                + ",\n\n" + (finalDOB.getEmailText() != null ? finalDOB.getEmailText() : "")
                                + "\n\n\n"
                                + (masterDOB.getCreatorDetails() != null ? masterDOB.getCreatorDetails() : "")
                                + "\n\n"
                                + (masterDOB.getCompanyName() != null ? masterDOB.getCompanyName() : "") + "\n"
                                + (masterDOB.getTerminalAddress() != null ? masterDOB.getTerminalAddress() : "")
                                + "\n\n" + "Phone  "
                                + (masterDOB.getPhoneNo() != null ? masterDOB.getPhoneNo() : "") + "\n"
                                + "Fax    " + (masterDOB.getFaxNo() != null ? masterDOB.getFaxNo() : "") + "\n"
                                + "Mobile " + (masterDOB.getMobileNo() != null ? masterDOB.getMobileNo() : "")
                                + "\n\nEmail "
                                + (masterDOB.getUserEmailId() != null ? masterDOB.getUserEmailId() : ""); //@@Modified by Kameswari for the WPBN issue-61303
                    } else {
                        body = "Dear Customer,\n\n"
                                + (finalDOB.getEmailText() != null ? finalDOB.getEmailText() : "") + "\n\n\n"
                                + (masterDOB.getCreatorDetails() != null ? masterDOB.getCreatorDetails() : "")
                                + "\n\n"
                                + (masterDOB.getCompanyName() != null ? masterDOB.getCompanyName() : "") + "\n"
                                + (masterDOB.getTerminalAddress() != null ? masterDOB.getTerminalAddress() : "")
                                + "\n\n" + "Phone  "
                                + (masterDOB.getPhoneNo() != null ? masterDOB.getPhoneNo() : "") + "\n"
                                + "Fax    " + (masterDOB.getFaxNo() != null ? masterDOB.getFaxNo() : "") + "\n"
                                + "Mobile " + (masterDOB.getMobileNo() != null ? masterDOB.getMobileNo() : "")
                                + "\n\nEmail "
                                + (masterDOB.getUserEmailId() != null ? masterDOB.getUserEmailId() : ""); //@@Modified by Kameswari for the WPBN issue-61303
                    }
                    if (masterDOB.getShipperZipCode() == null || masterDOB.getConsigneeZipCode() == null) {
                        if ((finalDOB.getPickZoneZipMap() != null && finalDOB.getPickZoneZipMap().size() > 0)
                                || (finalDOB.getDeliveryZoneZipMap() != null
                                        && finalDOB.getDeliveryZoneZipMap().size() > 0))
                            sendMail(finalDOB.getMasterDOB().getUserEmailId(), to_emailIds, subject.toString(),
                                    body, "Quote" + file_tsmp + ".pdf,Annexure" + file_tsmp + ".pdf",
                                    finalDOB.getAttachmentDOBList());
                        else
                            sendMail(finalDOB.getMasterDOB().getUserEmailId(), to_emailIds, subject.toString(),
                                    body, "Quote" + file_tsmp + ".pdf", finalDOB.getAttachmentDOBList());
                    } else
                        sendMail(finalDOB.getMasterDOB().getUserEmailId(), to_emailIds, subject.toString(),
                                body, "Quote" + file_tsmp + ".pdf", finalDOB.getAttachmentDOBList());
                }

                //System.out.println("End of mail sending and PDF Generation --------------------------------->");
            }
        } catch (Exception e) {
            //Logger.error(FILE_NAME,"Error while sending mail "+e); 
            logger.error(FILE_NAME + "Error while sending mail " + e);
            e.printStackTrace();
            mailFlag = 0;
        }
        try {
            if ("Y".equalsIgnoreCase(finalDOB.getFlagsDOB().getFaxFlag())) {
                //faxFlag   = 2;
                //finalDOB.getFlagsDOB().setQuoteStatusFlag("PEN");//@@Quote is Pending
                //ReportsSessionBeanHome home      = (ReportsSessionBeanHome)LookUpBean.getEJBHome("ReportsSessionBean");
                //ReportsSession  remote   = (ReportsSession)home.create();
                String customerFax = headerDOB.getCustFaxNo() != null ? headerDOB.getCustFaxNo() : "";
                String countrycode = headerDOB.getCustCountyCode() != null ? headerDOB.getCustCountyCode() : "";
                String contactFax = null;
                if ("SG".equalsIgnoreCase(countrycode)) {
                    if (customerFax != null && customerFax.length() > 0)
                        customerFax = "fax#" + customerFax + "@tcdhl.com";
                } else {
                    if (customerFax != null && customerFax.length() > 0)
                        customerFax = "ifax#" + customerFax + "@tcdhl.com";
                }

                if (contactPersons != null) {
                    int contPersonLen = contactPersons.length;
                    for (int i = 0; i < contPersonLen; i++) {
                        faxFlag = 2;
                        contactName = masterDOB.getCustContactNames()[i];
                        if (masterDOB.getCustContactNames()[i].indexOf("[") != -1)
                            contactName = contactName.substring(0,
                                    masterDOB.getCustContactNames()[i].indexOf("["));
                        if (masterDOB.getCustomerContactsFax()[i] != null
                                && masterDOB.getCustomerContactsFax()[i].trim().length() != 0) {
                            if ("SG".equalsIgnoreCase(countrycode))
                                contactFax = "fax#" + masterDOB.getCustomerContactsFax()[i] + "@tcdhl.com";
                            else
                                contactFax = "ifax#" + masterDOB.getCustomerContactsFax()[i] + "@tcdhl.com";

                            /*if(finalDOB.getUpdatedReportDOB()!=null)
                            {
                              body = "Dear "+contactName+",\n\nThis is a replacement quotation reference "+request.getAttribute("quoteId")+",replacing "+finalDOB.getUpdatedReportDOB().getQuoteId()+
                                 ", due to a change in "+(finalDOB.getEmailChargeName()!=null?finalDOB.getEmailChargeName():finalDOB.getUpdatedReportDOB().getChangeDesc())+". All information is contained within the attachment. "+
                                "Should you have any queries, please do not hesitate to contact us.\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                             }
                            else
                            {
                              body = "Dear "+contactName+",\n\nThank you for the opportunity to provide this Quotation. All information is contained within the attachment."+
                                   " Should you have any queries, please do not hesitate to contact us.\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                            }*/
                            // body  = "Dear "+contactName+",\n\n"+finalDOB.getEmailText()+"\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                            if (finalDOB.getUpdatedReportDOB() != null) {
                                body = "Dear " + (contactName != null ? contactName : "")
                                        + ",\n\nThis is a replacement quotation reference "
                                        + request.getAttribute("quoteId") + ",replacing "
                                        + finalDOB.getUpdatedReportDOB().getQuoteId() + ", due to a change in "
                                        + (finalDOB.getEmailChargeName() != null ? finalDOB.getEmailChargeName()
                                                : finalDOB.getUpdatedReportDOB().getChangeDesc())
                                        + ",\n\n"
                                        + (finalDOB.getEmailText() != null ? finalDOB.getEmailText() : "")
                                        + "\n\n\n"
                                        + (masterDOB.getCreatorDetails() != null ? masterDOB.getCreatorDetails()
                                                : "")
                                        + "\n\n"
                                        + (masterDOB.getCompanyName() != null ? masterDOB.getCompanyName() : "")
                                        + "\n"
                                        + (masterDOB.getTerminalAddress() != null
                                                ? masterDOB.getTerminalAddress()
                                                : "")
                                        + "\n\n" + "Phone  "
                                        + (masterDOB.getPhoneNo() != null ? masterDOB.getPhoneNo() : "") + "\n"
                                        + "Fax    " + (masterDOB.getFaxNo() != null ? masterDOB.getFaxNo() : "")
                                        + "\n" + "Mobile "
                                        + (masterDOB.getMobileNo() != null ? masterDOB.getMobileNo() : "")
                                        + "\n\nEmail "
                                        + (masterDOB.getUserEmailId() != null ? masterDOB.getUserEmailId()
                                                : ""); //@@Modified by Kameswari for the WPBN issue-61303
                            } else {
                                body = "Dear " + (contactName != null ? contactName : "") + ",\n\n"
                                        + (finalDOB.getEmailText() != null ? finalDOB.getEmailText() : "")
                                        + "\n\n\n"
                                        + (masterDOB.getCreatorDetails() != null ? masterDOB.getCreatorDetails()
                                                : "")
                                        + "\n\n"
                                        + (masterDOB.getCompanyName() != null ? masterDOB.getCompanyName() : "")
                                        + "\n"
                                        + (masterDOB.getTerminalAddress() != null
                                                ? masterDOB.getTerminalAddress()
                                                : "")
                                        + "\n\n" + "Phone  "
                                        + (masterDOB.getPhoneNo() != null ? masterDOB.getPhoneNo() : "") + "\n"
                                        + "Fax    " + (masterDOB.getFaxNo() != null ? masterDOB.getFaxNo() : "")
                                        + "\n" + "Mobile "
                                        + (masterDOB.getMobileNo() != null ? masterDOB.getMobileNo() : "")
                                        + "\n\nEmail "
                                        + (masterDOB.getUserEmailId() != null ? masterDOB.getUserEmailId()
                                                : ""); //@@Modified by Kameswari for the WPBN issue-61303

                            }
                            if (masterDOB.getShipperZipCode() == null
                                    || masterDOB.getConsigneeZipCode() == null) {
                                if ((finalDOB.getPickZoneZipMap() != null
                                        && finalDOB.getPickZoneZipMap().size() > 0)
                                        || (finalDOB.getDeliveryZoneZipMap() != null
                                                && finalDOB.getDeliveryZoneZipMap().size() > 0))
                                    sendMail(finalDOB.getMasterDOB().getUserEmailId(), contactFax,
                                            subject.toString(), body,
                                            "Quote" + file_tsmp + ".pdf,Annexure" + file_tsmp + ".pdf",
                                            finalDOB.getAttachmentDOBList());
                                else
                                    sendMail(finalDOB.getMasterDOB().getUserEmailId(), contactFax,
                                            subject.toString(), body, "Quote" + file_tsmp + ".pdf",
                                            finalDOB.getAttachmentDOBList());
                            } else
                                sendMail(finalDOB.getMasterDOB().getUserEmailId(), contactFax,
                                        subject.toString(), body, "Quote" + file_tsmp + ".pdf",
                                        finalDOB.getAttachmentDOBList());
                        } else
                            faxFlag = 0;
                    }
                } else {
                    if (customerFax != null && customerFax.length() > 0) {
                        /* if(finalDOB.getUpdatedReportDOB()!=null)
                        {
                         body = "Dear Customer,\n\nThis is a replacement quotation reference "+request.getAttribute("quoteId")+",replacing "+finalDOB.getUpdatedReportDOB().getQuoteId()+
                               ", due to a change in "+(finalDOB.getEmailChargeName()!=null?finalDOB.getEmailChargeName():finalDOB.getUpdatedReportDOB().getChangeDesc())+". All information is contained within the attachment. "+
                               "Should you have any queries, please do not hesitate to contact us.\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                        }
                        else
                        {
                         body = "Dear Customer,\n\nThank you for the opportunity to provide this Quotation. All information is contained within the attachment."+
                         " Should you have any queries, please do not hesitate to contact us.\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress();
                        }*/
                        // body  = "Dear Customer,\n\n"+finalDOB.getEmailText()+"\n\n\nRegards,\n"+masterDOB.getCreatorDetails()+"\n"+masterDOB.getTerminalAddress(); 
                        if (finalDOB.getUpdatedReportDOB() != null) {
                            body = "Dear Customer,\n\nThis is a replacement quotation reference "
                                    + request.getAttribute("quoteId") + ",replacing "
                                    + finalDOB.getUpdatedReportDOB().getQuoteId() + ", due to a change in "
                                    + (finalDOB.getEmailChargeName() != null ? finalDOB.getEmailChargeName()
                                            : finalDOB.getUpdatedReportDOB().getChangeDesc())
                                    + ",\n\n" + (finalDOB.getEmailText() != null ? finalDOB.getEmailText() : "")
                                    + "\n\n\n"
                                    + (masterDOB.getCreatorDetails() != null ? masterDOB.getCreatorDetails()
                                            : "")
                                    + "\n\n"
                                    + (masterDOB.getCompanyName() != null ? masterDOB.getCompanyName() : "")
                                    + "\n"
                                    + (masterDOB.getTerminalAddress() != null ? masterDOB.getTerminalAddress()
                                            : "")
                                    + "\n\n" + "Phone  "
                                    + (masterDOB.getPhoneNo() != null ? masterDOB.getPhoneNo() : "") + "\n"
                                    + "Fax    " + (masterDOB.getFaxNo() != null ? masterDOB.getFaxNo() : "")
                                    + "\n" + "Mobile "
                                    + (masterDOB.getMobileNo() != null ? masterDOB.getMobileNo() : "")
                                    + "\n\nEmail "
                                    + (masterDOB.getUserEmailId() != null ? masterDOB.getUserEmailId() : ""); //@@Modified by Kameswari for the WPBN issue-61303
                        } else {
                            body = "Dear Customer,\n\n"
                                    + (finalDOB.getEmailText() != null ? finalDOB.getEmailText() : "")
                                    + "\n\n\n"
                                    + (masterDOB.getCreatorDetails() != null ? masterDOB.getCreatorDetails()
                                            : "")
                                    + "\n\n"
                                    + (masterDOB.getCompanyName() != null ? masterDOB.getCompanyName() : "")
                                    + "\n"
                                    + (masterDOB.getTerminalAddress() != null ? masterDOB.getTerminalAddress()
                                            : "")
                                    + "\n\n" + "Phone  "
                                    + (masterDOB.getPhoneNo() != null ? masterDOB.getPhoneNo() : "") + "\n"
                                    + "Fax    " + (masterDOB.getFaxNo() != null ? masterDOB.getFaxNo() : "")
                                    + "\n" + "Mobile "
                                    + (masterDOB.getMobileNo() != null ? masterDOB.getMobileNo() : "")
                                    + "\n\nEmail "
                                    + (masterDOB.getUserEmailId() != null ? masterDOB.getUserEmailId() : ""); //@@Modified by Kameswari for the WPBN issue-61303
                        }
                        if (masterDOB.getShipperZipCode() == null || masterDOB.getConsigneeZipCode() == null) {
                            if ((finalDOB.getPickZoneZipMap() != null
                                    && finalDOB.getPickZoneZipMap().size() > 0)
                                    || (finalDOB.getDeliveryZoneZipMap() != null
                                            && finalDOB.getDeliveryZoneZipMap().size() > 0))
                                sendMail(finalDOB.getMasterDOB().getUserEmailId(), customerFax,
                                        subject.toString(), body,
                                        "Quote" + file_tsmp + ".pdf,Annexure" + file_tsmp + ".pdf",
                                        finalDOB.getAttachmentDOBList());
                            else
                                sendMail(finalDOB.getMasterDOB().getUserEmailId(), customerFax,
                                        subject.toString(), body, "Quote" + file_tsmp + ".pdf",
                                        finalDOB.getAttachmentDOBList());
                        } else
                            sendMail(finalDOB.getMasterDOB().getUserEmailId(), customerFax, subject.toString(),
                                    body, "Quote" + file_tsmp + ".pdf", finalDOB.getAttachmentDOBList());
                    } else
                        faxFlag = 0;
                }
            }
        } catch (Exception e) {
            //Logger.error(FILE_NAME,"Error while sending fax "+e); 
            logger.error(FILE_NAME + "Error while sending fax " + e);
            e.printStackTrace();
            faxFlag = 0;
        }
        if ("Y".equalsIgnoreCase(finalDOB.getFlagsDOB().getPrintFlag())) {
            //finalDOB.getFlagsDOB().setQuoteStatusFlag("PEN");//@@Quote is Pending
            printFlag = 4;
        } else {
            f.delete();
            File annexure = new File(filename);
            annexure.delete();
        }
        returnFlag = mailFlag + faxFlag + printFlag;
    } catch (Exception e) {
        e.printStackTrace();
        //Logger.error(FILE_NAME,"Error while generating the PDF"+e.toString());
        logger.error(FILE_NAME + "Error while generating the PDF" + e.toString());
        returnFlag = 0;
        //throw new Exception("Error while generating PDF format");
    } finally {
        try {
            //Method: doPDFGeneration Defect: PdfWriter is not closedSuggestion: Close and nullify the writer in the finally block.
            if (writer != null) {
                writer.close();
                writer = null;
            }
            charges = null;
            freightCharges = null;
            frequency = null;
            carrier = null;
            transittime = null;
            ratevalidity = null;
            frequency_o = null;
            frequency_d = null;
            carrier_o = null;
            carrier_d = null;
            transit_o = null;
            transit_d = null;
            validity_o = null;
            validity_d = null;
            filesList = null;

        } catch (Exception ex) {
            //Logger.error(FILE_NAME,"Exception caught :: finally :: insertFclValues() " + ex.toString() );
            logger.error(FILE_NAME + "Error while generating the PDF" + ex.toString());
        }
    }
    return returnFlag;
}

From source file:QMSQuoteController.java

License:Open Source License

private int doGenerateCartagePDF(String fileName, QuoteFinalDOB finalDOB, HttpServletRequest request,
        HttpServletResponse response) throws Exception {
    try { //System.out.println("Starting zone PDF Generation------------------------------>");
        DecimalFormat df = new DecimalFormat("###,###,###,##0.00");
        QuoteCartageRates pickQuoteCartageRates = null;
        QuoteCartageRates deliQuoteCartageRates = null;
        ArrayList pickUpQuoteCartageRates = null;
        ArrayList deliveryQuoteCartageRates = null;
        Set pickBreaks = null;//w ww  .  j  a  v a  2  s  . c o  m
        Set deliBreaks = null;
        Set pickUpZoneCodeSet = null;
        Set deliveryZoneCodeSet = null;
        HashMap pickUpZoneCodeMap = null;
        HashMap deliveryZoneCodeMap = null;
        HashMap pickUpZoneZipMap = null;
        HashMap deliveryZoneZipMap = null;
        ArrayList zipList = null;
        ArrayList pickupWeightBreaks = null;
        ArrayList delWeightBreaks = null;
        Iterator zones = null;
        Iterator breaksSet = null;
        int pickupWeightBreaksSize = 0;
        int delWeightBreaksSize = 0;
        HttpSession session = null;

        // Added by Kishore Podili For Charge Basis in the CartagePDF
        ArrayList pickupChargeBasisList = null;
        ArrayList delChargeBasisList = null;
        int pickupChargeBasisSize = 0;
        int delChargeBasisSize = 0;

        pickupChargeBasisList = finalDOB.getPickupChargeBasisList();
        delChargeBasisList = finalDOB.getDelChargeBasisList();

        if (pickupChargeBasisList != null)
            pickupChargeBasisSize = pickupChargeBasisList.size();
        if (delChargeBasisList != null)
            delChargeBasisSize = delChargeBasisList.size();

        //End Of Kishore Podili For Charge Basis in the CartagePDF

        pickUpQuoteCartageRates = finalDOB.getPickUpCartageRatesList();

        deliveryQuoteCartageRates = finalDOB.getDeliveryCartageRatesList();
        pickupWeightBreaks = finalDOB.getPickupWeightBreaks();
        // ArrayList pickupWeightBreaksFOr = finalDOB.getOriginChargesList();
        delWeightBreaks = finalDOB.getDeliveryWeightBreaks();

        if (pickupWeightBreaks != null)
            pickupWeightBreaksSize = pickupWeightBreaks.size();
        if (delWeightBreaks != null)
            delWeightBreaksSize = delWeightBreaks.size();

        QuoteHeader headerDOB = finalDOB.getHeaderDOB();
        QuoteMasterDOB masterDOB = finalDOB.getMasterDOB();
        ESupplyDateUtility eSupplyDateUtility = new ESupplyDateUtility();
        ESupplyGlobalParameters loginbean = (ESupplyGlobalParameters) request.getSession()
                .getAttribute("loginbean");
        eSupplyDateUtility.setPatternWithTime("DD-MONTH-YYYY");
        //eSupplyDateUtility.setPatternWithTime(loginbean.getUserPreferences().getDateFormat());
        //@@ Commented and added by subrahmanyam for the pbn issue 212006 on #26-jul-10
        /*          String[] strDate  = eSupplyDateUtility.getDisplayStringArray(headerDOB.getDateOfQuotation());
        String[] effDate  = eSupplyDateUtility.getDisplayStringArray(headerDOB.getEffDate());
        */
        String[] strDate = null;
        String[] effDate = null;
        if ("View".equalsIgnoreCase(request.getParameter("Operation"))) {
            if ("PDF".equalsIgnoreCase(request.getParameter("PDF"))) {
                strDate = eSupplyDateUtility.getDisplayStringArray(masterDOB.getModifiedDate());
                effDate = eSupplyDateUtility.getDisplayStringArray(masterDOB.getEffDate());
            } else {
                strDate = eSupplyDateUtility.getDisplayStringArray(masterDOB.getModifiedDate());
                effDate = eSupplyDateUtility.getDisplayStringArray(masterDOB.getCreatedDate());
            }

        } else {
            strDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getDateOfQuotation());
            effDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getEffDate());

        }

        String[] validDate;
        String validUptoStr = "";
        if (headerDOB.getValidUpto() != null) {
            validDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getValidUpto());
            validUptoStr = validDate[0];
        }

        StringBuffer attentionTo = new StringBuffer("");
        if (masterDOB.getCustContactNames() != null) {
            for (int i = 0; i < masterDOB.getCustContactNames().length; i++) {
                //Logger.info(FILE_NAME,"masterDOB.getCustContactNames()[i]::"+masterDOB.getCustomerContacts()[i]);
                attentionTo.append(
                        masterDOB.getCustContactNames()[i] != null ? masterDOB.getCustContactNames()[i] : "");
                if (i != (masterDOB.getCustContactNames().length - 1))
                    attentionTo.append(",");
            }
        }

        String chargeRate = null;

        //System.out.println("After getting data------------------------------>"+pickUpQuoteCartageRates.size());
        Document document = new Document(PageSize.A4, 54f, 54f, 68.4f, 68.4f);//@@ 36 points represent 0.5 inch            
        document.addTitle("Approved Report");
        document.addSubject("Report PDF");
        document.addKeywords("Test, Key Words");
        document.addAuthor("DHL");
        document.addCreator("Auto Generated through 4S DHL");
        document.addCreationDate();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        PdfWriter writer = PdfWriter.getInstance(document, baos);
        document.open();

        int[] widths = { 10, 10, 10, 10, 10, 10, 12, 28 };

        Table mainT = new Table(8);
        mainT.setWidth(100);
        mainT.setWidths(widths);
        mainT.setBorderColor(Color.white);
        mainT.setPadding(1);
        mainT.setSpacing(0);

        Phrase headingPhrase = new Phrase("", FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.BLACK));
        Cell cellHeading = new Cell(headingPhrase);
        cellHeading.setBorderColor(new Color(255, 255, 255));
        cellHeading.setHorizontalAlignment(cellHeading.ALIGN_CENTER);
        cellHeading.setColspan(7);
        mainT.addCell(cellHeading);

        Cell imageCell = new Cell();
        java.net.URL url = getServletConfig().getServletContext().getResource("/images/DHLlogo.gif");
        Image img0 = Image.getInstance(url);
        //img0.scalePercent(75);
        imageCell.add(img0);
        imageCell.setHorizontalAlignment(imageCell.ALIGN_RIGHT);
        imageCell.setBorderWidth(0);
        imageCell.setNoWrap(true);
        imageCell.setColspan(1);
        mainT.addCell(imageCell);
        mainT.setAlignment(mainT.ALIGN_CENTER);
        document.add(mainT);

        //pickBreaks = pickQuoteCartageRates.getRates().keySet();
        //System.out.println("After Heading ----------------pickBreaks----------->");            
        Table partCountry = new Table(1, 4);
        partCountry.setBorderWidth(0);
        partCountry.setWidth(100);
        partCountry.setBorderColor(Color.black);
        //partCountry.setBackgroundColor(Color.ORANGE);
        partCountry.setPadding(1);
        partCountry.setSpacing(1);
        partCountry.setAutoFillEmptyCells(true);
        //partCountry.setTableFitsPage(true);
        partCountry.setAlignment(partCountry.ALIGN_CENTER);
        // partCountry.setWidth(100.0f);
        Cell cellCountry;
        Chunk chk;

        chk = new Chunk("ANNEXURE", FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
        partCountry.addCell(cellCountry);

        if ("MY".equalsIgnoreCase(masterDOB.getCountryId())) {
            chk = new Chunk(
                    (headerDOB.getOriginCountry() != null ? headerDOB.getOriginCountry().toUpperCase() : "")
                            + " TO "
                            + (headerDOB.getDestinationCountry() != null
                                    ? headerDOB.getDestinationCountry().toUpperCase()
                                    : ""),
                    FontFactory.getFont("ARIAL", 16, Font.BOLD, Color.BLUE));
            cellCountry = new Cell(chk);
            cellCountry.setWidth("100");
            cellCountry.setBorderWidth(0);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(10.0f);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            partCountry.addCell(cellCountry);

            cellCountry = new Cell("");
            cellCountry.setBorderWidth(0);
            cellCountry.setLeading(5.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk(headerDOB.getCustomerName(),
                    FontFactory.getFont("ARIAL", 14, Font.BOLD, Color.BLUE));
            cellCountry = new Cell(chk);
            cellCountry.setHeader(true);
            cellCountry.setWidth("100");
            cellCountry.setBorderWidth(0);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(10.0f);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            partCountry.addCell(cellCountry);
            //Logger.info(FILE_NAME,"attentionTo.toString():"+attentionTo.toString());

            chk = new Chunk("ATTENTION TO: " + attentionTo.toString(),
                    FontFactory.getFont("ARIAL", 14, Font.BOLD, Color.BLUE));
            cellCountry = new Cell(chk);
            cellCountry.setWidth("100");
            cellCountry.setBorderWidth(0);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(10.0f);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            partCountry.addCell(cellCountry);

            cellCountry = new Cell("");
            cellCountry.setBorderWidth(0);
            cellCountry.setLeading(5.0f);
            partCountry.addCell(cellCountry);
        } else {
            chk = new Chunk(
                    (headerDOB.getOriginCountry() != null ? headerDOB.getOriginCountry().toUpperCase() : "")
                            + " TO "
                            + (headerDOB.getDestinationCountry() != null
                                    ? headerDOB.getDestinationCountry().toUpperCase()
                                    : ""),
                    FontFactory.getFont("ARIAL", 16, Font.BOLD, Color.RED));
            cellCountry = new Cell(chk);
            cellCountry.setWidth("100");
            cellCountry.setBorderWidth(0);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(10.0f);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            partCountry.addCell(cellCountry);

            cellCountry = new Cell("");
            cellCountry.setBorderWidth(0);
            cellCountry.setLeading(5.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk(headerDOB.getCustomerName(),
                    FontFactory.getFont("ARIAL", 14, Font.BOLD, Color.RED));
            cellCountry = new Cell(chk);
            cellCountry.setHeader(true);
            cellCountry.setWidth("100");
            cellCountry.setBorderWidth(0);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(10.0f);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            partCountry.addCell(cellCountry);
            //Logger.info(FILE_NAME,"attentionTo.toString():"+attentionTo.toString());

            chk = new Chunk("ATTENTION TO: " + attentionTo.toString(),
                    FontFactory.getFont("ARIAL", 14, Font.BOLD, Color.RED));
            cellCountry = new Cell(chk);
            cellCountry.setWidth("100");
            cellCountry.setBorderWidth(0);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(10.0f);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            partCountry.addCell(cellCountry);

            cellCountry = new Cell("");
            cellCountry.setBorderWidth(0);
            cellCountry.setLeading(5.0f);
            partCountry.addCell(cellCountry);
        }
        chk = new Chunk("QUOTE REFERENCE: " + masterDOB.getQuoteId(),
                FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
        partCountry.addCell(cellCountry);
        chk = new Chunk("DATE OF QUOTATION: " + strDate[0],
                FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.BLACK));
        cellCountry = new Cell(chk);
        cellCountry.setWidth("100");
        cellCountry.setBorderWidth(0);
        cellCountry.setNoWrap(true);
        cellCountry.setLeading(10.0f);
        cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
        partCountry.addCell(cellCountry);

        document.add(partCountry);

        Table partZone = null;
        Cell cellZone;
        if (pickUpQuoteCartageRates != null && pickUpQuoteCartageRates.size() > 0) {
            /*Set keys = null;            
            for(int i=0;i<pickUpQuoteCartageRates.size();i++)
            {              
              if(i==0)
              { 
                pickBreaks = new TreeSet();//@@This is needed as only a new Set Implementation obj supports addAll() 
              }
              pickQuoteCartageRates = (QuoteCartageRates) pickUpQuoteCartageRates.get(i);
              keys = pickQuoteCartageRates.getRates().keySet();
              pickBreaks.addAll(keys);
            }*/

            //if(pickBreaks!=null && pickBreaks.size()>0)
            //if(pickupWeightBreaks != null && pickupWeightBreaksSize>0)
            partZone = new Table(pickupWeightBreaksSize + 2);
            partZone.setOffset(30);
            partZone.setDefaultHorizontalAlignment(partZone.ALIGN_CENTER);
            partZone.setBorderWidth(1);
            partZone.setBorderColor(Color.black);
            partZone.setPadding(1);
            partZone.setSpacing(1);
            partZone.setAutoFillEmptyCells(true);
            partZone.setWidth(100);
            //partZone.setTableFitsPage(true);
            //@@ Added by subrahmanyam for the enhancement #147062 on 09/12/2008
            chk = new Chunk("PICKUP CARTAGE RATES AT: " + headerDOB.getOriginLocName(),
                    FontFactory.getFont("ARIAL", 10, Font.BOLD, Color.RED));
            cellZone = new Cell(chk);
            cellZone.setNoWrap(true);
            cellZone.setHeader(true);
            cellZone.setVerticalAlignment(cellZone.ALIGN_BOTTOM);
            cellZone.setLeading(10.0f);
            cellZone.setBackgroundColor(Color.WHITE);
            cellZone.setColspan(pickupWeightBreaksSize + 2);
            partZone.addCell(cellZone);
            //@@ Ended by subrahmanyam for the enhancement #147062 on 09/12/2008
            chk = new Chunk("PICKUP CARTAGE RATES", FontFactory.getFont("ARIAL", 10, Font.BOLD, Color.BLACK));
            cellZone = new Cell(chk);
            cellZone.setNoWrap(true);
            cellZone.setHeader(true);
            cellZone.setVerticalAlignment(cellZone.ALIGN_BOTTOM);
            cellZone.setLeading(10.0f);
            cellZone.setBackgroundColor(Color.ORANGE);
            cellZone.setColspan(pickupWeightBreaksSize + 2);
            partZone.addCell(cellZone);

            chk = new Chunk("Zone", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cellZone = new Cell(chk);
            //cellZone.setNoWrap(true);
            cellZone.setLeading(8.0f);
            cellZone.setHeader(true);
            cellZone.setBackgroundColor(Color.LIGHT_GRAY);
            partZone.addCell(cellZone);

            chk = new Chunk("Currency", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cellZone = new Cell(chk);
            //cellZone.setNoWrap(true);
            cellZone.setHeader(true);
            cellZone.setLeading(8.0f);
            cellZone.setBackgroundColor(Color.LIGHT_GRAY);
            partZone.addCell(cellZone);
            //breaksSet = pickBreaks.iterator();  // logger.info("breaksSetbreaksSet::"+breaksSet);
            /*while(breaksSet.hasNext())
            {              
              chk = new Chunk((String)breaksSet.next(),FontFactory.getFont("ARIAL", 8, Font.BOLD,Color.BLACK));
              cellZone = new Cell(chk);              
              cellZone.setNoWrap(true);
              cellZone.setHeader(true);
              partZone.addCell(cellZone);
            }*/
            //if(pickupWeightBreaks!=null)
            //{
            //logger.info("pickupWeightBreaks"+pickupWeightBreaks);
            for (int i = 0; i < pickupWeightBreaksSize; i++) {
                chk = new Chunk((String) pickupWeightBreaks.get(i),
                        FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                cellZone = new Cell(chk);
                //cellZone.setNoWrap(true);
                cellZone.setLeading(8.0f);
                cellZone.setHeader(true);
                cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                partZone.addCell(cellZone);
            }

            //Added By Kishore For the ChargeBasis in the Annexure PDF on 06-Jun-11
            chk = new Chunk("");
            cellZone = new Cell(chk);
            cellZone.setLeading(8.0f);
            // cellZone.setHeader(true);
            // cellZone.setBackgroundColor(Color.LIGHT_GRAY);
            partZone.addCell(cellZone);

            chk = new Chunk("");
            cellZone = new Cell(chk);
            cellZone.setLeading(8.0f);
            //cellZone.setHeader(true);
            //cellZone.setBackgroundColor(Color.LIGHT_GRAY);
            partZone.addCell(cellZone);

            for (int i = 0; i < pickupChargeBasisSize; i++)////commented by Brahmaiah.R on 31/5/2012 for WPBN issue 304241
            {
                chk = new Chunk(toTitleCase((String) pickupChargeBasisList.get(i)),
                        FontFactory.getFont("ARIAL", 7, Font.BOLD, Color.BLACK));

                cellZone = new Cell(chk);
                //cellZone.setNoWrap(true);
                cellZone.setLeading(8.0f);
                cellZone.setHeader(true);
                //cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                partZone.addCell(cellZone);
            }
            ////added by Brahmaiah.R on 31/5/2012 for WPBN issue 304241
            /*    for(int J=0;J<originChargesSize;J++)
                {
                  if(originIndices[J] !=-1)
                  {
                  chargesDOB                = (QuoteCharges)originCharges.get(originIndices[J]);
                   logger.info("Origin Charges doPDFGeneration::"+J+":"+chargesDOB); // newly added                  
                  originChargeInfo        = chargesDOB.getChargeInfoList();
                  originChargesInfoSize   = originChargeInfo.size();
                  int m =0;
              String breakPoint = null;
                  for(int k=0;k<originChargesInfoSize;k++)
                  {
                    chargeInfo = (QuoteChargeInfo)originChargeInfo.get(k);
                    String chargeBasis = (String)(chargeInfo.getBasis());
                   // chargeBasis  = df.format(Double.parseDouble(chargeBasis));
                    chk = new Chunk(chargeBasis,FontFactory.getFont("ARIAL", 8, Font.BOLD,Color.BLACK));
                    cellZone = new Cell(chk);              
                    //cellZone.setNoWrap(true);
                    cellZone.setLeading(8.0f);
                    //cellZone.setHeader(true);
                  //  cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                    partZone.addCell(cellZone);
                            
                  }
                  }
                }//ended by Brahmaiah .R */
            //Added By Kishore For the ChargeBasis in the Annexure PDF on 06-Jun-11 

            //}
            partZone.endHeaders();
            int pikupQuoteCartRatSize = pickUpQuoteCartageRates.size();
            for (int i = 0; i < pikupQuoteCartRatSize; i++) {
                pickQuoteCartageRates = (QuoteCartageRates) pickUpQuoteCartageRates.get(i);
                chk = new Chunk(pickQuoteCartageRates.getZone(),
                        FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                cellZone = new Cell(chk);
                cellZone.setLeading(8.0f);
                //cellZone.setNoWrap(true);            
                partZone.addCell(cellZone);

                chk = new Chunk(pickQuoteCartageRates.getCurrency(),
                        FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                cellZone = new Cell(chk);
                cellZone.setLeading(8.0f);
                //cellZone.setNoWrap(true);            
                partZone.addCell(cellZone);

                pickUpZoneCodeMap = pickQuoteCartageRates.getRates();
                /*breaksSet = pickBreaks.iterator();
                while(breaksSet.hasNext())
                 {
                   String wBreak = (String)breaksSet.next();
                   if(pickUpZoneCodeMap.containsKey(wBreak))
                   {
                    chargeRate = (String)pickUpZoneCodeMap.get(wBreak);
                    chargeRate  = df.format(Double.parseDouble(chargeRate));
                   }
                   else
                   {
                    chargeRate = "--";              
                   }
                  chk = new Chunk(chargeRate,FontFactory.getFont("ARIAL", 8, Font.BOLD,Color.BLACK));
                  cellZone = new Cell(chk);
                  cellZone.setNoWrap(true);            
                  partZone.addCell(cellZone); 
                 }*/
                //-------------------------------------------Commented  by Brahmaiah.R on 31/5/2012 for WPBN issue 304241
                if (pickupWeightBreaks != null) {
                    String wBreak = null;
                    for (int k = 0; k < pickupWeightBreaksSize; k++) {
                        wBreak = (String) pickupWeightBreaks.get(k);

                        if (wBreak != null && pickUpZoneCodeMap.containsKey(wBreak)) {
                            chargeRate = (String) pickUpZoneCodeMap.get(wBreak);
                            chargeRate = df.format(Double.parseDouble(chargeRate));

                        } else {
                            chargeRate = "--";
                        }
                        chk = new Chunk(chargeRate, FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                        cellZone = new Cell(chk);
                        cellZone.setLeading(8.0f);
                        //cellZone.setNoWrap(true);            
                        partZone.addCell(cellZone);
                    }
                }
            }
            ////added by Brahmaiah.R on 31/5/2012 for WPBN issue 304241
            /* for(int J=0;J<originChargesSize;J++)
            {
             if(originIndices[J] !=-1)
             {
             chargesDOB                = (QuoteCharges)originCharges.get(originIndices[J]);
              logger.info("Origin Charges doPDFGeneration::"+J+":"+chargesDOB); // newly added                  
             originChargeInfo        = chargesDOB.getChargeInfoList();
             originChargesInfoSize   = originChargeInfo.size();
             int m =0;
            String breakPoint = null;
             for(int k=0;k<originChargesInfoSize;k++)
             {
               chargeInfo = (QuoteChargeInfo)originChargeInfo.get(k);
               chargeRate =  ((Double)chargeInfo.getSellRate()).toString();
               chargeRate  = df.format(Double.parseDouble(chargeRate));
               chk = new Chunk(chargeRate,FontFactory.getFont("ARIAL", 8, Font.BOLD,Color.BLACK));
               cellZone = new Cell(chk);              
               //cellZone.setNoWrap(true);
               cellZone.setLeading(8.0f);
              // cellZone.setHeader(true);
               //cellZone.setBackgroundColor(Color.LIGHT_GRAY);
               partZone.addCell(cellZone);
             }
             }
            }
            }//ended by Brahmaiah.R */
            //System.out.println("After zone header------------------------------>");
            document.add(partZone);
        }

        if (deliveryQuoteCartageRates != null && deliveryQuoteCartageRates.size() > 0) {
            /*Set dkeys         = null;
            for(int i=0;i<deliveryQuoteCartageRates.size();i++)
            {       
             if(i==0)
             { 
               deliBreaks = new TreeSet();//@@This is needed as only a new Set Implementation obj supports addAll() 
             }
             deliQuoteCartageRates = (QuoteCartageRates) deliveryQuoteCartageRates.get(i);
             dkeys = deliQuoteCartageRates.getRates().keySet();
             deliBreaks.addAll(dkeys);
             //System.out.println("Before zone header------------------------------>"+deliBreaks);
             //System.out.println("Before zone header------------------------------>"+deliBreaks.size());              
            }*/

            partZone = new Table(delWeightBreaksSize + 2);
            partZone.setOffset(30);
            partZone.setDefaultHorizontalAlignment(partZone.ALIGN_CENTER);
            partZone.setBorderWidth(1);
            partZone.setWidth(100);
            partZone.setBorderColor(Color.black);
            partZone.setPadding(1);
            partZone.setSpacing(1);
            partZone.setAutoFillEmptyCells(true);
            //partZone.setTableFitsPage(true);
            //@@ Added by subrahmanyam for the enhancement #147062 on 08/12/2008
            chk = new Chunk("DELIVERY CARTAGE RATES AT: " + headerDOB.getDestLocName(),
                    FontFactory.getFont("ARIAL", 10, Font.BOLD, Color.RED));
            cellZone = new Cell(chk);
            cellZone.setNoWrap(true);
            cellZone.setLeading(10.0f);
            cellZone.setHeader(true);
            cellZone.setBackgroundColor(Color.WHITE);
            cellZone.setVerticalAlignment(cellZone.ALIGN_BOTTOM);
            cellZone.setColspan(delWeightBreaksSize + 2);
            partZone.addCell(cellZone);
            //@@ Ended by subrahmanyam for the enhancement #147062 on 08/12/2008
            chk = new Chunk("DELIVERY CARTAGE RATES", FontFactory.getFont("ARIAL", 10, Font.BOLD, Color.BLACK));
            cellZone = new Cell(chk);
            cellZone.setNoWrap(true);
            cellZone.setLeading(10.0f);
            cellZone.setHeader(true);
            cellZone.setBackgroundColor(Color.ORANGE);
            cellZone.setVerticalAlignment(cellZone.ALIGN_BOTTOM);
            cellZone.setColspan(delWeightBreaksSize + 2);
            partZone.addCell(cellZone);

            chk = new Chunk("Zone", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cellZone = new Cell(chk);
            cellZone.setLeading(8.0f);
            //cellZone.setNoWrap(true);
            cellZone.setHeader(true);
            cellZone.setBackgroundColor(Color.LIGHT_GRAY);
            partZone.addCell(cellZone);

            chk = new Chunk("Currency", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cellZone = new Cell(chk);
            cellZone.setLeading(8.0f);
            //cellZone.setNoWrap(true);
            cellZone.setHeader(true);
            cellZone.setBackgroundColor(Color.LIGHT_GRAY);
            partZone.addCell(cellZone);

            //breaksSet = deliBreaks.iterator();

            /*while(breaksSet.hasNext())
            {              
              String breaks = (String)breaksSet.next();
                    
              chk = new Chunk(breaks,FontFactory.getFont("ARIAL", 8, Font.BOLD,Color.BLACK));
              cellZone = new Cell(chk);              
              cellZone.setNoWrap(true);
              cellZone.setHeader(true);
              partZone.addCell(cellZone);
            }*/
            for (int i = 0; i < delWeightBreaksSize; i++) {
                chk = new Chunk((String) delWeightBreaks.get(i),
                        FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                cellZone = new Cell(chk);
                cellZone.setLeading(8.0f);
                //cellZone.setNoWrap(true);
                cellZone.setHeader(true);
                cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                partZone.addCell(cellZone);
            }
            partZone.endHeaders();

            //Added By Kishore For the ChargeBasis in the Annexure PDF on 06-Jun-11

            chk = new Chunk("");
            cellZone = new Cell(chk);
            cellZone.setLeading(8.0f);
            //cellZone.setHeader(true);
            //cellZone.setBackgroundColor(Color.LIGHT_GRAY);
            partZone.addCell(cellZone);

            chk = new Chunk("");
            cellZone = new Cell(chk);
            cellZone.setLeading(8.0f);
            //cellZone.setHeader(true);
            //cellZone.setBackgroundColor(Color.LIGHT_GRAY);
            partZone.addCell(cellZone);
            ////commented  by Brahmaiah.R on 31/5/2012 for WPBN issue 304241 
            for (int i = 0; i < delChargeBasisSize; i++) {
                chk = new Chunk(toTitleCase((String) delChargeBasisList.get(i)),
                        FontFactory.getFont("ARIAL", 7, Font.BOLD, Color.BLACK));
                cellZone = new Cell(chk);
                //cellZone.setNoWrap(true);
                cellZone.setLeading(8.0f);
                cellZone.setHeader(true);
                //cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                partZone.addCell(cellZone);
            }
            //added by Brahmaiah.R on 31/5/2012 for WPBN issue 304241
            /*    for(int J=0;J<destChargesSize;J++)
                {
                  if(destIndices[J] !=-1)
                  {
                  chargesDOB                = (QuoteCharges)destCharges.get(destIndices[J]);
                   logger.info("Dest Charges doPDFGeneration::"+J+":"+chargesDOB); // newly added                  
                  ArrayList destChargeInfo = chargesDOB.getChargeInfoList();
                  int destChargesInfoSize = destChargeInfo.size();
                  int m =0;
              String breakPoint = null;
                  for(int k=0;k<destChargesInfoSize;k++)
                  {
                    chargeInfo = (QuoteChargeInfo)destChargeInfo.get(k);
                    String chargeDestBasis = (String)chargeInfo.getBasis();
                    //chargeRate  = df.format(Double.parseDouble(chargeRate));
                    chk = new Chunk(chargeDestBasis,FontFactory.getFont("ARIAL", 8, Font.BOLD,Color.BLACK));
                    cellZone = new Cell(chk);              
                    //cellZone.setNoWrap(true);
                    cellZone.setLeading(8.0f);
                   // cellZone.setHeader(true);
                    //cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                    partZone.addCell(cellZone);
                  }
                  }
                }
                }//ended by Brahmaiah.R  */
            //End of Kishore For the ChargeBasis in the Annexure PDF on 06-Jun-11

            int delQuoteCartRtSize = deliveryQuoteCartageRates.size();
            for (int i = 0; i < delQuoteCartRtSize; i++) {
                deliQuoteCartageRates = (QuoteCartageRates) deliveryQuoteCartageRates.get(i);

                chk = new Chunk(deliQuoteCartageRates.getZone(),
                        FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                cellZone = new Cell(chk);
                cellZone.setLeading(8.0f);
                //cellZone.setNoWrap(true);            
                partZone.addCell(cellZone);

                chk = new Chunk(deliQuoteCartageRates.getCurrency(),
                        FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                cellZone = new Cell(chk);
                cellZone.setLeading(8.0f);
                //cellZone.setNoWrap(true);            
                partZone.addCell(cellZone);

                deliveryZoneCodeMap = deliQuoteCartageRates.getRates();

                //breaksSet = deliBreaks.iterator();
                /*while(breaksSet.hasNext())
                 {
                   String wBreak = (String)breaksSet.next();
                   if(deliveryZoneCodeMap.containsKey(wBreak))
                   {
                    chargeRate = (String)deliveryZoneCodeMap.get(wBreak);  
                    chargeRate  = df.format(Double.parseDouble(chargeRate));
                   }
                   else
                   {
                    chargeRate = "--";              
                   }
                  chk = new Chunk(chargeRate,FontFactory.getFont("ARIAL", 8, Font.BOLD,Color.BLACK));
                  cellZone = new Cell(chk);
                  cellZone.setNoWrap(true);            
                  partZone.addCell(cellZone); 
                 }*/
                //commented  by Brahmaiah.R on 31/5/2012 for WPBN issue 304241
                String wBreak = null;
                for (int k = 0; k < delWeightBreaksSize; k++) {
                    wBreak = (String) delWeightBreaks.get(k);
                    if (wBreak != null && deliveryZoneCodeMap.containsKey(wBreak)) {
                        chargeRate = (String) deliveryZoneCodeMap.get(wBreak);
                        chargeRate = df.format(Double.parseDouble(chargeRate));
                    } else {
                        chargeRate = "--";
                    }
                    chk = new Chunk(chargeRate, FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                    cellZone = new Cell(chk);
                    cellZone.setLeading(8.0f);
                    //cellZone.setNoWrap(true);            
                    partZone.addCell(cellZone);
                }
            }
            //added by Brahmaiah.R on 31/5/2012 for WPBN issue 304241
            /*     for(int J=0;J<destChargesSize;J++)
                 {
                   if(destIndices[J] !=-1)
                   {
                   chargesDOB                = (QuoteCharges)destCharges.get(destIndices[J]);
                    logger.info("Dest Charges doPDFGeneration::"+J+":"+chargesDOB); // newly added                  
                   ArrayList destChargeInfo = chargesDOB.getChargeInfoList();
                   int destChargesInfoSize = destChargeInfo.size();
                   int m =0;
               String breakPoint = null;
                   for(int k=0;k<destChargesInfoSize;k++)
                   {
                     chargeInfo = (QuoteChargeInfo)destChargeInfo.get(k);
                     String percent = chargeInfo.isPercentValue()?"%":"";
                     String chargeDestRate = round1(((Double)chargeInfo.getSellRate()),percent).toString();
                     chargeDestRate  = df.format(Double.parseDouble(chargeDestRate));
                     chk = new Chunk(chargeDestRate,FontFactory.getFont("ARIAL", 8, Font.BOLD,Color.BLACK));
                     cellZone = new Cell(chk);              
                     //cellZone.setNoWrap(true);
                     cellZone.setLeading(8.0f);
                    // cellZone.setHeader(true);
                     //cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                     partZone.addCell(cellZone);
                   }
                   }
                 }*/
            document.add(partZone);
        }
        //ended by Brahmaiah.R 
        //System.out.println("After zone header------------------------------>");

        pickUpZoneZipMap = finalDOB.getPickZoneZipMap();
        //@@For Sorting the Zone Codes in an Order.
        List list = new ArrayList();
        Set zoneSet;
        //@@End of Declarations - Sorting
        if (pickUpZoneZipMap != null && pickUpZoneZipMap.size() > 0) {
            //System.out.println("Before zipCode header--------Set size------->"+pickUpZoneZipMap.keySet().size());
            //@@Sorting the Zone Codes (as TreeSet implements java.util.SortedSet)
            list.addAll(pickUpZoneZipMap.keySet());
            zoneSet = new TreeSet(list);
            //@@End of Sorting- Added by Yuvraj

            zones = zoneSet.iterator();

            partZone = new Table(2);
            partZone.setOffset(30);
            partZone.setDefaultHorizontalAlignment(partZone.ALIGN_CENTER);
            partZone.setBorderWidth(1);
            partZone.setBorderColor(Color.black);
            partZone.setPadding(1);
            partZone.setSpacing(1);
            partZone.setWidth(100);
            //partZone.setAutoFillEmptyCells(true);
            //partZone.setTableFitsPage(true);
            //@@ Added by subrahmanyam for the enhancement #147062 on 08/12/2008
            chk = new Chunk("PICKUP CHARGES AT: " + headerDOB.getOriginLocName(),
                    FontFactory.getFont("ARIAL", 10, Font.BOLD, Color.RED));
            cellZone = new Cell(chk);
            cellZone.setLeading(10.0f);
            //cellZone.setNoWrap(true);
            cellZone.setHeader(true);
            cellZone.setBackgroundColor(Color.WHITE);
            cellZone.setVerticalAlignment(cellZone.ALIGN_BOTTOM);
            cellZone.setColspan(2);
            partZone.addCell(cellZone);

            //@@ Ended by subrahmanyam for the enhancement #147062 on  08/12/2008
            chk = new Chunk("PICKUP ZONE ZIP MAPPING",
                    FontFactory.getFont("ARIAL", 10, Font.BOLD, Color.BLACK));
            cellZone = new Cell(chk);
            cellZone.setLeading(10.0f);
            //cellZone.setNoWrap(true);
            cellZone.setHeader(true);
            cellZone.setBackgroundColor(Color.ORANGE);
            cellZone.setVerticalAlignment(cellZone.ALIGN_BOTTOM);
            cellZone.setColspan(2);
            partZone.addCell(cellZone);

            chk = new Chunk("Zone", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cellZone = new Cell(chk);
            cellZone.setLeading(8.0f);
            //cellZone.setNoWrap(true);
            cellZone.setHeader(true);
            cellZone.setBackgroundColor(Color.LIGHT_GRAY);
            partZone.addCell(cellZone);
            chk = new Chunk("Zip Code", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cellZone = new Cell(chk);
            cellZone.setLeading(8.0f);
            cellZone.setNoWrap(true);
            cellZone.setHeader(true);
            partZone.addCell(cellZone);
            partZone.endHeaders();
            // System.out.println("Before zipCode Body------------------------------>");

            while (zones.hasNext()) {
                String zone = (String) zones.next();
                // System.out.println("zone------------------------------>"+zone);
                zipList = (ArrayList) pickUpZoneZipMap.get(zone);
                //System.out.println("zipList--------------------------->"+zipList);
                int zipListSize = zipList.size();
                for (int i = 0; i < zipListSize; i++) {
                    //System.out.println("zone for ------------------------------>"+zone);
                    if (zone != null && !zone.equals("null") && zipList.get(i) != null
                            && !((String) zipList.get(i)).equals("null")) {
                        chk = new Chunk(zone, FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                        cellZone = new Cell(chk);
                        cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                        cellZone.setLeading(8.0f);
                        //cellZone.setNoWrap(true);            
                        partZone.addCell(cellZone);
                        //System.out.println("zipList.get(i)--------------------------->"+(String)zipList.get(i));
                        chk = new Chunk((String) zipList.get(i),
                                FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                        cellZone = new Cell(chk);
                        cellZone.setLeading(8.0f);
                        cellZone.setNoWrap(true);
                        partZone.addCell(cellZone);
                    }
                }
            }
            document.add(partZone);
        }

        deliveryZoneZipMap = finalDOB.getDeliveryZoneZipMap();

        list = new ArrayList();
        zoneSet = null;

        if (deliveryZoneZipMap != null && deliveryZoneZipMap.size() > 0) {
            //System.out.println("Before zipCode header--------Set size------->"+deliveryZoneZipMap.keySet().size());
            list.addAll(deliveryZoneZipMap.keySet());
            zoneSet = new TreeSet(list);
            zones = zoneSet.iterator();

            partZone = new Table(2);
            partZone.setOffset(30);
            partZone.setDefaultHorizontalAlignment(partZone.ALIGN_CENTER);
            partZone.setBorderWidth(1);
            partZone.setBorderColor(Color.black);
            partZone.setPadding(1);
            partZone.setSpacing(1);
            partZone.setWidth(100);
            //partZone.setAutoFillEmptyCells(true);
            //partZone.setTableFitsPage(true);
            //@@ Added by subrahmanyam for the enhancement #147062 on 08/12/2008
            chk = new Chunk("DELIVERY CHARGES AT: " + headerDOB.getDestLocName(),
                    FontFactory.getFont("ARIAL", 10, Font.BOLD, Color.RED));
            cellZone = new Cell(chk);
            cellZone.setLeading(10.0f);
            //cellZone.setNoWrap(true);
            cellZone.setHeader(true);
            cellZone.setBackgroundColor(Color.WHITE);
            cellZone.setVerticalAlignment(cellZone.ALIGN_BOTTOM);
            cellZone.setColspan(2);
            partZone.addCell(cellZone);
            //@@ Ended by subrahmanyam for the enhancement #147062 on 08/12/2008 
            chk = new Chunk("DELIVERY ZONE ZIP MAPPING",
                    FontFactory.getFont("ARIAL", 10, Font.BOLD, Color.BLACK));
            cellZone = new Cell(chk);
            cellZone.setLeading(10.0f);
            //cellZone.setNoWrap(true);
            cellZone.setHeader(true);
            cellZone.setBackgroundColor(Color.ORANGE);
            cellZone.setVerticalAlignment(cellZone.ALIGN_BOTTOM);

            cellZone.setColspan(2);
            partZone.addCell(cellZone);

            chk = new Chunk("Zone", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cellZone = new Cell(chk);
            cellZone.setLeading(8.0f);
            cellZone.setNoWrap(true);
            cellZone.setHeader(true);
            cellZone.setBackgroundColor(Color.LIGHT_GRAY);
            partZone.addCell(cellZone);
            chk = new Chunk("Zip Code", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cellZone = new Cell(chk);
            cellZone.setLeading(8.0f);
            cellZone.setNoWrap(true);
            cellZone.setHeader(true);
            partZone.addCell(cellZone);
            partZone.endHeaders();
            //System.out.println("Before zipCode Body------------------------------>");

            while (zones.hasNext()) {
                String zone = (String) zones.next();
                //System.out.println("zone------------------------------>"+zone);
                zipList = (ArrayList) deliveryZoneZipMap.get(zone);
                if (zipList != null) {
                    //System.out.println("zipList--------------------------->"+zipList);
                    //logger.info("zipList--------------------------->"+zipList);
                    int zipListSize = zipList.size();
                    for (int i = 0; i < zipListSize; i++) {
                        //System.out.println("zone for ------------------------------>"+zone);
                        if (zone != null && !zone.equals("null") && zipList.get(i) != null
                                && !((String) zipList.get(i)).equals("null")) {
                            chk = new Chunk(zone, FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                            cellZone = new Cell(chk);
                            cellZone.setLeading(8.0f);
                            cellZone.setBackgroundColor(Color.LIGHT_GRAY);
                            cellZone.setNoWrap(true);
                            partZone.addCell(cellZone);
                            //System.out.println("zipList.get(i)--------------------------->"+(String)zipList.get(i));
                            chk = new Chunk((String) zipList.get(i),
                                    FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                            cellZone = new Cell(chk);
                            cellZone.setLeading(8.0f);
                            cellZone.setNoWrap(true);
                            partZone.addCell(cellZone);
                        }
                    }
                }
            }
            document.add(partZone);
        }
        //System.out.println("After zipCode header------------------------------>");

        document.close();
        //System.out.println("After     document Close----------------------------------------->");               
        File f = new File("Cartage.pdf");
        FileOutputStream fileOutputStream = new FileOutputStream(f);
        baos.writeTo(fileOutputStream);
        fileOutputStream.close();//added by sanjay on 20/03/2006
        //@@Added by Kameswari for the WPBN issue-80440
        PdfReader reader = new PdfReader("Cartage.pdf");
        int n = reader.getNumberOfPages();
        File fs = new File(fileName);
        String space = " ";
        // we create a stamper that will copy the document to a new file
        PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(fs));

        // adding some metadata
        // adding content to each page

        int k = 0;
        PdfContentByte under;
        PdfContentByte over = null;
        BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED);
        while (k < n) {
            k++;
            over = stamp.getOverContent(k);
            over.beginText();
            over.setFontAndSize(bf, 8);
            over.setTextMatrix(15, 15);
            over.showText("page " + k + " of " + n);

            if (k > 1) {
                over.setFontAndSize(bf, 7);
                over.showText(
                        "                                                                                                       QUOTE REFERENCE:"
                                + masterDOB.getQuoteId());
                //@@Added by subrahmanyam for the WPBN:146452 on 12/12/2008
                over.endText();
                over.beginText();
                over.showText(
                        "                                                                                                                                    CUSTOMER NAME: "
                                + headerDOB.getCustomerName());//subrahmanyam 12/12/2008
                //@@ Ended by subrahmanyam for the WPBM:146452 on 12/12/2008               
            }
            over.endText();
        }
        stamp.close();
        //@@WPBN issue-80440    
        //@@ Commented by subrahmanyam for 146460         
        /* if("on".equalsIgnoreCase(request.getParameter("print")))
        {
                
           request.getSession().setAttribute("CartageOuptutStream",fs);
        }*/
        //@@ Added by subrahmanyam for  146460                

        if ("on".equalsIgnoreCase(request.getParameter("print"))
                || "PDF".equalsIgnoreCase(request.getParameter("pdf"))) {

            request.getSession().setAttribute("CartageOuptutStream", fs);
        }
        //@@ Ended by subrahmanyam for 146460
        //f.delete();
        baos.close();
        //System.out.println("End of generation header------------------------------>");

    } catch (Exception e) {
        e.printStackTrace();
        //Logger.error(FILE_NAME,"Error while generating the PDF"+e.toString());
        logger.error(FILE_NAME + "Error while generating the PDF" + e.toString());
        throw new Exception("Error while generating PDF format");
    }
    return 1;
}

From source file:QMSQuoteController.java

License:Open Source License

private ArrayList doPDFGenerationForQuoteGroup(ArrayList mainDtl, HttpServletRequest request,
        HttpServletResponse response) throws Exception {
    String[] contents = null;/*from www. j a  va2  s.c o  m*/
    String[] levels = null;
    String[] aligns = null;
    String[] headFoot = null;
    Table content = null;
    String[] contactPersons = null;
    String contactName = null;
    ArrayList contactList = new ArrayList();
    ArrayList contactEmailList = new ArrayList();
    ArrayList contactFaxList = new ArrayList();
    ArrayList returnList = new ArrayList();
    ArrayList sentEmailsList = new ArrayList();
    ArrayList unsentEmailsList = new ArrayList();
    ArrayList sentFaxList = new ArrayList();
    ArrayList unsentFaxList = new ArrayList();
    ArrayList filesDOBList = new ArrayList();
    ArrayList filesList = new ArrayList();
    HttpSession session = null;

    try {
        //System.out.println("PDF Generation Startd----------------------------------->");
        QuoteFinalDOB finalDOB = null;
        ESupplyDateUtility eSupplyDateUtility = new ESupplyDateUtility();
        QuoteHeader headerDOB = null;
        QuoteMasterDOB masterDOB = null;
        CostingMasterDOB costingMasterDOB = null;
        CostingChargeDetailsDOB detailsDOB = null;
        CostingLegDetailsDOB legDetails = null;
        CostingRateInfoDOB rateDetailsDOB = null;
        ArrayList rateDetails = new ArrayList();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        String formMailId = "";
        String to_emailIds = "";
        String to_FaxIds = "";
        String faxMailIds = "";
        Document document = new Document(PageSize.A4);
        String PDF_FILE_NAME = "Approved.pdf";
        document.addTitle("Approved Report");
        document.addSubject("Report PDF");
        document.addKeywords("Test, Key Words");
        document.addAuthor("DHL");
        document.addCreator("Auto Generated through 4S DHL");
        document.addCreationDate();
        PdfWriter writer = PdfWriter.getInstance(document, baos);
        document.open();
        Table partCountry;
        Chunk chk;
        Cell cellCountry;
        if (mainDtl != null && mainDtl.size() > 0) {

            finalDOB = (QuoteFinalDOB) mainDtl.get(0);
            headerDOB = finalDOB.getHeaderDOB();
            masterDOB = finalDOB.getMasterDOB();
            formMailId = "webmaster@four-soft.com";
            ESupplyGlobalParameters loginbean = (ESupplyGlobalParameters) request.getSession()
                    .getAttribute("loginbean");
            eSupplyDateUtility.setPatternWithTime("DD-MONTH-YYYY");
            //eSupplyDateUtility.setPatternWithTime(loginbean.getUserPreferences().getDateFormat());

            String[] strDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getDateOfQuotation());
            String[] effDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getEffDate());
            String[] validDate;

            // System.out.println("Before Document Objec--------------------------->");

            //document.setMargins(10,10,10,10);

            Table mainT = new Table(8);
            mainT.setWidth(100);
            mainT.setBorderColor(Color.white);
            mainT.setPadding(1);
            mainT.setSpacing(0);

            Phrase headingPhrase = new Phrase("", FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.BLACK));
            Cell cellHeading = new Cell(headingPhrase);
            cellHeading.setBorderColor(new Color(255, 255, 255));
            cellHeading.setHorizontalAlignment(cellHeading.ALIGN_CENTER);
            cellHeading.setColspan(7);
            mainT.addCell(cellHeading);

            Cell imageCell = new Cell();
            java.net.URL url = getServletConfig().getServletContext().getResource("/images/DHLlogo.gif");
            Image img0 = Image.getInstance(url);
            imageCell.add(img0);
            imageCell.setHorizontalAlignment(imageCell.ALIGN_RIGHT);
            imageCell.setBorderWidth(0);
            imageCell.setNoWrap(true);
            mainT.addCell(imageCell);
            mainT.setAlignment(mainT.ALIGN_CENTER);
            document.add(mainT);

            //Default Header Content Starts
            contents = masterDOB.getDefaultContent();
            headFoot = masterDOB.getDefaultHeaderFooter();

            if (contents != null && contents.length > 0) {
                content = new Table(1);
                content.setOffset(5);
                content.setWidth(100);
                content.setPadding(1);
                content.setSpacing(0);
                content.setBackgroundColor(Color.WHITE);
                content.setBorderColor(Color.black);
                content.setBorderWidth(1f);
                Cell cellContent = null;
                chk = null;
                int hFLen = headFoot.length;
                for (int i = 0; i < hFLen; i++) {
                    if (headFoot[i] != null && "H".equalsIgnoreCase(headFoot[i])) {
                        chk = new Chunk(contents[i], FontFactory.getFont("ARIAL", 7, Font.ITALIC, Color.BLACK));
                        cellContent = new Cell(chk);
                        cellContent.setBorder(0);
                        cellContent.setLeading(6.0f);
                        cellContent.setBackgroundColor(Color.LIGHT_GRAY);
                        cellContent.setHorizontalAlignment(cellContent.ALIGN_LEFT);//Default content is left aligned                                    
                        content.addCell(cellContent);
                    }
                }
                document.add(content);
                contents = null;
                headFoot = null;
                content = null;
            }
            //End Default Header Content

            //System.out.println("After Heading --------------------------->");
        }
        String validUptoStr = null;
        String[] strDate = null;
        String[] effDate = null;
        String[] validDate = null;
        StringBuffer attentionTo = null;
        int mainDtlSize = mainDtl.size();
        for (int m = 0; m < mainDtlSize; m++) {

            finalDOB = (QuoteFinalDOB) mainDtl.get(m);
            headerDOB = finalDOB.getHeaderDOB();
            masterDOB = finalDOB.getMasterDOB();
            //formMailId             =   "webmaster@four-soft.com";
            ESupplyGlobalParameters loginbean = (ESupplyGlobalParameters) request.getSession()
                    .getAttribute("loginbean");
            eSupplyDateUtility.setPatternWithTime("DD-MONTH-YYYY");
            //eSupplyDateUtility.setPatternWithTime(loginbean.getUserPreferences().getDateFormat());

            strDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getDateOfQuotation());
            effDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getEffDate());
            attentionTo = new StringBuffer("");

            if (headerDOB.getValidUpto() != null) {
                validDate = eSupplyDateUtility.getDisplayStringArray(headerDOB.getValidUpto());
                validUptoStr = validDate[0];
            }
            if (masterDOB.getCustContactNames() != null) {
                for (int i = 0; i < masterDOB.getCustContactNames().length; i++) {
                    // Logger.info(FILE_NAME,"headerDOB.getAttentionTo()::"+masterDOB.getCustomerContacts()[i]);
                    attentionTo.append(
                            masterDOB.getCustContactNames()[i] != null ? masterDOB.getCustContactNames()[i]
                                    : "");
                    if (i != masterDOB.getCustContactNames().length)
                        attentionTo.append(",");
                }
            }
            partCountry = new Table(1, 5);
            partCountry.setBorderWidth(0);
            partCountry.setWidth(100);
            partCountry.setBorderColor(Color.black);
            //partCountry.setBackgroundColor(Color.ORANGE);
            partCountry.setPadding(1);
            partCountry.setSpacing(0);
            partCountry.setAutoFillEmptyCells(true);
            //partCountry.setTableFitsPage(true);
            partCountry.setAlignment(partCountry.ALIGN_CENTER);
            // partCountry.setWidth(100.0f);

            String shipmentMode = "";
            if (finalDOB.getMasterDOB().getShipmentMode() == 1)
                shipmentMode = "AIR FREIGHT PROPOSAL";
            else if (finalDOB.getMasterDOB().getShipmentMode() == 2)
                shipmentMode = "SEA FREIGHT PROPOSAL";
            else if (finalDOB.getMasterDOB().getShipmentMode() == 4)
                shipmentMode = "TRUCK FREIGHT PROPOSAL";

            chk = new Chunk(shipmentMode, FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setWidth("100");
            cellCountry.setBorderWidth(0);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(10.0f);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            partCountry.addCell(cellCountry);
            //@@Modified for the WPBN Change Request-71229
            if ("MY".equalsIgnoreCase(masterDOB.getCountryId())) {
                chk = new Chunk(headerDOB.getOriginCountry() + " TO " + headerDOB.getDestinationCountry(),
                        FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.RED));
                cellCountry = new Cell(chk);
                cellCountry.setWidth("100");
                cellCountry.setBorderWidth(0);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(10.0f);
                cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
                partCountry.addCell(cellCountry);

                chk = new Chunk(headerDOB.getCustomerName() == null ? "" : headerDOB.getCustomerName(),
                        FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.RED));
                cellCountry = new Cell(chk);
                cellCountry.setHeader(true);
                cellCountry.setWidth("100");
                cellCountry.setBorderWidth(0);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(10.0f);
                cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
                partCountry.addCell(cellCountry);

                chk = new Chunk("ATTENTION TO: " + attentionTo.toString(),
                        FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.RED));
                cellCountry = new Cell(chk);
                cellCountry.setWidth("100");
                cellCountry.setBorderWidth(0);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(10.0f);
                cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
                partCountry.addCell(cellCountry);
            } else {
                chk = new Chunk(headerDOB.getOriginCountry() + " TO " + headerDOB.getDestinationCountry(),
                        FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.RED));
                cellCountry = new Cell(chk);
                cellCountry.setWidth("100");
                cellCountry.setBorderWidth(0);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(10.0f);
                cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
                partCountry.addCell(cellCountry);

                chk = new Chunk(headerDOB.getCustomerName() == null ? "" : headerDOB.getCustomerName(),
                        FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.RED));
                cellCountry = new Cell(chk);
                cellCountry.setHeader(true);
                cellCountry.setWidth("100");
                cellCountry.setBorderWidth(0);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(10.0f);
                cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
                partCountry.addCell(cellCountry);

                chk = new Chunk("ATTENTION TO: " + attentionTo.toString(),
                        FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.RED));
                cellCountry = new Cell(chk);
                cellCountry.setWidth("100");
                cellCountry.setBorderWidth(0);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(10.0f);
                cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
                partCountry.addCell(cellCountry);
            }
            //@@WPBN Change Request-71229
            chk = new Chunk("QUOTE REFERENCE: " + masterDOB.getQuoteId(),
                    FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setWidth("100");
            cellCountry.setBorderWidth(0);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(10.0f);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            partCountry.addCell(cellCountry);
            chk = new Chunk("DATE OF QUOTATION: " + strDate[0],
                    FontFactory.getFont("ARIAL", 12, Font.BOLD, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setWidth("100");
            cellCountry.setBorderWidth(0);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(10.0f);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            partCountry.addCell(cellCountry);

            contents = masterDOB.getContentOnQuote();
            levels = masterDOB.getLevels();
            aligns = masterDOB.getAlign();
            headFoot = masterDOB.getHeaderFooter();

            if (contents != null && contents.length > 0) {
                content = new Table(1);
                content.setOffset(5);
                content.setWidth(100);
                content.setPadding(1);
                content.setSpacing(0);
                content.setBackgroundColor(Color.WHITE);
                content.setBorderColor(Color.black);
                content.setBorderWidth(1f);
                Cell cellContent = null;
                chk = null;
                int hFlen = headFoot.length;
                for (int i = 0; i < hFlen; i++) {
                    if (headFoot[i] != null && "H".equalsIgnoreCase(headFoot[i])) {
                        chk = new Chunk(contents[i], FontFactory.getFont("ARIAL", 7, Font.ITALIC, Color.BLACK));
                        cellContent = new Cell(chk);
                        cellContent.setBorder(0);
                        cellContent.setLeading(6.0f);
                        cellContent.setBackgroundColor(Color.LIGHT_GRAY);
                        if ("L".equalsIgnoreCase(aligns[i]))
                            cellContent.setHorizontalAlignment(cellContent.ALIGN_LEFT);
                        else if ("C".equalsIgnoreCase(aligns[i]))
                            cellContent.setHorizontalAlignment(cellContent.ALIGN_CENTER);
                        else if ("R".equalsIgnoreCase(aligns[i]))
                            cellContent.setHorizontalAlignment(cellContent.ALIGN_RIGHT);
                        content.addCell(cellContent);
                    }
                }
                document.add(content);
            }

            partCountry = new Table(2, 15);
            partCountry.setOffset(2);
            partCountry.setWidth(100);
            partCountry.setPadding(1);
            partCountry.setSpacing(0);
            partCountry.setBackgroundColor(Color.WHITE);
            partCountry.setBorderColor(Color.black);
            partCountry.setBorderWidth(1);
            //added by subrahmanyam for 182516
            partCountry.setTableFitsPage(true);
            partCountry.setCellsFitPage(true);
            //ended for 182516

            chk = new Chunk("SERVICE INFORMATION: ", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cellCountry = new Cell(chk);

            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            cellCountry.setBackgroundColor(Color.ORANGE);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            //@@ Commented by subrahmanyam for the enhancement #146970 & #146971            
            /*chk = new Chunk("QUOTE ID:"+new Long(masterDOB.getQuoteId()).toString(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            cellCountry.setBackgroundColor(Color.ORANGE);
            cellCountry.setNoWrap(true); cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);*/
            //@@ Added by subrahmanyam for the enhancement #146970 & #146971            
            chk = new Chunk("QUOTE ID:" + masterDOB.getQuoteId(),
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setHorizontalAlignment(cellCountry.ALIGN_CENTER);
            cellCountry.setBackgroundColor(Color.ORANGE);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("Origin : ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("   " + (headerDOB.getOriginLocName() != null ? headerDOB.getOriginLocName() : ""),
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("Destination : ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("   " + (headerDOB.getDestLocName() != null ? headerDOB.getDestLocName() : ""),
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("Customer : ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("   " + (headerDOB.getCustomerName() != null ? headerDOB.getCustomerName() : ""),
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("Agent: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("   " + (headerDOB.getAgent() != null ? headerDOB.getAgent() : ""),
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            //@@ Added by subrahmanyam for the WPBN ISSUE: 150460 ON 23/12/2008                
            if ("EXW".equalsIgnoreCase(headerDOB.getIncoTerms())
                    || "FAS".equalsIgnoreCase(headerDOB.getIncoTerms())
                    || "FCA".equalsIgnoreCase(headerDOB.getIncoTerms())
                    || "FOB".equalsIgnoreCase(headerDOB.getIncoTerms())) {
                chk = new Chunk("Place Of Acceptance: ",
                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cellCountry = new Cell(chk);
                cellCountry.setBackgroundColor(Color.lightGray);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(8.0f);
                partCountry.addCell(cellCountry);
            } else {
                chk = new Chunk("Place Of Delivery: ",
                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cellCountry = new Cell(chk);
                cellCountry.setBackgroundColor(Color.lightGray);
                cellCountry.setNoWrap(true);
                cellCountry.setLeading(8.0f);
                partCountry.addCell(cellCountry);
            }
            //@@ Ended by subrahmanyam for the WPBN ISSUE: 150460 ON 23/12/2008  

            chk = new Chunk("   " + (headerDOB.getCargoAcceptancePlace() != null
                    ? headerDOB.getCargoAcceptancePlace().toUpperCase()
                    : ""), FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("Origin Port: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("   "
                    + ((headerDOB.getOriginPortName() != null
                            ? headerDOB.getOriginPortName().toUpperCase() + ", "
                            : ""))
                    + (headerDOB.getOriginPortCountry() != null ? headerDOB.getOriginPortCountry().toUpperCase()
                            : ""),
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("Destination Port: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("   "
                    + ((headerDOB.getDestPortName() != null ? headerDOB.getDestPortName().toUpperCase() + ", "
                            : ""))
                    + (headerDOB.getDestPortCountry() != null ? headerDOB.getDestPortCountry().toUpperCase()
                            : ""),
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            // @@Commented by subrahmanyam for the enhancement #148546 on 09/12/2008            
            /* chk = new Chunk("Routing: ",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
             cellCountry = new Cell(chk);
             cellCountry.setBackgroundColor(Color.lightGray);
             cellCountry.setNoWrap(true); cellCountry.setLeading(8.0f);
             partCountry.addCell(cellCountry);          
             chk = new Chunk("   "+(headerDOB.getRouting()!=null?headerDOB.getRouting():""),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
             cellCountry = new Cell(chk);
             cellCountry.setNoWrap(true); cellCountry.setLeading(8.0f);
             partCountry.addCell(cellCountry);*/
            //@@ Ended by subrahmanyam for the enhanement #148546 on 09/12/2008 

            chk = new Chunk("Commodity or Product: ",
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("   " + (headerDOB.getCommodity() != null ? headerDOB.getCommodity() : ""),
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("Type of service quoted: ",
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("   " + (headerDOB.getTypeOfService() != null ? headerDOB.getTypeOfService() : ""),
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("Incoterms: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("   " + (headerDOB.getIncoTerms() != null ? headerDOB.getIncoTerms() : ""),
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("Notes: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            //@@ Commented by subrahmanyam for WPBN ISSUE:-145510                                      
            /* chk = new Chunk("   "+(headerDOB.getNotes()!=null?headerDOB.getNotes().toUpperCase()+'\n'+"nnnnnnnnnn":""),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
            Commented by subrahmanyam for WPBN ISSUE:-145510   
            cellCountry = new Cell(chk);
            cellCountry.setNoWrap(true); cellCountry.setLeading(8.0f);
                    
            partCountry.addCell(cellCountry);
            */
            //@@ Ended by subrahmanyam for WPBN ISSUE:-145510  
            //@@ Added by subrahmanyam for WPBN ISSUE:-145510  
            chk = new Chunk("   " + (headerDOB.getNotes() != null ? headerDOB.getNotes().toUpperCase() : " "),
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);
            //@@ Ended by subrahmanyam for WPBN ISSUE:-145510   

            chk = new Chunk("Date Effective: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("   " + effDate[0], FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("Validity of Quote: ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setBackgroundColor(Color.lightGray);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            chk = new Chunk("   " + (validUptoStr != null ? validUptoStr : "VALID UNTIL FURTHER NOTICE"),
                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
            cellCountry = new Cell(chk);
            cellCountry.setNoWrap(true);
            cellCountry.setLeading(8.0f);
            partCountry.addCell(cellCountry);

            document.add(partCountry);
            partCountry.complete();
        }
        int originCount = 0;
        int freightCount = 0;
        int destCount = 0;
        for (int m = 0; m < mainDtlSize; m++) {

            finalDOB = (QuoteFinalDOB) mainDtl.get(m);
            headerDOB = finalDOB.getHeaderDOB();
            masterDOB = finalDOB.getMasterDOB();
            // System.out.println("After Page Country-------------------------------->");
            //Origin Charges

            costingMasterDOB = finalDOB.getCostingMasterDOB();

            ArrayList originCharges = (ArrayList) costingMasterDOB.getOriginList();

            int[] originIndices = finalDOB.getSelectedOriginChargesListIndices();
            int originChargesSize = 0;

            if (originCharges != null)
                originChargesSize = originCharges.size();
            else
                originChargesSize = 0;

            //Destination
            ArrayList destCharges = new ArrayList();
            int[] destIndices = finalDOB.getSelctedDestChargesListIndices();
            int destChargesSize = 0;
            if (destIndices != null)
                destChargesSize = destIndices.length;
            else
                destChargesSize = 0;

            ArrayList frieghtChargeDetails = new ArrayList();
            destCharges = (ArrayList) costingMasterDOB.getDestinationList();
            ArrayList costingLegDetailsList = new ArrayList();
            costingLegDetailsList = (ArrayList) costingMasterDOB.getCostingLegDetailsList();
            //////////////////////////////
            int orgChargSize = originCharges.size();
            for (int i = 0; i < orgChargSize; i++) {
                detailsDOB = (CostingChargeDetailsDOB) originCharges.get(i);
                rateDetails = (ArrayList) detailsDOB.getCostingRateInfoDOB();
                int rateDtlSize = rateDetails.size();
                for (int k = 0; k < rateDtlSize; k++) {
                    originCount++;
                }
            }
            int destChargSize = destCharges.size();
            for (int i = 0; i < destChargSize; i++) {
                detailsDOB = (CostingChargeDetailsDOB) destCharges.get(i);
                rateDetails = (ArrayList) detailsDOB.getCostingRateInfoDOB();
                int rateDtlSize = rateDetails.size();
                for (int k = 0; k < rateDtlSize; k++) {
                    destCount++;
                }
            }
            int costLegDtlSize = costingLegDetailsList.size();
            for (int s = 0; s < costLegDtlSize; s++) {
                legDetails = (CostingLegDetailsDOB) costingLegDetailsList.get(s);
                frieghtChargeDetails = (ArrayList) legDetails.getCostingChargeDetailList();
                int frtChargDtlSize = frieghtChargeDetails.size();
                for (int n = 0; n < frtChargDtlSize; n++) {
                    detailsDOB = (CostingChargeDetailsDOB) frieghtChargeDetails.get(n);
                    rateDetails = (ArrayList) detailsDOB.getCostingRateInfoDOB();
                    int rateDtlSize = rateDetails.size();
                    for (int j = 0; j < rateDtlSize; j++) {
                        freightCount++;
                    }
                }
            }

        }

        //////////////////////////////
        ArrayList charges = finalDOB.getLegDetails();
        int chargesSize = charges.size();
        if (originCount > 0) {
            Table chargeCountry = new Table(7, originCount);
            chargeCountry.setWidth(100);
            chargeCountry.setPadding(1);
            chargeCountry.setSpacing(0);
            chargeCountry.setOffset(25);
            chargeCountry.setBackgroundColor(Color.WHITE);
            chargeCountry.setBorderColor(Color.black);
            chargeCountry.setDefaultHorizontalAlignment(Element.ALIGN_CENTER);
            chargeCountry.setBorderWidth(1);
            //@@ Added by subrahmanyam for wpbn id: 181349 on 07-sep-09
            chargeCountry.setTableFitsPage(true);
            chargeCountry.setCellsFitPage(true);
            // @@ Ended for wpbn id: 181349 on 07-sep-09

            Cell cell;
            String wBslab = "";
            chk = new Chunk("QUOTEID ", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell = new Cell(chk);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setNoWrap(true);
            cell.setLeading(8.0f);
            //cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
            chargeCountry.addCell(cell);

            chk = new Chunk("CHARGE NAME ", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell = new Cell(chk);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setNoWrap(true);
            cell.setLeading(8.0f);
            // cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
            chargeCountry.addCell(cell);

            chk = new Chunk("BREAKPOINT", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell = new Cell(chk);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setNoWrap(true);
            cell.setLeading(8.0f);
            // cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
            chargeCountry.addCell(cell);

            chk = new Chunk("CURRENCY", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell = new Cell(chk);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setNoWrap(true);
            cell.setLeading(8.0f);
            // cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
            chargeCountry.addCell(cell);

            chk = new Chunk("RATE", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell = new Cell(chk);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setNoWrap(true);
            cell.setLeading(8.0f);
            // cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
            chargeCountry.addCell(cell);

            chk = new Chunk("BASIS", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell = new Cell(chk);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setNoWrap(true);
            cell.setLeading(8.0f);
            //cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
            chargeCountry.addCell(cell);

            chk = new Chunk("RATIO", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell = new Cell(chk);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setNoWrap(true);
            cell.setLeading(8.0f);
            //cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
            chargeCountry.addCell(cell);

            chk = new Chunk("ORIGIN CHARGES", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell = new Cell(chk);
            cell.setColspan(7);
            cell.setBackgroundColor(Color.ORANGE);
            cell.setNoWrap(true);
            cell.setLeading(8.0f);
            // cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
            chargeCountry.addCell(cell);
            for (int m = 0; m < mainDtlSize; m++) {

                finalDOB = (QuoteFinalDOB) mainDtl.get(m);
                headerDOB = finalDOB.getHeaderDOB();
                masterDOB = finalDOB.getMasterDOB();

                costingMasterDOB = finalDOB.getCostingMasterDOB();
                ArrayList originCharges = (ArrayList) costingMasterDOB.getOriginList();

                QuoteCharges chargesDOB = null;
                ArrayList originChargeInfo = null;
                int originChargesInfoSize = 0;
                QuoteChargeInfo chargeInfo = null;
                if (originCharges.size() > 0) {

                    int orgChargSize = originCharges.size();
                    for (int i = 0; i < orgChargSize; i++) {
                        detailsDOB = (CostingChargeDetailsDOB) originCharges.get(i);
                        rateDetails = (ArrayList) detailsDOB.getCostingRateInfoDOB();

                        originChargesInfoSize = rateDetails.size();
                        for (int k = 0; k < originChargesInfoSize; k++) {
                            CostingRateInfoDOB crateDetailsDOB = (CostingRateInfoDOB) rateDetails.get(k);
                            if (k == 0) {
                                //@@ Commented by subrahmanyam for the enhancement #146971 and #146970 on 10/12/2008                    
                                /*chk = new Chunk(new Long(masterDOB.getQuoteId()).toString(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                cell = new Cell(chk);
                                //cell.setRowspan(originChargesInfoSize);
                                cell.setBackgroundColor(Color.lightGray);
                                cell.setNoWrap(true); cell.setLeading(8.0f);
                                //cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                                chargeCountry.addCell(cell);*/
                                //@@ Added by subrahmanyam for the enhancement #146971 and 146970 on 10/12/2008    
                                chk = new Chunk(masterDOB.getQuoteId(),
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                cell = new Cell(chk);
                                cell.setBackgroundColor(Color.lightGray);
                                cell.setNoWrap(true);
                                cell.setLeading(8.0f);
                                chargeCountry.addCell(cell);
                                //@@ Ended by subrahmanyam for the enhanemenet #146971 and #146970 on 10/12/2008 

                                //@@ commented and modified by subrahmanyam for 181349  on 07-sep-09 & 202166 on 7-apr-10
                                // chk = new Chunk(detailsDOB.getChargeDescId(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                chk = new Chunk(
                                        detailsDOB.getExternalName() != null ? detailsDOB.getExternalName()
                                                : detailsDOB.getChargeDescId(),
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));//ended for 181349
                                cell = new Cell(chk);
                                //cell.setRowspan(originChargesInfoSize);
                                cell.setBackgroundColor(Color.lightGray);
                                // cell.setNoWrap(true); //commented for 181349
                                cell.setLeading(8.0f);
                                //cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                                chargeCountry.addCell(cell);
                            } else {
                                cell = new Cell("");
                                //cell.setRowspan(originChargesInfoSize);
                                cell.setBackgroundColor(Color.lightGray);
                                cell.setNoWrap(true);
                                cell.setLeading(8.0f);
                                cell.setBorderWidth(0f);
                                //cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                                chargeCountry.addCell(cell);

                                cell = new Cell("");
                                //cell.setRowspan(originChargesInfoSize);
                                cell.setBackgroundColor(Color.lightGray);
                                cell.setNoWrap(true);
                                cell.setLeading(8.0f);
                                cell.setBorderWidth(0f);
                                //cell.setVerticalAlignment(cell.ALIGN_MIDDLE);
                                chargeCountry.addCell(cell);
                            }
                            chk = new Chunk(crateDetailsDOB.getWeightBreakSlab(),
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell = new Cell(chk);
                            cell.setBackgroundColor(Color.lightGray);
                            cell.setNoWrap(true);
                            cell.setLeading(8.0f);
                            chargeCountry.addCell(cell);

                            chk = new Chunk(detailsDOB.getCurrency(),
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell = new Cell(chk);
                            cell.setBackgroundColor(Color.lightGray);
                            cell.setNoWrap(true);
                            cell.setLeading(8.0f);
                            chargeCountry.addCell(cell);

                            chk = new Chunk(crateDetailsDOB.getRate() + "",
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell = new Cell(chk);
                            cell.setNoWrap(true);
                            cell.setLeading(8.0f);
                            chargeCountry.addCell(cell);

                            //added by subrahmanyam for 183812
                            if (crateDetailsDOB.getWeightBreakSlab().equalsIgnoreCase("Min")
                                    || ("BOTH".equalsIgnoreCase(detailsDOB.getRateType())
                                            && "F".equalsIgnoreCase(crateDetailsDOB.getRateIndicator()))) {
                                wBslab = "MIN";
                            } else
                                wBslab = detailsDOB.getChargeBasisDesc();
                            // @@ Commented & Added by subrahmanyam for the wpbn id: 182516 on 10/09/09
                            //chk = new Chunk(crateDetailsDOB.getWeightBreakSlab().equalsIgnoreCase("Min")?"Pershipment ":detailsDOB.getChargeBasisDesc(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                            //chk = new Chunk(crateDetailsDOB.getWeightBreakSlab().equalsIgnoreCase("Min")?" Per Shipment ":detailsDOB.getChargeBasisDesc(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                            chk = new Chunk(
                                    wBslab.equalsIgnoreCase("Min") ? " Per Shipment "
                                            : detailsDOB.getChargeBasisDesc(),
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell = new Cell(chk);
                            cell.setNoWrap(true);
                            cell.setLeading(8.0f);
                            chargeCountry.addCell(cell);

                            chk = new Chunk(
                                    detailsDOB.getDensityRatio() == null ? "" : detailsDOB.getDensityRatio(),
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell = new Cell(chk);
                            cell.setNoWrap(true);
                            cell.setLeading(8.0f);
                            chargeCountry.addCell(cell);

                        }
                    }
                }
            }
            document.add(chargeCountry);
        }
        if (freightCount > 0) {
            Table chargeCountry1 = new Table(7, freightCount);
            chargeCountry1.setWidth(100);
            chargeCountry1.setPadding(1);
            chargeCountry1.setSpacing(0);
            chargeCountry1.setOffset(25);
            chargeCountry1.setBackgroundColor(Color.WHITE);
            chargeCountry1.setBorderColor(Color.black);
            chargeCountry1.setDefaultHorizontalAlignment(Element.ALIGN_CENTER);
            chargeCountry1.setBorderWidth(1);
            //@@ Added by subrahmanyam for wpbn id: 181349 on 07-sep-09
            chargeCountry1.setTableFitsPage(true);
            chargeCountry1.setCellsFitPage(true);
            // @@ Ended for wpbn id: 181349 on 07-sep-09

            Cell cell1;
            chk = new Chunk(" QUOTEID", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell1 = new Cell(chk);
            cell1.setBackgroundColor(Color.ORANGE);
            cell1.setNoWrap(true);
            cell1.setLeading(8.0f);
            //cell1.setVerticalAlignment(cell1.ALIGN_MIDDLE);
            chargeCountry1.addCell(cell1);
            chk = new Chunk("CHARGE NAME ", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell1 = new Cell(chk);
            cell1.setBackgroundColor(Color.ORANGE);
            cell1.setNoWrap(true);
            cell1.setLeading(8.0f);
            //cell1.setVerticalAlignment(cell1.ALIGN_MIDDLE);
            chargeCountry1.addCell(cell1);

            chk = new Chunk("BREAKPOINT", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell1 = new Cell(chk);
            cell1.setBackgroundColor(Color.ORANGE);
            cell1.setNoWrap(true);
            cell1.setLeading(8.0f);
            //cell1.setVerticalAlignment(cell1.ALIGN_MIDDLE);
            chargeCountry1.addCell(cell1);

            chk = new Chunk("CURRENCY", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell1 = new Cell(chk);
            cell1.setBackgroundColor(Color.ORANGE);
            cell1.setNoWrap(true);
            cell1.setLeading(8.0f);
            //cell1.setVerticalAlignment(cell1.ALIGN_MIDDLE);
            chargeCountry1.addCell(cell1);

            chk = new Chunk("RATE", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell1 = new Cell(chk);
            cell1.setBackgroundColor(Color.ORANGE);
            cell1.setNoWrap(true);
            cell1.setLeading(8.0f);
            // cell1.setVerticalAlignment(cell1.ALIGN_MIDDLE);
            chargeCountry1.addCell(cell1);

            chk = new Chunk("BASIS", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell1 = new Cell(chk);
            cell1.setBackgroundColor(Color.ORANGE);
            cell1.setNoWrap(true);
            cell1.setLeading(8.0f);
            //cell1.setVerticalAlignment(cell1.ALIGN_MIDDLE);
            chargeCountry1.addCell(cell1);

            chk = new Chunk("RATIO", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell1 = new Cell(chk);
            cell1.setBackgroundColor(Color.ORANGE);
            cell1.setNoWrap(true);
            cell1.setLeading(8.0f);
            // cell1.setVerticalAlignment(cell1.ALIGN_MIDDLE);
            chargeCountry1.addCell(cell1);

            chk = new Chunk("FREIGHT CHARGES", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell1 = new Cell(chk);
            cell1.setColspan(7);
            cell1.setNoWrap(true);
            cell1.setLeading(8.0f);
            cell1.setBackgroundColor(Color.ORANGE);
            //cell1.setVerticalAlignment(cell1.ALIGN_MIDDLE);
            chargeCountry1.addCell(cell1);
            //Freight Charges
            // System.out.println("After         Origin Charges --------------------------------->");
            int freightChargesSize = 0;
            int freightChargesInfoSize = 0;
            int[] frtIndices = null;
            QuoteFreightLegSellRates legCharges = null;
            String wBSlab = "";//added by subrahmanyam for 182516 on 10-sep-09             
            int mDtlSize = mainDtl.size();
            for (int m = 0; m < mDtlSize; m++) {

                finalDOB = (QuoteFinalDOB) mainDtl.get(m);
                headerDOB = finalDOB.getHeaderDOB();
                masterDOB = finalDOB.getMasterDOB();
                ArrayList costingLegDetailsList = new ArrayList();
                costingMasterDOB = finalDOB.getCostingMasterDOB();
                costingLegDetailsList = (ArrayList) costingMasterDOB.getCostingLegDetailsList();
                ArrayList frieghtChargeDetails = new ArrayList();
                String rDescription = ""; // Added by subrahmanyam for 182516 on 10/09/09
                if (costingLegDetailsList.size() > 0) {

                    int costLegDtlSize = costingLegDetailsList.size();
                    for (int s = 0; s < costLegDtlSize; s++) {
                        legDetails = (CostingLegDetailsDOB) costingLegDetailsList.get(s);
                        frieghtChargeDetails = (ArrayList) legDetails.getCostingChargeDetailList();
                        int frtLegDtlSize = frieghtChargeDetails.size();
                        int frtChargDtlSize = frieghtChargeDetails.size();
                        for (int n = 0; n < frtChargDtlSize; n++) {
                            detailsDOB = (CostingChargeDetailsDOB) frieghtChargeDetails.get(n);
                            rateDetails = (ArrayList) detailsDOB.getCostingRateInfoDOB();
                            int rateDtlSize = rateDetails.size();
                            for (int j = 0; j < rateDtlSize; j++) {
                                rateDetailsDOB = (CostingRateInfoDOB) rateDetails.get(j);

                                if (j == 0) {

                                    chk = new Chunk(legDetails.getOrigin() + "-" + legDetails.getDestination(),
                                            FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
                                    cell1 = new Cell(chk);
                                    cell1.setColspan(7);
                                    cell1.setBackgroundColor(Color.WHITE);
                                    cell1.setLeading(8.0f);
                                    chargeCountry1.addCell(cell1);

                                    //@@ Commented by subrahmanyam for the enhancement #146971 and 1469710 on 10/12/2008                      
                                    /*chk = new Chunk(new Long(masterDOB.getQuoteId()).toString(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                    cell1 = new Cell(chk);
                                    //cell1.setRowspan(rateDetails.size());
                                    cell1.setNoWrap(true); cell2.setLeading(8.0f);
                                    cell1.setBackgroundColor(Color.lightGray);
                                    chargeCountry1.addCell(cell1);*/
                                    //@@ Added by subrahmanyam for the enhancement #146971 and #146970 on 10/12/2008
                                    chk = new Chunk(masterDOB.getQuoteId(),
                                            FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                    cell1 = new Cell(chk);
                                    cell1.setNoWrap(true);
                                    cell1.setLeading(8.0f);
                                    cell1.setBackgroundColor(Color.lightGray);
                                    chargeCountry1.addCell(cell1);
                                    //@@ Ended by subrahmanyam for the enhancement #146971 and 146970 on 10/12/2008    
                                    // COMMENTED AND MODIFIED BY SUBRAHMANYAM FOR 182516
                                    //chk = new Chunk(detailsDOB.getChargeDescId()==null?"":detailsDOB.getChargeDescId(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                    chk = new Chunk(
                                            rateDetailsDOB.getRateDescription() == null ? ""
                                                    : rateDetailsDOB.getRateDescription(),
                                            FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                    cell1 = new Cell(chk);
                                    //cell1.setRowspan(rateDetails.size());
                                    cell1.setNoWrap(true);
                                    cell1.setLeading(8.0f);
                                    cell1.setBackgroundColor(Color.lightGray);
                                    chargeCountry1.addCell(cell1);
                                    rDescription = rateDetailsDOB.getRateDescription();
                                } else {
                                    cell1 = new Cell("");
                                    //cell1.setRowspan(rateDetails.size());
                                    cell1.setNoWrap(true);
                                    cell1.setLeading(8.0f);
                                    cell1.setBorderWidth(0f);
                                    cell1.setBackgroundColor(Color.lightGray);
                                    chargeCountry1.addCell(cell1);

                                    //@@ Commented by subrahmanyam for 182516 on 10/09/09
                                    /*
                                     cell1 = new Cell("");
                                     //cell1.setRowspan(rateDetails.size());
                                     cell1.setNoWrap(true); cell1.setLeading(8.0f);
                                     cell1.setBackgroundColor(Color.lightGray);
                                     cell1.setBorderWidth(0f);
                                     chargeCountry1.addCell(cell1);
                                     */
                                    //@@ added by subrahmanyam for 182516 on 10/09/09
                                    if (rDescription.equalsIgnoreCase(rateDetailsDOB.getRateDescription())) {
                                        chk = new Chunk("",
                                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                        cell1 = new Cell(chk);
                                        //cell1.setRowspan(rateDetails.size());
                                        cell1.setNoWrap(true);
                                        cell1.setLeading(8.0f);
                                        cell1.setBackgroundColor(Color.lightGray);
                                        cell1.setBorderWidth(0f);
                                        chargeCountry1.addCell(cell1);
                                    } else {
                                        chk = new Chunk(
                                                rateDetailsDOB.getRateDescription() == null ? ""
                                                        : rateDetailsDOB.getRateDescription(),
                                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                        cell1 = new Cell(chk);
                                        //cell1.setRowspan(rateDetails.size());
                                        //cell1.setNoWrap(true);
                                        cell1.setLeading(8.0f);
                                        cell1.setBackgroundColor(Color.lightGray);
                                        chargeCountry1.addCell(cell1);
                                        rDescription = rateDetailsDOB.getRateDescription();
                                    }
                                    //ended by subrahmanyam for 182516 on 10/09/09

                                }
                                if ("FSBASIC".equalsIgnoreCase(rateDetailsDOB.getWeightBreakSlab())
                                        || "SSBASIC".equalsIgnoreCase(rateDetailsDOB.getWeightBreakSlab()))
                                    rateDetailsDOB.setWeightBreakSlab("Basic Charge");
                                if ("FSMIN".equalsIgnoreCase(rateDetailsDOB.getWeightBreakSlab())
                                        || "SSMIN".equalsIgnoreCase(rateDetailsDOB.getWeightBreakSlab()))
                                    rateDetailsDOB.setWeightBreakSlab("Minimum");
                                if ("FSKG".equalsIgnoreCase(rateDetailsDOB.getWeightBreakSlab())
                                        || "SSKG".equalsIgnoreCase(rateDetailsDOB.getWeightBreakSlab()))
                                    rateDetailsDOB.setWeightBreakSlab("Flat Rate");

                                chk = new Chunk(rateDetailsDOB.getWeightBreakSlab(),
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                cell1 = new Cell(chk);
                                cell1.setNoWrap(true);
                                cell1.setLeading(8.0f);
                                cell1.setBackgroundColor(Color.lightGray);
                                chargeCountry1.addCell(cell1);

                                chk = new Chunk(detailsDOB.getCurrency(),
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                cell1 = new Cell(chk);
                                cell1.setNoWrap(true);
                                cell1.setLeading(8.0f);
                                cell1.setBackgroundColor(Color.lightGray);
                                chargeCountry1.addCell(cell1);

                                chk = new Chunk(rateDetailsDOB.getRate() + "",
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                cell1 = new Cell(chk);
                                cell1.setNoWrap(true);
                                cell1.setLeading(8.0f);
                                chargeCountry1.addCell(cell1);

                                //@@ Added by subrahmanyam for wpbn id: 182516
                                // MODIFIED BY SUBRAHMANYAM FOR 183812
                                if (rateDetailsDOB.getWeightBreakSlab().equalsIgnoreCase("Min")
                                        || rateDetailsDOB.getWeightBreakSlab().equalsIgnoreCase("Minimum")
                                        || ("BOTH".equalsIgnoreCase(detailsDOB.getRateType()) && "FLAT"
                                                .equalsIgnoreCase(rateDetailsDOB.getRateIndicator()))) {
                                    wBSlab = "MIN";
                                } else {
                                    wBSlab = rateDetailsDOB.getWeightBreakSlab();
                                }
                                //@@ commented by subrahmanyam for wpbn id: 182516
                                //chk = new Chunk(rateDetailsDOB.getWeightBreakSlab().equalsIgnoreCase("Min")?"Pershipment ":detailsDOB.getChargeBasisDesc(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                //@@ Added by subrahmanyam for wpbn id: 182516
                                chk = new Chunk(
                                        wBSlab.equalsIgnoreCase("Min") ? " Per Shipment "
                                                : detailsDOB.getChargeBasisDesc(),
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                //@@ Ended  for wpbn id: 182516
                                cell1 = new Cell(chk);
                                cell1.setNoWrap(true);
                                cell1.setLeading(8.0f);
                                chargeCountry1.addCell(cell1);

                                chk = new Chunk(
                                        detailsDOB.getDensityRatio() == null ? ""
                                                : detailsDOB.getDensityRatio(),
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                cell1 = new Cell(chk);
                                cell1.setNoWrap(true);
                                cell1.setLeading(8.0f);
                                chargeCountry1.addCell(cell1);

                            }
                        }
                    }
                }
            }
            document.add(chargeCountry1);
        }
        // System.out.println("After Charges--------------------------------->");
        ArrayList destChargeInfo = null;
        //int[]      destChargeInfo        =  null;
        int destChargesInfoSize = 0;
        if (destCount > 0) {
            Table chargeCountry2 = new Table(7, destCount);
            chargeCountry2.setWidth(100);
            chargeCountry2.setPadding(1);
            chargeCountry2.setSpacing(0);
            chargeCountry2.setOffset(25);
            chargeCountry2.setBackgroundColor(Color.WHITE);
            chargeCountry2.setBorderColor(Color.black);
            chargeCountry2.setDefaultHorizontalAlignment(Element.ALIGN_CENTER);
            chargeCountry2.setBorderWidth(1);
            //@@ Added by subrahmanyam for wpbn id: 181349 on 07-sep-09
            chargeCountry2.setTableFitsPage(true);
            chargeCountry2.setCellsFitPage(true);
            // @@ Ended for wpbn id: 181349 on 07-sep-09

            Cell cell2;
            String wBslab = "";
            chk = new Chunk("QUOTEID", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell2 = new Cell(chk);
            cell2.setNoWrap(true);
            cell2.setLeading(8.0f);
            cell2.setBackgroundColor(Color.ORANGE);
            //cell2.setVerticalAlignment(cell2.ALIGN_MIDDLE);
            chargeCountry2.addCell(cell2);

            chk = new Chunk("CHARGE NAME", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell2 = new Cell(chk);
            cell2.setNoWrap(true);
            cell2.setLeading(8.0f);
            cell2.setBackgroundColor(Color.ORANGE);
            //cell2.setVerticalAlignment(cell2.ALIGN_MIDDLE);
            chargeCountry2.addCell(cell2);

            chk = new Chunk("BREAKPOINT", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell2 = new Cell(chk);
            cell2.setNoWrap(true);
            cell2.setLeading(8.0f);
            cell2.setBackgroundColor(Color.ORANGE);
            //cell2.setVerticalAlignment(cell2.ALIGN_MIDDLE);
            chargeCountry2.addCell(cell2);

            chk = new Chunk("CURRENCY", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell2 = new Cell(chk);
            cell2.setNoWrap(true);
            cell2.setLeading(8.0f);
            cell2.setBackgroundColor(Color.ORANGE);
            //cell2.setVerticalAlignment(cell2.ALIGN_MIDDLE);
            chargeCountry2.addCell(cell2);

            chk = new Chunk("RATE", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell2 = new Cell(chk);
            cell2.setNoWrap(true);
            cell2.setLeading(8.0f);
            cell2.setBackgroundColor(Color.ORANGE);
            //cell2.setVerticalAlignment(cell2.ALIGN_MIDDLE);
            chargeCountry2.addCell(cell2);

            chk = new Chunk("BASIS", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell2 = new Cell(chk);
            cell2.setNoWrap(true);
            cell2.setLeading(8.0f);
            cell2.setBackgroundColor(Color.ORANGE);
            //cell2.setVerticalAlignment(cell2.ALIGN_MIDDLE);
            chargeCountry2.addCell(cell2);

            chk = new Chunk("RATIO", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell2 = new Cell(chk);
            cell2.setNoWrap(true);
            cell2.setLeading(8.0f);
            cell2.setBackgroundColor(Color.ORANGE);
            //cell2.setVerticalAlignment(cell2.ALIGN_MIDDLE);
            chargeCountry2.addCell(cell2);

            chk = new Chunk("DESTINATION CHARGES", FontFactory.getFont("ARIAL", 8, Font.BOLD, Color.BLACK));
            cell2 = new Cell(chk);
            cell2.setNoWrap(true);
            cell2.setLeading(8.0f);
            cell2.setColspan(7);
            cell2.setBackgroundColor(Color.ORANGE);
            //cell2.setVerticalAlignment(cell2.ALIGN_MIDDLE);
            chargeCountry2.addCell(cell2);
            int mDtlSize = mainDtl.size();
            for (int m = 0; m < mDtlSize; m++) {

                finalDOB = (QuoteFinalDOB) mainDtl.get(m);
                headerDOB = finalDOB.getHeaderDOB();
                masterDOB = finalDOB.getMasterDOB();
                costingMasterDOB = finalDOB.getCostingMasterDOB();
                ArrayList destCharges = (ArrayList) costingMasterDOB.getDestinationList();
                if (destCharges.size() > 0) {

                    int destChargSize = destCharges.size();

                    for (int i = 0; i < destChargSize; i++) {

                        detailsDOB = (CostingChargeDetailsDOB) destCharges.get(i);
                        rateDetails = (ArrayList) detailsDOB.getCostingRateInfoDOB();

                        //originChargesInfoSize   = rateDetails.size();
                        int rDtlSize = rateDetails.size();
                        for (int k = 0; k < rDtlSize; k++) {
                            CostingRateInfoDOB crateDetailsDOB = (CostingRateInfoDOB) rateDetails.get(k);

                            if (k == 0) {

                                //@@ Commented by subrahmanyam for the enhancement #146971 and 1469710 on 10/12/2008                      
                                /*chk = new Chunk(new Long(masterDOB.getQuoteId()).toString(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                cell2 = new Cell(chk);
                                //cell2.setRowspan(rateDetails.size());
                                cell2.setNoWrap(true); cell2.setLeading(8.0f);
                                cell2.setBackgroundColor(Color.lightGray);
                                chargeCountry2.addCell(cell2);*/
                                //@@ Added by subrahmanyam for the enhancement #146971 and #146970 on 10/12/2008
                                chk = new Chunk(masterDOB.getQuoteId(),
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                                cell2 = new Cell(chk);
                                cell2.setNoWrap(true);
                                cell2.setLeading(8.0f);
                                cell2.setBackgroundColor(Color.lightGray);
                                chargeCountry2.addCell(cell2);
                                //@@ Ended by subrahmanyam for the enhancement #146971 and 146970 on 10/12/2008    

                                //  chk = new Chunk(detailsDOB.getChargeDescId(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                                //@@ Added by subrahmanyam for the wpbn id: 181349  on 07-sep-09
                                chk = new Chunk(
                                        detailsDOB.getExternalName() != null ? detailsDOB.getExternalName()
                                                : detailsDOB.getChargeDescId(),
                                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));//ended for 181349
                                cell2 = new Cell(chk);
                                //cell2.setRowspan(rateDetails.size());
                                //cell2.setNoWrap(true); //commented for 181349
                                cell2.setLeading(8.0f);
                                cell2.setBackgroundColor(Color.lightGray);
                                chargeCountry2.addCell(cell2);
                            } else {
                                cell2 = new Cell("");
                                //cell2.setRowspan(rateDetails.size());
                                cell2.setNoWrap(true);
                                cell2.setLeading(8.0f);
                                cell2.setBackgroundColor(Color.lightGray);
                                cell2.setBorderWidth(0f);
                                chargeCountry2.addCell(cell2);

                                cell2 = new Cell("");
                                //cell2.setRowspan(rateDetails.size());
                                cell2.setNoWrap(true);
                                cell2.setLeading(8.0f);
                                cell2.setBackgroundColor(Color.lightGray);
                                cell2.setBorderWidth(0f);
                                chargeCountry2.addCell(cell2);
                            }
                            chk = new Chunk(crateDetailsDOB.getWeightBreakSlab(),
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell2 = new Cell(chk);
                            cell2.setNoWrap(true);
                            cell2.setLeading(8.0f);
                            cell2.setBackgroundColor(Color.lightGray);
                            chargeCountry2.addCell(cell2);

                            chk = new Chunk(detailsDOB.getCurrency(),
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell2 = new Cell(chk);
                            cell2.setNoWrap(true);
                            cell2.setLeading(8.0f);
                            cell2.setBackgroundColor(Color.lightGray);
                            chargeCountry2.addCell(cell2);

                            chk = new Chunk(crateDetailsDOB.getRate() + "",
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell2 = new Cell(chk);
                            cell2.setNoWrap(true);
                            cell2.setLeading(8.0f);
                            chargeCountry2.addCell(cell2);

                            //@@ Commented & Added  by subrahmanyam for 182516 on 10/09/09
                            // chk = new Chunk(crateDetailsDOB.getWeightBreakSlab().equalsIgnoreCase("Min")?"Pershipment ":detailsDOB.getChargeBasisDesc(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                            //ADDED BY SUBRAHMANYAM FOR 183812
                            if (crateDetailsDOB.getWeightBreakSlab().equalsIgnoreCase("Min")
                                    || ("BOTH".equalsIgnoreCase(detailsDOB.getRateType())
                                            && "F".equalsIgnoreCase(crateDetailsDOB.getRateIndicator()))) {
                                wBslab = "MIN";
                            } else
                                wBslab = detailsDOB.getChargeBasisDesc();
                            // COMMENTED & added FOR 183812 ON 24-09-09
                            //chk = new Chunk(crateDetailsDOB.getWeightBreakSlab().equalsIgnoreCase("Min")?" Per Shipment ":detailsDOB.getChargeBasisDesc(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
                            chk = new Chunk(
                                    wBslab.equalsIgnoreCase("Min") ? " Per Shipment "
                                            : detailsDOB.getChargeBasisDesc(),
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell2 = new Cell(chk);
                            cell2.setNoWrap(true);
                            cell2.setLeading(8.0f);
                            chargeCountry2.addCell(cell2);

                            chk = new Chunk(
                                    detailsDOB.getDensityRatio() == null ? "" : detailsDOB.getDensityRatio(),
                                    FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                            cell2 = new Cell(chk);
                            cell2.setNoWrap(true);
                            cell2.setLeading(8.0f);
                            chargeCountry2.addCell(cell2);
                        }
                    }
                }
            }
            document.add(chargeCountry2);
        }

        Table notes = new Table(2, mainDtl.size());
        boolean displayFlag = false;
        notes.setWidth(100);
        notes.setPadding(1);
        notes.setSpacing(0);
        notes.setOffset(5);
        notes.setBackgroundColor(Color.WHITE);
        notes.setBorderColor(Color.black);
        notes.setDefaultHorizontalAlignment(Element.ALIGN_CENTER);
        notes.setBorderWidth(1);
        notes.setTableFitsPage(true);// added by subrahmanyam for quoteGrouping issue 184848
        notes.setCellsFitPage(true);// added by subrahmanyam for quoteGrouping issue 184848

        Cell cell3;
        chk = new Chunk("QUOTEID ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cell3 = new Cell(chk);
        cell3.setNoWrap(true);
        cell3.setLeading(8.0f);
        cell3.setBackgroundColor(Color.ORANGE);
        //cell3.setVerticalAlignment(cell3.ALIGN_MIDDLE);
        //cell3.setBackgroundColor(Color.lightGray);
        notes.addCell(cell3);

        chk = new Chunk("NOTES", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
        cell3 = new Cell(chk);
        cell3.setNoWrap(true);
        cell3.setLeading(8.0f);
        cell3.setBackgroundColor(Color.ORANGE);
        //cell3.setVerticalAlignment(cell3.ALIGN_MIDDLE);

        notes.addCell(cell3);
        int mDtlSize = mainDtl.size();
        for (int m = 0; m < mDtlSize; m++) {

            finalDOB = (QuoteFinalDOB) mainDtl.get(m);
            headerDOB = finalDOB.getHeaderDOB();
            masterDOB = finalDOB.getMasterDOB();
            costingMasterDOB = finalDOB.getCostingMasterDOB();
            if (costingMasterDOB != null) {
            }
            //@@ Commented by subrahmanyam for the enhancement #146971 and 1469710 on 10/12/2008                      
            /*chk = new Chunk(new Long(masterDOB.getQuoteId()).toString(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
            cell3 = new Cell(chk);
            //cell3.setRowspan(rateDetails.size());
            cell3.setNoWrap(true); cell3.setLeading(8.0f);
            cell3.setBackgroundColor(Color.lightGray);
            notes.addCell(cell3);*/
            //@@ Added by subrahmanyam for the enhancement #146971 and #146970 on 10/12/2008
            //commented by subrahmanyam for quote grouping issue
            /*
            chk = new Chunk(masterDOB.getQuoteId(),FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
              cell3 = new Cell(chk);
              cell3.setNoWrap(true); cell3.setLeading(8.0f);
              cell3.setBackgroundColor(Color.lightGray);
              notes.addCell(cell3);
                //@@ Ended by subrahmanyam for the enhancement #146971 and 146970 on 10/12/2008
                    
            chk = new Chunk(" ",FontFactory.getFont("ARIAL", 8, Font.NORMAL,Color.BLACK));
            cell3 = new Cell(chk);
            //cell3.setRowspan();
            cell3.setNoWrap(true); cell3.setLeading(8.0f);
            cell3.setBackgroundColor(Color.lightGray);
            notes.addCell(cell3);
            */
            //@@ Added by subrahmanyam for Quote Grouping Issue 184848 on 30/sep/09
            if (finalDOB.getExternalNotes() != null && finalDOB.getExternalNotes().length > 0) {
                int notesLength = finalDOB.getExternalNotes().length;
                for (int n = 0; n < notesLength; n++) {
                    if (n == 0) {
                        chk = new Chunk(masterDOB.getQuoteId(),
                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell3 = new Cell(chk);
                        cell3.setNoWrap(true);
                        cell3.setLeading(8.0f);
                        cell3.setBackgroundColor(Color.lightGray);
                        notes.addCell(cell3);
                        //@@ Ended by subrahmanyam for the enhancement #146971 and 146970 on 10/12/2008

                        chk = new Chunk(finalDOB.getExternalNotes()[n],
                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell3 = new Cell(chk);
                        //cell3.setRowspan();
                        //cell3.setNoWrap(true);
                        cell3.setHorizontalAlignment(cell3.ALIGN_LEFT);
                        cell3.setLeading(8.0f);
                        cell3.setBackgroundColor(Color.lightGray);
                        notes.addCell(cell3);
                    } else {
                        chk = new Chunk("", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell3 = new Cell(chk);
                        cell3.setNoWrap(true);
                        cell3.setLeading(8.0f);
                        cell3.setBackgroundColor(Color.lightGray);
                        notes.addCell(cell3);
                        //@@ Ended by subrahmanyam for the enhancement #146971 and 146970 on 10/12/2008

                        chk = new Chunk(finalDOB.getExternalNotes()[n],
                                FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                        cell3 = new Cell(chk);
                        //cell3.setRowspan();
                        // cell3.setNoWrap(true);
                        cell3.setHorizontalAlignment(cell3.ALIGN_LEFT);
                        cell3.setLeading(8.0f);
                        cell3.setBackgroundColor(Color.lightGray);
                        notes.addCell(cell3);
                    }
                }
            } else {
                chk = new Chunk(masterDOB.getQuoteId(),
                        FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cell3 = new Cell(chk);
                cell3.setNoWrap(true);
                cell3.setLeading(8.0f);
                cell3.setBackgroundColor(Color.lightGray);
                notes.addCell(cell3);

                chk = new Chunk(" ", FontFactory.getFont("ARIAL", 8, Font.NORMAL, Color.BLACK));
                cell3 = new Cell(chk);
                //cell3.setRowspan();
                cell3.setNoWrap(true);
                cell3.setLeading(8.0f);
                cell3.setBackgroundColor(Color.lightGray);
                notes.addCell(cell3);
            }
            //@@ Ended by subrahmanyam for Quote Grouping Issue 184848 on 30/09/09

            contents = masterDOB.getContentOnQuote();
            levels = masterDOB.getLevels();
            aligns = masterDOB.getAlign();
            headFoot = masterDOB.getHeaderFooter();

            if (contents != null && contents.length > 0) {
                int hFLen = headFoot.length;
                for (int i = 0; i < hFLen; i++) {
                    if (headFoot[i] != null && "F".equalsIgnoreCase(headFoot[i])) {
                        displayFlag = true;
                        break;
                    }
                }
                if (displayFlag) {
                    content = new Table(1);
                    content.setOffset(5);
                    content.setWidth(100);
                    content.setPadding(1);
                    content.setSpacing(0);
                    content.setBackgroundColor(Color.WHITE);
                    content.setBorderColor(Color.black);
                    content.setBorderWidth(1f);
                    Cell cellContent = null;
                    chk = new Chunk("QUOTEID : " + masterDOB.getQuoteId(),
                            FontFactory.getFont("ARIAL", 7, Font.ITALIC, Color.BLACK));
                    cellContent = new Cell(chk);
                    cellContent.setBorder(0);
                    cellContent.setLeading(6.0f);
                    cellContent.setHorizontalAlignment(cellContent.ALIGN_CENTER);
                    cellContent.setBackgroundColor(Color.ORANGE);
                    content.addCell(cellContent);
                    for (int i = 0; i < hFLen; i++) {
                        if (headFoot[i] != null && "F".equalsIgnoreCase(headFoot[i])) {
                            chk = new Chunk(contents[i] != null ? contents[i].toUpperCase() : "",
                                    FontFactory.getFont("ARIAL", 7, Font.ITALIC, Color.BLACK));
                            cellContent = new Cell(chk);
                            cellContent.setBorder(0);
                            cellContent.setLeading(6.0f);
                            cellContent.setBackgroundColor(Color.LIGHT_GRAY);
                            if ("L".equalsIgnoreCase(aligns[i]))
                                cellContent.setHorizontalAlignment(cellContent.ALIGN_LEFT);
                            else if ("C".equalsIgnoreCase(aligns[i]))
                                cellContent.setHorizontalAlignment(cellContent.ALIGN_CENTER);
                            else if ("R".equalsIgnoreCase(aligns[i]))
                                cellContent.setHorizontalAlignment(cellContent.ALIGN_RIGHT);
                            content.addCell(cellContent);
                        }
                    }
                    document.add(content);
                }
            }
        }
        document.add(notes);
        //Default Footer Content Starts
        contents = masterDOB.getDefaultContent();
        //Added by Anusha V
        int hFLen = 0;
        headFoot = masterDOB.getDefaultHeaderFooter();
        //if(headFoot.length>0){
        //hFLen   =   headFoot.length;}
        //Commented by Anusha V
        //int hFLen = headFoot.length;
        if (contents != null && contents.length > 0) {
            content = new Table(1);
            content.setOffset(5);
            content.setWidth(100);
            content.setPadding(1);
            content.setSpacing(0);
            content.setBackgroundColor(Color.WHITE);
            content.setBorderColor(Color.black);
            content.setBorderWidth(1f);
            Cell cellContent = null;
            chk = null;

            for (int i = 0; i < headFoot.length; i++) {
                if (headFoot[i] != null && "F".equalsIgnoreCase(headFoot[i])) {
                    chk = new Chunk(contents[i], FontFactory.getFont("ARIAL", 7, Font.ITALIC, Color.BLACK));
                    cellContent = new Cell(chk);
                    cellContent.setBorder(0);
                    cellContent.setLeading(6.0f);
                    cellContent.setBackgroundColor(Color.LIGHT_GRAY);
                    cellContent.setHorizontalAlignment(cellContent.ALIGN_LEFT);//Default content is left aligned                                    
                    content.addCell(cellContent);

                }
            }
            document.add(content);
        }
        //End Default Footer Content

        // System.out.println("After     document Close----------------------------------------->");

        document.close();
        // Thread.sleep(100);
        //logger.info("thread");
        //String file_tsmp = ""+new java.sql.Timestamp((new java.util.Date()).getTime()+masterDOB.getQuoteId());  //@@ Commented by subrahmanyam for the Enhancement #146971 on 2/12/08
        // String file_tsmp = ""+new java.sql.Timestamp((new java.util.Date()).getTime()+Long.parseLong(masterDOB.getQuoteId()));  //@@ Added by subrahmanyam for the Enhancement #146971 on 2/12/08
        //Commented by Anusha V
        //String file_tsmp = ""+new java.sql.Timestamp((new java.util.Date()).getTime())+masterDOB.getQuoteId();//@@ Added by subrahmanyam for the Enhancement #146971 on 2/12/08
        //Added by Anusha V
        String file_tsmp = "" + new java.sql.Timestamp((new java.util.Date()).getTime());
        file_tsmp = file_tsmp.replaceAll("\\:", "");
        file_tsmp = file_tsmp.replaceAll("\\.", "");
        file_tsmp = file_tsmp.replaceAll("\\-", "");
        file_tsmp = file_tsmp.replaceAll(" ", "");
        File f = new File("Quote" + file_tsmp + ".pdf");
        FileOutputStream fileOutputStream = new FileOutputStream(f);
        baos.writeTo(fileOutputStream);
        fileOutputStream.close();
        //  logger.info("masterDOB.getUserId()"+masterDOB.getUserId());
        if ("on".equalsIgnoreCase(request.getParameter("print"))) {

            request.getSession().setAttribute("QuoteOuptutStream", f);
        }
        //  session.setAttribute("UserId",masterDOB.getUserId());

        int noOfQuotes = mainDtl.size();
        StringBuffer quoteIds = new StringBuffer("");
        String quoteType = "";
        String terminalAddress = "";
        String creatorDetails = "";
        String fromEmailId = "";
        String body = "";
        String countryCode = "";
        for (int i = 0; i < noOfQuotes; i++) {
            finalDOB = (QuoteFinalDOB) mainDtl.get(i);
            /*  //@@Added for the WPBN issue-
              filesDOBList           =   finalDOB.getAttachmentDOBList(); 
              for(int j=0;j<filesDOBList.size();j++)
              {
               filesList.add(filesDOBList.get(j));
              } //@@Added for the WPBN issue-*/

            if (i == 0) {
                quoteType = "" + finalDOB.getMasterDOB().getShipmentMode();
                terminalAddress = finalDOB.getMasterDOB().getTerminalAddress();
                creatorDetails = finalDOB.getMasterDOB().getCreatorDetails();
                fromEmailId = finalDOB.getMasterDOB().getUserEmailId();
                countryCode = finalDOB.getHeaderDOB().getCustCountyCode();
                to_FaxIds = finalDOB.getHeaderDOB().getCustFaxNo();
                to_emailIds = finalDOB.getHeaderDOB().getCustEmailId();
            }
            quoteIds.append(finalDOB.getMasterDOB().getQuoteId());
            if (i != noOfQuotes - 1)
                quoteIds.append(",");

            contactPersons = finalDOB.getMasterDOB().getCustContactNames();
            if (contactPersons != null) {
                int contPersLen = contactPersons.length;
                for (int k = 0; k < contPersLen; k++) {
                    if (!contactList.contains(finalDOB.getMasterDOB().getCustContactNames()[k])) {
                        contactList.add(finalDOB.getMasterDOB().getCustContactNames()[k]);
                        contactEmailList.add(finalDOB.getMasterDOB().getCustomerContactsEmailIds()[k]);
                        contactFaxList.add(finalDOB.getMasterDOB().getCustomerContactsFax()[k]);
                    }
                }

            }

        }

        if ("1".equalsIgnoreCase(quoteType))
            quoteType = "Airfreight";
        else if ("2".equalsIgnoreCase(quoteType))
            quoteType = "Seafreight";
        else if ("4".equalsIgnoreCase(quoteType))
            quoteType = "Truckfreight";

        String subject = "DHL Global Forwarding Quotation, Multiple " + quoteType + ", Quote References "
                + quoteIds.toString();
        String message = "";
        //finalDOB.getFlagsDOB().setQuoteStatusFlag("PEN");//@@Quote is Pending
        //ReportsSessionBeanHome home      = (ReportsSessionBeanHome)LookUpBean.getEJBHome("ReportsSessionBean");
        //ReportsSession remote   = (ReportsSession)home.create();
        //if(contactList.size()==0)
        //{
        to_emailIds = to_emailIds.replaceAll(";", ",");
        /*message  = "Dear Customer,\n\nThank you for the opportunity to provide this quotation.  All information is contained within the attachment."+
                    "  Should you have any queries please do not hesitate to contact us.\n\n\nRegards,\n"+creatorDetails+"\n"+terminalAddress;*/
        //message   = "Dear Customer,\n\n"+finalDOB.getEmailText()+"\n\n\nRegards,\n"+creatorDetails+"\n"+terminalAddress+"\n"+;       
        if (finalDOB.getUpdatedReportDOB() != null) {
            body = "Dear Customer,\n\nThis is a replacement quotation reference "
                    + request.getAttribute("quoteId") + ",replacing "
                    + finalDOB.getUpdatedReportDOB().getQuoteId() + ", due to a change in "
                    + (finalDOB.getEmailChargeName() != null ? finalDOB.getEmailChargeName()
                            : finalDOB.getUpdatedReportDOB().getChangeDesc())
                    + ",\n\n" + (finalDOB.getEmailText() != null ? finalDOB.getEmailText() : "") + "\n\n\n"
                    + (masterDOB.getCreatorDetails() != null ? masterDOB.getCreatorDetails() : "") + "\n\n"
                    + (masterDOB.getCompanyName() != null ? masterDOB.getCompanyName() : "") + "\n"
                    + (masterDOB.getTerminalAddress() != null ? masterDOB.getTerminalAddress() : "") + "\n\n"
                    + "Phone  " + (masterDOB.getPhoneNo() != null ? masterDOB.getPhoneNo() : "") + "\n"
                    + "Fax    " + (masterDOB.getFaxNo() != null ? masterDOB.getFaxNo() : "") + "\n" + "Mobile "
                    + (masterDOB.getMobileNo() != null ? masterDOB.getMobileNo() : "") + "\n\nEmail "
                    + (masterDOB.getUserEmailId() != null ? masterDOB.getUserEmailId() : ""); //@@Modified by Kameswari for the WPBN issue-61303
        } else {
            body = "Dear Customer,\n\n" + (finalDOB.getEmailText() != null ? finalDOB.getEmailText() : "")
                    + "\n\n\n" + (masterDOB.getCreatorDetails() != null ? masterDOB.getCreatorDetails() : "")
                    + "\n\n" + (masterDOB.getCompanyName() != null ? masterDOB.getCompanyName() : "") + "\n"
                    + (masterDOB.getTerminalAddress() != null ? masterDOB.getTerminalAddress() : "") + "\n\n"
                    + "Phone  " + (masterDOB.getPhoneNo() != null ? masterDOB.getPhoneNo() : "") + "\n"
                    + "Fax    " + (masterDOB.getFaxNo() != null ? masterDOB.getFaxNo() : "") + "\n" + "Mobile "
                    + (masterDOB.getMobileNo() != null ? masterDOB.getMobileNo() : "") + "\n\nEmail "
                    + (masterDOB.getUserEmailId() != null ? masterDOB.getUserEmailId() : ""); //@@Modified by Kameswari for the WPBN issue-61303
        }
        if ("on".equalsIgnoreCase(request.getParameter("email"))) {
            try {
                sendMail(fromEmailId, to_emailIds, subject, message, "Quote" + file_tsmp + ".pdf", null);
                sentEmailsList.add(to_emailIds);
            } catch (FoursoftException fs) {
                //Logger.error(FILE_NAME,"Error While Sending Mail.."+fs.getMessage());
                logger.error(FILE_NAME + "Error While Sending Mail.." + fs.getMessage());
                fs.printStackTrace();
                unsentEmailsList.add(to_emailIds);
            }
        }
        if ("on".equalsIgnoreCase(request.getParameter("fax"))) {
            if ("SG".equalsIgnoreCase(countryCode))
                faxMailIds = "fax#" + to_FaxIds + "@tcdhl.com";
            else
                faxMailIds = "ifax#" + to_FaxIds + "@tcdhl.com";
            try {
                sendMail(fromEmailId, faxMailIds, subject, message, "Quote" + file_tsmp + ".pdf", null);
                sentFaxList.add(to_FaxIds);
            } catch (FoursoftException fs) {
                //Logger.error(FILE_NAME,"Error While Sending Fax.."+fs.getMessage());
                logger.error(FILE_NAME + "Error While Sending Fax.." + fs.getMessage());
                fs.printStackTrace();
                unsentFaxList.add(to_FaxIds);
            }
        }
        //}
        //else
        //{
        int contactSize = contactList.size();
        for (int i = 0; i < contactSize; i++) {
            contactName = (String) contactList.get(i);
            /*message = "Dear "+contactName+",\n\nThank you for the opportunity to provide this Quotation. All information is contained within the attachment."+
             " Should you have any queries, please do not hesitate to contact us.\n\n\nRegards,\n"+creatorDetails+"\n"+terminalAddress;*/
            // message = "Dear "+contactName+",\n\n"+finalDOB.getEmailText()+"\n\n\nRegards,\n"+creatorDetails+"\n"+terminalAddress;         
            if (finalDOB.getUpdatedReportDOB() != null) {
                body = "Dear " + (contactName != null ? contactName : "")
                        + ",\n\nThis is a replacement quotation reference " + request.getAttribute("quoteId")
                        + ",replacing " + finalDOB.getUpdatedReportDOB().getQuoteId() + ", due to a change in "
                        + (finalDOB.getEmailChargeName() != null ? finalDOB.getEmailChargeName()
                                : finalDOB.getUpdatedReportDOB().getChangeDesc())
                        + ",\n\n" + finalDOB.getEmailText() != null
                                ? finalDOB.getEmailText()
                                : "" + "\n\n\n" + masterDOB.getCreatorDetails() != null
                                        ? masterDOB.getCreatorDetails()
                                        : "" + "\n\n" + masterDOB.getCompanyName() != null
                                                ? masterDOB.getCompanyName()
                                                : "" + "\n" + masterDOB.getTerminalAddress() != null
                                                        ? masterDOB.getTerminalAddress()
                                                        : "" + "\n\n" + "Phone  "
                                                                + masterDOB.getPhoneNo() != null
                                                                        ? masterDOB.getPhoneNo()
                                                                        : "" + "\n" + "Fax    "
                                                                                + masterDOB.getFaxNo() != null
                                                                                        ? masterDOB.getFaxNo()
                                                                                        : "" + "\n" + "Mobile "
                                                                                                + masterDOB
                                                                                                        .getMobileNo() != null
                                                                                                                ? masterDOB
                                                                                                                        .getMobileNo()
                                                                                                                : "" + "\n\nEmail "
                                                                                                                        + masterDOB
                                                                                                                                .getUserEmailId() != null
                                                                                                                                        ? masterDOB
                                                                                                                                                .getUserEmailId()
                                                                                                                                        : ""; //@@Modified by Kameswari for the WPBN issue-61303
            } else {
                body = "Dear " + (contactName != null ? contactName : "") + ",\n\n"
                        + finalDOB.getEmailText() != null
                                ? finalDOB.getEmailText()
                                : "" + "\n\n\n" + masterDOB.getCreatorDetails() != null
                                        ? masterDOB.getCreatorDetails()
                                        : "" + "\n\n" + masterDOB.getCompanyName() != null
                                                ? masterDOB.getCompanyName()
                                                : "" + "\n" + masterDOB.getTerminalAddress() != null
                                                        ? masterDOB.getTerminalAddress()
                                                        : "" + "\n\n" + "Phone  "
                                                                + masterDOB.getPhoneNo() != null
                                                                        ? masterDOB.getPhoneNo()
                                                                        : "" + "\n" + "Fax    "
                                                                                + masterDOB.getFaxNo() != null
                                                                                        ? masterDOB.getFaxNo()
                                                                                        : "" + "\n" + "Mobile "
                                                                                                + masterDOB
                                                                                                        .getMobileNo() != null
                                                                                                                ? masterDOB
                                                                                                                        .getMobileNo()
                                                                                                                : "" + "\n\nEmail "
                                                                                                                        + masterDOB
                                                                                                                                .getUserEmailId() != null
                                                                                                                                        ? masterDOB
                                                                                                                                                .getUserEmailId()
                                                                                                                                        : ""; //@@Modified by Kameswari for the WPBN issue-61303

            }
            if ("on".equalsIgnoreCase(request.getParameter("email"))) {
                try {
                    sendMail(fromEmailId, (String) contactEmailList.get(i), subject, message,
                            "Quote" + file_tsmp + ".pdf", null);
                    sentEmailsList.add(contactEmailList.get(i));
                } catch (FoursoftException fs) {
                    //Logger.error(FILE_NAME,"Error While Sending Mail.."+fs.getMessage());
                    logger.error(FILE_NAME + "Error While Sending Mail.." + fs.getMessage());
                    fs.printStackTrace();
                    unsentEmailsList.add(contactEmailList.get(i));
                }
            }
            if ("on".equalsIgnoreCase(request.getParameter("fax"))) {
                if ("SG".equalsIgnoreCase(countryCode))
                    to_FaxIds = "fax#" + contactFaxList.get(i) + "@tcdhl.com";
                else
                    to_FaxIds = "ifax#" + contactFaxList.get(i) + "@tcdhl.com";
                try {
                    sendMail(fromEmailId, to_FaxIds, subject, message, "Quote" + file_tsmp + ".pdf", null);
                    sentFaxList.add(contactFaxList.get(i));
                } catch (FoursoftException fs) {
                    //Logger.error(FILE_NAME,"Error While Sending Fax.."+fs.getMessage());
                    logger.error(FILE_NAME + "Error While Sending Fax.." + fs.getMessage());
                    fs.printStackTrace();
                    unsentFaxList.add(
                            contactFaxList.get(i) != null ? contactFaxList.get(i) : "No Fax Number Provided");
                }
            }
        }
        //}
        returnList.add(sentEmailsList);
        returnList.add(unsentEmailsList);
        returnList.add(sentFaxList);
        returnList.add(unsentFaxList);

        // System.out.println("Before Sending Mail------------------------------>");

        // System.out.println("End of mail sending and PDF Generation --------------------------------->");

    } catch (Exception e) {
        e.printStackTrace();
        //Logger.error(FILE_NAME,"Error while generating the PDF"+e.toString());
        logger.error(FILE_NAME + "Error while generating the PDF" + e.toString());
        //return 0;
        //throw new Exception("Error while generating PDF format");
    }
    return returnList;
}

From source file:com.afunms.report.abstraction.ExcelReport1.java

public void createReport_networkPDF(String file) throws DocumentException, IOException {
    String runmodel = PollingEngine.getCollectwebflag();
    Hashtable CPU = (Hashtable) reportHash.get("CPU");
    String Ping = (String) reportHash.get("Ping");
    String ip = (String) reportHash.get("ip");
    String newip = doip(ip);/*from   w  w w  . j a v  a2 s  .  co m*/
    Calendar colTime = (Calendar) reportHash.get("time");
    Date cc = colTime.getTime();
    Vector netifVector = (Vector) reportHash.get("netifVector");
    Hashtable portconfigHash = (Hashtable) reportHash.get("portconfigHash");
    List reportports = (List) reportHash.get("reportports");
    Vector iprouterVector = (Vector) reportHash.get("iprouterVector");

    Hashtable Memory = (Hashtable) reportHash.get("Memory");
    Hashtable Disk = (Hashtable) reportHash.get("Disk");
    String hostname = (String) reportHash.get("equipname");
    Hashtable memMaxHash = (Hashtable) reportHash.get("memmaxhash");
    Hashtable maxping = (Hashtable) reportHash.get("ping");

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    String[] netIfItemch = { "", "", "", "(M)(KB/S)", "", "(KB/S)",
            "(KB/S)" };
    String[] ipRouterItemch = { "", "", "", "", "", "" };
    String[] memoryItem = { "Capability", "Utilization" };
    String[] diskItem = { "AllSize", "UsedSize", "Utilization", "INodeUsedSize", "INodeUtilization" };
    String[] diskItemch = { "", "", "", "i-node", "i-node" };
    String[] iproutertype = { "", "", "", "direct(3)", "indirect(4)" };
    String[] iprouterproto = { "", "other(1)", "local(2)", "netmgmt(3)", "icmp(4)", "egp(5)", "ggp(6)",
            "hello(7)", "rip(8)", "is-is(9)", "es-is(10)", "ciscoIgrp(11)", "bbnSpfIgp(12)", "ospf(13)",
            "bgp(14)" };
    // 
    Document document = new Document(PageSize.A4);
    // (Writer)document(Writer)
    PdfWriter.getInstance(document, new FileOutputStream(file));
    document.open();
    // 
    BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
    BaseFont bfChinese1 = BaseFont.createFont("Times-Roman", "", BaseFont.NOT_EMBEDDED);
    // 
    Font titleFont = new Font(bfChinese, 12, Font.BOLD);
    // 
    Font contextFont = new Font(bfChinese, 10, Font.NORMAL);

    Paragraph title = new Paragraph(hostname + "", titleFont);
    // 
    title.setAlignment(Element.ALIGN_CENTER);
    // title.setFont(titleFont);
    document.add(title);
    String contextString = ":" + impReport.getTimeStamp() + " \n"// 
            + ":" + sdf.format(cc);

    Paragraph context = new Paragraph(new Phrase(contextString, titleFont));
    // 
    context.setAlignment(Element.ALIGN_CENTER);
    // context.setFont(contextFont);
    // 
    context.setSpacingBefore(5);
    // 
    context.setFirstLineIndent(5);
    document.add(context);
    document.add(new Paragraph("\n"));
    //  Table 
    Font fontChinese = new Font(bfChinese, 12, Font.NORMAL, Color.black);
    Table aTable = new Table(4);
    // PdfPTable pdfPTable = new PdfPTable(aTable);
    // float[] widths = { 220f, 300f, 220f, 220f };
    // aTable.setWidths(widths);
    // aTable.setWidthPercentage(100);
    aTable.setWidth(100);
    // 
    aTable.setPadding(5);
    aTable.setAutoFillEmptyCells(true);
    Cell pc1 = new Cell(new Phrase("", contextFont));
    // pc1.setRowspan(2);
    Cell pc2 = new Cell(new Phrase("", contextFont));
    Cell pc3 = new Cell(new Phrase("", contextFont));
    Cell pc4 = new Cell(new Phrase("", contextFont));
    pc1.setBackgroundColor(Color.LIGHT_GRAY);
    pc2.setBackgroundColor(Color.LIGHT_GRAY);
    pc3.setBackgroundColor(Color.LIGHT_GRAY);
    pc4.setBackgroundColor(Color.LIGHT_GRAY);
    aTable.addCell(pc1);
    aTable.addCell(pc2);
    aTable.addCell(pc3);
    aTable.addCell(pc4);
    // aTable.addCell("3.2",Ping+"%");
    aTable.addCell("");
    aTable.addCell(Ping + "%");
    aTable.addCell((String) maxping.get("pingmax"));
    aTable.addCell((String) maxping.get("avgpingcon"));
    Image img = Image.getInstance(ResourceCenter.getInstance().getSysPath() + "/resource/image/jfreechart/"
            + newip + "ConnectUtilization" + ".png");
    // img.setAbsolutePosition(0, 0);
    img.setAlignment(Image.LEFT);// 
    img.scalePercent(76);
    document.add(aTable);
    document.add(img);
    document.add(new Paragraph("\n"));

    // document.add(new Paragraph("\n"));
    // document.close();
    Table aTable1 = new Table(4);
    aTable1.setWidth(100);
    // 
    aTable1.setPadding(5);
    aTable1.setAutoFillEmptyCells(true);
    // float[] width = { 220f, 300f, 220f, 220f };
    // aTable1.setWidths(width);
    // aTable1.setWidthPercentage(100);
    // aTable.addCell("3.2",Ping+"%");
    pc1 = new Cell(new Phrase("CPU", contextFont));
    // pc1.setRowspan(2);
    pc2 = new Cell(new Phrase("", contextFont));
    pc3 = new Cell(new Phrase("", contextFont));
    pc4 = new Cell(new Phrase("", contextFont));
    pc1.setBackgroundColor(Color.LIGHT_GRAY);
    pc2.setBackgroundColor(Color.LIGHT_GRAY);
    pc3.setBackgroundColor(Color.LIGHT_GRAY);
    pc4.setBackgroundColor(Color.LIGHT_GRAY);
    aTable1.addCell(pc1);
    aTable1.addCell(pc2);
    aTable1.addCell(pc3);
    aTable1.addCell(pc4);
    aTable1.addCell("");
    aTable1.addCell((String) CPU.get("cpu") + "%");
    aTable1.addCell((String) CPU.get("cpumax"));
    aTable1.addCell((String) CPU.get("avgcpu"));

    Image img1 = Image.getInstance(
            ResourceCenter.getInstance().getSysPath() + "/resource/image/jfreechart/" + newip + "cpu" + ".png");
    // img.setAbsolutePosition(0, 0);
    img1.setAlignment(Image.MIDDLE);// 
    img1.scalePercent(76);
    document.add(aTable1);
    document.add(img1);
    document.add(new Paragraph("\n"));
    if (netifVector != null && netifVector.size() > 0) {
        Table aTable2 = new Table(8);
        aTable2.setWidth(100);
        // 
        aTable2.setPadding(5);
        aTable2.setAutoFillEmptyCells(true);
        // float[] width2 = { 300f, 220f, 220f, 180f, 300f, 180f, 220f, 220f
        // };
        // aTable2.setWidths(width2);
        // aTable2.setWidthPercentage(100);
        // aTable2.setHeaderRows(1);
        Cell ct = new Cell(new Phrase("", contextFont));
        // ct.setRowspan(netifVector.size() + 1);
        ct.setBackgroundColor(Color.lightGray);
        ct.setHorizontalAlignment(Element.ALIGN_CENTER);
        ct.setVerticalAlignment(Element.ALIGN_MIDDLE);
        aTable2.addCell(ct);
        // 
        // allRow = allRow;
        Color color = new Color(204, 204, 255);
        for (int i = 0; i < netIfItemch.length; i++) {
            Cell cell = new Cell(new Paragraph(netIfItemch[i], contextFont));
            cell.setBackgroundColor(Color.LIGHT_GRAY);
            aTable2.addCell(cell);
        }
        // 
        for (int i = 0; i < netifVector.size(); i++) {
            aTable2.addCell("");
            String[] strs = (String[]) netifVector.get(i);
            String ifname = strs[1];
            String index = strs[0];
            for (int j = 0; j < strs.length; j++) {
                if (j == 1) {
                    String linkuse = "";
                    if (portconfigHash != null && portconfigHash.size() > 0) {
                        if (portconfigHash.get(ip + ":" + index) != null)
                            linkuse = (String) portconfigHash.get(ip + ":" + index);
                    }
                    Cell cell1 = new Cell(new Phrase(strs[j], contextFont));
                    Cell cell2 = new Cell(new Phrase(linkuse, contextFont));
                    cell1.setLeading(6);
                    cell2.setLeading(6);
                    if (i % 2 != 0) {
                        cell1.setBackgroundColor(color);
                        cell2.setBackgroundColor(color);
                    }
                    aTable2.addCell(cell1);
                    aTable2.addCell(cell2);

                } else if (j > 1) {
                    Cell cell3 = new Cell(new Phrase(strs[j].replace("KB/", ""), contextFont));
                    cell3.setLeading(6);
                    if (i % 2 != 0) {
                        cell3.setBackgroundColor(color);
                    }
                    aTable2.addCell(cell3);

                } else {
                    Cell cell4 = new Cell(new Phrase(strs[j].replace("KB/", ""), contextFont));
                    cell4.setLeading(6);
                    if (i % 2 != 0) {
                        cell4.setBackgroundColor(color);
                    }
                    aTable2.addCell(cell4);
                }
            } // end 

        }
        document.add(aTable2);
        document.add(new Paragraph("\n"));
    }
    if ("0".equals(runmodel)) {
        // 
        if (iprouterVector != null && iprouterVector.size() > 0) {
            PdfPTable aTable3 = new PdfPTable(7);
            float[] width2 = { 240f, 170f, 310f, 300f, 220f, 180f, 330f };
            aTable3.setWidths(width2);
            aTable3.setWidthPercentage(100);
            aTable3.setHeaderRows(1);
            aTable3.addCell(new Phrase("", contextFont));
            // 
            // allRow = allRow+1;
            for (int i = 0; i < ipRouterItemch.length; i++) {
                aTable3.addCell(new Phrase(ipRouterItemch[i], contextFont));

            }

            // 

            for (int i = 0; i < iprouterVector.size(); i++) {
                aTable3.addCell("         ");

                IpRouter iprouter = (IpRouter) iprouterVector.get(i);
                aTable3.addCell(iprouter.getIfindex());
                aTable3.addCell(iprouter.getDest());
                aTable3.addCell(iprouter.getNexthop());
                aTable3.addCell(iproutertype[Integer.parseInt(iprouter.getType().longValue() + "")]);
                aTable3.addCell(iprouterproto[Integer.parseInt(iprouter.getProto().longValue() + "")]);
                aTable3.addCell(iprouter.getMask());
            }
            document.add(aTable3);
            document.add(new Paragraph("\n"));
        }
    } else {
        // 
        List routerList = (ArrayList) reportHash.get("routerList");
        if (routerList != null) {
            PdfPTable aTable3 = new PdfPTable(7);
            float[] width2 = { 240f, 170f, 310f, 300f, 220f, 180f, 330f };
            aTable3.setWidths(width2);
            aTable3.setWidthPercentage(100);
            aTable3.setHeaderRows(1);
            aTable3.addCell(new Phrase("", contextFont));
            // 
            // allRow = allRow+1;
            for (int i = 0; i < ipRouterItemch.length; i++) {
                aTable3.addCell(new Phrase(ipRouterItemch[i], contextFont));
            }
            for (int i = 0; i < routerList.size(); i++) {
                RouterNodeTemp iprouter = (RouterNodeTemp) routerList.get(i);
                aTable3.addCell("         ");
                aTable3.addCell(iprouter.getIfindex());
                aTable3.addCell(iprouter.getDest());
                aTable3.addCell(iprouter.getNexthop());
                aTable3.addCell(iprouter.getType());
                aTable3.addCell(iprouter.getProto());
                aTable3.addCell(iprouter.getMask());
            }
            document.add(aTable3);
            document.add(new Paragraph("\n"));
        }
    }
    // doc

    if (reportports != null && reportports.size() > 0) {
        // 

        // aTable4.addCell("");
        for (int i = 0; i < reportports.size(); i++) {
            PdfPTable aTable4 = new PdfPTable(2);
            float[] width2 = { 600f, 300f };
            aTable4.setWidths(width2);
            aTable4.setWidthPercentage(100);
            com.afunms.config.model.Portconfig portconfig = (com.afunms.config.model.Portconfig) reportports
                    .get(i);

            Phrase phrase = new Phrase("", contextFont);
            Phrase phrase1 = new Phrase(portconfig.getPortindex() + "(" + portconfig.getName() + ")");
            Phrase phrase2 = new Phrase("", contextFont);
            aTable4.addCell(new Phrase("" + portconfig.getPortindex() + "(" + portconfig.getName() + ")",
                    contextFont));
            // aTable4.addCell(new Phrase(phrase++ portconfig.getPortindex()
            // + "("+ portconfig.getName() +phrase2));
            if (portconfig.getLinkuse() == null)
                portconfig.setLinkuse("");
            /*
             * Cell cell1 = new Cell(new Phrase(":"+
             * portconfig.getLinkuse(),contextFont));
             */
            aTable4.addCell(new Phrase(":" + portconfig.getLinkuse(), contextFont));
            document.add(aTable4);
            // 
            Image img2 = Image.getInstance(ResourceCenter.getInstance().getSysPath()
                    + "/resource/image/jfreechart/" + newip + portconfig.getPortindex() + "ifspeed_day.png");
            // img2.setAbsolutePosition(0, 0);
            img2.setAlignment(Image.LEFT);// 
            // sheet,0,0,5,1,,,
            img2.scalePercent(67);
            document.add(img2);

        }
    } // 
    if (impReport.getChart() != null) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try {
            ChartUtilities.writeChartAsPNG(baos, impReport.getChart().getChart(),
                    impReport.getChart().getWidth(), impReport.getChart().getHeight());
        } catch (IOException ioe) {
        }
        WritableImage wi = new WritableImage(2, 10000 + 5, 8, 12, baos.toByteArray());
        Image img2 = Image.getInstance(baos.toByteArray());
        // img.setAbsolutePosition(0, 0);
        img2.setAlignment(Image.LEFT);// 
        img2.scalePercent(67);
        document.add(img2);
    }

    document.close();
}

From source file:com.bcpv.webapp.displaytag.decorators.ItextTotalWrapper.java

License:Artistic License

/**
 * Obtain a cell with the given value.// w  w  w.j ava2 s  .c o  m
 * @param value Value to display in the cell.
 * @return A cell with the given value.
 * @throws com.lowagie.text.BadElementException if an error occurs while generating the cell.
 */
private Cell getCell(String value) throws BadElementException {
    Cell cell = new Cell(new Chunk(value, this.font));
    cell.setLeading(8);
    cell.setHorizontalAlignment(Element.ALIGN_LEFT);
    return cell;
}

From source file:com.sinkluge.reports.contracts.GenContractChecklist.java

public void create(Info in, Image toplogo) throws Exception {

    //adds the unchecked box
    Image checkbox = Image.getInstance(in.path + "/WEB-INF/images/unchecked.jpg");
    Chunk ch2 = new Chunk(checkbox, -10, -10);
    Phrase checkboxPhrase = new Phrase();
    checkboxPhrase.add(ch2);/*from   w w  w.j  a v a  2  s . co  m*/
    int[] two = { 10, 90 };//sets the widths of the columns(2) with checkboxes

    //blank spacer for keeping tables apart
    Table spacer = new Table(1, 1);
    spacer.setBorderWidth(0);
    //spacer.setDefaultCellBorderWidth(0);
    spacer.setWidth(100);
    spacer.setPadding(0);
    spacer.setSpacing(0);
    Cell blank = new Cell();
    blank.add(new Chunk("", new Font(Font.TIMES_ROMAN, 1, Font.BOLD, new Color(255, 255, 255))));
    blank.setBorderWidth(0);
    blank.setLeading(0);
    spacer.addCell(blank);

    init();
    //document.setMargins(left, right, top, bottom);
    //add image
    Phrase p1 = new Phrase();
    int[] widths = { 60, 40 };
    Table table1 = new Table(2, 1);
    table1.setWidths(widths);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(2);
    table1.setSpacing(2);
    toplogo.scalePercent(20);
    //Chunk ch1=new Chunk(toplogo, -10, -80);
    Cell cell = new Cell(toplogo);
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.setBorder(0);
    table1.addCell(cell);
    //just added image

    //add title on right side
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("\n" + title + " Checklist", new Font(Font.TIMES_ROMAN, 18, Font.BOLD)));
    cell.add(new Phrase("\n" + currentDate, new Font(Font.TIMES_ROMAN, 16, Font.BOLD)));
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);

    document.add(spacer);
    document.add(spacer);
    document.add(spacer);
    document.add(spacer);
    document.add(spacer);

    //add "To:" and "Re:"
    table1 = new Table(1, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(3);
    cell = new Cell();
    p1 = new Phrase("To:", new Font(Font.TIMES_ROMAN, 14, Font.BOLD));
    cell.setVerticalAlignment("middle");
    cell.add(p1);
    cell.add(new Phrase("\t\t" + companyName, new Font(Font.TIMES_ROMAN, 14, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("Re:", new Font(Font.TIMES_ROMAN, 14, Font.BOLD)));
    cell.add(new Phrase("\t\t" + jobName, new Font(Font.TIMES_ROMAN, 14, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("Enclosed:", new Font(Font.TIMES_ROMAN, 14, Font.BOLD)));
    cell.add(new Phrase("\t\t" + title + " Agreement", new Font(Font.TIMES_ROMAN, 14, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);

    document.add(spacer);

    //add Instructions
    table1 = new Table(1, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(3);
    cell = new Cell();
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase(
            "In order to finalize your agreement with " + shortName
                    + ", please complete all items as outlined below. "
                    + " It is essential to be finalized no later than ",
            new Font(Font.TIMES_ROMAN, 12, Font.NORMAL)));
    cell.add(new Phrase(agreementDate + ".  ", new Font(Font.TIMES_ROMAN, 12, Font.BOLDITALIC)));
    cell.setBorder(0);
    table1.addCell(cell);
    //p1 = new Phrase("Subcontractor Change Order Overview Report", new Font(Font.TIMES_ROMAN, 8, Font.BOLD));
    cell = new Cell();
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase(
            "A subcontract is considered finalized and ready to activate when all of the attached items outlined below "
                    + "are completed, signed, and returned to " + shortName
                    + ". Do not make any changes directly to the contract documents."
                    + " Any alterations or amendments must be negotiated and mutually agreed upon in advance. If necessary, a new, "
                    + "updated contract will be sent. Contract negotiations are best in person and can be accomplished following the pre-"
                    + "construction conference.",
            new Font(Font.TIMES_ROMAN, 12, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);

    document.add(spacer);

    //add "Checklist:"
    table1 = new Table(1, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(3);
    cell = new Cell();
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("Checklist: ", new Font(Font.TIMES_ROMAN, 12, Font.BOLD)));
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);

    //add "Business Information"
    table1 = new Table(2, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(3);
    table1.setWidths(two);

    cell = new Cell(checkboxPhrase);
    cell.setBorderWidth(0);
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("top");
    cell.setBorder(0);
    table1.addCell(cell);

    cell = new Cell();
    cell.setVerticalAlignment("bottom");
    cell.add(new Phrase("Business Information", new Font(Font.TIMES_ROMAN, 12, Font.NORMAL)));
    cell.add(new Phrase(" (* indicates required information)", new Font(Font.TIMES_ROMAN, 12, Font.ITALIC)));

    cell.add(new Phrase("\n     * Business Telephone Number", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("\n        Primary Contact Name", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("\n        Business Fax Number", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("\n        Mobile Telephone Number", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("\n        Email Address", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("\n     * Federal ID # or Social Security Number",
            new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    if (insure) {
        cell.add(new Phrase("\n     * Contractor's License Number",
                new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
        cell.add(new Phrase("\n     * Attach copy of current contractor's license",
                new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    }
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);

    //add "Sign and Date the Agreement"
    table1 = new Table(2, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(3);
    table1.setWidths(two);

    cell = new Cell(checkboxPhrase);
    cell.setBorderWidth(0);
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.setBorder(0);
    table1.addCell(cell);

    cell = new Cell();
    cell.setVerticalAlignment("bottom");
    cell.add(new Phrase("Sign and date the agreement", new Font(Font.TIMES_ROMAN, 12, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);

    document.add(table1);

    //add "initial all pages"
    table1 = new Table(2, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(3);
    table1.setWidths(two);

    cell = new Cell(checkboxPhrase);
    cell.setBorderWidth(0);
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.setBorder(0);
    table1.addCell(cell);

    cell = new Cell();
    cell.setVerticalAlignment("bottom");
    cell.add(new Phrase("Initial front page where indicated", new Font(Font.TIMES_ROMAN, 12, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);

    document.add(table1);

    //add "provide signatures"
    table1 = new Table(2, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(3);
    table1.setWidths(two);

    cell = new Cell(checkboxPhrase);
    cell.setBorderWidth(0);
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.setBorder(0);
    table1.addCell(cell);

    cell = new Cell();
    cell.setVerticalAlignment("bottom");
    cell.add(new Phrase("Provide appropriate signatures at Exhibit \"C\", Item #2",
            new Font(Font.TIMES_ROMAN, 12, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);

    document.add(table1);

    //add "complete and sign exhibit d"
    if (insure) {
        table1 = new Table(2, 1);
        table1.setBorderWidth(0);
        table1.setWidth(100);
        //table1.setDefaultCellBorder(0);
        table1.setPadding(3);
        table1.setWidths(two);

        cell = new Cell(checkboxPhrase);
        cell.setBorderWidth(0);
        cell.setHorizontalAlignment("center");
        cell.setVerticalAlignment("middle");
        cell.setBorder(0);
        table1.addCell(cell);

        cell = new Cell();
        cell.setVerticalAlignment("bottom");
        cell.add(new Phrase("Complete and sign Exhibit \"D\"", new Font(Font.TIMES_ROMAN, 12, Font.NORMAL)));
        cell.setBorder(0);
        table1.addCell(cell);

        document.add(table1);

        //add "Forward"
        table1 = new Table(2, 1);
        table1.setBorderWidth(0);
        table1.setWidth(100);
        //table1.setDefaultCellBorder(0);
        table1.setPadding(3);
        table1.setWidths(two);

        cell = new Cell(checkboxPhrase);
        cell.setBorderWidth(0);
        cell.setHorizontalAlignment("center");
        cell.setVerticalAlignment("middle");
        cell.setBorder(0);
        table1.addCell(cell);

        cell = new Cell();
        cell.setVerticalAlignment("bottom");
        cell.add(new Phrase(
                "Forward the required insurance certificates (per article 7 and Exhibit \"C\") to " + shortName,
                new Font(Font.TIMES_ROMAN, 12, Font.NORMAL)));
        cell.setBorder(0);
        table1.addCell(cell);

        document.add(table1);
    }

    //add "return all pages"
    table1 = new Table(2, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(3);
    table1.setWidths(two);

    cell = new Cell(checkboxPhrase);
    cell.setBorderWidth(0);
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.setBorder(0);
    table1.addCell(cell);

    cell = new Cell();
    cell.setVerticalAlignment("bottom");
    cell.add(new Phrase("Return all pages of both completed copies of your " + title
            + " agreement.  Do not remove any pages.", new Font(Font.TIMES_ROMAN, 12, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);

    document.add(table1);

}

From source file:com.sinkluge.reports.contracts.GenSubcontract.java

public void create(Info in, Image toplogo) throws Exception {

    //for the unchecked box
    Image checkbox = Image.getInstance(in.path + "/WEB-INF/images/unchecked.jpg");
    Chunk ch2 = new Chunk(checkbox, -7, -7);
    Phrase checkboxPhrase = new Phrase();
    checkboxPhrase.add(ch2);/*from w ww  .  j a  va2s  .  c om*/

    Font tnr8 = new Font(Font.TIMES_ROMAN, 8, Font.NORMAL);

    Image iBox = Image.getInstance(in.path + "/WEB-INF/images/initialsBox.jpg");//(in.path + "/jsp/dev/images/epcologo3.jpg");
    Chunk ch3 = new Chunk(iBox, -3, -3);
    Phrase initialsBoxPhrase = new Phrase();
    initialsBoxPhrase.add(ch3);

    Phrase footerPhrase = new Phrase(
            attr.get("full_name") + ", " + attr.get("address") + ", " + attr.get("city") + ", "
                    + attr.get("state") + " " + attr.get("zip") + "\nPhone: " + attr.get("phone") + "   Fax: "
                    + attr.get("fax") + "   " + attr.get("url") + "   Page: ",
            new Font(Font.TIMES_ROMAN, 7, Font.BOLD | Font.ITALIC));

    HeaderFooter footer = new HeaderFooter(footerPhrase, true);
    footer.setBorder(0);
    footer.setAlignment(Element.ALIGN_CENTER);
    init(40, 40, 40, 40, footer);

    Phrase underLinePhrase = new Phrase(
            "  ___________________________________________________________________________________________  ",
            new Font(Font.TIMES_ROMAN, 10, Font.BOLD));
    int[] twoC = { 30, 70 };
    int[] twoD = { 5, 95 };
    int[] twoF = { 10, 90 };
    int[] twoE = { 25, 75 };
    int[] twoG = { 40, 60 };
    int[] threeD = { 4, 11, 85 };
    int[] threeB = { 70, 15, 15 };
    //int[] threeC = { 47, 5, 48 };
    int[] five = { 18, 25, 14, 18, 25 };

    //blank spacer for keeping tables apart
    Table spacer = new Table(1, 1);
    spacer.setBorderWidth(0);
    //spacer.setDefaultCellBorderWidth(0);
    spacer.setWidth(100);
    spacer.setPadding(0);
    spacer.setSpacing(0);
    Cell blank = new Cell();
    blank.add(new Chunk("", new Font(Font.TIMES_ROMAN, 8, Font.BOLD, new Color(255, 255, 255))));
    blank.setBorderWidth(0);
    //blank.setLeading(0);
    spacer.addCell(blank);

    //start of document
    //document.setFooter(footer);

    //document.setFooter(footer);

    //add image
    Phrase p1 = new Phrase();
    Table table1 = new Table(1, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(2);
    table1.setSpacing(2);
    toplogo.scalePercent(20);
    //Chunk ch1=new Chunk(toplogo, -36, -55);
    //p1.add(ch1);
    Cell cell = new Cell(toplogo);
    cell.setBorderWidth(0);
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    table1.addCell(cell);

    document.add(table1);
    document.add(spacer);
    document.add(spacer);
    document.add(spacer);
    document.add(spacer);
    document.add(spacer);
    document.add(spacer);
    document.add(spacer);
    document.add(spacer);
    document.add(spacer);
    document.add(spacer);

    table1 = new Table(1, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(0);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.setLeading(19);
    cell.add(
            new Phrase(title.toUpperCase() + " AGREEMENT BETWEEN CONTRACTOR AND " + cTitle.toUpperCase() + "\n",
                    new Font(Font.TIMES_ROMAN, 20, Font.BOLD)));
    cell.setUseDescender(true);
    cell.setBackgroundColor(Color.lightGray);
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);

    table1 = new Table(1, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(0);
    table1.setSpacing(0);
    cell = new Cell();
    cell.add(underLinePhrase);
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("\nDOCUMENTS CONTAINED HEREIN:\n", new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);

    table1 = new Table(3, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setWidths(threeD);
    table1.setPadding(0);
    table1.setSpacing(0);
    table1.addCell(blank);

    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("Page 1", new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);

    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("Agreement Declaration", new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
    cell.add(new Phrase("    Initial boxes below to indicate complete review of this agreement.",
            new Font(Font.TIMES_ROMAN, 8, Font.ITALIC)));
    cell.setBorder(0);
    table1.addCell(cell);

    table1.addCell(blank);

    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("Page 2", new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);

    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("Articles of " + title + " Agreement and Standard Provisions", tnr8));
    cell.add(new Phrase("    Sign the concluding page.", new Font(Font.TIMES_ROMAN, 8, Font.ITALIC)));
    cell.setBorder(0);
    table1.addCell(cell);

    table1.addCell(blank);

    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("Exhibit \"A\"", new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);

    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("List of Contract Documents, Plans, Specifications, Etc.", tnr8));
    cell.setBorder(0);
    //cell.add(new Phrase("    Read and initial each page.", new Font(Font.TIMES_ROMAN, 8, Font.ITALIC)));
    table1.addCell(cell);

    table1.addCell(blank);

    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("Exhibit \"B\"", new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);

    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase(cTitle + "'s Scope of Work", new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);

    table1.addCell(blank);

    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");

    cell.add(new Phrase("Exhibit \"C\"", new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);

    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");

    cell.add(new Phrase(cTitle + "'s Special Provisions and Procedure Requirements", tnr8));
    cell.add(new Phrase("    Read and complete \"Release Authorization\" information.",
            new Font(Font.TIMES_ROMAN, 8, Font.ITALIC)));
    cell.setBorder(0);
    table1.addCell(cell);
    table1.addCell(blank);
    if (insure) {
        cell = new Cell();
        cell.setHorizontalAlignment("left");
        cell.setVerticalAlignment("middle");
        cell.add(new Phrase("Exhibit \"D\"", new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
        cell.setBorder(0);
        table1.addCell(cell);

        cell = new Cell();
        cell.setHorizontalAlignment("left");
        cell.setVerticalAlignment("middle");
        cell.add(new Phrase(cTitle + " Cost Breakdown", new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
        cell.add(new Phrase("    Complete and return with signed contract",
                new Font(Font.TIMES_ROMAN, 8, Font.ITALIC)));
        cell.setBorder(0);
        table1.addCell(cell);

        table1.addCell(blank);
    }
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.setColspan(2);
    cell.add(new Phrase("NOTE OTHERS HERE:", new Font(Font.TIMES_ROMAN, 8, Font.ITALIC)));
    cell.setBorder(0);
    table1.addCell(cell);

    document.add(table1);

    table1 = new Table(3);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(0);
    table1.setWidths(threeB);
    table1.addCell(blank);
    cell = new Cell();
    cell.setColspan(2);
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("(Initial) Entire agreement thoroughly reviewed:\n",
            new Font(Font.TIMES_ROMAN, 6, Font.ITALIC)));
    cell.setBorder(0);
    table1.addCell(cell);

    table1.addCell(blank);

    cell = new Cell();

    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("Contractor: ________", new Font(Font.TIMES_ROMAN, 6, Font.ITALIC)));
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase(cTitle + ": ________", new Font(Font.TIMES_ROMAN, 6, Font.ITALIC)));
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setColspan(3);
    cell.add(underLinePhrase);
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);

    table1 = new Table(1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(0);
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("AGREEMENT", new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
    cell.add(new Phrase(" made as of " + agreementDate, new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);

    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    //cell.setLeading(10);
    cell.add(new Phrase("BETWEEN", new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
    cell.add(new Phrase(" the Contractor: \n", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("     " + attr.get("full_name") + " \n", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("     " + attr.get("address") + " \n", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("     " + attr.get("city") + ", " + attr.get("state") + " " + attr.get("zip"),
            new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("                (hereinafter known as \"Contractor\")\n",
            new Font(Font.TIMES_ROMAN, 6, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);

    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    //cell.setLeading(10);
    cell.add(new Phrase("AND", new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
    cell.add(new Phrase(" the " + cTitle + ": \n", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("     " + subName + " \n", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("     " + subAddress + "\n", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("     " + subCityStateZip, new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("                (hereinafter known as \"" + cTitle + "\")\n",
            new Font(Font.TIMES_ROMAN, 6, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);

    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    //cell.setLeading(10);
    cell.add(new Phrase("FOR", new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
    cell.add(new Phrase(" the the fixed sum of  " + DocHelper.numberAndText(amount) + " \n",
            new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    //cell.add(new Phrase("     " + amountString + " \n", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);

    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    //cell.setLeading(10);
    cell.add(new Phrase("FOR", new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
    cell.add(new Phrase(" the Project known as:\n", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("     " + projectName + " \n", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("     " + projectAddress + "\n", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("     " + projectCityStateZip, new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("                (hereinafter known as \"Project\")\n",
            new Font(Font.TIMES_ROMAN, 6, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);

    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    //cell.setLeading(10);
    cell.add(new Phrase("BY", new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
    cell.add(new Phrase(" the Architect:\n", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("     " + architectName + " \n", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("     " + architectAddress + "\n", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("     " + architectCityStateZip, new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("                (hereinafter known as \"Architect\")\n",
            new Font(Font.TIMES_ROMAN, 6, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);

    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    //cell.setLeading(10);
    cell.add(new Phrase("FOR", new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
    cell.add(new Phrase(" the Project owner:\n", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("     " + ownerName + " \n", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("     " + ownerAddress + "\n", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("     " + ownerCityStateZip, new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.add(new Phrase("                (hereinafter known as \"Owner\")\n",
            new Font(Font.TIMES_ROMAN, 6, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);

    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("WHEREFORE", new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
    cell.add(new Phrase(" the Contractor and " + cTitle + " agree as follows:\n\n\n",
            new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);

    document.add(table1);
    /*
          table1 = new Table(1);
          table1.setBorderWidth(0); table1.setWidth(100);
          //table1.setDefaultCellBorder(0);
          table1.setPadding(0);
               
          cell = new Cell();
          cell.setHorizontalAlignment("center");
          cell.setVerticalAlignment("middle");
          //cell.add(new Phrase("\n", new Font(Font.TIMES_ROMAN, 6, Font.NORMAL)));
          cell.setBorder(Rectangle.BOTTOM | Rectangle.TOP);
          cell.setBorderWidth(1.1f);
          cell.add(footerPhrase);
          cell.add(new Phrase(" 1\n ",
    new Font(Font.TIMES_ROMAN, 6, Font.NORMAL)));
          //cell.add(footerPhrase2);
                  
          cell.setBorder(0); table1.addCell(cell);
            
          document.add(table1);
    */
    document.newPage();

    table1 = new Table(1, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(3);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase(title.toUpperCase() + " AGREEMENT\n", new Font(Font.TIMES_ROMAN, 20, Font.BOLD)));
    cell.setBackgroundColor(Color.lightGray);
    cell.setLeading(19);
    cell.setUseDescender(true);
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);

    Paragraph para = new Paragraph(8, "\n\n" + text.toString(), tnr8);

    document.add(para);

    Phrase p;

    document.add(spacer);
    table1 = new Table(2, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setWidths(twoC);
    table1.setPadding(0);
    p = new Phrase("Date:\n\n", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL));
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(p);
    cell.setBorder(0);
    table1.addCell(cell);
    p = new Phrase("Signed:\n\n", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL));
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(p);
    cell.setBorder(0);
    table1.addCell(cell);

    p = new Phrase("_______________________", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL));
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(p);
    cell.setBorder(0);
    table1.addCell(cell);
    p = new Phrase("_________________________________________________________________",
            new Font(Font.TIMES_ROMAN, 10, Font.NORMAL));
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(p);
    cell.setBorder(0);
    table1.addCell(cell);

    table1.addCell(blank);
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("            General Contractor                                               Title\n",
            tnr8));
    cell.setBorder(0);
    table1.addCell(cell);

    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.setColspan(2);
    cell.add(new Phrase("\nThis " + title
            + " Agreement supercedes all other proposals, documents, and negotiations whether written or verbal\n\n",
            new Font(Font.TIMES_ROMAN, 8, Font.BOLDITALIC)));
    cell.setBorder(0);
    table1.addCell(cell);

    p = new Phrase("Date:\n\n", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL));
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(p);
    cell.setBorder(0);
    table1.addCell(cell);
    p = new Phrase("Signed:\n\n", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL));
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(p);
    cell.setBorder(0);
    table1.addCell(cell);

    p = new Phrase("_______________________", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL));
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(p);
    cell.setBorder(0);
    table1.addCell(cell);
    p = new Phrase("_________________________________________________________________",
            new Font(Font.TIMES_ROMAN, 10, Font.NORMAL));
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(p);
    cell.setBorder(0);
    table1.addCell(cell);

    table1.addCell(blank);
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase(
            "            " + cTitle + "                                                       Title\n", tnr8));
    cell.setBorder(0);
    table1.addCell(cell);
    table1.setCellsFitPage(true);
    table1.setTableFitsPage(true);
    document.add(table1);

    document.newPage();

    table1 = new Table(1, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(3);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase(cTitle.toUpperCase() + " INFORMATION\n", new Font(Font.TIMES_ROMAN, 20, Font.BOLD)));
    cell.setBackgroundColor(Color.lightGray);
    cell.setLeading(19);
    cell.setUseDescender(true);
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);

    document.add(new Phrase("\n"));

    table1 = new Table(5, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(1);
    table1.setWidths(five);
    cell = new Cell();
    cell.setHorizontalAlignment("right");
    cell.setVerticalAlignment("middle");

    cell.add(new Phrase("Federal I.D. : ", new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.setBorder(15);
    cell.add(new Phrase(federal_id, new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.setUseDescender(true);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");

    cell.add(new Phrase("(Both Required)", new Font(Font.TIMES_ROMAN, 8, Font.BOLD)));

    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("right");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("License Number : ", new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.setBorder(15);
    cell.add(new Phrase(license_number, new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.setUseDescender(true);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("right");
    cell.setVerticalAlignment("middle");

    cell.add(new Phrase("Contact : ", new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.setBorder(15);
    cell.setUseDescender(true);
    cell.add(new Phrase(contactName, new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("", new Font(Font.TIMES_ROMAN, 8, Font.BOLD)));
    cell.setUseDescender(true);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("right");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("Company : ", new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.setBorder(15);
    cell.add(new Phrase(subName, new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.setUseDescender(true);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("right");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("Telephone : ", new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.setBorder(15);
    cell.setUseDescender(true);
    cell.add(new Phrase(telephone, new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("", new Font(Font.TIMES_ROMAN, 8, Font.BOLD)));
    cell.setUseDescender(true);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("right");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("Fax : ", new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.setBorder(15);
    cell.add(new Phrase(fax, new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.setUseDescender(true);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("right");
    cell.setVerticalAlignment("middle");

    cell.add(new Phrase("Mobile phone : ", new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.setBorder(15);
    cell.add(new Phrase(mobile, new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.setUseDescender(true);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("", new Font(Font.TIMES_ROMAN, 8, Font.BOLD)));
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("right");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("E-mail : ", new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.setBorder(15);
    cell.add(new Phrase(email, new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.setUseDescender(true);
    table1.addCell(cell);
    document.add(table1);

    //document.add(spacer);

    table1 = new Table(1, 1);
    //table1.setBorderWidth(4);
    //table1.setBorderColor(Color.lightGray);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(3);
    table1.setBorder(0);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    if (insure)
        cell.add(new Phrase("Please attach a COPY of your current state license to this page:",
                new Font(Font.TIMES_ROMAN, 12, Font.NORMAL)));
    else
        cell.add(new Phrase("", new Font(Font.TIMES_ROMAN, 12, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);
    document.add(spacer);

    table1 = new Table(1, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(3);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    if (insure)
        cell.add(new Phrase("\n\nAttach\nCopy of\nContractor's\nLicense\nHere\n(If Applicable)",
                new Font(Font.TIMES_ROMAN, 24, Font.NORMAL, Color.lightGray)));
    else
        cell.add(new Phrase("", new Font(Font.TIMES_ROMAN, 24, Font.NORMAL, Color.lightGray)));
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);

    //document.setMargins(72, 72, 36, 36);
    document.newPage();

    table1 = new Table(1, 1);
    table1.setOffset(0);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(3);
    table1.setWidth(100);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase(title.toUpperCase() + " EXHIBIT \"A\"\n", new Font(Font.TIMES_ROMAN, 20, Font.BOLD)));
    cell.setLeading(6);
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell(new Phrase("\n", new Font(Font.TIMES_ROMAN, 8)));
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("CONTRACT DOCUMENTS, PLANS,\nSPECIFICATIONS, ADDENDUMS, ETC.\n",
            new Font(Font.TIMES_ROMAN, 16, Font.BOLD)));
    cell.setUseDescender(true);
    cell.setLeading(17);
    cell.setBackgroundColor(Color.lightGray);
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("\n" + subName
            + " is responsible to verify versions, dates, and completeness of documents that were used in the preparation of the "
            + cTitle + "'s bid proposal before signing this " + title + " Agreement\n", tnr8));
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("This " + title + " Agreement includes, but is not limited to the following items:",
            new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.setUseDescender(true);
    cell.setBorder(Rectangle.BOTTOM);
    cell.setBorderWidth(0.5f);
    table1.addCell(cell);
    document.add(table1);

    Paragraph prgh = new Paragraph("\n" + bidDocuments + "\n", tnr8);
    prgh.setLeading(10);
    document.add(prgh);

    document.add(spacer);
    /*
     p = new Phrase("\n"+bidDocuments, new Font(Font.TIMES_ROMAN, 10, Font.NORMAL));
     p.setLeading(10);
     cell= new Cell(p);
     cell.setBorder(Rectangle.TOP | Rectangle.BOTTOM);
     cell.setBorderWidth(0.5f);
     //cell.setBorderColor(Color.lightGray);
     cell.setHorizontalAlignment("left");
     cell.setVerticalAlignment("middle");
     //cell.setLeading(10);
     cell.setUseDescender(true);
     table1.addCell(cell);
     */

    table1 = new Table(1, 1);
    table1.setOffset(0);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(3);
    table1.setWidth(100);
    table1.setTableFitsPage(true);
    p = new Phrase("\nPlease note below all verbal conditions or instructions, if any, that the " + cTitle
            + " has received during the bid process which might affect the scope of work as required by the contract documents",
            new Font(Font.TIMES_ROMAN, 10, Font.NORMAL));
    p.setLeading(10);
    cell = new Cell(p);
    cell.setBorder(Rectangle.TOP);
    cell.setBorderWidth(0.5f);
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    table1.addCell(cell);

    document.add(table1);

    document.newPage();

    table1 = new Table(1, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(3);
    table1.setOffset(0);
    table1.setWidth(100);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase(title.toUpperCase() + " EXHIBIT \"B\"\n", new Font(Font.TIMES_ROMAN, 20, Font.BOLD)));
    cell.setLeading(6);
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell(new Phrase("\n", new Font(Font.TIMES_ROMAN, 8)));
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase("SCOPE OF WORK\n", new Font(Font.TIMES_ROMAN, 16, Font.BOLD)));
    cell.setBackgroundColor(Color.lightGray);
    cell.setUseDescender(true);
    cell.setLeading(17);
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase(
            "\nThis " + title + " Agreement includes, but is not limited to the following items:\n\n",
            new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    cell.setBorder(Rectangle.BOTTOM);
    cell.setBorderWidth(0.5f);
    table1.addCell(cell);

    document.add(table1);

    prgh = new Paragraph("\n" + contractDescription + "\n", new Font(Font.TIMES_ROMAN, 8, Font.NORMAL));
    prgh.setLeading(10);
    document.add(prgh);
    //cell= new Cell(prgh);
    //cell.setBorder(Rectangle.TOP | Rectangle.BOTTOM);
    //cell.setBorderWidth(0.5f);
    //cell.setBorderColor(Color.lightGray);
    //cell.setHorizontalAlignment("left");
    //cell.setVerticalAlignment("middle");
    //cell.setLeading(10);
    //cell.setUseDescender(true);
    //table1.addCell(cell);

    document.add(spacer);

    table1 = new Table(1, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(3);
    table1.setOffset(0);
    table1.setWidth(100);
    table1.setTableFitsPage(true);

    p = new Phrase("\nAll " + cTitle
            + " bid proposal conditions that are outside of, in addition to or are limiting of conditions contained in the Contract Documents are of no effect and are invalid to the "
            + title + " Agreement unless expressly included in the description above.", tnr8);
    p.setLeading(10);
    cell = new Cell(p);
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.setBorder(Rectangle.TOP);
    cell.setBorderWidth(0.5f);
    table1.addCell(cell);

    document.add(table1);

    //document.setMargins(10, 10, 30, 30);

    document.newPage();

    table1 = new Table(1, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(3);
    table1.setOffset(0);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase(title.toUpperCase() + " EXHIBIT \"C\"\n", new Font(Font.TIMES_ROMAN, 20, Font.BOLD)));
    cell.setLeading(6);
    cell.setBorder(0);
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell(new Phrase("\n", new Font(Font.TIMES_ROMAN, 8)));
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("center");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase(cTitle.toUpperCase() + " SPECIAL PROVISIONS AND REQUIREMENTS\n",
            new Font(Font.TIMES_ROMAN, 16, Font.BOLD)));
    cell.setBackgroundColor(Color.lightGray);
    cell.setUseDescender(true);
    cell.setLeading(17);
    cell.setBorder(0);
    table1.addCell(cell);

    document.add(table1);

    int count = 1;

    if (insure) {

        table1 = new Table(1, 1);
        table1.setBorderWidth(0);
        table1.setWidth(100);
        //table1.setDefaultCellBorder(0);
        table1.setPadding(0);
        table1.setOffset(4);
        cell = new Cell();
        cell.add(new Phrase("1.     Insurance Provisions (If Applicable)",
                new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
        //cell.setLeading(6);
        cell.setBorder(0);
        table1.addCell(cell);
        document.add(table1);
        count++;
        table1 = new Table(2, 1);
        table1.setBorderWidth(0);
        table1.setWidth(100);
        //table1.setDefaultCellBorder(0);
        table1.setPadding(0);
        table1.setWidths(twoD);
        table1.setOffset(0);
        cell = new Cell();
        cell.setHorizontalAlignment("left");
        cell.setVerticalAlignment("middle");
        cell.setLeading(6);
        cell.add(new Phrase(
                "a.  The " + cTitle + " is required to name the following as additional Primary-Insured:",
                tnr8));
        table1.addCell(blank);
        cell.setBorder(0);
        table1.addCell(cell);
        document.add(table1);

        table1 = new Table(2, 1);
        table1.setBorderWidth(0);
        table1.setWidth(100);
        //table1.setDefaultCellBorder(0);
        table1.setPadding(0);
        table1.setWidths(twoE);
        table1.setOffset(0);
        cell = new Cell();
        cell.setHorizontalAlignment("right");
        cell.setVerticalAlignment("middle");
        cell.add(new Phrase("Contractor:  ", new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
        cell.setBorder(0);
        table1.addCell(cell);
        cell = new Cell();
        cell.setHorizontalAlignment("left");
        cell.setVerticalAlignment("middle");
        cell.add(new Phrase(attr.get("full_name"), new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
        cell.setBorder(0);
        table1.addCell(cell);
        cell = new Cell();
        cell.setHorizontalAlignment("right");
        cell.setVerticalAlignment("middle");
        cell.add(new Phrase("Owner:  ", new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
        cell.setBorder(0);
        table1.addCell(cell);
        cell = new Cell();
        cell.setHorizontalAlignment("left");
        cell.setVerticalAlignment("middle");
        cell.add(new Phrase(ownerName, new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
        cell.setBorder(0);
        table1.addCell(cell);
        cell = new Cell();
        cell.setHorizontalAlignment("right");
        cell.setVerticalAlignment("middle");
        cell.add(new Phrase("Other:  ", new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
        cell.setBorder(0);
        table1.addCell(cell);
        cell = new Cell();
        cell.setHorizontalAlignment("left");
        cell.setVerticalAlignment("middle");
        cell.add(new Phrase("_______________________________________", tnr8));
        cell.setBorder(0);
        table1.addCell(cell);
        document.add(table1);

        table1 = new Table(2, 1);
        table1.setBorderWidth(0);
        table1.setWidth(100);
        //table1.setDefaultCellBorder(0);
        table1.setPadding(0);
        table1.setWidths(twoD);
        table1.setOffset(4);
        p = new Phrase("b.  The " + cTitle
                + " must provide verification of current Worker's Compensation coverage with reference to "
                + jobName + " on the policy.", new Font(Font.TIMES_ROMAN, 8, Font.NORMAL));
        p.setLeading(8);
        cell = new Cell(p);
        cell.setHorizontalAlignment("left");
        cell.setVerticalAlignment("middle");
        cell.setLeading(8);
        table1.addCell(blank);
        cell.setBorder(0);
        table1.addCell(cell);
        document.add(table1);
    }

    table1 = new Table(1, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(0);
    table1.setOffset(4);
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase(count + ".     Release Authorizations", new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
    count++;
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);
    table1 = new Table(2, 1);
    table1.setOffset(4);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(0);
    table1.setWidths(twoD);
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    p = new Phrase(
            "List any Owners, Partners, and/or Corporate Officers who are legally authorized to sign for "
                    + subName
                    + " and who will be signing the MONTHLY REQUEST FOR PAYMENT, FINAL REQUEST FOR PAYMENT, and LIEN WAIVER documents:\n\n",
            tnr8);
    p.setLeading(8);
    p1 = new Phrase(
            "       ______________________________________________________________________          ______________________________________________________________________\n",
            new Font(Font.TIMES_ROMAN, 6, Font.ITALIC));
    //p1.setLeading(0);
    Phrase p2 = new Phrase(
            "       Printed name and title                                                                                                                   Signature\n\n",
            new Font(Font.TIMES_ROMAN, 6, Font.ITALIC));
    //cell.setLeading(8);
    cell.add(p);
    cell.add(p1);
    cell.add(p2);
    cell.add(p1);
    cell.add(p2);
    cell.add(p1);
    cell.add(p2);
    table1.addCell(blank);
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);

    table1 = new Table(1, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(3);
    table1.setOffset(0);
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase(count + ".     Shop Drawings - Samples - Submittals",
            new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);
    count++;

    table1 = new Table(2, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(0);
    table1.setWidths(twoD);
    table1.setOffset(2);
    p = new Phrase(
            "All shop drawings, materials samples, and submittals shall be submitted to the Contractor within 30 days of the issuance of this "
                    + title
                    + " Agreement unless specifically noted below.  All submitted items shall be in number and type as per the contract documents including, but not limited to, the following:",
            tnr8);
    p.setLeading(8);
    cell = new Cell(p);
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    table1.addCell(blank);
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);

    table1 = new Table(2, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(0);
    table1.setWidths(twoF);
    table1.setOffset(4);

    p = new Phrase("--The number of copies of each submittal for " + jobName + " is " + submittal_copies
            + ".\n--All submittals, of any type, are due on or before " + dueDate
            + " unless specifically noted otherwise.\n", tnr8);
    p.setLeading(8);
    cell = new Cell(p);
    table1.addCell(blank);
    cell.setBorder(0);
    table1.addCell(cell);
    String submittals = "";
    if (!submittalVector.isEmpty()) {
        p = new Phrase("            Due Date:\n", new Font(Font.TIMES_ROMAN, 8, Font.BOLD));
        p.setLeading(8);
        cell = new Cell(p);
        cell.setColspan(2);
        cell.setBorder(0);
        table1.addCell(cell);
        for (int i = 0; i < submittalVector.size(); i++) {
            submittals += (String) submittalVector.elementAt(i) + "\n";
        }
        p = new Phrase(submittals, new Font(Font.TIMES_ROMAN, 8, Font.NORMAL));
        p.setLeading(8);
        cell = new Cell(p);
        table1.addCell(blank);
        cell.setBorder(0);
        table1.addCell(cell);
    } else {
        p = new Phrase("\nSubmittals required per contract documents and specifications.\n",
                new Font(Font.TIMES_ROMAN, 8, Font.BOLD));
        p.setLeading(8);
        cell = new Cell(p);
        table1.addCell(blank);
        cell.setBorder(0);
        table1.addCell(cell);
    }
    p = new Phrase("\n(" + subName
            + " is responsible for all submittals required in the Contract Documents as pertaining to labor and materials included in the scope of this "
            + title + " Agreement regardless of items listed, not listed, or incorrectly listed above.)",
            new Font(Font.TIMES_ROMAN, 6, Font.ITALIC));
    p.setLeading(8);
    cell = new Cell(p);

    table1.addCell(blank);
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);

    table1 = new Table(2, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(1);
    table1.setWidths(twoD);
    table1.setOffset(2);
    p = new Phrase(cTitle.toUpperCase()
            + " acknowledges that review and approval of any type of submittal which deviates from the Project Plans and Specifications does NOT relieve the "
            + cTitle
            + " from costs, penalties and all other remedies required to meet the published specifications where the "
            + cTitle
            + " failed to notify the Owner/Architect/Contractor in writing of the variations from the specifications and failed to obtain written approval for EACH variation from the published specifications.",
            tnr8);
    p.setLeading(8);
    cell = new Cell(p);
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    //cell.setLeading(8);
    table1.addCell(blank);
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);

    table1 = new Table(1, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(0);
    table1.setOffset(2);
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    cell.add(new Phrase(count + ".     Project Close-out", new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);
    count++;
    table1 = new Table(2, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(0);
    table1.setOffset(4);
    table1.setWidths(twoD);
    p = new Phrase(
            "All project close-out documents, materials, and Owner-training required by the Contract Documents shall be submitted to the Contractor PRIOR to payment of the "
                    + cTitle
                    + "'s 90% completion payment request.  The requirements shall include, but not be limited to, the following:",
            tnr8);
    p.setLeading(8);
    cell = new Cell(p);
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("middle");
    //cell.setLeading(8);
    table1.addCell(blank);
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);

    table1 = new Table(2, 1);
    table1.setBorderWidth(0);
    table1.setWidth(100);
    //table1.setDefaultCellBorder(0);
    table1.setPadding(0);
    table1.setOffset(0);
    table1.setWidths(twoG);
    cell = new Cell();
    cell.setHorizontalAlignment("right");
    cell.setVerticalAlignment("top");
    cell.add(new Phrase("\"O & M\" Submittals: ", new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("top");
    cell.add(new Phrase(omSubmittals, new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("right");
    cell.setVerticalAlignment("top");
    cell.add(new Phrase("Full Warranty: ", new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("top");
    cell.add(new Phrase(fullWarranty, new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("right");
    cell.setVerticalAlignment("top");
    cell.add(new Phrase("Up-to-date Lien Release(s): ", new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("top");
    cell.add(new Phrase(lienReleases, new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("right");
    cell.setVerticalAlignment("top");
    cell.add(new Phrase("Signed Training Form: ", new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("top");
    cell.add(new Phrase(signedTraining, new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("right");
    cell.setVerticalAlignment("top");
    cell.add(new Phrase("Materials-Equip-Specialty Items: ", new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("top");
    cell.add(new Phrase(specialtyItems, new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("right");
    cell.setVerticalAlignment("top");
    cell.add(new Phrase("Other Items: ", new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);
    cell = new Cell();
    cell.setHorizontalAlignment("left");
    cell.setVerticalAlignment("top");
    cell.add(new Phrase(otherItems, new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);

    if (insure) {
        table1 = new Table(1, 1);
        table1.setBorderWidth(0);
        table1.setWidth(100);
        //table1.setDefaultCellBorder(0);
        table1.setPadding(3);
        table1.setOffset(2);
        cell = new Cell();
        cell.setHorizontalAlignment("left");
        cell.setVerticalAlignment("middle");
        cell.add(new Phrase(count + ".     " + cTitle + " Safety Program (If Applicable)",
                new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
        cell.setBorder(0);
        table1.addCell(cell);
        document.add(table1);
        table1 = new Table(2, 1);
        table1.setBorderWidth(0);
        table1.setWidth(100);
        //table1.setDefaultCellBorder(0);
        table1.setPadding(0);
        table1.setOffset(2);
        table1.setWidths(twoD);
        p = new Phrase(
                cTitle + " will submit one copy of the " + cTitle + "'s job-specific safety program to "
                        + attr.get("full_name")
                        + " before any equipment, manpower, or materials are brought onto the Project site.  ",
                tnr8);
        p.setLeading(8);
        cell = new Cell(p);
        p = new Phrase(cTitle + " will require it's " + cTitle.toLowerCase()
                + "s to have in place a job-specific safety program before they enter the Project site.", tnr8);
        p.setLeading(8);
        cell.add(p);
        cell.setHorizontalAlignment("left");
        cell.setVerticalAlignment("middle");
        //cell.setLeading(8);

        table1.addCell(blank);
        cell.setBorder(0);
        table1.addCell(cell);
        document.add(table1);
    }

    if (insure) {
        document.newPage();

        table1 = new Table(1, 1);
        table1.setBorderWidth(0);
        table1.setWidth(100);
        //table1.setDefaultCellBorder(0);
        table1.setPadding(3);
        table1.setOffset(0);
        cell = new Cell();
        cell.setHorizontalAlignment("center");
        cell.setVerticalAlignment("middle");
        cell.add(new Phrase(title.toUpperCase() + " EXHIBIT \"D\"", new Font(Font.TIMES_ROMAN, 20, Font.BOLD)));
        cell.setLeading(6);
        cell.setBorder(0);
        table1.addCell(cell);
        cell = new Cell(new Phrase("\n", new Font(Font.TIMES_ROMAN, 8)));
        cell.setBorder(0);
        table1.addCell(cell);
        cell = new Cell();
        cell.setHorizontalAlignment("center");
        cell.setVerticalAlignment("middle");
        cell.add(new Phrase(cTitle.toUpperCase() + "'S COST BREAKDOWN\n",
                new Font(Font.TIMES_ROMAN, 16, Font.BOLD)));
        cell.setBackgroundColor(Color.lightGray);
        cell.setUseDescender(true);
        cell.setLeading(17);
        cell.setBorder(0);
        table1.addCell(cell);
        document.add(table1);
        table1 = new Table(1, 1);
        table1.setBorderWidth(0);
        table1.setWidth(100);
        //table1.setDefaultCellBorder(0);
        table1.setPadding(0);
        table1.setOffset(2);
        p = new Phrase("The following information is to be supplied by " + subName + " for " + jobName
                + ". List all SUPPLIERS and SUBCONTRACTORS for approval and payment confirmation (attach additional pages if needed):",
                new Font(Font.TIMES_ROMAN, 10, Font.NORMAL));
        p.setLeading(12);
        cell = new Cell(p);
        cell.setHorizontalAlignment("left");
        cell.setVerticalAlignment("middle");
        cell.setBorder(0);
        table1.addCell(cell);
        cell = new Cell();
        cell.setHorizontalAlignment("left");
        cell.setVerticalAlignment("middle");
        cell.add(new Phrase(
                "     Name                                        City                                  Phone                                                                            Estimated Dollar Amount",
                tnr8));
        cell.setBorder(0);
        table1.addCell(cell);
        cell = new Cell();
        p = new Phrase(
                "________________________________________________________________________  $___________________\n",
                new Font(Font.TIMES_ROMAN, 10, Font.NORMAL));
        cell.setHorizontalAlignment("left");
        cell.setVerticalAlignment("middle");
        for (int i = 0; i < 10; i++) {
            cell.add(p);
        }
        cell.setBorder(0);
        table1.addCell(cell);

        p = new Phrase(
                "Supplier accepts full responsibility for acts and omissions of his subcontractors and suppliers.  No suppliers or subcontractors are to be added or deleted without prior notification to "
                        + attr.get("full_name") + ".",
                new Font(Font.TIMES_ROMAN, 8, Font.ITALIC));
        p.setLeading(10);
        cell = new Cell(p);
        cell.setHorizontalAlignment("left");
        cell.setVerticalAlignment("middle");
        cell.setLeading(15);
        cell.setBorder(0);
        table1.addCell(cell);
        p = new Phrase(
                "List the primary phases of your contracted scope of work and the associated costs.  This information may be released to the Owner if disputes arise over future billings and progress payments.",
                new Font(Font.TIMES_ROMAN, 10, Font.NORMAL));
        p.setLeading(12);
        cell = new Cell(p);
        cell.setHorizontalAlignment("left");
        cell.setVerticalAlignment("middle");
        cell.setLeading(15);
        cell.setBorder(0);
        table1.addCell(cell);
        cell = new Cell();
        cell.setHorizontalAlignment("left");
        cell.setVerticalAlignment("middle");
        cell.add(new Phrase(
                "Description/Phase of Work                     Labor                      Material                    Equipment/Tools       Sub-subcontractor     Total",
                tnr8));
        cell.setBorder(0);
        table1.addCell(cell);
        cell = new Cell();
        p = new Phrase(
                "________________________  $____________ $____________ $____________ $____________ $____________ \n",
                new Font(Font.TIMES_ROMAN, 10, Font.NORMAL));
        cell.setHorizontalAlignment("left");
        cell.setVerticalAlignment("middle");
        for (int i = 0; i < 13; i++) {
            cell.add(p);
        }
        cell.setBorder(0);
        table1.addCell(cell);
        document.add(table1);

        document.add(spacer);

        table1 = new Table(1, 1);
        table1.setBorderWidth(0);
        table1.setWidth(100);
        //table1.setDefaultCellBorder(0);
        table1.setOffset(2);
        table1.setPadding(1);
        cell = new Cell();
        cell.setHorizontalAlignment("center");
        cell.setVerticalAlignment("middle");
        //cell.setLeading(10);
        cell.add(new Phrase(subName, new Font(Font.TIMES_ROMAN, 10, Font.UNDERLINE)));
        cell.add(new Phrase("\n" + cTitle, new Font(Font.TIMES_ROMAN, 6, Font.ITALIC)));
        cell.setBorder(0);
        table1.addCell(cell);
        document.add(table1);
        document.add(spacer);
        document.add(spacer);

        table1 = new Table(1, 1);
        table1.setBorderWidth(0);
        table1.setWidth(100);
        //table1.setDefaultCellBorder(0);
        table1.setOffset(0);
        cell = new Cell();
        cell.setHorizontalAlignment("center");
        cell.setVerticalAlignment("middle");
        //cell.setLeading(10);
        cell.add(new Phrase("By:____________________________", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
        cell.add(new Phrase("\nPrint Name of Authorized Company Officer",
                new Font(Font.TIMES_ROMAN, 6, Font.ITALIC)));
        cell.setBorder(0);
        table1.addCell(cell);
        document.add(table1);
        document.add(spacer);
        document.add(spacer);
        table1 = new Table(1, 1);
        table1.setOffset(0);
        table1.setBorderWidth(0);
        table1.setWidth(100);
        //table1.setDefaultCellBorder(0);
        cell = new Cell();
        cell.setHorizontalAlignment("center");
        cell.setVerticalAlignment("middle");
        //cell.setLeading(10);
        cell.add(new Phrase("By:____________________________", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
        cell.add(new Phrase("\nAuthorized Signature", new Font(Font.TIMES_ROMAN, 6, Font.ITALIC)));
        cell.setBorder(0);
        table1.addCell(cell);
        document.add(table1);

    }

}