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

import javax.servlet.http.HttpServletRequest;

import jp.co.sint.config.SIConfig;
import jp.co.sint.tools.SIURLMap;// 7.0.1 追加
import jp.co.sint.tools.SIUtil;
import jp.co.sint.tools.SIURLParameter; //7.1.1 ST0236 追加

import org.apache.log4j.Category;

import java.io.*; //7.1.1 ST0225 追加

/**
 * @version $Id: SIBasic.java,v 1.0 Exp $
 * @author  Jinwang Chen
 * <br>Description: ほぼ全てのbeansの基本クラスとして継承されます。
 * <p>History</p>
 * <p>Author&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reason</p>
 * ============&nbsp;&nbsp;&nbsp;==========&nbsp;&nbsp;===========================<br>
 * Jinwang Chen   2003/08/08  Original
 */

public  class SIBasic implements Serializable{
  //ログ用のインスタンスの生成
  private static Category log = Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);
  
  //文字の変換のために、文字コード
  protected String encode=SIConfig.SIENCODE_SHIFT_JIS;
  
  //ページに表示するレコード数(削除予定==>pageSizeSelへの統合)
  protected String pageNumberSel=String.valueOf(SIConfig.SIPAGE_SIZE_DEFAULT);
  
  //ページに表示するレコード数
  protected String pageSizeSel=String.valueOf(SIConfig.SIPAGE_SIZE_DEFAULT);
  
  //ページ番号
  protected String pageNumberTxt="1";
  
  //各画面の間に遷移するとき、取ったアクション
  protected String actionNameTxt="";
  
  //データベースにテーブルに対する編集モード
  protected String editModeTxt=SIConfig.SIEDIT_MODE_INSERT;
  
  public SIBasic() {}
  
  //setter of 文字コード
  public void setEncode(String lEncode){
    if (lEncode==null) lEncode=SIConfig.SIENCODE_NONE;
    this.encode =lEncode.trim();
  }
  
  //setter of ページに表示するレコード数
  public void setPageNumberSel(String lPageNumberSel){
    if (SIUtil.isNull(lPageNumberSel))lPageNumberSel=String.valueOf(SIConfig.SIPAGE_SIZE_DEFAULT);
    this.pageNumberSel=lPageNumberSel;
  }
  
  //setter of ページに表示するレコード数
  public void setPageSizeSel(String lPageSizeSel){
    if (SIUtil.isNull(lPageSizeSel))lPageSizeSel=String.valueOf(SIConfig.SIPAGE_SIZE_DEFAULT);
    this.pageSizeSel=lPageSizeSel;
  }
  
  //setter of ページ番号
  public void setPageNumberTxt(String lPageNumberTxt){
    if (SIUtil.isNull(lPageNumberTxt))lPageNumberTxt="1";
    this.pageNumberTxt=lPageNumberTxt;
  }
  
  //setter of アクションモード
  public void setActionNameTxt(String lActionNameTxt){
    if (lActionNameTxt==null) lActionNameTxt="";
    this.actionNameTxt=lActionNameTxt;
  }
  
  /**
   * <b>setEditModeTxt</b>
   * 編集モードの設定を行います
   * @param  editmodeTxt エディットモード
   * @return なし
   * @throws なし
   */
  public void setEditModeTxt(String lEditModeTxt){
    if (lEditModeTxt==null) lEditModeTxt="";
    
    if (SIUtil.isNotNull(lEditModeTxt))this.editModeTxt=lEditModeTxt;
    else if (SIUtil.isNull(getActionNameTxt()))this.editModeTxt=SIConfig.SIEDIT_MODE_INSERT;
    else if (SIConfig.SIACTION_NEW.equalsIgnoreCase(getActionNameTxt()))this.editModeTxt=SIConfig.SIEDIT_MODE_INSERT;
    else if (SIConfig.SIACTION_MODIFY.equalsIgnoreCase(getActionNameTxt()))this.editModeTxt=SIConfig.SIEDIT_MODE_UPDATE;
    else if (SIConfig.SIACTION_DELETE.equalsIgnoreCase(getActionNameTxt()))this.editModeTxt=SIConfig.SIEDIT_MODE_DELETE;
    else this.editModeTxt="";
    log.debug("setEditModeTxt:this.editModeTxt="+this.editModeTxt+",getActionNameTxt()="+getActionNameTxt());
  }
  
  //getter of 文字コード
  public String getEncode(){
    return this.encode;
  }
  
  //getter of アクションモード
  public String getActionNameTxt(){
    return this.actionNameTxt;
  }
  
  //getter of ページに表示するレコード数(文字)
  public String getPageNumberSel(){
    if (SIUtil.isNull(this.pageNumberSel)) return String.valueOf(SIConfig.SIPAGE_SIZE_DEFAULT);
    else return this.pageNumberSel;
  }
  
  //getter of ページに表示するレコード数(文字型)
  public String getPageSizeSel(){
    if (SIUtil.isNull(this.pageSizeSel)) return String.valueOf(SIConfig.SIPAGE_SIZE_DEFAULT);
    else return this.pageSizeSel;
  }
  
  //getter of ページに表示するレコード数（整数型）
  public int getPageSize(){
    try {
      return Integer.parseInt(getPageSizeSel());
    } catch (NumberFormatException e) {
      e.printStackTrace();
      return SIConfig.SIPAGE_SIZE_DEFAULT;
    }
  }
  
  //getter of ページ文字番号
  public String getPageNumberTxt(){
    if (SIUtil.isNull(this.pageNumberTxt)) return "1";
    else return this.pageNumberTxt;
  }
  
  //getter of ページ整数番号
  public int getPageNumer(){
    try {
      return Integer.parseInt(getPageNumberTxt());
    } catch (NumberFormatException e) {
      e.printStackTrace();
      return 1;
    }
  }
  
  //getter of テーブルに対する編集モード
  public String getEditModeTxt(){
    return this.editModeTxt;
  }
  
  /**
   * <b>getChargeEnableFlgColl</b>
   * ショップの編集画面にデータベースから既に存在するレコードを表示するかどうか
   * @param なし
   * @return 画面に表示するデータをリセットするかどうか
   * @throws なし
   */
  public boolean getResetEnable(){
    if (actionNameTxt.equalsIgnoreCase(SIConfig.SIACTION_MODIFY)) return true;
    else return false;
  }
  
  /**
   * <b>isModifyMode</b>
   * 修正モードの場合には、PKなどのデータを入力が出来ないように
   * @param なし
   * @return 修正モードかどうか
   * @throws なし
   */
  public boolean isModifyMode(){
    if (editModeTxt.equalsIgnoreCase(SIConfig.SIEDIT_MODE_UPDATE)) return true;
    else return false;
  }
  
  public void clear(){
    this.setPageNumberTxt("");
    this.setPageSizeSel("");
  }
  
  /**
   * <b>init</b>
   * 全画面の基本となるパラメータ値を取得します
   * @param request
   * @param lUrlParam
   * @return なし
   * @throws なし
   */
  public void init(HttpServletRequest lRequest,SIURLParameter lUrlParam){
    String lAction=(String)lUrlParam.getParam("actionNameTxt");
    if (lAction==null)lAction=(String)lUrlParam.getParam("a");
    if (SIURLMap.isAUPost(lRequest)){
      this.setEncode(SIConfig.SIENCODE_NONE);
    }else{
      this.setEncode(SIConfig.SIENCODE_SHIFT_JIS);
    }
    this.setActionNameTxt(lAction);
    this.setEditModeTxt((String)lUrlParam.getParam("editModeTxt"));
    this.setPageNumberTxt((String)lUrlParam.getParam("pageNumberTxt"));
    this.setPageSizeSel((String)lUrlParam.getParam("pageSizeSel"));
    log.debug("init:this.getPageNumberSel()="+this.getPageNumberSel());
  }
  
  /*委託倉庫担当者ID*/
  public final String SPUSER1 = "tohai";
  public final String SPUSER2 = "nishimura";
  public final String SPUSER3 = "fiftyvisionary";
  public final String SPUSER4 = "yoshimoto";
  public final String SPUSER5 = "spuser5";
  public final String SPUSER6 = "spuser6";
  public final String SPUSER7 = "01899";//物流センター担当者SP
}