/**
 * Copyright (c) 2003-2004 System Integrator Corporation.
 *                 All Rights Reserved.
 */
package jp.co.sint.beans.mallmgr;

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

import javax.servlet.http.HttpServletRequest;

import jp.co.sint.basic.SILogin;
import jp.co.sint.basic.SIReview;
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.database.SIDateTimeType;
import jp.co.sint.database.SITableCondition;
import jp.co.sint.database.SITableConditionManager;
import jp.co.sint.tools.SICheckDataConf;
import jp.co.sint.tools.SICheckUtil;
import jp.co.sint.tools.SICheckValid;
import jp.co.sint.tools.SICustomErrors;
import jp.co.sint.tools.SIDateTime;
import jp.co.sint.tools.SIHTMLUtil;
import jp.co.sint.tools.SIUtil;
import jp.co.sint.tools.SIURLParameter;//7.1.1 ST0236 追加

import org.apache.log4j.Category;

/**
 * @version $Id : UIReviewListCond.java,v 1.0 2003/09/01 Exp $
 * @author      : Shionoya Yoshiaki
 * <br>Description :レビュー管理の一覧・検索の画面に対するbeansクラスを作成します。
 * <p>History</p>
 * <p>Author                        Date                     Reason</p>
 * ============&nbsp;&nbsp;&nbsp;==========&nbsp;&nbsp;===========================<br>
 * Shionoya Yoshiaki       2003/09/01          Original
 */

