インターン七日目。
今日は、設備の期間スケジュールを登録できるために、設備の重複判定の条件を作りました。
まず、考えとして、期間は終日と何日かをまたがるの二パターンがあります。
終日の場合は昨日改善したように、終了時刻を当日の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(); } }
しかし、この条件だけでは判定は上手く行きませんでした。。
先に設備の単体スケジュールや繰り返しスケジュールを登録してから、期間スケジュールを登録する場合のみ判定はが出来ます。
この操作を逆にする、判定せずに設備の期間スケジュールが登録されます。
この問題の解決方法は未だ見つかってません。
明日は、別府さんに教えていただいた方法で、
重複判定に使われたメソッド全体の動きをブレークポイントで追うことで、判定が出来ない時の変数の値が正しいかどうかチェックし、問題を特定します。