com.kcs.action.ForwardContractAction.java Source code

Java tutorial

Introduction

Here is the source code for com.kcs.action.ForwardContractAction.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.kcs.action;

import static com.ibm.db2.jcc.b.db.wb;
import com.kcs.core.actions.BaseAction;
import com.kcs.core.utilities.DateUtil;
import com.kcs.core.utilities.PaggingList;
import com.kcs.core.utilities.StringUtil;
import com.kcs.core.utilities.Utility;
import com.kcs.model.ForwardContract;
import com.kcs.model.Journal;
import com.kcs.service.ForwardContractService;
import com.kcs.service.JournalService;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.InputStream;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import javax.persistence.criteria.CriteriaBuilder;
import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFPalette;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFShape;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFSimpleShape;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.CellRangeAddress;
import org.apache.poi.hssf.util.CellReference;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.hssf.util.Region;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.util.CellUtil;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import static org.aspectj.bridge.MessageUtil.debug;
import org.springframework.beans.factory.annotation.Autowired;

/**
 *
 * @author LENOVO
 */
public class ForwardContractAction extends BaseAction {
    private Logger logger = Logger.getLogger(this.getClass());
    private String dataSetDate;
    private List<ForwardContract> list;
    private PaggingList paging;

    private File toBeUploaded;
    private String fileName;
    private InputStream excelStream;

    @Autowired
    private ForwardContractService service;

    @Override
    public String success() throws Exception {
        setDataSetDate(getService().getBotDate());
        return SUCCESS;
    }

    @Override
    public String search() throws Exception {
        //setList(getService().findByCriteria(DateUtil.convertDateFromJsp(getDataSetDate())));
        setPaging(getService().findMainListPaging(createPaginate(), DateUtil.convertDateFromJsp(getDataSetDate())));
        return SEARCH;
    }

