Example usage for com.lowagie.text Table setCellsFitPage

List of usage examples for com.lowagie.text Table setCellsFitPage

Introduction

In this page you can find the example usage for com.lowagie.text Table setCellsFitPage.

Prototype

public void setCellsFitPage(boolean fitPage) 

Source Link

Document

Allows you to control when a page break occurs.

Usage

From source file:QMSMultiQuoteController.java

License:Open Source License

private ArrayList doPDFGenerationForQuoteGroup(ArrayList mainDtl, HttpServletRequest request,
        HttpServletResponse response) throws Exception {
    String[] contents = null;//from  w  w w  .  j  a va  2  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----------------------------------->");
        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 ArrayList doPDFGenerationForQuoteGroup(ArrayList mainDtl, HttpServletRequest request,
        HttpServletResponse response) throws Exception {
    String[] contents = null;/*w ww. j a v  a2s .c  om*/
    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.jd.survey.web.pdf.SurveyPdf.java

License:Open Source License

private void writeAnswersMatrix(Document document, Question question, Boolean[][] answerValuesMatrix,
        String falseMessage, String trueMessage) throws Exception {
    Table matrixTable;
    Cell cell;/*from  ww w.  ja  va  2 s  .  c  o  m*/

    Paragraph questionParagraph = new Paragraph();
    questionParagraph.add(new Chunk(question.getQuestionText().trim() + ": ", boldedFont));
    document.add(questionParagraph);

    matrixTable = new Table(question.getColumnLabels().size() + 1);
    matrixTable.setPadding(2);
    matrixTable.setWidth(100);
    matrixTable.setDefaultCellBorder(0);
    matrixTable.setBorder(0);

    matrixTable.setOffset(4);

    matrixTable.setAutoFillEmptyCells(true);
    matrixTable.setCellsFitPage(true);

    matrixTable.setTableFitsPage(true);
    cell = new Cell("");
    cell.setBackgroundColor(Color.LIGHT_GRAY);
    matrixTable.addCell(cell);

    for (QuestionColumnLabel questionColumnLabel : question.getColumnLabels()) {
        cell = new Cell(new Paragraph(questionColumnLabel.getLabel(), boldedFont));
        cell.setBackgroundColor(Color.LIGHT_GRAY);
        matrixTable.addCell(cell);
    }
    int rowIndex = 0;
    for (QuestionRowLabel questionRowLabel : question.getRowLabels()) {
        int columnIndex = 0;
        questionParagraph = new Paragraph(questionRowLabel.getLabel(), boldedFont);
        questionParagraph.setLeading(12, 0);
        cell = new Cell(questionParagraph);
        if ((rowIndex % 2) == 1) {
            cell.setBackgroundColor(new Color(231, 238, 244));
        }
        matrixTable.addCell(cell);
        for (QuestionColumnLabel questionColumnLabel : question.getColumnLabels()) {
            questionParagraph = new Paragraph(
                    answerValuesMatrix[rowIndex][columnIndex] ? trueMessage : falseMessage, normalFont);
            questionParagraph.setLeading(12, 0);
            cell = new Cell(questionParagraph);
            if ((rowIndex % 2) == 1) {
                cell.setBackgroundColor(new Color(231, 238, 244));
            }
            matrixTable.addCell(cell);
            columnIndex++;
        }
        rowIndex++;
    }
    document.add(matrixTable);
}

From source file:com.jd.survey.web.pdf.SurveyPdf.java

License:Open Source License

private void writeAnswersMatrix(Document document, Question question, String[][] answerValuesMatrix)
        throws Exception {
    Table matrixTable;
    Cell cell;/*from ww  w.  j  av a2s  . c o  m*/

    Paragraph questionParagraph = new Paragraph();
    questionParagraph.add(new Chunk(question.getQuestionText().trim() + ": ", boldedFont));
    document.add(questionParagraph);

    matrixTable = new Table(question.getColumnLabels().size() + 1);
    matrixTable.setPadding(2);
    matrixTable.setWidth(100);
    matrixTable.setDefaultCellBorder(0);
    matrixTable.setBorder(0);
    matrixTable.setOffset(4);
    matrixTable.setAutoFillEmptyCells(true);
    matrixTable.setCellsFitPage(true);

    matrixTable.setTableFitsPage(true);
    cell = new Cell("");
    cell.setBackgroundColor(Color.LIGHT_GRAY);
    matrixTable.addCell(cell);

    for (QuestionColumnLabel questionColumnLabel : question.getColumnLabels()) {
        cell = new Cell(new Paragraph(questionColumnLabel.getLabel(), boldedFont));
        cell.setBackgroundColor(Color.LIGHT_GRAY);
        matrixTable.addCell(cell);
    }
    int rowIndex = 0;
    for (QuestionRowLabel questionRowLabel : question.getRowLabels()) {
        int columnIndex = 0;
        questionParagraph = new Paragraph(questionRowLabel.getLabel(), boldedFont);
        questionParagraph.setLeading(12, 0);
        cell = new Cell(questionParagraph);
        if ((rowIndex % 2) == 1) {
            cell.setBackgroundColor(new Color(231, 238, 244));
        }
        matrixTable.addCell(cell);
        for (QuestionColumnLabel questionColumnLabel : question.getColumnLabels()) {
            questionParagraph = new Paragraph(answerValuesMatrix[rowIndex][columnIndex] == null ? ""
                    : answerValuesMatrix[rowIndex][columnIndex], normalFont);
            questionParagraph.setLeading(12, 0);
            cell = new Cell(questionParagraph);
            if ((rowIndex % 2) == 1) {
                cell.setBackgroundColor(new Color(231, 238, 244));
            }
            matrixTable.addCell(cell);
            columnIndex++;
        }
        rowIndex++;
    }
    document.add(matrixTable);
}

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);// www . j  ava2  s. com

    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);

    }

}

