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

import java.io.IOException;
import java.sql.SQLException;

import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import jp.co.sint.basic.SICmdty;
import jp.co.sint.basic.SICmdtyStndrd;
import jp.co.sint.basic.SIUserInfo;
import jp.co.sint.beans.front.UICampaign;
import jp.co.sint.beans.front.UICmdtyInfo;
import jp.co.sint.beans.mobile.au.UIACmdtyList;
import jp.co.sint.beans.mobile.au.UIAShopInfo;
import jp.co.sint.config.SIConfig;
//import jp.co.sint.database.SIDBAccessException;
//import jp.co.sint.database.SIDBUtil;
import jp.co.sint.database.SIDBUtil;
import jp.co.sint.database.SIDatabaseConnection;
import jp.co.sint.servlet.SIServlet;
import jp.co.sint.tools.SICustomError;
import jp.co.sint.tools.SICustomErrors;
import jp.co.sint.tools.SIHTMLUtil;
import jp.co.sint.tools.SIURLMap;
import jp.co.sint.tools.SIUtil;

import org.apache.log4j.Category;
import jp.co.sint.tools.SIURLParameter;// 7.1.1 ST0236 追加

/**
 * @version $Id: SIACmdtySrv.java,v 1.0 2003/12/22 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/12/22 15:27:52 Original
 */
public class SIACmdtySrv extends SIServlet {
  // ログ用のインスタンスの生成
  private static Category log = Category.getInstance(SIConfig.SILOG4J_WEBSHOP_CATEGORY_NAME);
  
