package jp.co.sint.beans.mallmgr;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;

import javax.servlet.http.HttpServletRequest;

import jp.co.sint.basic.SIBasic;
import jp.co.sint.basic.SIKeepDetail;
import jp.co.sint.basic.SILogin;
import jp.co.sint.config.SIConfig;
import jp.co.sint.database.SIDBAccessException;
import jp.co.sint.database.SIDBUtil;
import jp.co.sint.tools.SIURLParameter;
import jp.co.sint.tools.SIUtil;

import org.apache.log4j.Category;

public class UIKeepDetailCond extends SIBasic {
  // ログ用のインスタンスの生成
  private static Category log = Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);
  // キープ番号
  private String keepNumber = "";
  // 担当支店
  private String keepbranchTxt = "";
  // 担当者
  private String keepchargeTxt = "";
  // キープ日
  private String keepdateTxt = "";
  // 親コード
  private String cmdtyCode = "";
  // 在庫コード
  private String IndividualCode = "";
  // 商品種別
  private String cmdtyType = "";
  // 商品名
  private String cmdtyName = "";
  // 単価
  private String price = "";
  // 原価
  private String cost = "";
  // 送料種別
  private String deliveryType = "";
  // サイズ
  private String size = "";
  // 数量
  private String amount = "";
  // 在庫支店
  private String branchCode = "";
  // 在庫支店名
  private String branchName = "";
  // 登録日時
  private String initDateTime = "";
  // SQL検索のばあいに、条件文
  private String conditionSQL = "";
  // ページ番号
  private String pageNumberTxt = "1";
  // ステータス
  private String status = "";
  
  // setter of ページ番号
  public void setPageNumberTxt(String lPageNumberTxt) {
    if (SIUtil.isNull(lPageNumberTxt)) lPageNumberTxt = "1";
    this.pageNumberTxt = lPageNumberTxt;
  }
  
  // getter of ページ番号
  public String getPageNumberTxt() {
    return this.pageNumberTxt;
  }
  
  public UIKeepDetailCond() {

  }
  
  public UIKeepDetailCond(HttpServletRequest lRequest, SIURLParameter lUrlParam) {

  }
  
  // 数量
  public String getAmount() {
    return this.amount;
  }
  
  public void setAmount(String lamount) {
    if (SIUtil.isNull(lamount)) lamount = "";
    this.amount = SIUtil.changeTo(lamount.trim(), this.encode);
  }
  
  // 在庫支店
  public String getBranchCode() {
    return this.branchCode;
  }
  
  public void setBranchCode(String lbranchCode) {
    if (SIUtil.isNull(lbranchCode)) lbranchCode = "";
    this.branchCode = SIUtil.changeTo(lbranchCode.trim(), this.encode);
  }
  
  // 在庫支店名
  public String getBranchName() {
    return this.branchName;
  }
  
  public void setBranchName(String lbranchName) {
    if (SIUtil.isNull(lbranchName)) lbranchName = "";
    this.branchName = SIUtil.changeTo(lbranchName.trim(), this.encode);
  }
  
  // 親コード
  public String getCmdtyCode() {
    return this.cmdtyCode;
  }
  
  public void setCmdtyCode(String lcmdtyCode) {
    if (SIUtil.isNull(lcmdtyCode)) lcmdtyCode = "";
    this.cmdtyCode = SIUtil.changeTo(lcmdtyCode.trim(), this.encode);
  }
  
  // 商品名
  public String getCmdtyName() {
    return this.cmdtyName;
  }
  
  public void setCmdtyName(String lcmdtyName) {
    if (SIUtil.isNull(lcmdtyName)) lcmdtyName = "";
    this.cmdtyName = SIUtil.changeTo(lcmdtyName.trim(), this.encode);
  }
  
  // 商品種別
  public String getCmdtyType() {
    return this.cmdtyType;
  }
  
  public void setCmdtyType(String lcmdtyType) {
    if (SIUtil.isNull(lcmdtyType)) lcmdtyType = "";
    this.cmdtyType = SIUtil.changeTo(lcmdtyType.trim(), this.encode);
  }
  
  // 送料種別
  public String getDeliveryType() {
    return this.deliveryType;
  }
  
  public void setDeliveryType(String ldeliveryType) {
    if (SIUtil.isNull(ldeliveryType)) ldeliveryType = "";
    this.deliveryType = SIUtil.changeTo(ldeliveryType.trim(), this.encode);
  }
  
  // 在庫コード
  public String getIndividualCode() {
    return this.IndividualCode;
  }
  
  public void setIndividualCode(String lindividualCode) {
    if (SIUtil.isNull(lindividualCode)) lindividualCode = "";
    this.IndividualCode = SIUtil.changeTo(lindividualCode.trim(), this.encode);
  }
  
  // キープ番号
  public String getKeepNumber() {
    return keepNumber;
  }
  
  public void setKeepNumber(String lkeepNumber) {
    if (SIUtil.isNull(lkeepNumber)) lkeepNumber = "";
    this.keepNumber = SIUtil.changeTo(lkeepNumber.trim(), this.encode);
  }
  
  // 登録日
  public String getInitDateTime() {
    return initDateTime;
  }
  
  public void setInitDateTime(String linitDateTime) {
    if (SIUtil.isNull(linitDateTime)) linitDateTime = "";
    this.initDateTime = SIUtil.changeTo(linitDateTime.trim(), this.encode);
  }
  
  // 担当支店
  public String getKeepbranchTxt() {
    return keepbranchTxt;
  }
  
  public void setKeepbranchTxt(String lkeepbranchTxt) {
    if (SIUtil.isNull(lkeepbranchTxt)) lkeepbranchTxt = "";
    this.keepbranchTxt = SIUtil.changeTo(lkeepbranchTxt.trim(), this.encode);
  }
  
  // 担当者
  public String getKeepchargeTxt() {
    return keepchargeTxt;
  }
  
  public void setKeepchargeTxt(String lkeepchargeTxt) {
    if (SIUtil.isNull(lkeepchargeTxt)) lkeepchargeTxt = "";
    this.keepchargeTxt = SIUtil.changeTo(lkeepchargeTxt.trim(), this.encode);
  }
  
  // 担当支店
  public String getKeepdateTxt() {
    return keepdateTxt;
  }
  
  public void setKeepdateTxt(String lkeepdateTxt) {
    if (SIUtil.isNull(lkeepdateTxt)) lkeepdateTxt = "";
    this.keepdateTxt = SIUtil.changeTo(lkeepdateTxt.trim(), this.encode);
  }
  
  // setter of 検索用ＳＱＬ文
  public void setConditionSQL(String lConditionSQL) {
    if (SIUtil.isNull(lConditionSQL)) lConditionSQL = "";
    this.conditionSQL = SIUtil.changeTo(lConditionSQL.trim(), this.encode);
  }
  
  // getter of 条件文
  public String getCondtionSQL() {
    return this.conditionSQL;
  }
  
  /*
   * getter of status.
   */
  public String getStatus() {
    return status;
  }
  
  /*
   * setter of status
   */
  public void setStatus(String status) {
    this.status = status;
  }
  
  public void init(HttpServletRequest lRequest, SIURLParameter lUrlParam) {
    
    this.setEncode(SIConfig.SIENCODE_SHIFT_JIS);
    // 7.1.1 ST0236 修正 ここから
    super.init(lRequest, lUrlParam);
    this.setKeepNumber((String) lUrlParam.getParam("keepnumberTxt"));
    this.setKeepbranchTxt((String) lUrlParam.getParam("keepbranchTxt"));
    this.setKeepchargeTxt((String) lUrlParam.getParam("keepchargeTxt"));
    this.setKeepdateTxt((String) lUrlParam.getParam("keepdateTxt"));
    this.setStatus((String) lUrlParam.getParam("keepStatusTxt"));
  }
  
  public Collection getCollection(Connection lConnection) throws SIDBAccessException {
    return getCollection(lConnection, new SILogin());
  }
  
  public Collection getCollection(Connection lConnection, SILogin lLogin) throws SIDBAccessException {
    Statement lStatement = null;
    ResultSet lResultSet = null;
    SIKeepDetail lKeepDetail = new SIKeepDetail();
    StringBuffer lSqlBuf = new StringBuffer();
    Collection lKeepDetails = new ArrayList();
    
    // 基本のSQL
    
    lSqlBuf.append("SELECT aa.keepnumber,aa.cmdtycode,aa.individualcode,aa.cmdtyname,aa.deliverytype,aa.amount,bb.branchname,aa.cmdtytype ");
    // EDBTG003-00 elecs-matsushima add start
    lSqlBuf.append(",aa.setdetailflg, aa.setindividualcode, aa.setcode, aa.setdetailcode ");
    // EDBTG003-00 elecs-matsushima add end
    lSqlBuf.append("FROM KeepDetailTbl aa, BranchTbl bb ");
    lSqlBuf.append("WHERE aa.branchcode=bb.branchcode ");
    
    // 検索の条件
    lSqlBuf.append("AND aa.keepnumber=").append(SIDBUtil.SQL2Str(this.keepNumber," "));
    
    // 出力順
    lSqlBuf.append("GROUP BY aa.keepnumber,aa.cmdtycode,aa.individualcode,aa.cmdtyname,aa.deliverytype,aa.amount ,bb.branchname,aa.cmdtytype ");
    // EDBTG003-00 elecs-matsushima add start
    lSqlBuf.append(",aa.setdetailflg, aa.setindividualcode, aa.setcode, aa.setdetailcode ");
    // EDBTG003-00 elecs-matsushima add end
    lSqlBuf.append("ORDER BY aa.keepnumber,aa.cmdtycode");
    
    log.debug("lSqlBuf=" + lSqlBuf.toString());
    
    // 実行
    try {
      lStatement = lConnection.createStatement();
      lResultSet = lStatement.executeQuery(lSqlBuf.toString());
      
      // 商品レコードのセットの作成
      while (lResultSet.next()) {
        
        lKeepDetail = new SIKeepDetail();
        lKeepDetail.setCmdtyCode(lResultSet.getString("cmdtycode"));
        lKeepDetail.setIndividualCode(lResultSet.getString("individualcode"));
        lKeepDetail.setCmdtyName(lResultSet.getString("cmdtyname"));
        lKeepDetail.setDeliveryType(lResultSet.getString("deliverytype"));
        lKeepDetail.setBranchName(lResultSet.getString("branchname"));
        lKeepDetail.setAmount(lResultSet.getString("amount"));
        lKeepDetail.setCmdtyType(lResultSet.getString("cmdtytype"));
        // EDBTG003-00 elecs-matsushima add start
        lKeepDetail.setSetDetailFlg(lResultSet.getString("setdetailflg"));
        lKeepDetail.setSetIndividualCode(lResultSet.getString("setindividualcode"));
        // EDBTG003-00 elecs-matsushima add end
        
        lKeepDetails.add(lKeepDetail);
      }
    } catch (Exception ex) {
      throw new SIDBAccessException(ex);
    } finally {
      SIDBUtil.close(lResultSet, lStatement);
    }
    return lKeepDetails;
  }
  
}