From source file:io.vertigo.dynamo.plugins.export.pdfrtf.AbstractExporterIText.java

License:Apache License

/**
 * Mthode principale qui gre l'export d'un tableau vers un fichier ODS.
 *
 * @param export paramtres du document  exporter
 * @param out flux de sortie/*from   ww w  .j  a  v  a  2  s.co m*/
 * @throws DocumentException Exception
 */
public final void exportData(final Export export, final OutputStream out) throws DocumentException {
    // step 1: creation of a document-object
    final boolean landscape = export.getOrientation() == Export.Orientation.Landscape;
    final Rectangle pageSize = landscape ? PageSize.A4.rotate() : PageSize.A4;
    final Document document = new Document(pageSize, 20, 20, 50, 50); // left,
    // right,
    // top,
    // bottom
    // step 2: we create a writer that listens to the document and directs a
    // PDF-stream to out
    createWriter(document, out);

    // we add some meta information to the document, and we open it
    final String title = export.getTitle();
    if (title != null) {
        final HeaderFooter header = new HeaderFooter(new Phrase(title), false);
        header.setAlignment(Element.ALIGN_LEFT);
        header.setBorder(Rectangle.NO_BORDER);
        document.setHeader(header);
        document.addTitle(title);
    }

    final String author = export.getAuthor();
    document.addAuthor(author);
    document.addCreator(CREATOR);
    document.open();
    try {
        // pour ajouter l'ouverture automatique de la bote de dialogue
        // imprimer
        // (print(false) pour imprimer directement)
        // ((PdfWriter) writer).addJavaScript("this.print(true);", false);

        for (final ExportSheet exportSheet : export.getSheets()) {
            final Table datatable;
            if (exportSheet.hasDtObject()) {
                // table
                datatable = new Table(2);
                datatable.setCellsFitPage(true);
                datatable.setPadding(4);
                datatable.setSpacing(0);

                // data rows
                renderObject(exportSheet, datatable);
            } else {
                // table
                datatable = new Table(exportSheet.getExportFields().size());
                datatable.setCellsFitPage(true);
                datatable.setPadding(4);
                datatable.setSpacing(0);

                // headers
                renderHeaders(exportSheet, datatable);

                // data rows
                renderList(exportSheet, datatable);
            }
            document.add(datatable);
        }
    } finally {
        // we close the document
        document.close();
    }
}

