/**
 * Created on 2003/10/02
 *
 * To change the template for this generated file go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
package jp.co.sint.basic;

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

import jp.co.sint.config.SIConfig;
import jp.co.sint.database.SIDBAccessException;
import jp.co.sint.database.SIDBUtil;
import jp.co.sint.tools.SIUtil;

import org.apache.log4j.Category;

/**
 * @version $Id: SIInstock.java,v 1.0 2003/10/24 Exp $
 * @author  arai
* <br>Description:
 * <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>
 * arai           2003/10/02 13:49:38  Original
 */
public class SIInstock extends SIBasic{
  //ログ用のインスタンスの生成
  private static Category log=Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);

  private String stockStatusCode = "";
  private String stockStatusName = "";
  private String commentOfNoStock = "";
  private String amountOfLessStock = "1";
  private String commentOfLessStock = "";
  private String commentOfMoreStock = "";
  //商品数
  private String cmdtyCount = "0";
  /**
   * @return
   */
  public String getAmountOfLessStock() {
    return amountOfLessStock;
  }
  
  /**
   * @return
   */
  public String getCommentOfLessStock() {
    return commentOfLessStock;
  }
  
  /**
   * @return
   */
  public String getCommentOfMoreStock() {
    return commentOfMoreStock;
  }
  
  /**
   * @return
   */
  public String getCommentOfNoStock() {
    return commentOfNoStock;
  }
  
  /**
   * @return
   */
  public String getStockStatusCode() {
    return stockStatusCode;
  }
  
  /**
   * @return
   */
  public String getStockStatusName() {
    return stockStatusName;
  }
  
  /**
   * 商品数
   * @return
   */
  public String getCmdtyCount() {
    return this.cmdtyCount;
  }
  
  /**
   * @param string
   */
  public void setAmountOfLessStock(String string) {
    if(string==null)string="1";
    amountOfLessStock = SIUtil.changeTo(string.trim(),this.encode);
  }
  
  /**
   * @param string
   */
  public void setCommentOfLessStock(String string) {
    if(string==null)string="";
    string = SIUtil.changeTo(string.trim(),this.encode);
    commentOfLessStock = string;
  }
  
  /**
   * @param string
   */
  public void setCommentOfMoreStock(String string) {
    if(string==null)string="";
    commentOfMoreStock = SIUtil.changeTo(string.trim(),this.encode);
  }
  
  /**
   * @param string
   */
  public void setCommentOfNoStock(String string) {
    if(string==null)string="";
    commentOfNoStock = SIUtil.changeTo(string.trim(),this.encode);
  }
  
  /**
   * @param string
   */
  public void setStockStatusCode(String string) {
    if(string==null)string="";
    stockStatusCode = SIUtil.changeTo(string.trim(),this.encode);
  }
  
  /**
   * @param string
   */
  public void setStockStatusName(String string) {
    if(string==null)string="";
    stockStatusName = SIUtil.changeTo(string.trim(),this.encode);
  }
  
  /**
   * 商品数
   * @param string
   */
  public void setCmdtyCount(String string) {
    if(string==null)string="0";
    cmdtyCount = SIUtil.changeTo(string.trim(),this.encode);
  }
  
  /**
   * <b>getCollection</b>
   * 在庫状況設定のコレクションを返します。
   * コメントがNullの値は初期値を設定して返します。
   * @param lConnection
   * @return Collection
   */
  public static Collection getCollection(Connection lConnection){
    StringBuffer lSqlBuf=new StringBuffer("SELECT StockStatusName||'【「無：'|| CASE WHEN CommentOfNoStock IS NULL THEN ' ' ELSE CommentOfNoStock END ||'」 「'||AmountOfLessStock||'以下：'|| CASE WHEN CommentOfLessStock IS NULL THEN ' ' ELSE CommentOfLessStock END ||'」 「多：'|| CASE WHEN CommentOfMoreStock IS NULL THEN ' ' ELSE CommentOfMoreStock END ||'」】',StockStatusCode ");
    lSqlBuf.append("FROM StockStatusMTbl ORDER BY StockStatusName");
    log.debug("getCollection:lSqlBuf="+lSqlBuf.toString());
    
    Collection lResultColl=new ArrayList();
    
    try {
      lResultColl=SIDBUtil.getCollection(lConnection,lSqlBuf.toString());
    } catch (SIDBAccessException e) {
      e.printStackTrace();
    }
    
    return lResultColl;
  }
  
  /**
   * <b>getCommentOfStock</b>
   * 商品レコードの在庫状況番号と商品の在庫数から在庫コメントの取得
   * @param lConnection DBへの接続コネンクション
   * @param lStockStatusCode 在庫状況番号
   * @param lAmount 在庫商品数
   * @return 在庫コメント
   */
  public static String getCommentOfStock(Connection lConnection,String lStockStatusCode,String lAmount){
    if (SIUtil.isNull(lStockStatusCode)) return "";
    
    StringBuffer lSqlBuf=new StringBuffer("SELECT CASE WHEN ").append(lAmount).append("<=0 THEN CommentOfNoStock ");
    lSqlBuf.append("WHEN ").append(lAmount).append("<=AmountOfLessStock THEN CommentOfLessStock ");
    lSqlBuf.append("ELSE CommentOfMoreStock END AS CommentOfStock ");
    lSqlBuf.append("FROM StockStatusMTbl ");
    lSqlBuf.append("WHERE StockStatusCode=").append(lStockStatusCode);
    log.debug("getCommentOfStock:lSqlBuf="+lSqlBuf.toString());
    
    try {
      return SIDBUtil.getFirstData(lConnection,lSqlBuf.toString());
    } catch (SIDBAccessException e) {
      e.printStackTrace();
      return "";
    }
    
  }
}
