/**
 * Copyright (c) 2003-2004 System Integrator Corporation.
 *                 All Rights Reserved.
 */
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 jp.co.sint.config.SIConfig;
import jp.co.sint.database.SIDBUtil;

import org.apache.log4j.Category;

/**
 * @version $Id: SIReviewManager.java,v 1.0 2003/10/27 Exp $
 * @author  Jinwang Chen
* <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>
 * Jinwang Chen   2003/10/27 10:21:13  Original
 */
public class SIReviewManager {
  //ログ用のインスタンスの生成
  private static Category log=Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);
  private String shopCode="";
  private String cmdtyCode="";
  
  public SIReviewManager(){}
  
  public SIReviewManager(String lShopCode,String lCmdtyCode){
    this.shopCode =lShopCode;
    this.cmdtyCode =lCmdtyCode;
  }
  
  public void setShopCode(String lShopCode){
    this.shopCode=lShopCode;
  }
  
  public void setCmdtyCode(String lCmdtyCode){
    this.cmdtyCode=lCmdtyCode;
  }
  
  /**
   * <b>getCollection</b>
   * 商品レビューのコレクションを取得します。
   * @param  Connection コネクション
   * @return collection
   * @throws なし
   */
  public Collection getCollection(Connection lConnection){
    Collection lReviewColl=new ArrayList();
    SIReview lReview=new SIReview();
    Statement lStatement=null;
    ResultSet lResultSet=null;
    
    StringBuffer lSqlStatementBuf=new StringBuffer();
    lSqlStatementBuf.append("SELECT * FROM ReviewTbl ");
    lSqlStatementBuf.append("WHERE ShopCode="+SIDBUtil.SQL2Str(shopCode," "));
    lSqlStatementBuf.append("AND CmdtyCode="+SIDBUtil.SQL2Str(cmdtyCode," "));
    lSqlStatementBuf.append("AND DispFlg = '1' ");
    lSqlStatementBuf.append("ORDER BY InitDateTime DESC");
    log.debug("getCollection:lSqlStatementBuf="+lSqlStatementBuf.toString());
    
    //コネンクションの作成
    try {
      lStatement=lConnection.createStatement();
      lResultSet=lStatement.executeQuery(lSqlStatementBuf.toString());
      while (lResultSet.next()){
        lReview=new SIReview();
        lReview.setEncode(SIConfig.SIENCODE_NONE);
        lReview.setReviewCode(lResultSet.getString("ReviewCode"));
        lReview.setTitle(lResultSet.getString("Title"));
        lReview.setNickName(lResultSet.getString("NickName"));
        lReview.setContent(lResultSet.getString("Content"));
        lReview.setInitDateTime(SIDBUtil.getDateTime(lResultSet.getTimestamp("InitDateTime")));
        lReview.setAmountofStars(lResultSet.getString("AmountofStars"));
        lReview.setSex(lResultSet.getString("Sex"));
        lReviewColl.add(lReview);
      }
      return lReviewColl;
    } catch (SQLException e) {
      e.printStackTrace();
    }finally{
      SIDBUtil.close(lStatement,lResultSet);
    }
    return null;
  }
}