    @Override
    @SuppressWarnings("empty-statement")
    public String export() throws Exception {
        list = getService().findByCriteria(DateUtil.convertDateFromJsp(getDataSetDate()));

        getLogger().debug("exportExcel : begin...");
        setFileName("Forward contract Report.xls");
        DateFormat dateFormat = new SimpleDateFormat("dd MMM yyyy");
        HSSFWorkbook myWorkBook = new HSSFWorkbook();
        HSSFCellStyle style = myWorkBook.createCellStyle();
        HSSFCellStyle styleFont = myWorkBook.createCellStyle();
        HSSFFont fontB = myWorkBook.createFont();
        fontB.setBoldweight(Font.BOLDWEIGHT_BOLD);
        styleFont.setFont(fontB);

        list = sortSheet(list);
        List<String> listSheet = countSheet(list);

        for (int iListSheet = 0; iListSheet < listSheet.size(); iListSheet++) {
            List<ForwardContract> sheetObject = getSheetByAtSheet(list, listSheet.get(iListSheet));
            HSSFSheet FW1 = myWorkBook.createSheet(listSheet.get(iListSheet));
            List<String> currencyList = getCurrency(sheetObject);

            //------------------------- ROW 1 -----------------------------//
            Row FW1_row_0 = FW1.createRow(0);

            FW1_row_0.createCell(0).setCellValue(" FORWARD CONTRACT");
            CellUtil.setAlignment(FW1_row_0.getCell(0), myWorkBook, CellStyle.ALIGN_CENTER);

            HSSFCellStyle styleRow1 = myWorkBook.createCellStyle();

            styleRow1.setBorderRight(HSSFCellStyle.BORDER_THIN);
            styleRow1.setAlignment(HSSFCellStyle.ALIGN_CENTER);
            styleRow1.setFont(fontB);

            FW1_row_0.getCell(0).setCellStyle(styleRow1);

            FW1_row_0.createCell(1)
                    .setCellValue(" ? ?()");
            FW1_row_0.getCell(1).setCellStyle(styleRow1);

            // FW1_row_0.getCell(8).setCellStyle(styleFont);

            //------------------------- ROW 2 -----------------------------//
            Row FW1_row_1 = FW1.createRow(1);

            FW1_row_1.createCell(0).setCellValue("FW");
            //        FW1_row_1.getCell(0).setCellStyle(styleBR);

            //     FW1.addMergedRegion(new CellRangeAddress(1,1,7,8));

            FW1.autoSizeColumn(0);
            FW1.autoSizeColumn(7);
            FW1.autoSizeColumn(8);

            Row FW1_row_2 = FW1.createRow(2);
            FW1_row_2.createCell(0).setCellValue("?");
            //CellUtil.setAlignment(FW1_row_2.getCell(0), myWorkBook, CellStyle.ALIGN_RIGHT);
            HSSFCellStyle style2 = myWorkBook.createCellStyle();

            style2.setBorderRight(HSSFCellStyle.BORDER_THIN);
            style2.setAlignment(HSSFCellStyle.ALIGN_RIGHT);

            FW1_row_2.getCell(0).setCellStyle(style2);

            Row FW1_row_3 = FW1.createRow(3);
            FW1_row_3.createCell(0).setCellValue("?");

            HSSFCellStyle style3 = myWorkBook.createCellStyle();
            style3.setBorderBottom(HSSFCellStyle.BORDER_THIN);
            style3.setBorderRight(HSSFCellStyle.BORDER_THIN);
            style3.setAlignment(HSSFCellStyle.ALIGN_LEFT);

            FW1_row_3.getCell(0).setCellStyle(style3);

            FW1.createRow(4).createCell(0).setCellValue("?");
            FW1.createRow(5).createCell(0).setCellValue("? (129027)");
            FW1.createRow(6).createCell(0).setCellValue(
                    "???");
            FW1.createRow(7).createCell(0).setCellValue("  ?");
            FW1.createRow(8).createCell(0).setCellValue("  - ?? (129030)");
            FW1.createRow(9).createCell(0)
                    .setCellValue("  - ??? (129031)");
            FW1.createRow(10).createCell(0).setCellValue("  ??");
            FW1.createRow(11).createCell(0).setCellValue("  ");
            FW1.createRow(12).createCell(0).setCellValue("  - ?? (129034)");
            FW1.createRow(13).createCell(0)
                    .setCellValue("  - ??? (129035)");
            FW1.createRow(14).createCell(0).setCellValue("  ???");
            FW1.createRow(15).createCell(0).setCellValue("  - ?? (129037)");
            FW1.createRow(16).createCell(0)
                    .setCellValue("  - ??? (129038) ");
            FW1.createRow(17).createCell(0)
                    .setCellValue("  ?");
            FW1.createRow(18).createCell(0).setCellValue("  - ?? (129040)");
            FW1.createRow(19).createCell(0)
                    .setCellValue("  - ??? (129041) ");
            FW1.createRow(20).createCell(0)
                    .setCellValue("  ??");
            FW1.createRow(21).createCell(0).setCellValue("  - ?? (129043)");
            FW1.createRow(22).createCell(0)
                    .setCellValue("  - ??? (129044)");
            FW1.createRow(23).createCell(0)
                    .setCellValue("  ?");
            FW1.createRow(24).createCell(0).setCellValue("  - ?? (129046)");
            FW1.createRow(25).createCell(0)
                    .setCellValue("  - ??? (129047) ");
            FW1.createRow(26).createCell(0).setCellValue("????");
            FW1.createRow(27).createCell(0).setCellValue("  ??");
            FW1.createRow(28).createCell(0).setCellValue("  - ?? (129050)");
            FW1.createRow(29).createCell(0)
                    .setCellValue("  - ??? (129051)");
            FW1.createRow(30).createCell(0)
                    .setCellValue("  ");
            FW1.createRow(31).createCell(0).setCellValue("  - ?? (129053)");
            FW1.createRow(32).createCell(0)
                    .setCellValue("  - ??? (129054)");
            FW1.createRow(33).createCell(0).setCellValue("  ?  ");
            FW1.createRow(34).createCell(0).setCellValue("  - ?? (129056) ");
            FW1.createRow(35).createCell(0)
                    .setCellValue("  - ??? (129057)  ");
            FW1.createRow(36).createCell(0).setCellValue("   ");
            FW1.createRow(37).createCell(0).setCellValue("  - ?? (129059) ");
            FW1.createRow(38).createCell(0)
                    .setCellValue("  - ??? (129060)  ");
            FW1.createRow(39).createCell(0).setCellValue("? (129061) ");
            FW1.createRow(40).createCell(0)
                    .setCellValue("? (129062) ");
            //    FW1.getRow(40).getCell(0).setCellStyle(styleBR);

            FW1.getRow(4).getCell(0).setCellStyle(styleFont);
            FW1.getRow(5).getCell(0).setCellStyle(styleFont);
            FW1.getRow(6).getCell(0).setCellStyle(styleFont);
            FW1.getRow(7).getCell(0).setCellStyle(styleFont);
            FW1.getRow(11).getCell(0).setCellStyle(styleFont);
            FW1.getRow(14).getCell(0).setCellStyle(styleFont);
            FW1.getRow(17).getCell(0).setCellStyle(styleFont);
            FW1.getRow(20).getCell(0).setCellStyle(styleFont);
            FW1.getRow(23).getCell(0).setCellStyle(styleFont);
            FW1.getRow(26).getCell(0).setCellStyle(styleFont);
            FW1.getRow(30).getCell(0).setCellStyle(styleFont);
            FW1.getRow(33).getCell(0).setCellStyle(styleFont);
            FW1.getRow(36).getCell(0).setCellStyle(styleFont);
            FW1.getRow(39).getCell(0).setCellStyle(styleFont);
            FW1.getRow(40).getCell(0).setCellStyle(styleFont);

            int cellCurrency = 1;

            for (int iCurrencyList = 0; iCurrencyList < currencyList.size(); iCurrencyList++) {

                style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
                style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
                style.setBorderRight(HSSFCellStyle.BORDER_THIN);

                String currencyName = currencyList.get(iCurrencyList);
                FW1_row_2.createCell(cellCurrency).setCellValue(currencyName);
                FW1_row_3.createCell(cellCurrency).setCellValue("");
                FW1_row_2.getCell(cellCurrency).setCellStyle(style);
                FW1_row_2.createCell(cellCurrency + 1).setCellStyle(style);

                FW1_row_3.getCell(cellCurrency).setCellStyle(style);

                List<ForwardContract> tmpGroupCCY = getGroupByCCY(sheetObject, currencyName);

                for (ForwardContract objCCY : tmpGroupCCY) {
                    FW1.getRow(5).createCell(cellCurrency).setCellValue(objCCY.getSELL_AMT_129027() + "");

                    if ("????"
                            .equals(objCCY.getTRANS_TYPE())) {
                        if ("New Forward".equals(objCCY.getLIST_ITEM().trim())) {
                            FW1.getRow(8).createCell(cellCurrency)
                                    .setCellValue(convertNewForward(objCCY.getSELL_AMT_129029(), true));
                            FW1.getRow(12).createCell(cellCurrency)
                                    .setCellValue(convertNewForward(objCCY.getSELL_AMT_129033(), true));
                            FW1.getRow(15).createCell(cellCurrency)
                                    .setCellValue(convertNewForward(objCCY.getSELL_AMT_129036(), true));
                            FW1.getRow(18).createCell(cellCurrency)
                                    .setCellValue(convertNewForward(objCCY.getSELL_AMT_129039(), true));
                            FW1.getRow(21).createCell(cellCurrency)
                                    .setCellValue(convertNewForward(objCCY.getSELL_AMT_129042(), true));
                            FW1.getRow(24).createCell(cellCurrency)
                                    .setCellValue(convertNewForward(objCCY.getSELL_AMT_129045(), true));

                            FW1.getRow(8).createCell(cellCurrency + 1)
                                    .setCellValue(convertNewForward(objCCY.getBUY_AMT_129029(), true));
                            FW1.getRow(12).createCell(cellCurrency + 1)
                                    .setCellValue(convertNewForward(objCCY.getBUY_AMT_129033(), true));
                            FW1.getRow(15).createCell(cellCurrency + 1)
                                    .setCellValue(convertNewForward(objCCY.getBUY_AMT_129036(), true));
                            FW1.getRow(18).createCell(cellCurrency + 1)
                                    .setCellValue(convertNewForward(objCCY.getBUY_AMT_129039(), true));
                            FW1.getRow(21).createCell(cellCurrency + 1)
                                    .setCellValue(convertNewForward(objCCY.getBUY_AMT_129042(), true));
                            FW1.getRow(24).createCell(cellCurrency + 1)
                                    .setCellValue(convertNewForward(objCCY.getBUY_AMT_129045(), true));
                        } else if ("Utilize Forward".equals(objCCY.getLIST_ITEM().trim())) {

                            FW1.getRow(9).createCell(cellCurrency)
                                    .setCellValue(convertNewForward(objCCY.getSELL_AMT_129029(), false));
                            FW1.getRow(13).createCell(cellCurrency)
                                    .setCellValue(convertNewForward(objCCY.getSELL_AMT_129033(), false));
                            FW1.getRow(16).createCell(cellCurrency)
                                    .setCellValue(convertNewForward(objCCY.getSELL_AMT_129036(), false));
                            FW1.getRow(19).createCell(cellCurrency)
                                    .setCellValue(convertNewForward(objCCY.getSELL_AMT_129039(), false));
                            FW1.getRow(22).createCell(cellCurrency)
                                    .setCellValue(convertNewForward(objCCY.getSELL_AMT_129042(), false));
                            FW1.getRow(25).createCell(cellCurrency)
                                    .setCellValue(convertNewForward(objCCY.getSELL_AMT_129045(), false));

                            FW1.getRow(9).createCell(cellCurrency + 1)
                                    .setCellValue(convertNewForward(objCCY.getBUY_AMT_129029(), false));
                            FW1.getRow(13).createCell(cellCurrency + 1)
                                    .setCellValue(convertNewForward(objCCY.getBUY_AMT_129033(), false));
                            FW1.getRow(16).createCell(cellCurrency + 1)
                                    .setCellValue(convertNewForward(objCCY.getBUY_AMT_129036(), false));
                            FW1.getRow(19).createCell(cellCurrency + 1)
                                    .setCellValue(convertNewForward(objCCY.getBUY_AMT_129039(), false));
                            FW1.getRow(22).createCell(cellCurrency + 1)
                                    .setCellValue(convertNewForward(objCCY.getBUY_AMT_129042(), false));
                            FW1.getRow(25).createCell(cellCurrency + 1)
                                    .setCellValue(convertNewForward(objCCY.getBUY_AMT_129045(), false));

                        }
                    } else if ("????"
                            .equals(objCCY.getTRANS_TYPE().trim())) {
                        if ("New Forward".equals(objCCY.getLIST_ITEM())) {
                            FW1.getRow(28).createCell(cellCurrency)
                                    .setCellValue(convertNewForward(objCCY.getSELL_AMT_129049(), true));
                            FW1.getRow(31).createCell(cellCurrency)
                                    .setCellValue(convertNewForward(objCCY.getSELL_AMT_129052(), true));
                            FW1.getRow(34).createCell(cellCurrency)
                                    .setCellValue(convertNewForward(objCCY.getSELL_AMT_129055(), true));
                            FW1.getRow(37).createCell(cellCurrency)
                                    .setCellValue(convertNewForward(objCCY.getSELL_AMT_129058(), true));

                            FW1.getRow(28).createCell(cellCurrency + 1)
                                    .setCellValue(convertNewForward(objCCY.getBUY_AMT_129049(), true));
                            FW1.getRow(31).createCell(cellCurrency + 1)
                                    .setCellValue(convertNewForward(objCCY.getBUY_AMT_129052(), true));
                            FW1.getRow(34).createCell(cellCurrency + 1)
                                    .setCellValue(convertNewForward(objCCY.getBUY_AMT_129055(), true));
                            FW1.getRow(37).createCell(cellCurrency + 1)
                                    .setCellValue(convertNewForward(objCCY.getBUY_AMT_129058(), true));

                        } else if ("Utilize Forward".equals(objCCY.getLIST_ITEM().trim())) {

                            FW1.getRow(29).createCell(cellCurrency)
                                    .setCellValue(convertNewForward(objCCY.getSELL_AMT_129049(), false));
                            FW1.getRow(32).createCell(cellCurrency)
                                    .setCellValue(convertNewForward(objCCY.getSELL_AMT_129052(), false));
                            FW1.getRow(35).createCell(cellCurrency)
                                    .setCellValue(convertNewForward(objCCY.getSELL_AMT_129055(), false));
                            FW1.getRow(38).createCell(cellCurrency)
                                    .setCellValue(convertNewForward(objCCY.getSELL_AMT_129058(), false));

                            FW1.getRow(29).createCell(cellCurrency + 1)
                                    .setCellValue(convertNewForward(objCCY.getBUY_AMT_129049(), false));
                            FW1.getRow(32).createCell(cellCurrency + 1)
                                    .setCellValue(convertNewForward(objCCY.getBUY_AMT_129052(), false));
                            FW1.getRow(35).createCell(cellCurrency + 1)
                                    .setCellValue(convertNewForward(objCCY.getBUY_AMT_129055(), false));
                            FW1.getRow(38).createCell(cellCurrency + 1)
                                    .setCellValue(convertNewForward(objCCY.getBUY_AMT_129058(), false));

                        }
                    } else if ("?".equals(objCCY.getTRANS_TYPE())) {

                    }

                    FW1.getRow(39).createCell(cellCurrency)
                            .setCellValue(convertNewForward(objCCY.getSELL_AMT_129061(), false));
                    FW1.getRow(40).createCell(cellCurrency)
                            .setCellValue(convertNewForward(objCCY.getSELL_AMT_129062(), false));

                    FW1.getRow(39).createCell(cellCurrency + 1)
                            .setCellValue(convertNewForward(objCCY.getBUY_AMT_129061(), false));
                    FW1.getRow(40).createCell(cellCurrency + 1)
                            .setCellValue(convertNewForward(objCCY.getBUY_AMT_129062(), false));

                }
                //   
                // FW1.getRow(createRow++).createCell(cellCurrency).setCellValue(tmpGroup.getSELL_AMT_129033()+"");

                CellUtil.setAlignment(FW1_row_2.getCell(cellCurrency), myWorkBook, CellStyle.ALIGN_CENTER);
                FW1_row_2.getCell(cellCurrency).setCellStyle(style);
                FW1.addMergedRegion(new CellRangeAddress(2, 2, cellCurrency, ++cellCurrency));

                FW1_row_3.createCell(cellCurrency).setCellValue("");
                HSSFCellStyle styleTop = style;
                styleTop.setBorderTop(HSSFCellStyle.BORDER_THIN);
                FW1_row_3.getCell(cellCurrency).setCellStyle(styleTop);

                cellCurrency++;
            }
            System.out.println("cellCurrency ++++ " + cellCurrency);
            int finishM = cellCurrency - 3;

            int noOfColumns = FW1.getRow(2).getLastCellNum();
            int noOfRow = FW1.getLastRowNum();

            //          HSSFPalette palette = myWorkBook.getCustomPalette();
            //          HSSFColor hssfColor = null;
            //
            //
            //    palette.setColorAtIndex(HSSFColor.WHITE.index, (byte) 255, (byte) 255, (byte) 255);
            //    hssfColor = palette.getColor(HSSFColor.WHITE.index);
            //    
            //    
            //
            //    HSSFCellStyle styleBG = myWorkBook.createCellStyle();
            //    styleBG.setFillForegroundColor(hssfColor.getIndex());
            //    styleBG.setFillPattern(CellStyle.SOLID_FOREGROUND);  

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

                for (int j = 0; j < noOfColumns; j++) {
                    FW1.autoSizeColumn(i);
                    //  row.getCell(j).setCellStyle(styleBG);
                }
            }

            for (int i = 4; i < noOfRow + 1; i++) {

                for (int j = 1; j < noOfColumns; j++) {
                    HSSFCellStyle style6 = myWorkBook.createCellStyle();
                    try {

                        if (j == 1) {
                            style6.setBorderLeft(HSSFCellStyle.BORDER_THIN);
                            style6.setBorderRight(HSSFCellStyle.BORDER_THIN);
                            style6.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
                        } else {
                            style6.setBorderRight(HSSFCellStyle.BORDER_THIN);
                            style6.setAlignment(HSSFCellStyle.ALIGN_RIGHT);
                        }

                        if (i == noOfRow) {
                            style6.setBorderBottom(HSSFCellStyle.BORDER_THIN);
                        }

                        FW1.getRow(i).getCell(j).setCellStyle(style6);
                    } catch (Exception e) {

                        FW1.getRow(i).createCell(j).setCellStyle(style6);
                    }
                }
            }

            HSSFFont fontBold = myWorkBook.createFont();
            fontBold.setBoldweight(Font.BOLDWEIGHT_BOLD);

            HSSFCellStyle borderRightCenterFontBold = myWorkBook.createCellStyle();

            borderRightCenterFontBold.setBorderRight(HSSFCellStyle.BORDER_THIN);
            borderRightCenterFontBold.setAlignment(HSSFCellStyle.ALIGN_CENTER);
            borderRightCenterFontBold.setFont(fontBold);

            HSSFCellStyle borderRightBottomCenterFontBold = borderRightCenterFontBold;
            borderRightBottomCenterFontBold.setBorderBottom(HSSFCellStyle.BORDER_THIN);

            HSSFCellStyle styleR = myWorkBook.createCellStyle();
            styleR.setBorderRight(HSSFCellStyle.BORDER_THIN);

            //  Forward contract
            // FW1.getRow(0).getCell(0).setCellStyle(borderRightCenterFontBold);
            // FW1.getRow(0).getCell(1).setCellStyle(borderRightCenterFontBold);
            FW1.addMergedRegion(new CellRangeAddress(0, 1, 1, finishM));

            FW1_row_0.createCell(finishM + 1)
                    .setCellValue(" " + dateFormat.format(new Date()) + "");

            HSSFCellStyle style4 = myWorkBook.createCellStyle();

            style4.setBorderRight(HSSFCellStyle.BORDER_THIN);
            style4.setBorderLeft(HSSFCellStyle.BORDER_THIN);
            style4.setAlignment(HSSFCellStyle.ALIGN_LEFT);
            FW1_row_0.getCell(finishM + 1).setCellStyle(style4);
            FW1_row_0.getCell(finishM + 1).setCellStyle(styleFont);

            FW1.addMergedRegion(new CellRangeAddress(0, 0, finishM + 1, finishM + 2));
            FW1_row_1.createCell(finishM + 1).setCellValue(
                    ":");

            FW1.addMergedRegion(new CellRangeAddress(1, 1, finishM + 1, finishM + 2));

            FW1_row_1.getCell(finishM + 1).setCellStyle(style4);
            FW1_row_1.getCell(finishM + 1).setCellStyle(styleFont);

            FW1_row_0.createCell(finishM + 2).setCellStyle(styleR);
            FW1_row_1.createCell(finishM + 2).setCellStyle(styleR);

            FW1.getRow(1).getCell(0).setCellStyle(borderRightCenterFontBold);
            //        FW1.getRow(1).getCell(1).setCellStyle(borderRightBottomCenterFontBold);
            HSSFCellStyle borderBottom = myWorkBook.createCellStyle();
            borderBottom.setBorderRight(HSSFCellStyle.BORDER_THIN);
            borderBottom.setBorderBottom(HSSFCellStyle.BORDER_THIN);
            borderBottom.setAlignment(HSSFCellStyle.ALIGN_LEFT);
            borderBottom.setFont(fontBold);

            FW1.getRow(40).getCell(0).setCellStyle(borderBottom);

            HSSFPatriarch patriarch = (HSSFPatriarch) FW1.createDrawingPatriarch();

            /* Here is the thing: the line will go from top left in cell (0,0) to down left 
            of cell (0,1) */
            //  int dx1, int dy1, int dx2, int dy2, short col1, int row1, short col2, int row2)
            HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 0, 255, (short) 0, 2, (short) 1, 3);

