Пример #1
0
  /**
   * <br>
   * [機 能] 入力チェックを行う <br>
   * [解 説] <br>
   * [備 考]
   *
   * @param con コネクション
   * @param reqMdl リクエスト情報
   * @param sessionUsrSid セッションユーザSID
   * @return errors エラー
   * @throws SQLException SQL実行時例外
   */
  public ActionErrors validateCheck(Connection con, RequestModel reqMdl, int sessionUsrSid)
      throws SQLException {

    ActionErrors errors = new ActionErrors();
    ActionMessage msg = null;
    boolean errorFlg = false;
    GsMessage gsMsg = new GsMessage(reqMdl);
    // 利用目的 未入力チェック
    if (StringUtil.isNullZeroString(rsv210Mokuteki__)) {
      msg = new ActionMessage("error.input.required.text", gsMsg.getMessage("reserve.72"));
      StrutsUtil.addMessage(errors, msg, "rsv210Mokuteki");
      errorFlg = true;
      // 利用目的 桁数チェック
    } else if (rsv210Mokuteki__.length() > GSConstReserve.MAX_LENGTH_MOKUTEKI) {
      msg =
          new ActionMessage(
              "error.input.length.text",
              gsMsg.getMessage("reserve.72"),
              String.valueOf(GSConstReserve.MAX_LENGTH_MOKUTEKI));
      StrutsUtil.addMessage(errors, msg, "rsv210Mokuteki");
      errorFlg = true;
      // 利用目的 スペースのみチェック
    } else if (ValidateUtil.isSpace(rsv210Mokuteki__)) {
      msg = new ActionMessage("error.input.spase.only", gsMsg.getMessage("reserve.72"));
      StrutsUtil.addMessage(errors, msg, "rsv210Mokuteki");
      errorFlg = true;
      // 利用目的 先頭スペースチェック
    } else if (ValidateUtil.isSpaceStart(rsv210Mokuteki__)) {
      msg = new ActionMessage("error.input.spase.start", gsMsg.getMessage("reserve.72"));
      StrutsUtil.addMessage(errors, msg, "rsv210Mokuteki");
      errorFlg = true;
      // 利用目的 タブスペースチェック
    } else if (ValidateUtil.isTab(rsv210Mokuteki__)) {
      msg = new ActionMessage("error.input.tab.text", gsMsg.getMessage("reserve.72"));
      StrutsUtil.addMessage(errors, msg, "rsv210Mokuteki");
      errorFlg = true;
      // 利用目的 JIS第2水準チェック
    } else if (!GSValidateUtil.isGsJapaneaseString(rsv210Mokuteki__)) {
      // 利用不可能な文字を入力した場合
      String nstr = GSValidateUtil.getNotGsJapaneaseString(rsv210Mokuteki__);
      msg = new ActionMessage("error.input.njapan.text", gsMsg.getMessage("reserve.72"), nstr);
      StrutsUtil.addMessage(errors, msg, "rsv210Mokuteki");
      errorFlg = true;
    }

    // 時間大小チェック
    String timeFrom =
        StringUtil.toDecFormat(rsv210SelectedHourFr__, "00")
            + StringUtil.toDecFormat(rsv210SelectedMinuteFr__, "00");

    String timeTo =
        StringUtil.toDecFormat(rsv210SelectedHourTo__, "00")
            + StringUtil.toDecFormat(rsv210SelectedMinuteTo__, "00");

    boolean timeError = Integer.parseInt(timeFrom) >= Integer.parseInt(timeTo);
    if (timeError) {
      msg =
          new ActionMessage(
              "error.input.comp.text",
              gsMsg.getMessage("reserve.159"),
              gsMsg.getMessage("cmn.start.lessthan.end"));
      StrutsUtil.addMessage(errors, msg, "rsvtime");
      errorFlg = true;
    }

    // 内容
    if (!StringUtil.isNullZeroString(rsv210Naiyo__)) {
      // 内容 桁数チェック
      if (rsv210Naiyo__.length() > GSConstReserve.MAX_LENGTH_NAIYO) {
        msg =
            new ActionMessage(
                "error.input.length.textarea",
                gsMsg.getMessage("cmn.content"),
                String.valueOf(GSConstReserve.MAX_LENGTH_NAIYO));
        StrutsUtil.addMessage(errors, msg, "rsv210Naiyo");
        errorFlg = true;
      }
      // 内容 スペース・改行のみチェック
      if (ValidateUtil.isSpaceOrKaigyou(rsv210Naiyo__)) {
        msg = new ActionMessage("error.input.spase.cl.only", gsMsg.getMessage("cmn.content"));
        StrutsUtil.addMessage(errors, msg, "rsv210Naiyo");
        errorFlg = true;
      }
      // 内容 JIS第2水準チェック
      if (!GSValidateUtil.isGsJapaneaseStringTextArea(rsv210Naiyo__)) {
        // 利用不可能な文字を入力した場合
        String nstr = GSValidateUtil.getNotGsJapaneaseStringTextArea(rsv210Naiyo__);
        msg = new ActionMessage("error.input.njapan.text", gsMsg.getMessage("cmn.content"), nstr);
        StrutsUtil.addMessage(errors, msg, "rsv210Naiyo");
        errorFlg = true;
      }
    }

    // 予約チェック
    if (!errorFlg) {
      ArrayList<String> hiddArray = __getIkkatuKey();

      RsvSisDataDao dataDao = new RsvSisDataDao(con);
      HashMap<Integer, Rsv210Model> map = dataDao.getIkkatuTorokuGroupMap(hiddArray);

      for (String key : hiddArray) {

        errorFlg = false;

        // 施設の情報を取得
        String sisetuSid = key.substring(key.indexOf("-") + 1);

        Rsv210Model mapMdl = map.get(new Integer(sisetuSid));
        if (mapMdl == null) {
          continue;
        }

        // 予約可能期限チェック(期限が設定されていればチェックする)
        String kigen = mapMdl.getRsdProp6();
        if (!StringUtil.isNullZeroString(kigen)) {

          // 施設グループ管理者の場合は予約可能期限チェックをパスする
          RsvCommonBiz rsvBiz = new RsvCommonBiz();
          if (!rsvBiz.isGroupAdmin(con, new Integer(sisetuSid), reqMdl.getSmodel().getUsrsid())) {

            UDate now = new UDate();
            UDate udKigen = now.cloneUDate();
            udKigen.addDay(Integer.parseInt(kigen));

            String kigenYmd = udKigen.getDateString();
            String keyYmd = key.substring(0, key.indexOf("-"));

            if (Integer.parseInt(keyYmd) > Integer.parseInt(kigenYmd)) {

              UDate errDay = new UDate();
              errDay.setDate(keyYmd);
              String errDayStr =
                  gsMsg.getMessage("cmn.year", new String[] {errDay.getStrYear()})
                      + errDay.getStrMonth()
                      + gsMsg.getMessage("cmn.month")
                      + errDay.getStrDay()
                      + gsMsg.getMessage("cmn.day")
                      + "("
                      + UDateUtil.getStrWeek(errDay.getWeek(), reqMdl)
                      + ") "
                      + mapMdl.getRsdName();

              String kigenStr =
                  gsMsg.getMessage("cmn.comments")
                      + mapMdl.getRsdProp6()
                      + gsMsg.getMessage("cmn.days.after");

              msg = new ActionMessage("error.kigen.over.sisetu", errDayStr, kigenStr);
              StrutsUtil.addMessage(errors, msg, "sisetu" + key);
              errorFlg = true;
            }
          }
        }

        // 重複のチェック(重複登録 = 不可の場合にチェック)
        String tyohuku = mapMdl.getRsdProp7();
        if (!errorFlg
            && !StringUtil.isNullZeroString(tyohuku)
            && Integer.parseInt(tyohuku) == GSConstReserve.PROP_KBN_HUKA) {

          RsvSisYrkDao yrkDao = new RsvSisYrkDao(con);

          UDate[] chkDate = __getYrkDate(key);
          UDate udYrk = chkDate[0];
          UDate chkFrDate = chkDate[1];
          UDate chkToDate = chkDate[2];

          // 登録予定の時間帯に既に予約がある場合はエラー
          if (!yrkDao.isYrkOk(-1, Integer.parseInt(sisetuSid), chkFrDate, chkToDate)) {

            String errDayStr =
                gsMsg.getMessage("cmn.year", new String[] {udYrk.getStrYear()})
                    + udYrk.getStrMonth()
                    + gsMsg.getMessage("cmn.month")
                    + udYrk.getStrDay()
                    + gsMsg.getMessage("cmn.day")
                    + "("
                    + UDateUtil.getStrWeek(udYrk.getWeek(), reqMdl)
                    + ") "
                    + mapMdl.getRsdName();

            msg = new ActionMessage("error.yrk.exist.reserve", errDayStr);
            StrutsUtil.addMessage(errors, msg, "tyohuku" + key);
          }
        }
      }
    }

    // スケジュール重複チェック
    if (!timeError) {

      RelationBetweenScdAndRsvChkBiz schChkBiz = new RelationBetweenScdAndRsvChkBiz(reqMdl, con);

      if (rsv210SchKbn__ == GSConstReserve.RSV_SCHKBN_GROUP) {
        String grpSid = getRsv210SchGroupSid();
        if (NullDefault.getInt(grpSid, -1) >= 0) {

          // 例外アクセス
          schChkBiz.validateSpCaceGroupForSchedule(
              errors, grpSid, sessionUsrSid, "rsv210SchGroupSid");

          //                    schChkBiz.validateGroupForSchedule(errors, grpSid,
          //                            sessionUsrSid, "rsv210SchGroupSid");
        }
      } else {

        String[] users = getSv_users();
        if (rsv210SchKbn__ == GSConstReserve.RSV_SCHKBN_USER && users != null && users.length > 0) {

          ArrayList<String> hiddArray = __getIkkatuKey();
          List<UDate[]> dateList = new ArrayList<UDate[]>();
          for (String key : hiddArray) {
            UDate[] chkDate = __getYrkDate(key);
            dateList.add(new UDate[] {chkDate[1], chkDate[2]});
          }

          // 例外アクセス
          schChkBiz.validateSpCaceUserForSchedule(errors, users, sessionUsrSid, "sv_users");

          schChkBiz.validateDateForSchedule(
              errors, dateList, users, 0, false, sessionUsrSid, "rsv210Date");
        }
      }
    }

    return errors;
  }