  /**
   * <b>doUpdate</b> HTTP リクエストの処理
   * 
   * @param request リクエスト
   * @param response
   * @return なし
   * @throws ServletException
   * @throws IOException
   */
  public void doUpdate(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    HttpSession session = request.getSession(true);// セッションの取得
    SIDatabaseConnection databaseConnection = new SIDatabaseConnection();// DBへのコネクションの作成
    SIURLParameter urlParam = new SIURLParameter(request);// 7.1.1 ST0236 追加
    
    try {
      String actionName = this.getActionName(urlParam);// 画面からのアクション //7.1.1 ST0236 修正
      String editMode = this.getEditMode(urlParam);// DBへの編集モード //7.1.1 ST0236 修正
      SIUserInfo lUserInfo = SIHTMLUtil.getUserInfo(request);
      
      if (this.getServletPath(request).equals("/mobile/a/cmdtylist")) {// 商品リスト
        UIACmdtyList cmdtyListID = new UIACmdtyList();
        if (SIConfig.SIACTION_LIST.equals(actionName) || SIConfig.SIACTION_SEARCH.equals(actionName)) {
          cmdtyListID.init(request, databaseConnection.getConnection(), urlParam);// 7.1.1 ST0236 修正
          int loginSelect = 0;
          /*loginSelectを0に固定する
          if (!cmdtyListID.loginCheck(databaseConnection.getConnection())) {
            loginSelect = cmdtyListID.loginPageCount(databaseConnection.getConnection());
            if (lUserInfo.isLogin(request) && loginSelect != 3) loginSelect = 0;
          }*/
          if (loginSelect == 1 || loginSelect == 2) {
            StringBuffer lUrl = new StringBuffer();
            if (loginSelect == 1) lUrl.append(SIURLMap.getUrl("webshop.servlet.front.au.login2"));
            else if (loginSelect == 2) lUrl.append(SIURLMap.getUrl("webshop.servlet.front.au.login3"));
            lUrl.append("?ctc=").append(SIHTMLUtil.URLEncode(cmdtyListID.getCtgryCodeTxt()));
            lUrl.append("&nid=").append(SIURLMap.getUrl("webshop.servlet.front.au.cmdty.list"));
            lUrl.append("/ctc=").append(SIHTMLUtil.URLEncode(cmdtyListID.getCtgryCodeTxt()));
            lUrl.append("/a=").append(actionName);
            redirectHttps(request, response, lUrl.toString());
          } else if(loginSelect == 3){
            StringBuffer lUrl = new StringBuffer();
            
            if (lUserInfo.isLogin(request) && "0".equals(lUserInfo.getHairCosmeFlg())) {
              forwardKey(request, response, "webshop.jsp.front.au.contract.haircosme.1");
            } else if (lUserInfo.isLogin(request) && "2".equals(lUserInfo.getHairCosmeFlg())) {
              forwardKey(request, response, "webshop.jsp.front.au.contract.haircosme.3");
            } else if (lUserInfo.isLogin(request) && "1".equals(lUserInfo.getHairCosmeFlg())) {
              // エクステンションカテゴリが選択された時は、ソート順を商品名順にする
              if (cmdtyListID.getCtgryCodeTxt().equalsIgnoreCase("category013") || cmdtyListID.getCtgryCodeTxt().substring(0, 1).equalsIgnoreCase("V"))
                cmdtyListID.setCmdtySortSel("4");
              session.setAttribute(SIConfig.SISESSION_A_CMDTY_LIST_NAME, cmdtyListID);
              forwardKey(request, response, "webshop.jsp.front.au.cmdty.list");
            } else {
              lUrl.append(SIURLMap.getUrl("webshop.servlet.front.au.login4"));
              lUrl.append("?ctc=").append(SIHTMLUtil.URLEncode(cmdtyListID.getCtgryCodeTxt()));
              lUrl.append("&nid=").append(SIURLMap.getUrl("webshop.servlet.front.au.cmdty.list"));
              lUrl.append("/ctc=").append(SIHTMLUtil.URLEncode(cmdtyListID.getCtgryCodeTxt()));
              lUrl.append("/a=").append(actionName);
              redirectHttps(request, response, lUrl.toString());
            }
          } else {
            // 7.2.1 ST2014 追加 ここから
            // おすすめが選択されたときは、ソート順をおすすめ順にする
            if (cmdtyListID.getCmdtyFlagTxt().equals(SIConfig.SICMDTY_FLAG_ADVICE)) {
              cmdtyListID.setCmdtySortSel("5");
            }
            // 材料小物カテゴリが選択された時は、ソート順を商品名順にする
            if (cmdtyListID.getCtgryCodeTxt().equalsIgnoreCase("category011") || cmdtyListID.getCtgryCodeTxt().substring(0, 1).equalsIgnoreCase("Z"))
              cmdtyListID.setCmdtySortSel("4");
            // エクステンションカテゴリが選択された時は、ソート順を商品名順にする
            if (cmdtyListID.getCtgryCodeTxt().equalsIgnoreCase("category013") || cmdtyListID.getCtgryCodeTxt().substring(0, 1).equalsIgnoreCase("V"))
              cmdtyListID.setCmdtySortSel("4");
            // エステ小物カテゴリが選択された時は、ソート順を商品名順にする
            if (cmdtyListID.getCtgryCodeTxt().equalsIgnoreCase("category015") || cmdtyListID.getCtgryCodeTxt().substring(0, 1).equalsIgnoreCase("T"))
              cmdtyListID.setCmdtySortSel("4");
            // エステ業務用化粧品カテゴリが選択された時は、ソート順を商品名順にする
            if (cmdtyListID.getCtgryCodeTxt().equalsIgnoreCase("category016") || cmdtyListID.getCtgryCodeTxt().substring(0, 1).equalsIgnoreCase("L"))
              cmdtyListID.setCmdtySortSel("4");
            cmdtyListID.makeOrderBySQL();
            // 7.2.1 ST2014 追加 ここまで
            session.setAttribute(SIConfig.SISESSION_A_CMDTY_LIST_NAME, cmdtyListID);
            forwardKey(request, response, "webshop.jsp.front.au.cmdty.list");
          }
        } else if (SIConfig.SIACTION_CTGRY.equals(actionName)) {
          cmdtyListID.init(request, databaseConnection.getConnection(), urlParam);
          int loginSelect = 0;
          if (!cmdtyListID.loginCheck(databaseConnection.getConnection())) {
            loginSelect = cmdtyListID.loginPageCount(databaseConnection.getConnection());
            if (lUserInfo.isLogin(request) && loginSelect != 3) loginSelect = 0;
          }
          if (loginSelect == 1 || loginSelect == 2) {
            StringBuffer lUrl = new StringBuffer();
            if (loginSelect == 1) lUrl.append(SIURLMap.getUrl("webshop.servlet.front.au.login2"));
            else if (loginSelect == 2) lUrl.append(SIURLMap.getUrl("webshop.servlet.front.au.login3"));
            lUrl.append("?ctc=").append(SIHTMLUtil.URLEncode(cmdtyListID.getCtgryCodeTxt()));
            lUrl.append("&nid=").append(SIURLMap.getUrl("webshop.servlet.front.au.cmdty.list"));
            lUrl.append("/ctc=").append(SIHTMLUtil.URLEncode(cmdtyListID.getCtgryCodeTxt()));
            lUrl.append("/a=").append(actionName);
            redirectHttps(request, response, lUrl.toString());
          } else if(loginSelect == 3){
            StringBuffer lUrl = new StringBuffer();
            
            if (lUserInfo.isLogin(request) && "0".equals(lUserInfo.getHairCosmeFlg())) {
              forwardKey(request, response, "webshop.jsp.front.au.contract.haircosme.1");
            } else if (lUserInfo.isLogin(request) && "2".equals(lUserInfo.getHairCosmeFlg())) {
              forwardKey(request, response, "webshop.jsp.front.au.contract.haircosme.3");
            } else if (lUserInfo.isLogin(request) && "1".equals(lUserInfo.getHairCosmeFlg())) {
              cmdtyListID.makeOrderBySQL();
              session.setAttribute(SIConfig.SISESSION_A_CMDTY_LIST_NAME, cmdtyListID);
              forwardKey(request, response, "webshop.jsp.front.au.ctgry.list");
            } else {
              lUrl.append(SIURLMap.getUrl("webshop.servlet.front.au.login4"));
              lUrl.append("?ctc=").append(SIHTMLUtil.URLEncode(cmdtyListID.getCtgryCodeTxt()));
              lUrl.append("&nid=").append(SIURLMap.getUrl("webshop.servlet.front.au.cmdty.list"));
              lUrl.append("/ctc=").append(SIHTMLUtil.URLEncode(cmdtyListID.getCtgryCodeTxt()));
              lUrl.append("/a=").append(actionName);
              redirectHttps(request, response, lUrl.toString());
            }
          } else {
            cmdtyListID.makeOrderBySQL();
            session.setAttribute(SIConfig.SISESSION_A_CMDTY_LIST_NAME, cmdtyListID);
            forwardKey(request, response, "webshop.jsp.front.au.ctgry.list");
          }
        } else if (SIConfig.SIACTION_CART.equals(actionName)) {
          cmdtyListID.initCart(urlParam);// 7.1.1 ST0236 修正
          cmdtyListID.addCart(request, databaseConnection.getConnection());
          forwardKey(request, response, "webshop.jsp.front.au.cart");
        } else if (SIUtil.isNull(actionName) || SIConfig.SIACTION_RETURN.equals(actionName)) {
          forwardKey(request, response, "webshop.jsp.front.au.cmdty.list");
        }
      } else if (this.getServletPath(request).equals("/mobile/a/closedsalelist")) {// 商品リスト
        UICampaign cmdtyListID = new UICampaign();
        if (SIConfig.SIACTION_CART.equals(actionName)) {
          cmdtyListID.initCart(urlParam);
          cmdtyListID.addCart(request, databaseConnection.getConnection());
          forwardKey(request, response, "webshop.jsp.front.au.cart");
        }else if (SIConfig.SIACTION_BACK.equals(actionName)){
          cmdtyListID = (UICampaign)session.getAttribute(SIConfig.SISESSION_A_CMDTY_LIST_NAME);
          cmdtyListID.setPageNumberTxt((String)urlParam.getParam("pageNumberTxt"));
          session.setAttribute(SIConfig.SISESSION_A_CMDTY_LIST_NAME, cmdtyListID);
          forwardKey(request, response, "webshop.jsp.front.au.closedsale.list");
        }else {
          cmdtyListID.init(request, urlParam);
          session.setAttribute(SIConfig.SISESSION_A_CMDTY_LIST_NAME, cmdtyListID);
          forwardKey(request, response, "webshop.jsp.front.au.closedsale.list");
        }
      }
      if (this.getServletPath(request).equals("/mobile/a/cmdtydetail")) {// 商品詳細
        UICmdtyInfo cmdtyInfo = new UICmdtyInfo();
        if (SIUtil.isNull(actionName)) {
          /* ログイン必須
          String cmdtyCodeTxt = (String) urlParam.getParam("cmc");
          String individualCodeTxt = (String) urlParam.getParam("inc");
          String ctgryCodeTxt = (String) urlParam.getParam("ctc");
          String pageNumberTxt = (String) urlParam.getParam("pageNumberTxt");
          
          StringBuffer loginStr = new StringBuffer();
          loginStr.append("SELECT cmdtycode FROM cmdtyctgrymtbl WHERE ctgrycode IN (");
          loginStr.append("SELECT ctgrycode FROM ctgryvw WHERE ");
          for (int i=0;i<SIConfig.LOGINCTGRY.length;i++){
            if (i>0) loginStr.append(" OR ");
            loginStr.append(" (branch LIKE '%~").append(SIDBUtil.SQL2Like(SIConfig.LOGINCTGRY[i])).append("%'");
            loginStr.append(" OR ctgrycode = ").append(SIDBUtil.SQL2Str(SIConfig.LOGINCTGRY[i], ")"));
          }
          loginStr.append(") ");
          loginStr.append("AND cmdtycode = ").append(SIDBUtil.SQL2Str(cmdtyCodeTxt));
          
          if (lUserInfo.isNotLogin() && SIDBUtil.hasData(databaseConnection.getConnection(), loginStr.toString())) {
            String lUrl = "";
            String lCtc = "ctc=" + SIHTMLUtil.URLEncode(ctgryCodeTxt);
            lUrl = SIURLMap.getUrl("webshop.servlet.front.au.login") + "?" + lCtc + "&nid=" + SIURLMap.getUrl("webshop.servlet.front.au.cmdty.detail") + "/" + lCtc + "/shc=0/cmc="
                + cmdtyCodeTxt + "/inc=" + individualCodeTxt + "/pageNumberTxt=" + pageNumberTxt;
            redirectHttps(request, response, lUrl);
          } else {
          */
            cmdtyInfo = new UICmdtyInfo();
            cmdtyInfo.init(request, urlParam);// 7.1.1 ST0236 修正
            cmdtyInfo.setReferImageInx("1");
            session.setAttribute(SIConfig.SISESSION_A_CMDTY_DETAIL_NAME, cmdtyInfo);
            // EDBTG003-00 nagayoshi mod start
//            forwardKey(request, response, "webshop.jsp.front.au.cmdty.detail");
            if (cmdtyInfo.getCmdtyCompositionFlg().equals(SIConfig.CMDTY_COMPOSITION_NORMAL)) {
              forwardKey(request, response, "webshop.jsp.front.au.cmdty.detail");
            } else {
              forwardKey(request, response, "webshop.jsp.front.au.cmdty.set.detail");
            }
            // EDBTG003-00 nagayoshi mod end
          //}
        } else if (SIConfig.SIACTION_LOGIN.equalsIgnoreCase(actionName)) {
          String cmdtyCodeTxt = (String) urlParam.getParam("cmc");
          String individualCodeTxt = (String) urlParam.getParam("inc");
          String ctgryCodeTxt = (String) urlParam.getParam("ctc");
          String pageNumberTxt = (String) urlParam.getParam("pageNumberTxt");
          // EDBTG003-00 nagayoshi mod start
          String cmptTxt = (String) urlParam.getParam("cmpt");
          // EDBTG003-00 nagayoshi mod end
          
          StringBuffer lUrlStr = new StringBuffer();
          String lCtc = "ctc=" + SIHTMLUtil.URLEncode(ctgryCodeTxt);
          lUrlStr.append(SIURLMap.getUrl("webshop.servlet.front.au.login")).append("?").append(lCtc);
          lUrlStr.append("&nid=").append(SIURLMap.getUrl("webshop.servlet.front.au.cmdty.detail"));
          lUrlStr.append("/").append(lCtc).append("/shc=0/cmc=").append(cmdtyCodeTxt);
          // EDBTG003-00 nagayoshi mod start
//          lUrlStr.append("/inc=").append(individualCodeTxt).append("/pageNumberTxt=").append(pageNumberTxt);
          lUrlStr.append("/inc=").append(individualCodeTxt).append("/cmpt=").append(cmptTxt).append("/pageNumberTxt=").append(pageNumberTxt);
          // EDBTG003-00 nagayoshi mod end
          redirectHttps(request, response, lUrlStr.toString());
        } else if (SIConfig.SIACTION_CART.equals(actionName)) {
          cmdtyInfo.initCart(urlParam);// 7.1.1 ST0236 修正
          // EDBTG003-00 nagayoshi mod start
//          cmdtyInfo.addCart(request, databaseConnection.getConnection());
          if (!cmdtyInfo.getCmdtyCompositionFlg().equals(SIConfig.CMDTY_COMPOSITION_NORMAL)) {
            // カート投入商品が通常品以外の場合、画面パラメータよりセット品構成情報・オプション情報を取得
            cmdtyInfo.initSetCart(request, urlParam);
          }
          if (cmdtyInfo.getCmdtyCompositionFlg().equals(SIConfig.CMDTY_COMPOSITION_SELECTION_SET)) {
            if(cmdtyInfo.validateSelectionSet(request, urlParam)) {
              cmdtyInfo.addCart(request, databaseConnection.getConnection());
            }
          } else {
            cmdtyInfo.addCart(request, databaseConnection.getConnection());
          }
          // EDBTG003-00 nagayoshi mod end
          forwardKey(request, response, "webshop.jsp.front.au.cart");
        } else if (SIConfig.SIACTION_RETURN.equals(actionName)) {
          forwardKey(request, response, "webshop.jsp.front.au.cmdty.detail");
        } else if (SIConfig.SIACTION_DISPMODE.equals(actionName)) {
          cmdtyInfo = (UICmdtyInfo) session.getAttribute(SIConfig.SISESSION_A_CMDTY_DETAIL_NAME);
          if (cmdtyInfo == null) cmdtyInfo = new UICmdtyInfo();
          cmdtyInfo.setCmdtyCodeTxt((String) urlParam.getParam("cmc"));
          cmdtyInfo.setIndividualCodeTxt((String) urlParam.getParam("inc"));
          cmdtyInfo.setReferImageInx((String) urlParam.getParam("referImageInx"));
          session.setAttribute(SIConfig.SISESSION_A_CMDTY_DETAIL_NAME, cmdtyInfo);
          // EDBTG003-00 nagayoshi mod start
//          forwardKey(request, response, "webshop.jsp.front.au.cmdty.detail");
          if (cmdtyInfo.getCmdtyCompositionFlg().equals(SIConfig.CMDTY_COMPOSITION_NORMAL)) {
            forwardKey(request, response, "webshop.jsp.front.au.cmdty.detail");
          } else {
            forwardKey(request, response, "webshop.jsp.front.au.cmdty.set.detail");
          }
          // EDBTG003-00 nagayoshi mod end
        }
      } else if (this.getServletPath(request).equals("/mobile/a/closedsaledetail")) {// 商品詳細
        UICmdtyInfo cmdtyInfo = new UICmdtyInfo();
        if (SIUtil.isNull(actionName)) {
          cmdtyInfo = new UICmdtyInfo();
          cmdtyInfo.init(request, urlParam);
          cmdtyInfo.setReferImageInx("1");
          session.setAttribute(SIConfig.SISESSION_A_CMDTY_DETAIL_NAME, cmdtyInfo);
          forwardKey(request, response, "webshop.jsp.front.au.closedsale.detail");
        } else if (SIConfig.SIACTION_CART.equals(actionName)) {
          cmdtyInfo.initCart(urlParam);
          // EDBTG003-00 nagayoshi add start
          if (!cmdtyInfo.getCmdtyCompositionFlg().equals(SIConfig.CMDTY_COMPOSITION_NORMAL)) {
            // カート投入商品が通常品以外の場合、画面パラメータよりセット品構成情報・オプション情報を取得
            cmdtyInfo.initSetCart(request, urlParam);
          }
          if (cmdtyInfo.getCmdtyCompositionFlg().equals(SIConfig.CMDTY_COMPOSITION_SELECTION_SET)) {
            if(cmdtyInfo.validateSelectionSet(request, urlParam)) {
              cmdtyInfo.addCart(request, databaseConnection.getConnection());
            }
          } else {
            cmdtyInfo.addCart(request, databaseConnection.getConnection());
          }
          // EDBTG003-00 nagayoshi mod end
          forwardKey(request, response, "webshop.jsp.front.au.cart");
        } else if (SIConfig.SIACTION_RETURN.equals(actionName)) {
          forwardKey(request, response, "webshop.jsp.front.au.closedsale.detail");
        } else if (SIConfig.SIACTION_DISPMODE.equals(actionName)) {
          cmdtyInfo = (UICmdtyInfo) session.getAttribute(SIConfig.SISESSION_A_CMDTY_DETAIL_NAME);
          if (cmdtyInfo == null) cmdtyInfo = new UICmdtyInfo();
          cmdtyInfo.setCmdtyCodeTxt((String) urlParam.getParam("cmc"));
          cmdtyInfo.setIndividualCodeTxt((String) urlParam.getParam("inc"));
          cmdtyInfo.setReferImageInx((String) urlParam.getParam("referImageInx"));
          session.setAttribute(SIConfig.SISESSION_A_CMDTY_DETAIL_NAME, cmdtyInfo);
          forwardKey(request, response, "webshop.jsp.front.au.closedsale.detail");
        }
      }
      if (this.getServletPath(request).equals("/mobile/a/cmdtyimage")) {// 商品画像
        UICmdtyInfo cmdtyInfo = new UICmdtyInfo();
        String pressed = this.getParameter(urlParam, "actionBtn");// 7.1.1 ST0236 修正
        if (SIUtil.isNull(pressed)) pressed = "";
        if (SIUtil.isNull(actionName) && pressed.equals("カートに入れる")) {
          cmdtyInfo = new UICmdtyInfo();
          cmdtyInfo.initStndrd(request, databaseConnection.getConnection(), urlParam);// 7.1.1 ST0236 修正
          try {
            if (cmdtyInfo.getFound()) {// この商品あるいは規格があれば、
              // 商品の数量の取得
              SICmdty cmdty = new SICmdty(cmdtyInfo.getShopCodeTxt(), cmdtyInfo.getCmdtyCodeTxt());
              cmdty.reset(databaseConnection.getConnection());
              String lAmount = cmdty.getAmount();// 商品の数量
              
              if (cmdty.stndrdEnable()) {// 規格であれば
                SICmdtyStndrd cmdtyStndrd = new SICmdtyStndrd(cmdty.getShopCode(), cmdty.getCmdtyCode());
                cmdtyStndrd.reset(databaseConnection.getConnection(), true);// エレメントコネクションの取得
                cmdtyStndrd.check(databaseConnection.getConnection(), cmdtyInfo.getElementCodeSel1(), cmdtyInfo.getElementCodeSel2());
                lAmount = cmdtyStndrd.getAmount();// 規格の数量の取得
              }
              // 在庫管理なし、または、NOT (在庫なし販売不可かつ数量<=0)
              if (cmdty.getAmountFlg().equals("0") || !(cmdty.getNoStockFlg().equals("0") && Integer.parseInt(lAmount) <= 0)) {
                cmdtyInfo.addCart(request, databaseConnection.getConnection());
                session.setAttribute(SIConfig.SISESSION_A_CMDTY_DETAIL_NAME, cmdtyInfo);
                forwardKey(request, response, "webshop.jsp.front.au.cart");
              } else {// 販売不可
                SICustomErrors errors = new SICustomErrors();
                errors.addError(new SICustomError("manager.app.sell.disable"));
                request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
                forwardKey(request, response, "webshop.jsp.front.au.error.msg");
              }
            } else {// 該当商品または規格がありません。
              SICustomErrors errors = new SICustomErrors();
              errors.addError(new SICustomError("database.query.notexist", "商品または規格の商品"));
              request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
              forwardKey(request, response, "webshop.jsp.front.au.error.msg");
            }
          } catch (Exception e1) {// 例外処理
            e1.printStackTrace();
            SICustomErrors errors = new SICustomErrors();
            errors.addError(new SICustomError("database.execute.error"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
            forwardKey(request, response, "webshop.jsp.front.au.error.msg");
          }
        } else if (SIUtil.isNull(actionName) && pressed.equals("予約をする")) {// 商品詳細画面の規格商品の予約を選択してから
          cmdtyInfo = new UICmdtyInfo();
          cmdtyInfo.initStndrd(request, databaseConnection.getConnection(), urlParam);// 7.1.1 ST0236 修正
          if (cmdtyInfo.getFound()) {// 該当商品がある、または、該当規格商品がある
            StringBuffer lUrlBuf = new StringBuffer(SIURLMap.getUrl("webshop.servlet.front.au.reserve"));
            lUrlBuf.append("?a=").append(SIConfig.SIACTION_NEW);
            lUrlBuf.append("&rsrvShopCodeTxt=").append(cmdtyInfo.getCartShopCodeTxt());
            lUrlBuf.append("&rsrvCmdtyCodeTxt=").append(cmdtyInfo.getCartCmdtyCodeTxt());
            lUrlBuf.append("&rsrvIndividualCodeTxt=").append(cmdtyInfo.getCartIndividualCodeTxt());
            lUrlBuf.append("&rsrvStndrdCodeTxt1=").append(cmdtyInfo.getCartStndrdCodeTxt1());
            lUrlBuf.append("&rsrvElementCodeTxt1=").append(cmdtyInfo.getCartElementCodeTxt1());
            lUrlBuf.append("&rsrvStndrdCodeTxt2=").append(cmdtyInfo.getCartStndrdCodeTxt2());
            lUrlBuf.append("&rsrvElementCodeTxt2=").append(cmdtyInfo.getCartElementCodeTxt2());
            log.debug("lUrlBuf=" + lUrlBuf.toString());
            redirect(request, response, lUrlBuf.toString());
          } else {
            SICustomErrors errors = new SICustomErrors();
            errors.addError(new SICustomError("database.query.notexist", "商品または規格の商品"));
            request.setAttribute(SIConfig.SIERROR_ATTRIBUTE_MESSAGE_KEY, errors);
            forwardKey(request, response, "webshop.jsp.front.au.error.msg");
          }
        } else if (SIUtil.isNull(actionName)) {
          cmdtyInfo = new UICmdtyInfo();
          cmdtyInfo.init(request, urlParam);// 7.1.1 ST0236 修正
          session.setAttribute(SIConfig.SISESSION_A_CMDTY_IMAGE_NAME, cmdtyInfo);
          forwardKey(request, response, "webshop.jsp.front.au.cmdty.image");
        } else if (SIConfig.SIACTION_CART.equals(actionName)) {
          cmdtyInfo.initCart(urlParam);// 7.1.1 ST0236 修正
          cmdtyInfo.addCart(request, databaseConnection.getConnection());
          forwardKey(request, response, "webshop.jsp.front.au.cart");
        }
      }
      if (this.getServletPath(request).equals("/mobile/a/shopcompany")) {// ショップ管理会社
        UIAShopInfo shopInfo = new UIAShopInfo();
        // データの取得とデータのチェック
        shopInfo.init(request, urlParam);// 7.1.1 ST0236 修正
        session.setAttribute(SIConfig.SISESSION_A_SHOP_INFO_NAME, shopInfo);
        forwardKey(request, response, "webshop.jsp.front.au.shop.company");
      } else if (this.getServletPath(request).equals("/mobile/a/shopexrule")) {// 特定商取引法
        UIAShopInfo shopInfo = new UIAShopInfo();
        // データの取得とデータのチェック
        shopInfo.init(request, urlParam);// 7.1.1 ST0236 修正
        session.setAttribute(SIConfig.SISESSION_A_SHOP_INFO_NAME, shopInfo);
        forwardKey(request, response, "webshop.jsp.front.au.shop.exrule");
      } else if (this.getServletPath(request).equals("/mobile/a/shopprivacy")) {// プライバシー
        UIAShopInfo shopInfo = new UIAShopInfo();
        // データの取得とデータのチェック
        shopInfo.init(request, urlParam);// 7.1.1 ST0236 修正
        session.setAttribute(SIConfig.SISESSION_A_SHOP_INFO_NAME, shopInfo);
        forwardKey(request, response, "webshop.jsp.front.au.shop.privacy");
      }
    } catch (SQLException e) {
      e.printStackTrace();
      throw new ServletException();
    /*
    } catch (SIDBAccessException e) {
      e.printStackTrace();
      throw new ServletException();
    */
    } catch (NamingException e) {
      e.printStackTrace();
      throw new ServletException();
    } finally {
      databaseConnection.close();
    }
  }
}
