/**
 * Copyright (c) 2003-2006 System Integrator Corporation.
 *                 All Rights Reserved.
 */
package jp.co.sint.tools;

import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.poifs.filesystem.*;

/**
 * @version $Id : SIPoiUtil.java,v 1.0 Exp $
 * @author : Naotaka Ohsugi
 * @description :Jakarta POI‚ð—p‚¢‚½xlsŒ`Ž®‚Ìƒtƒ@ƒCƒ‹‚ðˆµ‚¤ƒNƒ‰ƒX<br>
 * @history 
 * Author&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reason<br>
 * ============= ========= ===========================<br>
 * Naotaka Ohsugi 2006/02/17 Original
 */

public class SIPoiUtil{

  private static HSSFWorkbook work = new HSSFWorkbook();
  private static String sheetname = "";
  
  public static HSSFWorkbook getWorkBook(POIFSFileSystem filein){
    try{
      work=new HSSFWorkbook(filein);
    }catch(Exception e){
      e.printStackTrace();
    }
    return work;
  }
  public static HSSFSheet getSheet(String name){
    sheetname=name;
    return work.getSheet(sheetname);
  }
  public static HSSFSheet createSheet(int index,String name){
    sheetname=name;
    HSSFSheet newSheet = work.createSheet();
    work.setSheetName(index,sheetname,HSSFWorkbook.ENCODING_UTF_16);
    return newSheet;
  }
  public static HSSFCell getCell(HSSFWorkbook workBook,String sheet,int y,int x){
    return workBook.getSheet(sheet).getRow(y).getCell((short)x);
  }
  public static HSSFCell getCell(String sheet,int y,int x){
    return work.getSheet(sheet).getRow(y).getCell((short)x);
  }
  public static HSSFCell getCell(int y,int x){
    return work.getSheet(sheetname).getRow(y).getCell((short)x);
  }
  public static void setStyle(HSSFWorkbook workBook,String sheet,int y,int x,HSSFCellStyle style){
    workBook.getSheet(sheet).getRow(y).getCell((short)x).setCellStyle(style);
  }
  public static void setStyle(String sheet,int y,int x,HSSFCellStyle style){
    work.getSheet(sheet).getRow(y).getCell((short)x).setCellStyle(style);
  }
  public static void setStyle(int y,int x,HSSFCellStyle style){
    work.getSheet(sheetname).getRow(y).getCell((short)x).setCellStyle(style);
  }
  public static void setFontMin(HSSFFont font){
    font.setFontName("‚l‚r –¾’©");
  }
  public static void setFontMin(HSSFFont font,int size){
    font.setFontName("‚l‚r –¾’©");
    font.setFontHeightInPoints((short)size);
  }
  public static void setFontMin(HSSFFont font,int size,String bold){
    font.setFontName("‚l‚r –¾’©");
    font.setFontHeightInPoints((short)size);
    if(bold.equals("bold")) font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    else font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
  }
  public static void setFontPMin(HSSFFont font){
    font.setFontName("‚l‚r ‚o–¾’©");
  }
  public static void setFontPMin(HSSFFont font,int size){
    font.setFontName("‚l‚r ‚o–¾’©");
    font.setFontHeightInPoints((short)size);
  }
  public static void setFontPMin(HSSFFont font,int size,String bold){
    font.setFontName("‚l‚r ‚o–¾’©");
    font.setFontHeightInPoints((short)size);
    if(bold.equals("bold")) font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    else font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
  }
  public static void setFontGos(HSSFFont font){
    font.setFontName("‚l‚r ƒSƒVƒbƒN");
  }
  public static void setFontGos(HSSFFont font,int size){
    font.setFontName("‚l‚r ƒSƒVƒbƒN");
    font.setFontHeightInPoints((short)size);
  }
  public static void setFontGos(HSSFFont font,int size,String bold){
    font.setFontName("‚l‚r ƒSƒVƒbƒN");
    font.setFontHeightInPoints((short)size);
    if(bold.equals("bold")) font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    else font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
  }
  public static void setFontPGos(HSSFFont font){
    font.setFontName("‚l‚r ‚oƒSƒVƒbƒN");
  }
  public static void setFontPGos(HSSFFont font,int size){
    font.setFontName("‚l‚r ‚oƒSƒVƒbƒN");
    font.setFontHeightInPoints((short)size);
  }
  public static void setFontPGos(HSSFFont font,int size,String bold){
    font.setFontName("‚l‚r ‚oƒSƒVƒbƒN");
    font.setFontHeightInPoints((short)size);
    if(bold.equals("bold")) font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
    else font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
  }
  public static void setBorderL(HSSFCellStyle style,short line){
    style.setBorderLeft(line);
  }
  public static void setBorderL(HSSFCellStyle style,short line,short color){
    style.setBorderLeft(line);
    style.setLeftBorderColor(color);
  }
  public static void setBorderR(HSSFCellStyle style,short line){
    style.setBorderRight(line);
  }
  public static void setBorderR(HSSFCellStyle style,short line,short color){
    style.setBorderRight(line);
    style.setRightBorderColor(color);
  }
  public static void setBorderT(HSSFCellStyle style,short line){
    style.setBorderTop(line);
  }
  public static void setBorderT(HSSFCellStyle style,short line,short color){
    style.setBorderTop(line);
    style.setTopBorderColor(color);
  }
  public static void setBorderB(HSSFCellStyle style,short line){
    style.setBorderBottom(line);
  }
  public static void setBorderB(HSSFCellStyle style,short line,short color){
    style.setBorderBottom(line);
    style.setBottomBorderColor(color);
  }
  public static void setBorderLT(HSSFCellStyle style,short line){
    setBorderL(style,line);
    setBorderT(style,line);
  }
  public static void setBorderLT(HSSFCellStyle style,short line,short color){
    setBorderL(style,line,color);
    setBorderT(style,line,color);
  }
  public static void setBorderRT(HSSFCellStyle style,short line){
    setBorderR(style,line);
    setBorderT(style,line);
  }
  public static void setBorderRT(HSSFCellStyle style,short line,short color){
    setBorderR(style,line,color);
    setBorderT(style,line,color);
  }
  public static void setBorderLB(HSSFCellStyle style,short line){
    setBorderL(style,line);
    setBorderB(style,line);
  }
  public static void setBorderLB(HSSFCellStyle style,short line,short color){
    setBorderL(style,line,color);
    setBorderB(style,line,color);
  }
  public static void setBorderRB(HSSFCellStyle style,short line){
    setBorderR(style,line);
    setBorderB(style,line);
  }
  public static void setBorderRB(HSSFCellStyle style,short line,short color){
    setBorderR(style,line,color);
    setBorderB(style,line,color);
  }
  public static void setBorderLR(HSSFCellStyle style,short line){
    setBorderL(style,line);
    setBorderR(style,line);
  }
  public static void setBorderLR(HSSFCellStyle style,short line,short color){
    setBorderL(style,line,color);
    setBorderR(style,line,color);
  }
  public static void setBorderTB(HSSFCellStyle style,short line){
    setBorderT(style,line);
    setBorderB(style,line);
  }
  public static void setBorderTB(HSSFCellStyle style,short line,short color){
    setBorderT(style,line,color);
    setBorderB(style,line,color);
  }
  public static void setBorderLRT(HSSFCellStyle style,short line){
    setBorderLR(style,line);
    setBorderT(style,line);
  }
  public static void setBorderLRT(HSSFCellStyle style,short line,short color){
    setBorderLR(style,line,color);
    setBorderT(style,line,color);
  }
  public static void setBorderLRB(HSSFCellStyle style,short line){
    setBorderLR(style,line);
    setBorderB(style,line);
  }
  public static void setBorderLRB(HSSFCellStyle style,short line,short color){
    setBorderLR(style,line,color);
    setBorderB(style,line,color);
  }
  public static void setBorderLTB(HSSFCellStyle style,short line){
    setBorderLT(style,line);
    setBorderB(style,line);
  }
  public static void setBorderLTB(HSSFCellStyle style,short line,short color){
    setBorderLT(style,line,color);
    setBorderB(style,line,color);
  }
  public static void setBorderRTB(HSSFCellStyle style,short line){
    setBorderRT(style,line);
    setBorderB(style,line);
  }
  public static void setBorderRTB(HSSFCellStyle style,short line,short color){
    setBorderRT(style,line,color);
    setBorderB(style,line,color);
  }
  public static void setBorderLRTB(HSSFCellStyle style,short line){
    setBorderLR(style,line);
    setBorderTB(style,line);
  }
  public static void setBorderLRTB(HSSFCellStyle style,short line,short color){
    setBorderLR(style,line,color);
    setBorderTB(style,line,color);
  }
  public static void setFill(HSSFCellStyle style,short pattern,short fcolor){
    style.setFillPattern(pattern);
    style.setFillForegroundColor(fcolor);
  }
  public static void setFillB(HSSFCellStyle style,short pattern,short bcolor){
    style.setFillPattern(pattern);
    style.setFillBackgroundColor(bcolor);
  }
  public static void setFill(HSSFCellStyle style,short pattern,short fcolor,short bcolor){
    style.setFillPattern(pattern);
    style.setFillForegroundColor(fcolor);
    style.setFillBackgroundColor(bcolor);
  }
  public static HSSFCellStyle cloneCellStyle(HSSFCellStyle originalStyle) {
    HSSFCellStyle newStyle = work.createCellStyle();
    newStyle.setAlignment(originalStyle.getAlignment());
    newStyle.setBorderBottom(originalStyle.getBorderBottom());
    newStyle.setBorderLeft(originalStyle.getBorderLeft());
    newStyle.setBorderRight(originalStyle.getBorderRight());
    newStyle.setBorderTop(originalStyle.getBorderTop());
    newStyle.setBottomBorderColor(originalStyle.getBottomBorderColor());
    newStyle.setDataFormat(originalStyle.getDataFormat());
    newStyle.setFillBackgroundColor(originalStyle.getFillBackgroundColor());
    newStyle.setFillForegroundColor(originalStyle.getFillForegroundColor());
    newStyle.setFillPattern(originalStyle.getFillPattern());
    newStyle.setFont(work.getFontAt(originalStyle.getFontIndex()));
    newStyle.setHidden(originalStyle.getHidden());
    newStyle.setIndention(originalStyle.getIndention());
    newStyle.setLeftBorderColor(originalStyle.getLeftBorderColor());
    newStyle.setLocked(originalStyle.getLocked());
    newStyle.setRightBorderColor(originalStyle.getRightBorderColor());
    newStyle.setRotation(originalStyle.getRotation());
    newStyle.setTopBorderColor(originalStyle.getTopBorderColor());
    newStyle.setVerticalAlignment(originalStyle.getVerticalAlignment());
    newStyle.setWrapText(originalStyle.getWrapText());
    return newStyle;
  }
  
