日をまたいだスケジュールの登録(データベースへの登録)

前回に引き続き、日をまたいだスケジュールの登録を行えるように変更を進めた。
今回は画面表示の変更とデータベースへの登録に関する部分の修正を行った。

1.画面表示

スケジュールの入力フォームのvmファイルである/aipo/portlets/schedule/src/main/webapp/WEB-INF/templates/vm/portlets/html/ajax-schedule-form.vmで、if~else文を用いて、時間を入力する部分の表示処理を以下のように分岐させようと試みた。


日をまたがない場合:開始時間、終了時間
日をまたぐ場合:開始日の開始時間、終了日の終了時間


しかし、「期間で指定する」をクリックしても動的に表示が変更されず、試行錯誤したものの解決に至らなかった。
日をまたぐ場合に、開始時間と終了時間は画面上で入力できるようになったので次に移ることにした。

2.データベースへの登録

まず、データベースにスケジュールが登録されているかを確認した。
pgAdmin4を用いて/aipo/oms/src/main/webapp/WEB-INF/datasource/dbcp-org001.propertiesに記述された情報でデータベースにアクセスし、スケジュール用のテーブルeip_t_scheduleを確認した。

1日のスケジュール、日をまたぐスケジュールそれぞれ登録し、データベースにどのように格納されるかを試した。
1日のスケジュールは正しく登録されているが、日をまたいだスケジュールは開始時間と終了時間が正しく登録されていないことが判明した。

スケジュールのフォームデータを管理するクラスである/aipo/portlets/schedule/src/main/java/com/aimluck/eip/schedule/ScheduleFormData.javaの修正を試みた。

いくつか修正すべき箇所を見つけた。

  • insertFormData()メソッド
    is_spanがtrueであるとき、開始日と終了日の時間・分が共に0に設定されている。
    0を設定するのではなく、getHour()とgetMinute()で時間と分を取得する処理してみた。

  • loadFormData()メソッド
    is_spanがtrueの時、別処理になっている。
    他の処理と同様の処理に変更してみた。

  • setFormData()メソッド
    is_spanがtrueの時の日付をセットする処理がないのが問題ではないか。
    insertFormDate()と同様の処理を加えた。

以上の変更を加えてみたが、日付をまたいだ登録を行った場合に、データベースに時間は登録されなかった。
ScheduleFormDataの持つメソッドの役割をきちんと理解して修正したい。


次回はインターン最終日なので、データベースへの登録処理を終え、表示の修正になんとかたどり着きたい。