From source file:io.vertigo.quarto.plugins.export.pdfrtf.AbstractExporterIText.java

License:Apache License

/**
 * Mthode principale qui gre l'export d'un tableau vers un fichier ODS.
 *
 * @param export paramtres du document  exporter
 * @param out flux de sortie/*from  w w w  .  j  av a 2  s  . c o  m*/
 * @throws DocumentException Exception
 */
public final void exportData(final Export export, final OutputStream out) throws DocumentException {
    // step 1: creation of a document-object
    final boolean landscape = export.getOrientation() == Export.Orientation.Landscape;
    final Rectangle pageSize = landscape ? PageSize.A4.rotate() : PageSize.A4;
    final Document document = new Document(pageSize, 20, 20, 50, 50); // left, right, top, bottom
    // step 2: we create a writer that listens to the document and directs a PDF-stream to out
    createWriter(document, out);

    // we add some meta information to the document, and we open it
    final String title = export.getTitle();
    if (title != null) {
        final HeaderFooter header = new HeaderFooter(new Phrase(title), false);
        header.setAlignment(Element.ALIGN_LEFT);
        header.setBorder(Rectangle.NO_BORDER);
        document.setHeader(header);
        document.addTitle(title);
    }

    final String author = export.getAuthor();
    document.addAuthor(author);
    document.addCreator(CREATOR);
    document.open();
    try {
        // pour ajouter l'ouverture automatique de la bote de dialogue imprimer (print(false) pour imprimer directement)
        // ((PdfWriter) writer).addJavaScript("this.print(true);", false);

        for (final ExportSheet exportSheet : export.getSheets()) {
            final Table datatable;
            if (exportSheet.hasDtObject()) {
                // table
                datatable = new Table(2);
                datatable.setCellsFitPage(true);
                datatable.setPadding(4);
                datatable.setSpacing(0);

                // data rows
                renderObject(exportSheet, datatable);
            } else {
                // table
                datatable = new Table(exportSheet.getExportFields().size());
                datatable.setCellsFitPage(true);
                datatable.setPadding(4);
                datatable.setSpacing(0);

                // headers
                renderHeaders(exportSheet, datatable);

                // data rows
                renderList(exportSheet, datatable);
            }
            document.add(datatable);
        }
    } finally {
        // we close the document
        document.close();
    }
}

From source file:ispyb.client.mx.collection.PdfRtfExporter.java

License:Open Source License

/***
 * sets the sessions informations in the pdf document for fx or ix accounts
 * (Issue 1049)//  w w  w. j  a  va  2 s.c o  m
 * 
 * @param document
 * @throws Exception
 */
