年単位での繰り返しスケジュール

you12724 29views 更新:2015年8月27日

実践編 #34047 の続きです。 前回に引き続き ScheduleFormData を編集しました。
前回はエラーが出ていたためrepeatや”M”などで検索すると他にも記入する場所がいくつか見つかったので毎月と同じように記入していきました。データの形については”YnnnnN”と指定があったのでrepeat_typeを”Y”にし、記入を進めました。
protected boolean insertFormData に下記のコードを入力することでデータベースにデータが格納されているのを確認しました。

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());
        }

他の場所にも同じように入力していきました。その後ビルドしてみると毎年繰り返し機能を使ってスケジュールの追加をすると毎日繰り返しになってしまう問題点が出てきました。
色々見つけて直しても直らずに質問したところcontainerに格納しているjavaファイルで毎日繰り返しのところに分類されているのではないかというアドバイスをもらい、その判断がScheduleUtilsのisViewで行われているとの事だったのでisViewに下記のコードを追記。

else if (ptn.charAt(0) == 'Y') {
      int ymonth = Integer.parseInt(ptn.substring(1, 3));
      int yday = Integer.parseInt(ptn.substring(3, 5));
      int month = Integer.parseInt(date.getMonth());
      int day = Integer.parseInt(date.getDay());
      if (ymonth == month || yday == day) {
        result = true;
        count = 5;
      }

表示が毎日ではなくなったものの追加した月は毎日表示され、その他の月も毎月繰り返しと同じように表示されてしまいました。 MonthlyContainerなどがあるのでYearlyも作る必要かあるのか悩んだ末にどれがどれに対応しているかを確認しようと思いブレークポイントをつけて毎月繰り返しなどを追加してみましたが動作は止まらず・・・
次回はここの対応を見つけることから始めるつもりです。

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

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

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