設備の期間スケジュールを登録できるようにする

uecchc 26views 更新:2015年9月1日

インターン七日目。

今日は、設備の期間スケジュールを登録できるために、設備の重複判定の条件を作りました。

まず、考えとして、期間は終日と何日かをまたがるの二パターンがあります。

終日の場合は昨日改善したように、終了時刻を当日の23:59:59に調整した。

何日間も続くスケジュールの場合は、岩崎さんからいただいたアドバイスから、判定するとともに、enddateと同じになるまでstartdateを一日後ろずらす必要があることが分かり、以下の判定を作成しました。

else if (repeat_pattern.startsWith("S")) {
                    while (!ddate.after(_end_date)) {
                      try {
                        dexp3 =
                          ExpressionFactory.matchExp(
                            EipTSchedule.START_DATE_PROPERTY,
                            ddate);
                        temp =
                          Database.query(
                            EipTSchedule.class,
                            dexp1.andExp(dexp2).andExp(dexp3)).fetchList();
                        if (temp == null || temp.size() <= 0) {
                          existFacility = true;
                          break;
                        }
                      } catch (Exception e) {
                        logger.error("[DuplicateFacilityCheck]: ", e);
                        existFacility = true;
                        break;
                      }
                      cald.add(Calendar.DATE, 1);
                      ddate = cald.getTime();
                    }
                  }

しかし、この条件だけでは判定は上手く行きませんでした。。

先に設備の単体スケジュールや繰り返しスケジュールを登録してから、期間スケジュールを登録する場合のみ判定はが出来ます。

この操作を逆にする、判定せずに設備の期間スケジュールが登録されます。

この問題の解決方法は未だ見つかってません。

明日は、別府さんに教えていただいた方法で、

重複判定に使われたメソッド全体の動きをブレークポイントで追うことで、判定が出来ない時の変数の値が正しいかどうかチェックし、問題を特定します。

ログイン / 新規登録してコメントする

このソースコードをストックして後で利用したり、作業に利用したソースコードをまとめることができます。

こちらもお役に立つかもしれません