  /**
   * <b>getTitleStyle</b>
   * ƒ^ƒCƒgƒ‹‚ÌƒXƒ^ƒCƒ‹‚ðÝ’è‚·‚é
   * @param  lRec •¶Žš”z—ñ
   * @return ‚È‚µ
   * @throws HSSFCellStyle
   */
  public static HSSFCellStyle getTitleStyle(HSSFWorkbook workBook){
      HSSFCellStyle style = workBook.createCellStyle();
      HSSFFont font =  workBook.createFont();        
      font.setFontName("‚l‚r –¾’©");
      font.setFontHeightInPoints((short)20);        
      style.setFont(font);
      style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
      style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
      return style;
  }
  
  public static HSSFCellStyle getDefualtStyle(HSSFWorkbook workBook){
      HSSFCellStyle style = workBook.createCellStyle();
      HSSFFont font =  workBook.createFont();        
      font.setFontName("‚l‚r –¾’©");
      font.setFontHeightInPoints((short)10);        
      style.setFont(font);
      style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
      return style;
  }
  
  public static HSSFCellStyle getDateStyle(HSSFWorkbook workBook){
      HSSFCellStyle style = workBook.createCellStyle();
      HSSFFont font =  workBook.createFont();        
      font.setFontName("‚l‚r –¾’©");
      font.setFontHeightInPoints((short)10);        
      style.setFont(font);
      style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));
      style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
      return style;
  }
  
  public static HSSFCellStyle getNumberStyle(HSSFWorkbook workBook){
      HSSFCellStyle style = workBook.createCellStyle();
      HSSFFont font =  workBook.createFont();        
      font.setFontName("‚l‚r –¾’©");
      font.setFontHeightInPoints((short)10); 
      style.setFont(font);
//      style.setDataFormat(HSSFDataFormat.getBuiltinFormat("[<0]\"£\"#,##0;G/•W€"));
      style.setDataFormat(HSSFDataFormat.getBuiltinFormat("(#,##0_);[Red](#,##0)"));
      style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
      return style;
  }  
  public static HSSFCellStyle getDetailHeaderStyle(HSSFWorkbook workBook){
      HSSFCellStyle style = workBook.createCellStyle();
      HSSFFont font =  workBook.createFont();        
      font.setFontName("‚l‚r –¾’©");
      font.setFontHeightInPoints((short)10);        
      style.setFont(font);
      style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);   
      style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
      style.setWrapText( true );
      return style;
  }
}