private void setSessionTable(Document document) throws Exception {
    if (slv != null && (proposalCode.toLowerCase().equals(Constants.PROPOSAL_CODE_FX)
            || proposalCode.equals(Constants.PROPOSAL_CODE_IX))) {
        if (proposalCode.toLowerCase().equals(Constants.PROPOSAL_CODE_FX)) { // session
            // title
            // only
            // for
            // FX
            // accounts
            document.add(new Paragraph("Session title:", FONT_TITLE));
            document.add(new Paragraph(slv.getSessionTitle(), FONT_DOC));
        }
        Table sessionTable = new Table(2);
        // sessionTable.setWidth(50); // percentage
        sessionTable.setPadding(3);
        sessionTable.setCellsFitPage(true);
        sessionTable.getDefaultCell().setBorderWidth(0);
        sessionTable.setBorder(0);
        sessionTable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT);
        boolean hasData = false;
        // print only if the value > 0
        if (proposalCode.toLowerCase().equals(Constants.PROPOSAL_CODE_FX)) { // structure
            // determinations
            // only
            // for
            // FX
            // accounts
            if (slv.getStructureDeterminations() != null && !slv.getStructureDeterminations().isNaN()
                    && slv.getStructureDeterminations() != 0) {
                hasData = true;
                sessionTable.addCell(new Paragraph("Structure determinations", FONT_DOC_BOLD));
                sessionTable.addCell(new Paragraph("" + slv.getStructureDeterminations(), FONT_DOC));
            }
        }
        if (slv.getDewarTransport() != null && !slv.getDewarTransport().isNaN()
                && slv.getDewarTransport() != 0) {
            hasData = true;
            sessionTable.addCell(new Paragraph("Dewar transport", FONT_DOC_BOLD));
            sessionTable.addCell(new Paragraph("" + slv.getDewarTransport(), FONT_DOC));
        }
        if (slv.getDatabackupFrance() != null && !slv.getDatabackupFrance().isNaN()
                && slv.getDatabackupFrance() != 0) {
            hasData = true;
            sessionTable.addCell(new Paragraph("Data backup & Express delivery France", FONT_DOC_BOLD));
            sessionTable.addCell(new Paragraph("" + slv.getDatabackupFrance(), FONT_DOC));
        }
        if (slv.getDatabackupEurope() != null && !slv.getDatabackupEurope().isNaN()
                && slv.getDatabackupEurope() != 0) {
            hasData = true;
            sessionTable.addCell(new Paragraph("Data backup & Express delivery Europe", FONT_DOC_BOLD));
            sessionTable.addCell(new Paragraph("" + slv.getDatabackupEurope(), FONT_DOC));
        }
        if (hasData) {
            document.add(sessionTable);
        }
    }
}

From source file:ispyb.client.mx.collection.PdfRtfExporter.java

License:Open Source License

/**
 * set the header for the dataCollection table
 * //  w w w. jav a2 s .  com
 * @param document
 * @param table
 * @throws Exception
 */
private Table setDataCollectionHeader(Document document, Table table, boolean withAutoProcessing)
        throws Exception {
    int nbCol = NB_COL_DATACOLLECTION;
    boolean withoutAutoProc = !withAutoProcessing;
    boolean withSampleName = name != null;
    boolean isIfx = proposalCode.toLowerCase().equals(Constants.PROPOSAL_CODE_FX);
    if (withoutAutoProc) {
        nbCol -= 5;
    }
    if (withSampleName) {
        nbCol += 1;
    }
    if (isIfx) {
        nbCol += 1;
    }
    table = new Table(nbCol);
    int[] headersWidth = new int[nbCol];
    int i = 0;
    // image prefix
    headersWidth[i] = 12;
    if (withSampleName && !withAutoProcessing)
        headersWidth[i] = 10;
    i++;
    // beamline
    if (withSampleName) {
        headersWidth[i++] = 5;
    }
    // run no
    headersWidth[i++] = 5;
    // nb images
    headersWidth[i++] = 6;
    // auto proc
    if (withAutoProcessing) {
        headersWidth[i++] = 9; // space group
        headersWidth[i++] = 9; // unit cell
        headersWidth[i++] = 10; // completeness
        headersWidth[i++] = 9; // rsymm
        headersWidth[i++] = 9; // resolution
    }
    // detector
    headersWidth[i++] = 7;
    // wavelength
    headersWidth[i++] = 8;
    // phi range
    headersWidth[i++] = 5;
    // crytsl class
    if (isIfx) {
        headersWidth[i++] = 8;
    }
    // comments
    headersWidth[i++] = 17;
    //
    table.setWidths(headersWidth);

    table.setWidth(100); // percentage
    table.setPadding(3);
    table.setCellsFitPage(true);
    table.getDefaultCell().setBorderWidth(1);
    table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);

    // DataCollection Header

    table.getDefaultCell().setGrayFill(GREY_FILL_HEADER);
    table.addCell(new Paragraph("Image prefix", FONT_DOC_BOLD));
    if (withSampleName)
        table.addCell(new Paragraph("Beamline", FONT_DOC_BOLD));
    table.addCell(new Paragraph("Run no", FONT_DOC_BOLD));
    table.addCell(new Paragraph("# images", FONT_DOC_BOLD));
    if (withAutoProcessing) {
        table.addCell(new Paragraph("Space Group", FONT_DOC_BOLD));
        table.addCell(new Paragraph("Unit Cell", FONT_DOC_BOLD));
        table.addCell(new Paragraph("Completeness (Inner, Outer, Overall)", FONT_DOC_BOLD));
        table.addCell(new Paragraph("Rsymm (Inner, Outer, Overall)", FONT_DOC_BOLD));
        table.addCell(new Paragraph("Resolution", FONT_DOC_BOLD));
    }
    table.addCell(new Paragraph("Detector\nResolution\n(" + Constants.ANGSTROM + ")", FONT_DOC_BOLD));
    table.addCell(new Paragraph("Wavelength\n(" + Constants.ANGSTROM + ")", FONT_DOC_BOLD));
    table.addCell(new Paragraph("Phi range\n(" + Constants.DEGREE + ")", FONT_DOC_BOLD));
    // Column crystalClass only for IFX proposal in case of MXPress
    // experiment
    if (isIfx)
        table.addCell(new Paragraph("Crystal class", FONT_DOC_BOLD));
    table.addCell(new Paragraph("Comments", FONT_DOC_BOLD));
    table.getDefaultCell().setBorderWidth(1);
    return table;
}

