/**
 * Created on 2003/11/13
 *
 * 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.config.SIDBMultiConf;
import jp.co.sint.database.SIDBAccessException;
import jp.co.sint.database.SIDBUtil;
import jp.co.sint.tools.SIStringUtil;
import jp.co.sint.tools.SIUtil;

import org.apache.log4j.Category;

/**
 * @version $Id: SIDeliveryTime.java,v 1.0 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/12/12  Original
 */
public class SIDeliveryTime extends SIBasic{
  //ログ用のインスタンスの生成
  private static Category log=Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);
  
  private String mallShopCode = "";
  private String deliveryTypeCode = "";
  private String deliveryTimeFrom="";
  private String deliveryTimeTo="";
  
  /**
   * @return
   */
  public String getDeliveryTimeFrom() {
    return deliveryTimeFrom;
  }
  
  /**
   * @return
   */
  public String getDeliveryTimeTo() {
    return deliveryTimeTo;
  }
  
  /**
   * @return
   */
  public String getDeliveryTypeCode() {
    return deliveryTypeCode;
  }
  
  /**
   * @return
   */
  public String getMallShopCode() {
    return mallShopCode;
  }
  
  /**
   * @param string
   */
  public void setDeliveryTimeFrom(String string) {
    if(string==null)string="";
    deliveryTimeFrom = SIUtil.changeTo(string ,this.encode);
  }
  
  /**
   * @param string
   */
  public void setDeliveryTimeTo(String string) {
    if(string==null)string="";
    deliveryTimeTo = SIUtil.changeTo(string ,this.encode);
  }
  
  /**
   * @param string
   */
  public void setDeliveryTypeCode(String string) {
    if(string==null)string="";
    deliveryTypeCode = SIUtil.changeTo(string ,this.encode);
  }
  
  /**
   * @param string
   */
  public void setMallShopCode(String string) {
    if(string==null)string="";
    mallShopCode = SIUtil.changeTo(string ,this.encode);
  }
  
  public void setDeliveryTime(String lDeliveryTime){
    String[] lTime=SIStringUtil.split(lDeliveryTime,"-");
    if (lTime==null) return ;
    else if (lTime.length >1){
      setDeliveryTimeFrom(lTime[0]);
      setDeliveryTimeTo(lTime[1]);
    }else if  (lTime.length >0){
      setDeliveryTimeFrom(lTime[0]);
    }
  }
  
  /**
   * <b>getCollection</b>
   * 配送業者の配送種別時間帯をコレクションで返します
   * @param  lConnection
   * @param  lMallShopCode  ショップコード
   * @param  lDeliveryName  配送業者名
   * @return Collection
   * @throws なし
   */
  public static Collection getCollection(Connection lConnection,String lMallShopCode,String lDeliveryName){
    if (SIUtil.isNull(lMallShopCode)){
      log.warn("getCollection:use mall code .lDeliveryName="+lDeliveryName);
      lMallShopCode=SIConfig.SIMALL.getMallShopCode();
    }
    StringBuffer lSqlBuf=new StringBuffer();
    lSqlBuf.append("SELECT DeliveryTimeFrom||'-'||DeliveryTimeTo,DeliveryTimeFrom||'-'||DeliveryTimeTo ");
    lSqlBuf.append("FROM DeliveryTimeMTbl").append(SIDBMultiConf.SIALIAS_CURR_NAME).append("aa,");
    lSqlBuf.append("DeliveryTypeMTbl").append(SIDBMultiConf.SIALIAS_CURR_NAME).append("bb ");
    lSqlBuf.append("WHERE aa.MallShopCode=bb.MallShopCode AND aa.DeliveryTypeCode=bb.DeliveryTypeCode ");
    lSqlBuf.append("AND bb.MallShopCode=").append(SIDBUtil.SQL2Str(lMallShopCode," "));
    lSqlBuf.append("AND bb.DeliveryTypeName=").append(SIDBUtil.SQL2Str(lDeliveryName));
    
    log.debug("getCollection:lSqlBuf="+lSqlBuf.toString());
    Collection lResultColl=new ArrayList();
    
    try {
      lResultColl=SIDBUtil.getCollection( lConnection, lSqlBuf.toString());
      lResultColl=SIUtil.insertColl(lResultColl,new SINameValue("-----",""));
    } catch (SIDBAccessException e) {
      e.printStackTrace();
      lResultColl.add(new SINameValue("-----",""));
    }
    return lResultColl;
  }
}