Пример #2
0
  /**
   * <br>
   * [機 能] 入力チェックを行う <br>
   * [解 説] <br>
   * [備 考]
   *
   * @param map アクションマッピング
   * @param req リクエスト
   * @param con コネクション
   * @param sessionUsrSid ユーザSID
   * @return エラー
   * @throws SQLException SQL実行時例外
   */
  public Map<Integer, ActionErrors> validateCheck(
      ActionMapping map, HttpServletRequest req, Connection con, int sessionUsrSid)
      throws SQLException {

    ActionMessage msg = null;
    GsMessage gsMsg = new GsMessage();

    // 行番号とエラー内容を格納するMAP
    Map<Integer, ActionErrors> errorsMap = new TreeMap<Integer, ActionErrors>();

    for (Ntp030Param ntpData : ntp030nippouDataList__) {

      ActionErrors errors = new ActionErrors();

      String number = String.valueOf(ntpData.getRowId());
      String ntpYear = String.valueOf(ntpData.getNtpYear());
      String ntpMonth = String.valueOf(ntpData.getNtpMonth());
      String ntpDay = String.valueOf(ntpData.getNtpDay());
      String frHour = String.valueOf(ntpData.getFrHour());
      String frMin = String.valueOf(ntpData.getFrMin());
      String toHour = String.valueOf(ntpData.getToHour());
      String toMin = String.valueOf(ntpData.getToMin());
      String title = String.valueOf(ntpData.getTitle());
      String naiyou = String.valueOf(ntpData.getValueStr());

      // 開始年月日チェックフラグ(true=入力OK、false=NG)
      boolean fromOk = false;

      int iSYear = -1;
      if (!StringUtil.isNullZeroStringSpace(ntpYear)) {
        iSYear = Integer.parseInt(ntpYear);
      }
      int iSMonth = Integer.parseInt(ntpMonth);
      int iSDay = Integer.parseInt(ntpDay);

      UDate frDate = new UDate();
      frDate.setDate(iSYear, iSMonth, iSDay);
      frDate.setSecond(GSConstSchedule.DAY_START_SECOND);
      frDate.setMilliSecond(GSConstSchedule.DAY_START_MILLISECOND);
      if (frDate.getYear() != iSYear
          || frDate.getMonth() != iSMonth
          || frDate.getIntDay() != iSDay) {
        msg =
            new ActionMessage(
                "error.input.notfound.date", gsMsg.getMessage(req, "schedule.sch100.10"));
        errors.add("error.input.notfound.date", msg);
        log__.debug("error:1");
      } else {
        fromOk = true;
      }

      // 終了年月日チェックフラグ(true=入力OK、false=NG)
      boolean toOk = false;

      int iEYear = -1;
      if (!StringUtil.isNullZeroStringSpace(ntpYear)) {
        iEYear = Integer.parseInt(ntpYear);
      }
      int iEMonth = Integer.parseInt(ntpMonth);
      int iEDay = Integer.parseInt(ntpDay);

      UDate toDate = new UDate();
      toDate.setDate(iEYear, iEMonth, iEDay);
      toDate.setSecond(GSConstSchedule.DAY_START_SECOND);
      toDate.setMilliSecond(GSConstSchedule.DAY_START_MILLISECOND);
      if (toDate.getYear() != iEYear
          || toDate.getMonth() != iEMonth
          || toDate.getIntDay() != iEDay) {
        msg =
            new ActionMessage(
                "error.input.notfound.date", gsMsg.getMessage(req, "schedule.sch100.15"));
        errors.add("error.input.notfound.date", msg);
        log__.debug("error:2");
      } else {
        toOk = true;
      }

      if (fromOk && toOk && ntp030TimeKbn__.equals(String.valueOf(GSConstSchedule.TIME_EXIST))) {

        if (frHour.equals("-1")
            || frMin.equals("-1")
            || toHour.equals("-1")
            || toMin.equals("-1")) {
          // 時分
          String textHourMinute = gsMsg.getMessage(req, "schedule.src.36");
          msg = new ActionMessage("error.input.required.text", textHourMinute);
          errors.add("" + "error.input.required.text", msg);
          fromOk = false;
        }
      }

      // 個別チェックOKの場合
      if (fromOk && toOk) {

        if (ntp030TimeKbn__.equals(String.valueOf(GSConstSchedule.TIME_EXIST))) {
          if (frHour.equals("-1") && frMin.equals("-1")) {
            frDate.setHour(GSConstSchedule.DAY_START_HOUR);
            frDate.setMinute(GSConstSchedule.DAY_START_MINUTES);
          } else {
            frDate.setHour(Integer.parseInt(frHour));
            frDate.setMinute(Integer.parseInt(frMin));
          }
          if (toHour.equals("-1") && toMin.equals("-1")) {
            toDate.setHour(GSConstSchedule.DAY_END_HOUR);
            toDate.setMinute(GSConstSchedule.DAY_SYSMAX_MINUTES);
          } else {
            toDate.setHour(Integer.parseInt(toHour));
            toDate.setMinute(Integer.parseInt(toMin));
          }
        } else {
          frDate.setZeroHhMmSs();
          toDate.setMaxHhMmSs();
        }

        // from~to大小チェック
        if (frDate.compare(frDate, toDate) != UDate.LARGE) {
          // 開始 < 終了
          String textStartLessEnd = gsMsg.getMessage(req, "cmn.start.lessthan.end");
          // 開始・終了
          String textStartEnd = gsMsg.getMessage(req, "cmn.start.end");
          msg = new ActionMessage("error.input.comp.text", textStartEnd, textStartLessEnd);
          errors.add("" + "error.input.comp.text", msg);
          log__.debug("error:5");
        }
      }

      // タイトルのチェック
      if (__checkNoInput(errors, title, "ntp030Title", gsMsg.getMessage(req, "cmn.title"))) {
        if (__checkRange(
            errors,
            title,
            "ntp030Title",
            gsMsg.getMessage(req, "cmn.title"),
            GSConstSchedule.MAX_LENGTH_TITLE)) {
          // 先頭スペースチェック
          if (ValidateUtil.isSpaceStart(title)) {
            // タイトル
            String textTitle = gsMsg.getMessage(req, "cmn.title");
            msg = new ActionMessage("error.input.spase.start", textTitle);
            StrutsUtil.addMessage(errors, msg, "ntp030Title");
          } else {
            __checkJisString(errors, title, "ntp030Title", gsMsg.getMessage(req, "cmn.title"));
          }
        }
      }
      boolean valueError = false;
      // 内容のチェック
      if (__checkRangeTextarea(
          errors,
          naiyou,
          "ntp030Value",
          gsMsg.getMessage(req, "cmn.content"),
          GSConstSchedule.MAX_LENGTH_VALUE)) {
        if (!StringUtil.isNullZeroString(naiyou)) {
          // スペースのみチェック
          if (!valueError && ValidateUtil.isSpaceOrKaigyou(naiyou)) {
            msg =
                new ActionMessage(
                    "error.input.spase.cl.only", gsMsg.getMessage(req, "cmn.content"));
            StrutsUtil.addMessage(errors, msg, "ntp030Value");
            valueError = true;
          }

          if (!valueError) {
            // JIS
            __checkJisString(errors, naiyou, "ntp030Value", gsMsg.getMessage(req, "cmn.content"));
          }
        }
      }

      if (errors.size() > 0) {
        errorsMap.put(Integer.valueOf(number), errors);
      }
    }
    return errorsMap;
  }