From source file:ispyb.client.mx.collection.PdfRtfExporter.java

License:Open Source License

/**
 * set the energy scan table/*from w  ww. j a  v a2  s  . com*/
 * 
 * @param document
 * @throws Exception
 */
private void setEnergyScansTable(Document document) throws Exception {
    if (slv == null) {// if session is null, no sense to display energy
                      // scans
        return;
    }
    document.add(new Paragraph("Energy Scans:", FONT_TITLE));
    document.add(new Paragraph(" "));
    if (energyScanList == null || energyScanList.isEmpty()) {
        document.add(new Paragraph("There is no energy scan in this report", FONT_DOC));
    } else {
        int NumColumnsES = 12;
        Table tableES = new Table(NumColumnsES);
        int headerwidthsSessionES[] = { 7, 7, 7, 7, 7, 7, 6, 6, 7, 7, 7, 25 }; // percentage
        int headerwidthsMXPressES[] = { 7, 7, 7, 7, 7, 7, 6, 6, 7, 7, 7, 8, 17 }; // percentage
        tableES.setWidths(headerwidthsSessionES);
        // Column crystalClass added only for IFX proposal in case of
        // MXPress experiment
        if (proposalCode.toLowerCase().equals(Constants.PROPOSAL_CODE_FX)) {
            tableES = new Table(NumColumnsES + 1);
            tableES.setWidths(headerwidthsMXPressES);
        }

        tableES.setWidth(100); // percentage
        tableES.setPadding(3);
        tableES.setCellsFitPage(true);
        tableES.getDefaultCell().setBorderWidth(1);
        tableES.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);

        // Energy Scan Header

        tableES.getDefaultCell().setGrayFill(GREY_FILL_HEADER);
        tableES.addCell(new Paragraph("Element", FONT_DOC_BOLD));
        tableES.addCell(new Paragraph("Inflection Energy\n(keV)", FONT_DOC_BOLD));
        tableES.addCell(new Paragraph("Exposure Time\n(s)", FONT_DOC_BOLD));
        tableES.addCell(new Paragraph("Inflection f'\n(e)", FONT_DOC_BOLD));
        tableES.addCell(new Paragraph("Inflection f''\n(e)", FONT_DOC_BOLD));
        tableES.addCell(new Paragraph("Peak Energy\n(keV)", FONT_DOC_BOLD));
        tableES.addCell(new Paragraph("Peak f'\n(e)", FONT_DOC_BOLD));
        tableES.addCell(new Paragraph("Peak f''\n(e)", FONT_DOC_BOLD));
        tableES.addCell(new Paragraph("Beam size Hor.\n(" + Constants.MICRO + "m)", FONT_DOC_BOLD));
        tableES.addCell(new Paragraph("Beam size Ver.\n(" + Constants.MICRO + "m)", FONT_DOC_BOLD));
        tableES.addCell(new Paragraph("Transm. Factor\n(%)", FONT_DOC_BOLD));
        // Column crystalClass only for IFX proposal in case of MXPress
        // experiment
        if (proposalCode.toLowerCase().equals(Constants.PROPOSAL_CODE_FX))
            tableES.addCell(new Paragraph("Crystal class", FONT_DOC_BOLD));
        tableES.addCell(new Paragraph("Comments", FONT_DOC_BOLD));
        tableES.getDefaultCell().setGrayFill(GREY_FILL_DATA);
        tableES.getDefaultCell().setBorderWidth(1);

        // Energy Scan Rows

        Iterator<EnergyScan3VO> itES = energyScanList.iterator();
        while (itES.hasNext()) {
            EnergyScan3VO col = itES.next();

            if (col.getElement() != null)
                tableES.addCell(new Paragraph(col.getElement().toString(), FONT_DOC));
            else
                tableES.addCell("");

            if (col.getExposureTime() != null)
                tableES.addCell(new Paragraph(col.getExposureTime().toString(), FONT_DOC));
            else
                tableES.addCell("");

            if (col.getInflectionEnergy() != null)
                tableES.addCell(new Paragraph(col.getInflectionEnergy().toString(), FONT_DOC));
            else
                tableES.addCell("");

            if (col.getInflectionFPrime() != null)
                tableES.addCell(new Paragraph(col.getInflectionFPrime().toString(), FONT_DOC));
            else
                tableES.addCell("");

            if (col.getInflectionFDoublePrime() != null)
                tableES.addCell(new Paragraph(col.getInflectionFDoublePrime().toString(), FONT_DOC));
            else
                tableES.addCell("");

            if (col.getPeakEnergy() != null)
                tableES.addCell(new Paragraph(col.getPeakEnergy().toString(), FONT_DOC));
            else
                tableES.addCell("");

            if (col.getPeakFPrime() != null)
                tableES.addCell(new Paragraph(col.getPeakFPrime().toString(), FONT_DOC));
            else
                tableES.addCell("");

            if (col.getPeakFDoublePrime() != null)
                tableES.addCell(new Paragraph(col.getPeakFDoublePrime().toString(), FONT_DOC));
            else
                tableES.addCell("");

            if (col.getBeamSizeHorizontal() != null)
                tableES.addCell(new Paragraph(col.getBeamSizeHorizontal().toString(), FONT_DOC));
            else
                tableES.addCell("");

            if (col.getBeamSizeVertical() != null)
                tableES.addCell(new Paragraph(col.getBeamSizeVertical().toString(), FONT_DOC));
            else
                tableES.addCell("");

            if (col.getTransmissionFactor() != null)
                tableES.addCell(new Paragraph(col.getTransmissionFactor().toString(), FONT_DOC));
            else
                tableES.addCell("");

            if (proposalCode.toLowerCase().equals(Constants.PROPOSAL_CODE_FX)) {
                // if (col.getCrystalClass()!= null) tableES.addCell(new
                // Paragraph(col.getCrystalClass().toString(),
                // new Font(Font.HELVETICA, 8)));
                // else tableES.addCell("");
                if (col.getCrystalClass() != null) {
                    int idCC = getCrystalClassIndex(listOfCrystalClass,
                            col.getCrystalClass().trim().toUpperCase());
                    if (idCC == -1) {
                        tableES.addCell(new Paragraph(col.getCrystalClass().toString(), FONT_DOC));
                    } else
                        tableES.addCell(
                                new Paragraph(listOfCrystalClass.get(idCC).getCrystalClassName(), FONT_DOC));
                } else
                    tableES.addCell("");
            }

            tableES.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT);
            if (col.getComments() != null)
                tableES.addCell(new Paragraph(col.getComments().toString(), FONT_DOC));
            else
                tableES.addCell("");
            tableES.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);

        }
        document.add(tableES);
    }
}