/**
 * Created on 2003/08/27
 *
 * 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.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;

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;

/**
 * @author arai
 *
 * To change the template for this generated type comment go to
 * Window>Preferences>Java>Code Generation>Code and Comments
 */
public class SIRanking extends SIBasic {

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

  private String memberLevelCode = "";
  private String memberLevel = "";
  private String memberLevelName = "";
  private String discountRate = "";
  private String updateDateTime;
  private String memberCount = "0";

  public SIRanking() {
  }
  
  public SIRanking(String lMemberLevelCode){
    setMemberLevelCode(lMemberLevelCode);
  }
  /**
   * @return
   */
  public String getMemberLevel() {
    return memberLevel;
  }

  /**
   * @return
   */
  public String getDiscountRate() {
    return discountRate;
  }

  /**
   * @return
   */
  public Category getLog() {
    return log;
  }

  /**
   * @return
   */
  public String getMemberLevelName() {
    return memberLevelName;
  }

  /**
   * @param string
   */
  public void setMemberLevel(String string) {
    memberLevel = string;
  }

  /**
   * @param string
   */
  public void setDiscountRate(String string) {
    discountRate = string;
  }

  /**
   * @param category
   */
  public void setLog(Category category) {
    log = category;
  }

  /**
   * @param string
   */
  public void setMemberLevelName(String val) {
    if (SIUtil.isNull(val))
      val = "";
    this.memberLevelName = SIUtil.changeTo(val.trim(), this.encode);
  }

  /**
   * @return
   */
  public String getUpdateDateTime() {
    return updateDateTime;
  }

  /**
   * @param string
   */
  public void setUpdateDateTime(String string) {
    updateDateTime = string;
  }

  /**
   * @return
   */
  public String getMemberLevelCode() {
    return memberLevelCode;
  }

  /**
   * @param string
   */
  public void setMemberLevelCode(String string) {
    memberLevelCode = string;
  }

  /**
   * 会員数 setter
   * @param string
   */
  public void setMemberCount(String string) {
  	if(SIUtil.isNull(string)){
  		string = "0";
  	}
	this.memberCount = string;
  }
  
  /**
   * 会員数 getter
   * @return
   */
  public String getMemberCount() {
    return this.memberCount;
  }
  
  public boolean reset(Connection lConnection){
    boolean lResult=false;

    if (SIUtil.isNull(this.getMemberLevelCode())) return lResult;

    Statement lStatement=null;
    ResultSet lResultSet=null;

    StringBuffer lSqlBuf=new StringBuffer("SELECT * FROM MemberLevelMTbl ");
    lSqlBuf.append("WHERE MemberLevelCode=").append(SIDBUtil.SQL2Str(this.getMemberLevelCode()));

    log.debug("reset:lSqlBuf="+lSqlBuf.toString());
    try {
      lStatement=lConnection.createStatement();
      lResultSet=lStatement.executeQuery(lSqlBuf.toString());

      if (lResultSet.next()){
        this.setEncode(SIConfig.SIENCODE_NONE);
        this.setDiscountRate(lResultSet.getString("DiscountRate"));//配送種別名
        this.setMemberLevel(lResultSet.getString("MemberLevel"));//配送種別名
        this.setMemberLevelName(lResultSet.getString("MemberLevelName"));//配送種別名
        this.setDiscountRate(lResultSet.getString("DiscountRate"));//配送種別名
        this.setDiscountRate(lResultSet.getString("DiscountRate"));//配送種別名
        lResult=true;
      }else {
        log.error("not find record for memberLevelCode="+getMemberLevelCode());
      } 
    }catch(SQLException sqle){
      sqle.printStackTrace();
    }finally{
      SIDBUtil.close(lStatement,lResultSet);
    }
    return lResult;    
  }
  
  public HashMap getKeyList(Connection lConnection){
    Statement lStatement = null;
    ResultSet lResultSet = null;
    HashMap key = new HashMap();
    String lSql = "SELECT memberLevelCode,memberLevelCode FROM memberlevelmtbl ";
    try {
      lStatement = lConnection.createStatement();
      lResultSet = lStatement.executeQuery(lSql);
      while (lResultSet.next()) {
        key.put(lResultSet.getString("memberLevelCode"),lResultSet.getString("memberLevelCode"));
      }
    } catch (SQLException sqle) {
      sqle.printStackTrace();
    } finally {
      SIDBUtil.close(lStatement, lResultSet);
    }
    return key;
  }
  
  public static Collection getCollection(Connection lConnection,boolean lEnable){ 

    StringBuffer lSqlBuf=new StringBuffer("SELECT  memberLevelName,memberLevelCode FROM MemberLevelMTbl ");
    lSqlBuf.append("ORDER BY memberlevel,memberlevelcode ");

    Collection lResultColl=new ArrayList();

    try {
      lResultColl=SIDBUtil.getCollection(lConnection,lSqlBuf.toString(),lEnable);
    } catch (SIDBAccessException e) {
      e.printStackTrace();
    }

    return lResultColl;
  }

  public static Collection getCollection(Connection lConnection){
    return  getCollection(lConnection,true);
  }
}
