実践編:年単位での繰り返しスケジュール

インターン実践編として「年単位での繰り返しスケジュール」を選択しました。
あまり進みませんでしたがやった内容は下記の内容です。

1.登録画面の表示対応

「繰り返す」ボタンをクリックして繰り返しパターンとして「毎月」の下に「毎年」の繰り返しを追加する。(月、日のプルダウンを追加する)

まず要素の検証からScheduleFormData.javaを参照にし、ajax-schedule-form.vmがテンプレートとして指定されていたので参照。 毎月繰り返しの部分を探し同じように真似をしながら色々と試したところ下記のようなコードを追加すればプルダウンメニューを追加できることが分かり追加。

      <br/>
      <input id="repeat_typeY" type="radio" value="Y" #if ($!{result.RepeatType.toString()} == "Y") checked="checked" #end name="repeat_type"/>
      <label for="repeat_typeY">$l10n.SCHEDULE_EVERY_YEAR</label>
      <select onchange="aipo.schedule.enableMonth(this.form)" name="year_month">
      #foreach ( $num in [1..12] )
        <option value="$num" #if ($!{result.YearMonth.toString()} == "$num") selected #end>$num$l10n.SCHEDULE_MONTH</option>
      #end
      </select>
      <select onchange="aipo.schedule.enableMonth(this.form)" name="year_day">
      #foreach ( $num in [1..31] )
        <option value="$num" #if ($!{result.YearDay.toString()} == "$num") selected #end>$num$l10n.SCHEDULE_DAY</option>
      #end
      </select>

はじめはプルダウンメニューを選んだ際にラジオボタンが自動的に選択されなかったので怪しそうなenableMonthをプロジェクト内から検索するとjsファイルにたどり着きました。
開いてみると改行がなにもなく何がなんだか分からない状態でenableMonthと同じように追記しても改善出来なかったので質問したところ、見ていたファイルは容量削減のためのファイルだったらしく、もう1つのファイルを見るとちゃんと改行されていました。
そのファイル内でenableMonthと検索し、下記のコードを追記

aipo.schedule.enableYear = function(form){
    if(! form.repeat_type[3].checked){
        form.repeat_type[3].checked = true;
    }
}

repeat_typeの配列はVelocityファイル内で順番に格納されていくらしいので3と入力しました。
その後ビルドし直すとプルダウンメニューを選択後、自動でラジオボタンが選択されるようになりました。

次に DB保存対応に取り組みました。
チケットにリンクが貼ってあったので見てみるとinsertFromDataを示していたので、その中の繰り返しスケジュール設定を見ると月や週などの設定があったので毎月のコードを参考にしながら下記のコードを追加しました。

else {
          DecimalFormat format = new DecimalFormat("00");
          schedule.setRepeatPattern(new StringBuffer().append('Y').append(
            format.format(year_month.getValue())).append(
            format.format(year_day.getValue())).append(lim).toString());
        }

その後ビルドし直して起動して毎年繰り返す機能を使って追加してみると
データの追加に失敗しました。大変申し訳ございませんが、しばらくたってから再度お試しください。
と表示され、追加することが出来ませんでした。
次回はこれの原因究明からです。