public class UIReviewListCond extends jp.co.sint.basic.SIBasic{
  //ログ用のインスタンスの生成
  private static Category log=Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);
  
  //レビューコード
  private String reviewCodeTxt="";
  
  //ショップコード
  private String shopCodeTxt="";
  
  //商品コード
  private String cmdtyCodeFromTxt="";//7.2.0 ST0551 修正
  private String cmdtyCodeToTxt="";//7.2.0 ST0551 追加
  
  //商品名
  private String cmdtyNameTxt="";
  
  //タイトル
  //private String titleTxt=""; 7.2.0 ST0551 削除
  
  //投稿者
  private String nickNameTxt="";
  
  //メール
  private String emailTxt="";
  
  //内容
  private String contentTxt="";
  
  //性別
  //private String sexRdo=""; 7.2.0 ST0551 削除
  
  //星数
  private String amountofStarsTxt="";
  
  /*
  //購入フラグ
  private String buyFlgRdo="";
  
  //会員フラグ
  private String memberFlgRdo="";
  
  //ファーストレビューフラグ
  private String firstFlgRdo="";
  7.2.0 ST0551 削除*/
  
  //表示・非表示(検索）
  private String dispFlgRdo="";
  
  //表示・非表示（一覧）
  private String listDispFlgRdo="";
  
  //レビューポイント
  private String reviewPointTxt="";
  
  //投稿日
  private String initDateTimeTxt="";
  
  //投稿日検索期間FROM
  private String initDateTimeFromLst="";//7.2.0 ST0551 修正
  
  //投稿日検索期間FROMの年
  private String initDateYearFromLst="";
  
  //投稿日検索期間FROMの月
  private String initDateMonthFromLst="";
  
  //投稿日検索期間FROMの日
  private String initDateDayFromLst="";
  
  //投稿日検索期間TO
  private String initDateTimeToLst="";//7.2.0 ST0551 修正
  
  //投稿日検索期間TOの年
  private String initDateYearToLst="";
  
  //投稿日検索期間TOの月
  private String initDateMonthToLst="";
  
  //投稿日検索期間TOの日
  private String initDateDayToLst="";
  
  //検索並び順項目1
  private String firstOrderSel="InitDateTime";
  
  /*
  //検索並び順項目2
  private String secondOrderSel="CmdtyName";
  
  //検索並び順項目3
  private String thirdOrderSel="Title";
  7.2.0 ST0551 削除*/
  
  //並び順１
  private String firstOrderTxt="1";
  
  /*
  //並び順2
  private String secondOrderTxt="0";
  
  //並び順3
  private String thirdOrderTxt="0";
  7.2.0 ST0551 削除*/
  
  //ページ番号
  private String pageNumberTxt="1";
  
  //ページごとに表示するレコード数
  private String pageNumberSel="1";
  
  //SQL検索のばあいに、条件文
  private String conditionSQL="";
  
  //条件のセット
  private Collection csvColl=new ArrayList();
  
  //並び順の文
  private String orderBySQL="";
  
  /**
   * UIReviewListCond
   * コンストラクタ
   * @param なし
   * @return なし
   * @throws なし
   */
  public UIReviewListCond(){
    //7.2.0 ST0551 追加 ここから
    SIDateTime lDateTime = new SIDateTime();
    String Year=Integer.toString(lDateTime.getYear());
    String Month=Integer.toString(lDateTime.getMonth());
    String Day=Integer.toString(lDateTime.getDay());
    
    //対象期間Toの年
    initDateYearToLst=Year;
    //対象期間Toの月
    initDateMonthToLst=SIUtil.lFillIn(Month,2);
    //対象期間Toの日
    initDateDayToLst=SIUtil.lFillIn(Day,2);
    
    //一ヶ月前の日付を取得
    lDateTime.addMonth(-1);
    Year=Integer.toString(lDateTime.getYear());
    Month=Integer.toString(lDateTime.getMonth());
    Day=Integer.toString(lDateTime.getDay());
    if(Month.length()==1) Month="0"+Month;
    if(Day.length()==1) Day="0"+Day;
    
    //対象期間Toの年
    initDateYearFromLst=Year;
    //対象期間Toの月
    initDateMonthFromLst=SIUtil.lFillIn(Month,2);
    //対象期間Toの日
    initDateDayFromLst=SIUtil.lFillIn(Day,2);
    
    //表示・非表示(検索）を未チェックにセット
    dispFlgRdo="0";
    
    //条件文の設定
    SITableConditionManager lConditionMan=new SITableConditionManager();
    if (SIDBMultiConf.SIDB_CURRENT_INX ==SIDBMultiConf.SIDB_POSTGRESQL_INX){
      lConditionMan.add(new SITableCondition("","initDateTime",this.getInitDateTimeFromLst(),SIConfig.SICONDITION_TYPE_GREATER_EQUAL,SIConfig.SICONDITION_TYPE_AND));
      lConditionMan.add(new SITableCondition("","initDateTime",this.getInitDateTimeToLst()+" 23:59:59",SIConfig.SICONDITION_TYPE_LESS_EQUAL,SIConfig.SICONDITION_TYPE_AND));
    }else{
      lConditionMan.add(new SITableCondition("","initDateTime",new SIDateTimeType(getInitDateTimeFromLst()),SIConfig.SICONDITION_TYPE_GREATER_EQUAL,SIConfig.SICONDITION_TYPE_AND));
      lConditionMan.add(new SITableCondition("","initDateTime",new SIDateTimeType(getInitDateTimeToLst()+" 23:59:59"),SIConfig.SICONDITION_TYPE_LESS_EQUAL,SIConfig.SICONDITION_TYPE_AND));
    }
    
    lConditionMan.add(new SITableCondition("","dispFlg",dispFlgRdo,SIConfig.SICONDITION_TYPE_EQUAL,SIConfig.SICONDITION_TYPE_AND));
    this.conditionSQL=lConditionMan.getCondtionSQL();
    
    //7.2.0 ST0551 追加 ここまで
  }
  
  /**
   * UIReviewListCond
   * コンストラクタ
   * @param lRequest リクエスト
   * @param lUrlParam
   * @return なし
   * @throws なし
   */
  public UIReviewListCond(HttpServletRequest lRequest,SIURLParameter lUrlParam){//7.1.1 ST0236 修正
    this.init(lRequest,lUrlParam);//7.1.1 ST0236 修正
  }
  
  //setter of レビューコード
  public void setReviewCodeTxt(String lReviewCodeTxt){
    if (SIUtil.isNull(lReviewCodeTxt)) lReviewCodeTxt="";
    this.reviewCodeTxt=SIUtil.changeTo(lReviewCodeTxt.trim(),this.encode);
  }
  
  //setter of ショップコード
  public void setShopCodeTxt(String lShopCodeTxt){
    if (SIUtil.isNull(lShopCodeTxt)) lShopCodeTxt="";
    this.shopCodeTxt=SIUtil.changeTo(lShopCodeTxt.trim(),this.encode);
  }
  
  //7.2.0 ST0551 修正 ここから
  //setter of 商品コード(From)
  public void setCmdtyCodeFromTxt(String lCmdtyCodeFromTxt){
    if (SIUtil.isNull(lCmdtyCodeFromTxt)) lCmdtyCodeFromTxt="";
    this.cmdtyCodeFromTxt=SIUtil.changeTo(lCmdtyCodeFromTxt.trim(),this.encode);
  }
  //7.2.0 ST0551 修正 ここまで
  
  //7.2.0 ST0551 追加 ここから
  //setter of 商品コード(To)
  public void setCmdtyCodeToTxt(String lCmdtyCodeToTxt){
    if (SIUtil.isNull(lCmdtyCodeToTxt)) lCmdtyCodeToTxt="";
    this.cmdtyCodeToTxt=SIUtil.changeTo(lCmdtyCodeToTxt.trim(),this.encode);
  }
  //7.2.0 ST0551 追加 ここまで
  
  //setter of 商品名
  public void setCmdtyNameTxt(String lCmdtyNameTxt){
    if (SIUtil.isNull(lCmdtyNameTxt)) lCmdtyNameTxt="";
    this.cmdtyNameTxt=SIUtil.changeTo(lCmdtyNameTxt.trim(),this.encode);
  }
  
  //setter of タイトル
  /*public void setTitleTxt(String lTitleTxt){
    if (SIUtil.isNull(lTitleTxt)) lTitleTxt="";
    this.titleTxt=SIUtil.changeTo(lTitleTxt.trim(),this.encode);
  }
  7.2.0 ST0551 削除*/
  
  //setter of 投稿者
  public void setNickNameTxt(String lNickNameTxt){
    if (SIUtil.isNull(lNickNameTxt)) lNickNameTxt="";
    this.nickNameTxt=SIUtil.changeTo(lNickNameTxt.trim(),this.encode);
  }
  
  //setter of メール
  public void setEmailTxt(String lEmailTxt){
    if (SIUtil.isNull(lEmailTxt)) lEmailTxt="";
    this.emailTxt=SIUtil.changeTo(lEmailTxt.trim(),this.encode);
  }
  
  //setter of 内容
  public void setContentTxt(String lContentTxt){
    if (SIUtil.isNull(lContentTxt)) lContentTxt="";
    this.contentTxt=SIUtil.changeTo(lContentTxt.trim(),this.encode);
  }
  
  //setter of 投稿日
  public void setInitDateTimeTxt(String lInitDateTimeTxt){
    if (SIUtil.isNull(lInitDateTimeTxt)) lInitDateTimeTxt="";
    this.initDateTimeTxt=SIUtil.changeTo(lInitDateTimeTxt.trim(),this.encode);
  }
  
  //setter of 投稿日検索期間FROMの年
  public void setInitDateYearFromLst(String lInitDateYearFromLst){
    if (SIUtil.isNull(lInitDateYearFromLst)) lInitDateYearFromLst="";
    this.initDateYearFromLst=SIUtil.changeTo(lInitDateYearFromLst,this.encode);
  }
  
  //setter of 投稿日検索期間FROMの月
  public void setInitDateMonthFromLst(String lInitDateMonthFromLst){
    if (SIUtil.isNull(lInitDateMonthFromLst)) lInitDateMonthFromLst="";
    this.initDateMonthFromLst=SIUtil.changeTo(lInitDateMonthFromLst,this.encode);
  }
  
  //setter of 投稿日検索期間FROMの日
  public void setInitDateDayFromLst(String lInitDateDayFromLst){
    if (SIUtil.isNull(lInitDateDayFromLst)) lInitDateDayFromLst="";
    this.initDateDayFromLst=SIUtil.changeTo(lInitDateDayFromLst,this.encode);
  }
  
  //setter of 投稿日検索期間TOの年
  public void setInitDateYearToLst(String lInitDateYearToLst){
    if (SIUtil.isNull(lInitDateYearToLst)) lInitDateYearToLst="";
    this.initDateYearToLst=SIUtil.changeTo(lInitDateYearToLst,this.encode);
  }
  
  //setter of 投稿日検索期間TOの月
  public void setInitDateMonthToLst(String lInitDateMonthToLst){
    if (SIUtil.isNull(lInitDateMonthToLst)) lInitDateMonthToLst="";
    this.initDateMonthToLst=SIUtil.changeTo(lInitDateMonthToLst,this.encode);
  }
  
  //setter of 投稿日検索期間TOの日
  public void setInitDateDayToLst(String lInitDateDayToLst){
    if (SIUtil.isNull(lInitDateDayToLst)) lInitDateDayToLst="";
    this.initDateDayToLst=SIUtil.changeTo(lInitDateDayToLst,this.encode);
  }
  
  //setter of 星の数
  public void setAmountofStarsTxt(String lAmountofStarsTxt){
    if (SIUtil.isNull(lAmountofStarsTxt)) lAmountofStarsTxt="";
    this.amountofStarsTxt=SIUtil.changeTo(lAmountofStarsTxt.trim(),this.encode);
  }
  
  /*
  //setter of 性別
  public void setSexRdo(String lSexRdo){
    if (SIUtil.isNull(lSexRdo))lSexRdo="";
    this.sexRdo=lSexRdo;
  }
  
  //setter of 会員
  public void setMemberFlgRdo(String lMemberFlgRdo){
    if (lMemberFlgRdo==null)lMemberFlgRdo="";
    this.memberFlgRdo=SIUtil.changeToJIS(lMemberFlgRdo.trim());
  }
  
  //setter of 購入
  public void setBuyFlgRdo(String lBuyFlgRdo){
    if (lBuyFlgRdo==null)lBuyFlgRdo="";
    this.buyFlgRdo=SIUtil.changeToJIS(lBuyFlgRdo.trim());
  }
  
  //setter of 初レビュー
  public void setFirstFlgRdo(String lFirstFlgRdo){
    if (lFirstFlgRdo==null)lFirstFlgRdo="";
    this.firstFlgRdo=SIUtil.changeToJIS(lFirstFlgRdo.trim());
  }
  7.2.0 ST0551 削除*/
  
  //setter of 表示・非表示（検索）
  public void setDispFlgRdo(String lDispFlgRdo){
    if (lDispFlgRdo==null)lDispFlgRdo="";
    this.dispFlgRdo=SIUtil.changeToJIS(lDispFlgRdo.trim());
  }
  
  //setter of 表示・非表示（一覧）
  public void setListDispFlgRdo(String lListDispFlgRdo){
    if (lListDispFlgRdo==null)lListDispFlgRdo="";
    this.listDispFlgRdo=SIUtil.changeToJIS(lListDispFlgRdo.trim());
  }
  
  //setter of レビューポイント
  public void setReviewPointTxt(String lReviewPointTxt){
    if (lReviewPointTxt==null)lReviewPointTxt="";
    this.reviewPointTxt=SIUtil.changeToJIS(lReviewPointTxt.trim());
  }
  
  //setter of 検索並び順項目1
  public void setFirstOrderSel(String lFirstOrderSel){
    if (SIUtil.isNull(lFirstOrderSel)) lFirstOrderSel="InitDateTime";
    this.firstOrderSel=lFirstOrderSel;
  }
  
  /*
  //setter of 検索並び順項目2
  public void setSecondOrderSel(String lSecondOrderSel){
    if (SIUtil.isNull(lSecondOrderSel)) lSecondOrderSel="CmdtyName";
    this.secondOrderSel=lSecondOrderSel;
  }
  
  //setter of 検索並び順項目3
  public void setThirdOrderSel(String lThirdOrderSel){
    if (SIUtil.isNull(lThirdOrderSel)) lThirdOrderSel="AmountofStars";
    this.thirdOrderSel=lThirdOrderSel;
  }
  7.2.0 ST0551 削除*/
  
  //setter of 並び順１
  public void setFirstOrderTxt(String lFirstOrderTxt){
    if (SIUtil.isNull(lFirstOrderTxt))lFirstOrderTxt="0";
    this.firstOrderTxt=lFirstOrderTxt;
  }
  
  /*
  //setter of 並び順2
  public void setSecondOrderTxt(String lSecondOrderTxt){
    if (SIUtil.isNull(lSecondOrderTxt))lSecondOrderTxt="0";
    this.secondOrderTxt=lSecondOrderTxt;
  }
  
  //setter of 並び順3
  public void setThirdOrderTxt(String lThirdOrderTxt){
    if (SIUtil.isNull(lThirdOrderTxt))lThirdOrderTxt="0";
    this.thirdOrderTxt=lThirdOrderTxt;
  }
  7.2.0 ST0551 削除*/
  
  //setter of ページ番号
  public void setPageNumberTxt(String lPageNumberTxt){
    if (SIUtil.isNull(lPageNumberTxt))lPageNumberTxt="1";
    this.pageNumberTxt=lPageNumberTxt;
  }
  
  //setter of ページごとに表示するレコード数
  public void setPageNumberSel(String lPageNumberSel){
    if (SIUtil.isNull(lPageNumberSel))lPageNumberSel="1";
    this.pageNumberSel=lPageNumberSel;
  }
  
  //setter of 条件文
  public void setConditionSQL(String lConditionSQL){
    if (lConditionSQL==null)lConditionSQL="";
    this.conditionSQL=lConditionSQL;
  }
  
  //setter of 並び順文
  public void setOrderBySQL(String lOrderBySQL){
    if (lOrderBySQL==null)lOrderBySQL="";
    this.orderBySQL=lOrderBySQL;
  }
  
  //getter of レビューコード
  public String getReviewCodeTxt(){
    return this.reviewCodeTxt;
  }
  
  //getter of ショップコード
  public String getShopCodeTxt(){
    return this.shopCodeTxt;
  }
  
  //7.2.0 ST0551 修正 ここから
  //getter of 商品コード
  public String getCmdtyCodeFromTxt(){
    return this.cmdtyCodeFromTxt;
  }
  //7.2.0 ST0551 修正 ここまで
  
  //7.2.0 ST0551 追加 ここから
  //getter of 商品コード
  public String getCmdtyCodeToTxt(){
    return this.cmdtyCodeToTxt;
  }
  //7.2.0 ST0551 追加 ここまで
  
  //getter of 商品名
  public String getCmdtyNameTxt(){
    return this.cmdtyNameTxt;
  }
  
  //getter of タイトル
  /*public String getTitleTxt(){
    return this.titleTxt;
  }
  7.2.0 ST0551 削除*/
  
  //getter of 投稿者
  public String getNickNameTxt(){
    return this.nickNameTxt;
  }
  
  //getter of メール
  public String getEmailTxt(){
    return this.emailTxt;
  }
  
  //getter of 内容
  public String getContentTxt(){
    return this.contentTxt;
  }
  
  //getter of 投稿日
  public String getInitDateTimeTxt(){
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    return df.format(this.initDateTimeTxt);
  }
  
  //getter of 投稿日検索期間期間From
  public String getInitDateTimeFromLst(){
    return SIDateTime.getDate(getInitDateYearFromLst(),getInitDateMonthFromLst(),getInitDateDayFromLst());
  }
  
  //get of 投稿日検索期間Fromの年
  public String getInitDateYearFromLst(){
    return this.initDateYearFromLst;
  }
  
  //get of 投稿日検索期間Fromの月
  public String getInitDateMonthFromLst(){
    return this.initDateMonthFromLst;
  }
  
  //get of 投稿日検索期間Fromの年
  public String getInitDateDayFromLst(){
    return this.initDateDayFromLst;
  }
  
  //getter of 投稿日検索期間To
  public String getInitDateTimeToLst(){
    return SIDateTime.getDate(getInitDateYearToLst(),getInitDateMonthToLst(),getInitDateDayToLst());
  }
  
  //getter of 投稿日検索期間Toの年
  public String getInitDateYearToLst(){
    return this.initDateYearToLst;
  }
  
  //getter of 投稿日検索期間Toの月
  public String getInitDateMonthToLst(){
    return this.initDateMonthToLst;
  }
  
  //getter of 投稿日検索期間Toの日
  public String getInitDateDayToLst(){
    return this.initDateDayToLst;
  }
  
  //getter of 星の数
  public String getAmountofStarsTxt(){
    return this.amountofStarsTxt;
  }
  
  /*
  //getter of 初レビューフラグ
  public String getFirstFlgRdo(){
    return this.firstFlgRdo;
  }
  
  //getter of 購入フラグ
  public String getBuyFlgRdo(){
    return this.buyFlgRdo;
  }
  
  //getter of 会員フラグ
  public String getMemberFlgRdo(){
    return this.memberFlgRdo;
  }
  
  //getter of 性別フラグ
  public String getSexRdo(){
    return this.sexRdo;
  }
  7.2.0 ST0551 削除*/
  
  //getter of 表示・非表示（検索）
  public String getDispFlgRdo(){
    return this.dispFlgRdo;
  }
  
  //getter of 表示・非表示（一覧）
  public String getListDispFlgRdo(){
    return this.listDispFlgRdo;
  }
  
  //getter of レビューポイント
  public String getReviewPointTxt(){
    return this.reviewPointTxt;
  }
  
  //getter of 検索並び順項目1
  public String getFirstOrderSel(){
    return this.firstOrderSel;
  }
  
  /*
  //getter of 検索並び順項目2
  public String getSecondOrderSel(){
    return this.secondOrderSel;
  }
  
  //getter of 検索並び順項目3
  public String getThirdOrderSel(){
    return this.thirdOrderSel;
  }
  7.2.0 ST0551 削除*/
  
  //getter of 並び順１
  public String getFirstOrderTxt(){
    return this.firstOrderTxt;
  }
  
  /*
  //getter of 並び順2
  public String getSecondOrderTxt(){
    return this.secondOrderTxt;
  }
  
  //getter of 並び順3
  public String getThirdOrderTxt(){
    return this.thirdOrderTxt;
  }
  7.2.0 ST0551 削除*/
  
  //getter of ページ番号
  public String getPageNumberTxt(){
    log.debug("getPageNumberTxt:pageNumberTxt="+pageNumberTxt);
  return this.pageNumberTxt;
  }
  
  //getter of ページごとに表示するレコード数
  public String getPageNumberSel(){
    return this.pageNumberSel;
  }
  
  //getter of 条件文
  public String getCondtionSQL(){
    return this.conditionSQL;
  }
  
  //getter of 並び順文
  public String getOrderBySQL(){
    return this.orderBySQL;
  }
  
  /**
   * <b>init</b>
   * 入力したデータを基づいて、このbeansを設定します。
   * @param request
   * @param lUrlParam
   * @return true:不正なデータがある false:ない
   * @throws なし
   */
  //7.1.1 ST0236 修正 ここから
  public void init(HttpServletRequest lRequest,SIURLParameter lUrlParam){
    super.init(lRequest,lUrlParam);//7.1.1 ST0025 修正
    SILogin lLogin=SIHTMLUtil.getLogin(lRequest);
    
    this.setEncode(SIConfig.SIENCODE_SHIFT_JIS);
    this.setFirstOrderTxt((String)lUrlParam.getParam("firstOrderTxt"));
    this.setFirstOrderSel((String)lUrlParam.getParam("firstOrderSel"));
    /*this.setSecondOrderTxt((String)lUrlParam.getParam("secondOrderTxt"));
    this.setSecondOrderSel((String)lUrlParam.getParam("secondOrderSel"));
    this.setThirdOrderTxt((String)lUrlParam.getParam("thirdOrderTxt"));
    this.setThirdOrderSel((String)lUrlParam.getParam("thirdOrderSel"));7.2.0 ST0551 削除*/
    this.setReviewCodeTxt((String)lUrlParam.getParam("reviewCodeTxt"));
    if (lLogin.isShop()){
      this.setShopCodeTxt(lLogin.getMallShopCode());
    }else{
      this.setShopCodeTxt((String)lUrlParam.getParam("shopCodeTxt"));
    }
    this.setNickNameTxt((String)lUrlParam.getParam("nickNameTxt"));
    this.setEmailTxt((String)lUrlParam.getParam("emailTxt"));
    this.setCmdtyCodeFromTxt((String)lUrlParam.getParam("cmdtyCodeFromTxt"));//7.2.0 ST0551 修正
    this.setCmdtyCodeToTxt((String)lUrlParam.getParam("cmdtyCodeToTxt"));//7.2.0 ST0551 追加
    this.setCmdtyNameTxt((String)lUrlParam.getParam("cmdtyNameTxt"));
    //this.setTitleTxt((String)lUrlParam.getParam("titleTxt"));//7.2.0 ST0551 削除
    this.setContentTxt((String)lUrlParam.getParam("contentTxt"));
    this.setInitDateTimeTxt((String)lUrlParam.getParam("initDateTimeTxt"));
    this.setInitDateYearFromLst((String)lUrlParam.getParam("initDateYearFromLst"));
    this.setInitDateMonthFromLst((String)lUrlParam.getParam("initDateMonthFromLst"));
    this.setInitDateDayFromLst((String)lUrlParam.getParam("initDateDayFromLst"));
    this.setInitDateYearToLst((String)lUrlParam.getParam("initDateYearToLst"));
    this.setInitDateMonthToLst((String)lUrlParam.getParam("initDateMonthToLst"));
    this.setInitDateDayToLst((String)lUrlParam.getParam("initDateDayToLst"));
    this.setAmountofStarsTxt((String)lUrlParam.getParam("amountofStarsTxt"));
    /*
    this.setSexRdo((String)lUrlParam.getParam("sexRdo"));
    this.setBuyFlgRdo((String)lUrlParam.getParam("buyFlgRdo"));
    this.setFirstFlgRdo((String)lUrlParam.getParam("firstFlgRdo"));
    this.setMemberFlgRdo((String)lUrlParam.getParam("memberFlgRdo"));
    7.2.0 ST0551 削除*/
    this.setDispFlgRdo((String)lUrlParam.getParam("dispFlgRdo"));
    this.setListDispFlgRdo((String)lUrlParam.getParam("listDispFlgRdo"));
    this.setReviewPointTxt((String)lUrlParam.getParam("reviewPointTxt"));
    this.setPageNumberSel((String)lUrlParam.getParam("pageNumberSel"));
    this.setPageNumberTxt((String)lUrlParam.getParam("pageNumberTxt"));
  }
  //7.1.1 ST0236 修正 ここまで
  
  /**
   * <b>getCollection</b>
   * 条件に合ったレコードを検索して、結果のコネクションを作成して、戻します。
   * @param lConnection データベースへの接続コネクション
   * @return レコードのセット
   * @throws なし
   */
  public Collection getCollection(Connection lConnection, SILogin lLogin) throws SIDBAccessException{
    Statement lStatement=null;
    ResultSet lResultSet=null;
    SIReview lReview=new SIReview();
    StringBuffer lSqlStatement=new StringBuffer();
    Collection lReviews=new ArrayList();
    //並び順文の作成
    this.makeOrderBySQL();
    
    //基本のSQL
    lSqlStatement.append("SELECT * FROM ReviewTbl ");
    if (lLogin.isShop()){
      lSqlStatement.append("WHERE ShopCode=").append(SIDBUtil.SQL2Str(lLogin.getMallShopCode()," "));
    }else{
      lSqlStatement.append("WHERE 1=1 ");
    }
    //検索の条件
    lSqlStatement.append(this.conditionSQL);
    
    //出力順
    lSqlStatement.append(this.getOrderBySQL());
    log.debug("sqlStatement="+lSqlStatement.toString());
    //実行
    try{
      lStatement=lConnection.createStatement();
      lResultSet=lStatement.executeQuery(lSqlStatement.toString());
      
      //レビューレコードのセットの作成
      while (lResultSet.next()){
        lReview=new SIReview();
        lReview.setEncode(SIConfig.SIENCODE_NONE);
        lReview.setShopCode(lResultSet.getString("shopCode"));
        lReview.setAmountofStars(lResultSet.getString("amountofStars"));
        lReview.setInitDateTime(SIDBUtil.getDateTime(lResultSet.getTimestamp("initDateTime")));
        lReview.setReviewCode(lResultSet.getString("reviewCode"));
        lReview.setNickName(lResultSet.getString("nickName"));
        lReview.setEmail(lResultSet.getString("email"));
        lReview.setCmdtyCode(lResultSet.getString("cmdtyCode"));
        lReview.setCmdtyName(lResultSet.getString("cmdtyName"));
        lReview.setTitle(lResultSet.getString("title"));
        lReview.setContent(lResultSet.getString("content"));
        lReview.setSex(lResultSet.getString("sex"));
        lReview.setFirstFlg(lResultSet.getString("firstFlg"));
        lReview.setBuyFlg(lResultSet.getString("buyFlg"));
        lReview.setMemberFlg(lResultSet.getString("memberFlg"));
        lReview.setDispFlg(lResultSet.getString("dispFlg"));
        lReview.setListDispFlg(lResultSet.getString("dispFlg"));
        lReviews.add(lReview);
      }
    }  catch(Exception ex){
      throw new SIDBAccessException(ex);
    }finally{
      SIDBUtil.close(lResultSet,lStatement);
    }
    return lReviews;
  }
  
  /**
   * <b>validate</b>
   * 入力したデータをチェックして、同時にSQLの条件文を作成します。
   * @param lRequest クライアントからのリクエスト
   * @return なし
   * @throws なし
   */
  public void validate(HttpServletRequest lRequest){
    SICustomErrors errors=new SICustomErrors();
    SILogin lLogin=SIHTMLUtil.getLogin(lRequest);
    SITableConditionManager lConditionMan=new SITableConditionManager();
    
    if (lLogin.isMall()&&SIUtil.isNotNull(this.shopCodeTxt) && SICheckValid.checkValid(errors,"ショップコード",this.shopCodeTxt,SICheckDataConf.SICHECK_DATA_ALPHA_DIGIT_TYPE)){
      lConditionMan.add(new SITableCondition("","ShopCode",this.shopCodeTxt,SIConfig.SICONDITION_TYPE_EQUAL,SIConfig.SICONDITION_TYPE_AND));
    }
    
    if (SIUtil.isNotNull(getInitDateTimeFromLst()) && (SICheckValid.checkValid(errors,"投稿日From",getInitDateTimeFromLst(),SICheckDataConf.SICHECK_DATA_DATE_TYPE))){//7.1.1 ST0162 修正
      if (SIDBMultiConf.SIDB_CURRENT_INX ==SIDBMultiConf.SIDB_POSTGRESQL_INX){
        lConditionMan.add(new SITableCondition("","initDateTime",this.getInitDateTimeFromLst(),SIConfig.SICONDITION_TYPE_GREATER_EQUAL,SIConfig.SICONDITION_TYPE_AND));
      }else{
        lConditionMan.add(new SITableCondition("","initDateTime",new SIDateTimeType(this.getInitDateTimeFromLst()),SIConfig.SICONDITION_TYPE_GREATER_EQUAL,SIConfig.SICONDITION_TYPE_AND));
      }
    }
    
    if (SIUtil.isNotNull(getInitDateTimeToLst()) && (SICheckValid.checkValid(errors,"投稿日To",getInitDateTimeToLst(),SICheckDataConf.SICHECK_DATA_DATE_TYPE))){//7.1.1 ST0162 修正
      if (SIDBMultiConf.SIDB_CURRENT_INX ==SIDBMultiConf.SIDB_POSTGRESQL_INX){
        lConditionMan.add(new SITableCondition("","initDateTime",this.getInitDateTimeToLst()+" 23:59:59",SIConfig.SICONDITION_TYPE_LESS_EQUAL,SIConfig.SICONDITION_TYPE_AND));
      }else{
        lConditionMan.add(new SITableCondition("","initDateTime",new SIDateTimeType(this.getInitDateTimeToLst()+" 23:59:59"),SIConfig.SICONDITION_TYPE_LESS_EQUAL,SIConfig.SICONDITION_TYPE_AND));
      }
    }
    
    if (SIUtil.isNotNull(this.nickNameTxt) && SICheckValid.checkValid(errors,"投稿者",this.nickNameTxt,SICheckDataConf.SICHECK_DATA_ZENKAKU_TYPE)) {
      lConditionMan.add(new SITableCondition("","nickName",this.nickNameTxt,SIConfig.SICONDITION_TYPE_LIKE,SIConfig.SICONDITION_TYPE_AND));
    }
    
    if (SIUtil.isNotNull(this.emailTxt) && SICheckValid.checkValid(errors,"メールアドレス",this.emailTxt,SICheckDataConf.SICHECK_DATA_ASCII_TYPE)) {
      lConditionMan.add(new SITableCondition("","email",this.emailTxt,SIConfig.SICONDITION_TYPE_LIKE,SIConfig.SICONDITION_TYPE_AND));
    }
    
    //7.2.0 ST0551 修正 ここから
    //商品コード
    if ((SIUtil.isNotNull(this.cmdtyCodeFromTxt)&&SICheckValid.checkValid(errors,"商品コードFrom",this.cmdtyCodeFromTxt,SICheckDataConf.SICHECK_DATA_ALPHA_DIGIT_TYPE))){
      lConditionMan.add(new SITableCondition("","cmdtyCode",this.cmdtyCodeFromTxt,SIConfig.SICONDITION_TYPE_GREATER_EQUAL,SIConfig.SICONDITION_TYPE_AND));
    }
    //7.2.0 ST0551 修正 ここまで
    
    //7.2.0 ST0551 追加 ここから
    if ((SIUtil.isNotNull(this.cmdtyCodeToTxt)&&SICheckValid.checkValid(errors,"商品コードTo",this.cmdtyCodeToTxt,SICheckDataConf.SICHECK_DATA_ALPHA_DIGIT_TYPE))){
     lConditionMan.add(new SITableCondition("","cmdtyCode",this.cmdtyCodeToTxt,SIConfig.SICONDITION_TYPE_LESS_EQUAL,SIConfig.SICONDITION_TYPE_AND));
    }
    //7.2.0 ST0551 追加 ここまで
    
    if (SIUtil.isNotNull(this.cmdtyNameTxt) && SICheckValid.checkValid(errors,"商品名",this.cmdtyNameTxt,SICheckDataConf.SICHECK_DATA_ZENKAKU_TYPE)) {
      lConditionMan.add(new SITableCondition("","cmdtyName",this.cmdtyNameTxt,SIConfig.SICONDITION_TYPE_LIKE,SIConfig.SICONDITION_TYPE_AND));
    }
    
    /*if (SIUtil.isNotNull(this.titleTxt) && SICheckValid.checkValid(errors,"タイトル",this.titleTxt,SICheckDataConf.SICHECK_DATA_ZENKAKU_TYPE)) {
      lConditionMan.add(new SITableCondition("","title",this.titleTxt,SIConfig.SICONDITION_TYPE_LIKE,SIConfig.SICONDITION_TYPE_AND));
    }7.2.0 ST0551 削除*/
    
    if (SIUtil.isNotNull(this.amountofStarsTxt) && SICheckValid.checkValid(errors,"星の数",this.amountofStarsTxt,SICheckDataConf.SICHECK_DATA_DIGIT_TYPE)) {
      lConditionMan.add(new SITableCondition("","amountofStars",this.amountofStarsTxt,SIConfig.SICONDITION_TYPE_LIKE,SIConfig.SICONDITION_TYPE_AND));
    }
    
    if (SIUtil.isNotNull(this.contentTxt) && SICheckValid.checkValid(errors,"タイトル・内容",this.contentTxt,SICheckDataConf.SICHECK_DATA_ZENKAKU_TYPE)) {//7.2.0 ST0551 修正
      lConditionMan.add(new SITableCondition("","title || content",this.contentTxt,SIConfig.SICONDITION_TYPE_LIKE,SIConfig.SICONDITION_TYPE_AND));//7.2.0 ST0551 修正
    }
    
    /*
    if (SIUtil.isNotNull(this.sexRdo)){
      lConditionMan.add(new SITableCondition("","sex",this.sexRdo,SIConfig.SICONDITION_TYPE_EQUAL,SIConfig.SICONDITION_TYPE_AND));
    }
    
    if (SIUtil.isNotNull(this.memberFlgRdo)){
       lConditionMan.add(new SITableCondition("","memberFlg",this.memberFlgRdo,SIConfig.SICONDITION_TYPE_EQUAL,SIConfig.SICONDITION_TYPE_AND));
    }
    
    if (SIUtil.isNotNull(this.buyFlgRdo)){
         lConditionMan.add(new SITableCondition("","buyFlg",this.buyFlgRdo,SIConfig.SICONDITION_TYPE_EQUAL,SIConfig.SICONDITION_TYPE_AND));
    }
    
    if (SIUtil.isNotNull(this.firstFlgRdo)){
         lConditionMan.add(new SITableCondition("","firstFlg",this.firstFlgRdo,SIConfig.SICONDITION_TYPE_EQUAL,SIConfig.SICONDITION_TYPE_AND));
    }7.2.0 ST0551 削除*/
    
    if (SIUtil.isNotNull(this.dispFlgRdo)){
      lConditionMan.add(new SITableCondition("","dispFlg",this.dispFlgRdo,SIConfig.SICONDITION_TYPE_EQUAL,SIConfig.SICONDITION_TYPE_AND));
    }
    
    //対象期間大小
    try{
      if(!SICheckUtil.dateEqual(this.getInitDateTimeFromLst(),this.getInitDateTimeToLst())){
        SICheckValid.checkValid(errors,"投稿日From","投稿日To",this.getInitDateTimeFromLst(),this.getInitDateTimeToLst(),SICheckDataConf.SICHECK_DATA_DATE_LESS_TYPE);//7.1.1 ST0162 修正
      }
    }catch(Exception e){}
    
    if (!errors.isEmpty()){
      lRequest.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY,errors);
      lConditionMan.add(new SITableCondition(" AND 1=2 "));
    } else {
      lRequest.removeAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY);
    }
    //条件文の設定
    this.setConditionSQL(lConditionMan.getCondtionSQL());
  }

  /**
   * <b>makeOrderBySQL</b>
   * 並び順文の作成
   * @param なし
   * @return なし
   * @throws なし
   */
  public void makeOrderBySQL(){
    StringBuffer sb=new StringBuffer();
    int def=0;
    //第一の並び順
    try{def=Integer.parseInt(this.firstOrderTxt);}catch(Exception e){def=0;}
    if (SIUtil.isNotNull(this.firstOrderSel))sb.append(","+this.firstOrderSel+" "+SIConfig.SIORDER_NAME[def]);
    
    /*
    //第二の並び順
    try{def=Integer.parseInt(this.secondOrderTxt);}catch(Exception e){def=0;}
    if (SIUtil.isNotNull(this.secondOrderSel))sb.append(","+this.secondOrderSel+" "+SIConfig.SIORDER_NAME[def]);
    
    //第三の並び順
    try{def=Integer.parseInt(this.thirdOrderTxt);}catch(Exception e){def=0;}
    if (SIUtil.isNotNull(this.thirdOrderSel))sb.append(","+this.thirdOrderSel+" "+SIConfig.SIORDER_NAME[def]);
    7.2.0 ST0551 削除*/
      
    if (sb.length()>0) this.setOrderBySQL("ORDER BY "+sb.toString().substring(1));
    else this.setOrderBySQL("");
    log.debug("makeOrderBySQL:orderBySQL="+sb.toString());
  }
}