예제 #1
0
 /** EventInfoのメンバ変数に基づいてデータベースを更新する */
 public void updateDB() {
   // mRecurrenceが存在するデータについてはこのアプリでは無視する
   if (mRecurrence != null) {
     return;
   }
   Log.d("CALENDAR", "UpdateDB" + mTitle + ":" + getStartTimeString());
   // タイトルと更新日時を取得する
   String[] projection = {TITLE, UPDATED};
   String selection = EVENT_ID + " = ?";
   String[] selectionArgs = {mEventId};
   // 読み込まれたデータのID情報をもとにデータベースを検索
   Cursor c =
       mContentResolver.query(
           EventCalendarActivity.RESOLVER_URI, projection, selection, selectionArgs, null);
   if (c.moveToNext()) {
     // すでに存在しているデータの場合は更新処理
     String dbUpdated = c.getString(c.getColumnIndex(UPDATED));
     c.close();
     GregorianCalendar cal = DateStrCls.toCalendar(dbUpdated);
     // 更新日時を比較する(Calendar#compareTo)
     //  等しければ、0
     //  Googleカレンダーの更新日時(mUpdated) が新しい場合は 1
     //  データベースの更新日時(cal)が新しい場合は -1
     int comp = mUpdated.compareTo(cal);
     if (comp == 0) {
       // アップデートの日時が等しい
     } else if (comp > 0) {
       // Googleカレンダー側が新しいので更新する。
       if (isCanceled()) {
         // Googleカレンダーで削除されたものなら、データベースから削除
         mContentResolver.delete(EventCalendarActivity.RESOLVER_URI, selection, selectionArgs);
       } else {
         mContentResolver.update(
             EventCalendarActivity.RESOLVER_URI, getValues(), selection, selectionArgs);
       }
     } else if (comp < 0) {
       // DB側が新しければ後でGoogleカレンダーにアップロードするためにrecordにMODIFIEDフラグをセット
       ContentValues cv = new ContentValues();
       cv.put(MODIFIED, 1);
       mContentResolver.update(EventCalendarActivity.RESOLVER_URI, cv, selection, selectionArgs);
     }
   } else {
     // DBに同じデータが見つからなかったとき
     c.close();
     if (isCanceled()) {
       // Googleカレンダー側で削除されていれば何もしない
       return;
     }
     // 新規データとしてInsert
     mContentResolver.insert(EventCalendarActivity.RESOLVER_URI, getValues());
   }
 }
예제 #2
0
 public String getUpdatedString() {
   return DateStrCls.toDBDateString(mUpdated);
 }
예제 #3
0
 public String getPublishedString() {
   return DateStrCls.toDBDateString(mPublished);
 }
예제 #4
0
 /**
  * mUpdatedに文字列で値を設定します
  *
  * @param date
  */
 public void setUpdated(String date) {
   this.mUpdated = DateStrCls.toCalendar(date);
 }
예제 #5
0
 public void setPublished(String date) {
   this.mPublished = DateStrCls.toCalendar(date);
 }
예제 #6
0
 public void setEnd(String dateString) {
   this.mEnd = DateStrCls.toCalendar(dateString);
 }
예제 #7
0
 public String getEndString() {
   return DateStrCls.toDBDateString(mEnd);
 }
예제 #8
0
 public String getStartString() {
   return DateStrCls.toDBDateString(mStart);
 }
예제 #9
0
 public void setStart(String dateString) {
   this.mStart = DateStrCls.toCalendar(dateString);
 }