            HSSFSimpleShape shape = patriarch.createSimpleShape(anchor);
            shape.setShapeType(HSSFSimpleShape.OBJECT_TYPE_LINE);
            shape.setLineStyleColor(10, 10, 10);
            shape.setFillColor(90, 10, 200);
            shape.setLineWidth(HSSFShape.LINEWIDTH_ONE_PT);
            shape.setLineStyle(HSSFShape.LINESTYLE_SOLID);

            //  createFreezePane(int colSplit, int rowSplit, int leftmostColumn, int topRow);    
            //  FW1.createFreezePane(0,4);

        }

        ByteArrayOutputStream boas = new ByteArrayOutputStream();
        myWorkBook.write(boas);
        setExcelStream(new ByteArrayInputStream(boas.toByteArray()));

        getLogger().debug("exportExcel : end...");
        return "excel";
    }

    private List<ForwardContract> sortSheet(List<ForwardContract> list) {
        List<ForwardContract> result = list;
        try {
            if (list.size() > 0) {
                Collections.sort(list, new Comparator<ForwardContract>() {
                    @Override
                    public int compare(final ForwardContract object1, final ForwardContract object2) {
                        return object1.getAT_SHEET().compareTo(object2.getAT_SHEET());
                    }
                });
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

    private List<String> countSheet(List<ForwardContract> list) {
        List<String> result = new ArrayList();
        String atSheet = "";
        int countSheet = 0;
        for (int i = 0; i < list.size(); i++) {

            if (!(atSheet.equals(list.get(i).getAT_SHEET()))) {
                result.add(countSheet, list.get(i).getAT_SHEET());
                atSheet = list.get(i).getAT_SHEET();
                countSheet++;
            }

        }

        return result;
    }

    private List<String> getCurrency(List<ForwardContract> list) {
        List<String> result = new ArrayList();
        String tmp = "";
        int countCurrency = 0;

        if (list.size() > 0) {
            Collections.sort(list, new Comparator<ForwardContract>() {
                @Override
                public int compare(final ForwardContract object1, final ForwardContract object2) {
                    return object1.getBY_LIST().compareTo(object2.getBY_LIST());
                }
            });
        }

        for (int i = 0; i < list.size(); i++) {

            if (!(tmp.equals(list.get(i).getCURRENCY_NAME()))) {
                tmp = list.get(i).getCURRENCY_NAME();
                result.add(countCurrency, list.get(i).getCURRENCY_NAME());

                countCurrency++;
            }

        }

        return result;
    }

    private List<ForwardContract> getGroupByCCY(List<ForwardContract> list, String ccy) {
        List<ForwardContract> result = new ArrayList<ForwardContract>();
        Utility.traceObject(mode);
        for (int i = 0; i < list.size(); i++) {
            if (ccy.equals(list.get(i).getCURRENCY_NAME())) {
                result.add(list.get(i));
            }

        }
        Utility.traceObject(result);
        return result;
    }

    private List<ForwardContract> getSheetByAtSheet(List<ForwardContract> list, String atSheet) {
        List<ForwardContract> result = new ArrayList<ForwardContract>();
        String tmp = atSheet;
        int count = 0;
        for (int i = 0; i < list.size(); i++) {

            if (tmp.equals(list.get(i).getAT_SHEET())) {
                ForwardContract obj = list.get(i);

                result.add(count, list.get(i));

                count++;
            }

        }
        return result;
    }

    private String convertNewForward(BigDecimal tmp, Boolean isNew) {
        String str = "";
        if (null != tmp) {
            if (isNew) {
                ;
                str = parseDouble(String.valueOf(tmp), 2);

            } else {
                str = "(" + parseDouble(String.valueOf(tmp), 2) + ")";
            }
        }
        return str;
    }

    private List<String> getDistrinctTranstype(List<ForwardContract> list) {
        List<String> result = new ArrayList<String>();
        String tmp = "";
        for (int i = 0; i < list.size(); i++) {
            if (!(tmp.equals(list.get(i).getTRANS_TYPE()))) {
                tmp = list.get(i).getTRANS_TYPE();
                result.add(list.get(i).getTRANS_TYPE());
            }
        }
        return result;
    }

    private String parseDouble(String data, int decimal) {
        String tmp = data.trim();
        String strBigDecimal = "0";
        BigDecimal result = new BigDecimal(BigInteger.ZERO);
        if (StringUtil.isNotEmpty(tmp) && tmp.length() > decimal) {
            tmp = tmp.replace(".", "");
            if (tmp.matches(".*-.*")) {
                tmp = tmp.substring(tmp.indexOf("-"), tmp.length());
            }
            strBigDecimal = tmp.substring(0, tmp.length() - decimal) + "."
                    + tmp.substring(tmp.length() - decimal, tmp.length());
            if (checkNumbersOnly(strBigDecimal)) {
                result = new BigDecimal(strBigDecimal.trim());
                DecimalFormat myFormatter = new DecimalFormat("#,###,###,###.##");
                strBigDecimal = myFormatter.format(result);
            }

        }
        return strBigDecimal;
    }

    private boolean checkNumbersOnly(String str) {
        if (str == null || str.length() == 0 || str == "null") {
            return false;
        }
        return true;
    }

    /**
     * @return the logger
     */
    public Logger getLogger() {
        return logger;
    }

    /**
     * @param logger the logger to set
     */
    public void setLogger(Logger logger) {
        this.logger = logger;
    }

    /**
     * @return the dataSetDate
     */
    public String getDataSetDate() {
        return dataSetDate;
    }

    /**
     * @param dataSetDate the dataSetDate to set
     */
    public void setDataSetDate(String dataSetDate) {
        this.dataSetDate = dataSetDate;
    }

    /**
     * @return the service
     */
    public ForwardContractService getService() {
        return service;
    }

    /**
     * @param service the service to set
     */
    public void setService(ForwardContractService service) {
        this.service = service;
    }

    /**
     * @return the list
     */
    public List<ForwardContract> getList() {
        return list;
    }

    /**
     * @param list the list to set
     */
    public void setList(List<ForwardContract> list) {
        this.list = list;
    }

    /**
     * @return the paging
     */
    public PaggingList getPaging() {
        return paging;
    }

    /**
     * @param paging the paging to set
     */
    public void setPaging(PaggingList paging) {
        this.paging = paging;
    }

    /**
     * @return the toBeUploaded
     */
    public File getToBeUploaded() {
        return toBeUploaded;
    }

    /**
     * @param toBeUploaded the toBeUploaded to set
     */
    public void setToBeUploaded(File toBeUploaded) {
        this.toBeUploaded = toBeUploaded;
    }

    /**
     * @return the fileName
     */
    public String getFileName() {
        return fileName;
    }

    /**
     * @param fileName the fileName to set
     */
    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

    /**
     * @return the excelStream
     */
    public InputStream getExcelStream() {
        return excelStream;
    }

    /**
     * @param excelStream the excelStream to set
     */
    public void setExcelStream(InputStream excelStream) {
        this.excelStream = excelStream;
    }

}