private void insertItem(WaitItem waitItem) {
    ContentValues values = new ContentValues();
    values.put(GoalDatabase.WaitItemEntry.COL_TEXT, waitItem.getName());
    values.put(GoalDatabase.WaitItemEntry.COL_GOAL_ID, waitItem.getGoalId());
    values.put(GoalDatabase.WaitItemEntry.COL_RESPONSIBLE, waitItem.getResponsible());
    Calendar dueDate = waitItem.getDueDate();
    if (dueDate != null) {
      values.put(GoalDatabase.WaitItemEntry.COL_DUE_YEAR, dueDate.get(Calendar.YEAR));
      values.put(GoalDatabase.WaitItemEntry.COL_DUE_MONTH, dueDate.get(Calendar.MONTH));
      values.put(GoalDatabase.WaitItemEntry.COL_DUE_DAY, dueDate.get(Calendar.DAY_OF_MONTH));
    }
    Calendar requestDate = waitItem.getRequestDate();
    if (requestDate != null) {
      values.put(GoalDatabase.WaitItemEntry.COL_REQUEST_YEAR, requestDate.get(Calendar.YEAR));
      values.put(GoalDatabase.WaitItemEntry.COL_REQUEST_MONTH, requestDate.get(Calendar.MONTH));
      values.put(
          GoalDatabase.WaitItemEntry.COL_REQUEST_DAY, requestDate.get(Calendar.DAY_OF_MONTH));
    }

    if (waitItem.getId() == 0) {
      mContext.getContentResolver().insert(WaitItemProvider.CONTENT_URI, values);
    } else {
      String selection = GoalDatabase.WaitItemEntry._ID + "=?";
      String[] args = new String[] {Integer.valueOf(waitItem.getId()).toString()};
      mContext.getContentResolver().update(WaitItemProvider.CONTENT_URI, values, selection, args);
    }
  }
 protected WaitItem readCursor(Cursor cursor) {
   WaitItem item = null;
   try {
     item =
         new WaitItem(
             cursor.getString(cursor.getColumnIndexOrThrow(GoalDatabase.WaitItemEntry.COL_TEXT)));
     item.setId(cursor.getInt(cursor.getColumnIndexOrThrow(GoalDatabase.WaitItemEntry._ID)));
     item.setGoalId(
         cursor.getInt(cursor.getColumnIndexOrThrow(GoalDatabase.WaitItemEntry.COL_GOAL_ID)));
     item.setResponsible(
         cursor.getString(
             cursor.getColumnIndexOrThrow(GoalDatabase.WaitItemEntry.COL_RESPONSIBLE)));
     int dueYear = cursor.getInt(cursor.getColumnIndex(GoalDatabase.WaitItemEntry.COL_DUE_YEAR));
     int dueMonth = cursor.getInt(cursor.getColumnIndex(GoalDatabase.WaitItemEntry.COL_DUE_MONTH));
     int dueDay = cursor.getInt(cursor.getColumnIndex(GoalDatabase.WaitItemEntry.COL_DUE_DAY));
     item.setDueDate(new GregorianCalendar(dueYear, dueMonth, dueDay));
     int requestYear =
         cursor.getInt(cursor.getColumnIndex(GoalDatabase.WaitItemEntry.COL_REQUEST_YEAR));
     int requestMonth =
         cursor.getInt(cursor.getColumnIndex(GoalDatabase.WaitItemEntry.COL_REQUEST_MONTH));
     int requestDay =
         cursor.getInt(cursor.getColumnIndex(GoalDatabase.WaitItemEntry.COL_REQUEST_DAY));
     item.setRequestDate(new GregorianCalendar(requestYear, requestMonth, requestDay));
   } catch (android.database.CursorIndexOutOfBoundsException e) {
     // nothing found - that is ok
   }
   return item;
 }