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

import java.sql.Connection;

import javax.servlet.http.HttpServletRequest;

import jp.co.sint.basic.SICustAttr;
import jp.co.sint.config.SIConfig;
import jp.co.sint.database.SITableConditionManager;
import jp.co.sint.tools.SICheckDataConf;
import jp.co.sint.tools.SICheckValid;
import jp.co.sint.tools.SICustomErrors;
import jp.co.sint.tools.SIUtil;
import jp.co.sint.tools.SIURLParameter;//7.1.1 ST0236 追加

import org.apache.log4j.Category;

/**
 * @version $Id : UIRegStndrdName.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/09/08  Original
 */

public class UIRegCustAttribute extends SICustAttr {

  //ログ用のインスタンスの生成
  private static Category log = Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);

  //修正と削除用の
  private String regAttrCode = "";

  //修正と削除用の
  private String regAttrFlag = "";

  //修正と削除用の
  private String regAttrName = "";

  //修正と削除用の
  private String regDispOrder = "";

  //修正と削除用の
  private String modAttrName = "";

  //修正と削除用の
  private String modDispOrder = "";

  //更新するレコードの
  private String regRowNumTxt = "";

  /**
   * UIRegStndrdName
   * コンストラクタ
   * @param なし
   * @return なし
   * @throws なし
   */
  public UIRegCustAttribute() {
  }

  /**
   * <b>initInsert</b>
   * 入力した新規レコードのデータを取得します。
   * @param lUrlParam
   * @return なし
   * @throws なし
   */
  //7.1.1 ST0236 修正　ここから
  public void initInsert(SIURLParameter lUrlParam) {
    this.setEncode(SIConfig.SIENCODE_SHIFT_JIS);
    this.setRegAttrFlag((String)lUrlParam.getParam("regAttrFlagTxt"));
    this.setRegAttrName((String)lUrlParam.getParam("attrName"));
    this.setRegDispOrder((String)lUrlParam.getParam("dispOrder"));
  }
  //7.1.1 ST0236 修正　ここまで

  /**
   * <b>initModify</b>
   * 入力した既存レコードのデータを取得します。
   * @param lUrlParam
   * @return なし
   * @throws なし
   */
  //7.1.1 ST0236 修正　ここから
  public void initModify(SIURLParameter lUrlParam) {
    this.setEncode(SIConfig.SIENCODE_SHIFT_JIS);
    this.setRegAttrCode((String)lUrlParam.getParam("regAttrCodeTxt"));
    this.setRegAttrFlag((String)lUrlParam.getParam("regAttrFlagTxt"));
    this.setRegRowNumTxt((String)lUrlParam.getParam("regRowNumTxt"));//行番

    if (SIUtil.isNotNull(this.getRegRowNumTxt())) {
      this.setModAttrName((String)lUrlParam.getParam(SIConfig.SIPREFIX_CUST_ATTRIBUTE_ATTRNAME_TEXT + this.getRegRowNumTxt() + "Txt"));
      this.setModDispOrder((String)lUrlParam.getParam(SIConfig.SIPREFIX_CUST_ATTRIBUTE_DISPORDER_TEXT + this.getRegRowNumTxt() + "Txt"));
    }
  }
  //7.1.1 ST0236 修正　ここまで

  /**
   * validateInsert
   * 入力した新規レコードのデータをチェックします。
   * @param HttpServletRequest クライアントからのリクエスト
   * @return なし
   * @throws なし
   */
  public boolean validateInsert(HttpServletRequest lRequest, Connection lConnection) {
    SICustomErrors errors = new SICustomErrors();
    SITableConditionManager lConditionMan = new SITableConditionManager();

    //属性分類コード
    SICheckValid.checkValid(
      errors,
      "属性分類コード",
      getRegAttrFlag(),
      SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE + SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE,
      2);
    //属性名称
    SICheckValid.checkValid(errors, "顧客属性名称", getRegAttrName(), SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 50);//7.1.1 ST0162 修正
    //表示順
    SICheckValid.checkValid(
      errors,
      "表示順",
      getRegDispOrder(),
      SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE + SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE,
      3);

    if (!errors.isEmpty())
      lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY_BAK, errors);
    else
      lRequest.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY_BAK);

    return errors.isEmpty();
  }

  /**
   * validateUpdate
   * 入力した新規レコードのデータをチェックします。
   * @param lRequest クライアントからのリクエスト
   * @return なし
   * @throws なし
   */
  public boolean validateModify(HttpServletRequest lRequest) {
    SICustomErrors errors = new SICustomErrors();
    SITableConditionManager lConditionMan = new SITableConditionManager();

    //属性番号
    SICheckValid.checkValid(errors,"属性番号",getRegAttrCode(),SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE + SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE,6);
    //属性分類コード
    SICheckValid.checkValid(errors,"属性分類コード",getRegAttrFlag(),SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE + SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE,2);
    //属性名称
    SICheckValid.checkValid(errors,"顧客属性名称",getModAttrName(),SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE, 50);//7.1.1 ST0162 修正
    //表示順
    SICheckValid.checkValid(errors,"表示順",getModDispOrder(),SICheckDataConf.SICHECK_DATA_EMPTY_TYPE + SICheckDataConf.SICHECK_DATA_DIGIT_TYPE + SICheckDataConf.SICHECK_DATA_BYTE_LEN_WITHIN_TYPE,3);

    if (!errors.isEmpty())
      lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY_BAK, errors);
    else
      lRequest.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY_BAK);

    return errors.isEmpty();
  }

  /**
   * validateDelete
   * 外部のキーのデータレコードをチェックします。
   * @param lRequest クライアントからのリクエスト
   * @param lConnection データベースへのコネクション
   * @return エラーがあるかどうかを指す状態
   * @throws なし
   */
  public boolean validateDelete(HttpServletRequest lRequest, Connection lConnection) {
    SICustomErrors errors = new SICustomErrors();
    SITableConditionManager lConditionMan = new SITableConditionManager();

    return errors.isEmpty();
  }

  //setter of 更新する行号
  public void setRegRowNumTxt(String lRegRowNumTxt) {
    if (SIUtil.isNull(lRegRowNumTxt))
      lRegRowNumTxt = "";
    this.regRowNumTxt = SIUtil.changeTo(lRegRowNumTxt.trim(), this.encode);
  }
  //getter of 更新する行号
  public String getRegRowNumTxt() {
    return this.regRowNumTxt;
  }

  /**
   * @return
   */
  public String getRegAttrCode() {
    return regAttrCode;
  }

  /**
   * @return
   */
  public String getRegAttrFlag() {
    return regAttrFlag;
  }

  /**
   * @return
   */
  public String getRegAttrName() {
    return regAttrName;
  }

  /**
   * @return
   */
  public String getModAttrName() {
    return modAttrName;
  }

  /**
   * @param string
   */
  public void setRegAttrCode(String string) {
    if (string == null)
      string = "";
    string = SIUtil.changeTo(string.trim(), this.encode);
    regAttrCode = string;
  }

  /**
   * @param string
   */
  public void setRegAttrFlag(String string) {
    if (string == null)
      string = "";
    string = SIUtil.changeTo(string.trim(), this.encode);
    regAttrFlag = string;
  }

  /**
   * @param string
   */
  public void setRegAttrName(String string) {
    if (string == null)
      string = "";
    string = SIUtil.changeTo(string.trim(), this.encode);
    regAttrName = string;
  }

  /**
   * @param string
   */
  public void setModAttrName(String string) {
    if (string == null)
      string = "";
    string = SIUtil.changeTo(string.trim(), this.encode);
    modAttrName = string;
  }


  /**
   * @return
   */
  public String getRegDispOrder() {
    return regDispOrder;
  }

  /**
   * @param string
   */
  public void setRegDispOrder(String string) {
    if (string == null) string = "";
    regDispOrder = SIUtil.changeTo(string.trim(), this.encode);
  }

  /**
   * @return
   */
  public String getModDispOrder() {
    return modDispOrder;
  }

  /**
   * @param string
   */
  public void setModDispOrder(String string) {
    if (string == null) string = "";
    modDispOrder = SIUtil.changeTo(string.trim(), this.encode);
  }
}
