Java Code Examples for android.content.ContentValues#containsKey()

The following examples show how to use android.content.ContentValues#containsKey() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ChromeBrowserProvider.java    From android-chromium with BSD 2-Clause "Simplified" License 6 votes vote down vote up
private long addBookmark(ContentValues values) {
    String url = values.getAsString(Browser.BookmarkColumns.URL);
    String title = values.getAsString(Browser.BookmarkColumns.TITLE);
    boolean isFolder = false;
    if (values.containsKey(BOOKMARK_IS_FOLDER_PARAM)) {
        isFolder = values.getAsBoolean(BOOKMARK_IS_FOLDER_PARAM);
    }
    long parentId = INVALID_BOOKMARK_ID;
    if (values.containsKey(BOOKMARK_PARENT_ID_PARAM)) {
        parentId = values.getAsLong(BOOKMARK_PARENT_ID_PARAM);
    }
    long id = nativeAddBookmark(mNativeChromeBrowserProvider, url, title, isFolder, parentId);
    if (id == INVALID_BOOKMARK_ID) return id;

    if (isFolder) {
        updateLastModifiedBookmarkFolder(id);
    } else {
        updateLastModifiedBookmarkFolder(parentId);
    }
    return id;
}
 
Example 2
Source File: CursorContentValuesTaskAdapter.java    From opentasks-provider with Apache License 2.0 6 votes vote down vote up
@Override
public TaskAdapter duplicate()
{
	ContentValues newValues = new ContentValues(mValues);

	// copy all columns (except _ID) that are not in the values yet
	for (int i = 0, count = mCursor.getColumnCount(); i < count; ++i)
	{
		String column = mCursor.getColumnName(i);
		if (!newValues.containsKey(column) && !TaskContract.Tasks._ID.equals(column))
		{
			newValues.put(column, mCursor.getString(i));
		}
	}

	return new ContentValuesTaskAdapter(newValues);
}
 
Example 3
Source File: Memo.java    From EverMemo with MIT License 6 votes vote down vote up
public static Memo build(ContentValues values) {
	Memo memo = new Memo();
	if (values.containsKey("_id")) {
		memo._id = values.getAsInteger("_id");
	}
	memo.mGuid = values.getAsString("guid");
	memo.mEnid = values.getAsString("enid");
	memo.mWallId = values.getAsInteger("wallid");
	memo.mOrder = values.getAsInteger("orderid");
	memo.mSyncStatus = values.getAsInteger("syncstatus");
	memo.setContent(values.getAsString("content"));
	memo.mAttributes = values.getAsString("attributes");
	memo.mStatus = values.getAsString("status");
	memo.mCreatedTime = values.getAsLong("createdtime");
	memo.mUpdatedTime = values.getAsLong("updatedtime");
	memo.mLastSyncTime = values.getAsLong("lastsynctime");
	memo.mCursorPosition = values.getAsInteger("cursorposition");
	return memo;
}
 
Example 4
Source File: ChromeBrowserProvider.java    From delion with Apache License 2.0 5 votes vote down vote up
static SearchRow fromContentValues(ContentValues values) {
    SearchRow row = new SearchRow();
    if (values.containsKey(SearchColumns.SEARCH)) {
        row.mTerm = values.getAsString(SearchColumns.SEARCH);
    }
    if (values.containsKey(SearchColumns.DATE)) {
        row.mDate = values.getAsLong(SearchColumns.DATE);
    }
    return row;
}
 
Example 5
Source File: ContentValuesAssert.java    From assertj-android with Apache License 2.0 5 votes vote down vote up
private boolean containsEntry(ContentValues actual, ContentValuesEntry entry) {
  if (entry == null) {
    throw new NullPointerException("Entries to look for should not be null");
  }
  String key = entry.getKey();
  if (!actual.containsKey(key)) {
    return false;
  }
  return areEqual(actual.get(key), entry.getValue());
}
 
Example 6
Source File: LauncherProvider.java    From Trebuchet with GNU General Public License v3.0 5 votes vote down vote up
@Thunk boolean initializeExternalAdd(ContentValues values) {
    // 1. Ensure that externally added items have a valid item id
    long id = generateNewItemId();
    values.put(LauncherSettings.Favorites._ID, id);

    // 2. In the case of an app widget, and if no app widget id is specified, we
    // attempt allocate and bind the widget.
    Integer itemType = values.getAsInteger(LauncherSettings.Favorites.ITEM_TYPE);
    if (itemType != null &&
            itemType.intValue() == LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET &&
            !values.containsKey(LauncherSettings.Favorites.APPWIDGET_ID)) {

        final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(mContext);
        ComponentName cn = ComponentName.unflattenFromString(
                values.getAsString(Favorites.APPWIDGET_PROVIDER));

        if (cn != null) {
            try {
                int appWidgetId = mAppWidgetHost.allocateAppWidgetId();
                values.put(LauncherSettings.Favorites.APPWIDGET_ID, appWidgetId);
                if (!appWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId,cn)) {
                    return false;
                }
            } catch (RuntimeException e) {
                Log.e(TAG, "Failed to initialize external widget", e);
                return false;
            }
        } else {
            return false;
        }
    }

    // Add screen id if not present
    long screenId = values.getAsLong(LauncherSettings.Favorites.SCREEN);
    if (!addScreenIdIfNecessary(screenId)) {
        return false;
    }
    return true;
}
 
Example 7
Source File: TableHelper.java    From sana.mobile with BSD 3-Clause "New" or "Revised" License 5 votes vote down vote up
/**
 * Sets the creation and modification time to the current date time
 * formatted as {@link org.sana.api.IModel#DATE_FORMAT}
 */
@Override
public ContentValues onInsert(ContentValues values) {
    ContentValues validValues = new ContentValues();
    String value = new SimpleDateFormat(IModel.DATE_FORMAT,
            Locale.US).format(new Date());
    if (!values.containsKey(BaseContract.UUID))
        throw new IllegalArgumentException("Can not insert without uuid");
    //validValues.put(BaseContract.UUID, UUID.randomUUID().toString());
    validValues.put(BaseContract.CREATED, value);
    validValues.put(BaseContract.MODIFIED, value);
    validValues.putAll(values);
    return validValues;
}
 
Example 8
Source File: LauncherProvider.java    From LB-Launcher with Apache License 2.0 5 votes vote down vote up
private static long dbInsertAndCheck(DatabaseHelper helper,
        SQLiteDatabase db, String table, String nullColumnHack, ContentValues values) {
    if (values == null) {
        throw new RuntimeException("Error: attempting to insert null values");
    }
    if (!values.containsKey(LauncherSettings.ChangeLogColumns._ID)) {
        throw new RuntimeException("Error: attempting to add item without specifying an id");
    }
    helper.checkId(table, values);
    return db.insert(table, nullColumnHack, values);
}
 
Example 9
Source File: ChromeBrowserProvider.java    From android-chromium with BSD 2-Clause "Simplified" License 5 votes vote down vote up
static SearchRow fromContentValues(ContentValues values) {
    SearchRow row = new SearchRow();
    if (values.containsKey(SearchColumns.SEARCH)) {
        row.term = values.getAsString(SearchColumns.SEARCH);
    }
    if (values.containsKey(SearchColumns.DATE)) {
        row.date = values.getAsLong(SearchColumns.DATE);
    }
    return row;
}
 
Example 10
Source File: RepoProvider.java    From fdroidclient with GNU General Public License v3.0 5 votes vote down vote up
@Override
public Uri insert(@NonNull Uri uri, ContentValues values) {

    // Don't let people specify arbitrary priorities. Instead, we are responsible
    // for making sure that newly created repositories by default have the highest priority.
    values.put(Cols.PRIORITY, getMaxPriority() + 1);

    if (!values.containsKey(Cols.ADDRESS)) {
        throw new UnsupportedOperationException("Cannot add repo without an address.");
    }

    // The following fields have NOT NULL constraints in the DB, so need
    // to be present.

    if (!values.containsKey(Cols.IN_USE)) {
        values.put(Cols.IN_USE, 1);
    }

    if (!values.containsKey(Cols.MAX_AGE)) {
        values.put(Cols.MAX_AGE, 0);
    }

    if (!values.containsKey(Cols.VERSION)) {
        values.put(Cols.VERSION, 0);
    }

    if (!values.containsKey(Cols.NAME) || values.get(Cols.NAME) == null) {
        final String address = values.getAsString(Cols.ADDRESS);
        values.put(Cols.NAME, Repo.addressToName(address));
    }

    long id = db().insertOrThrow(getTableName(), null, values);
    Utils.debugLog(TAG, "Inserted repo. Notifying provider change: '" + uri + "'.");
    getContext().getContentResolver().notifyChange(uri, null);
    return getContentUri(id);
}
 
Example 11
Source File: ContactsUtils3.java    From CSipSimple with GNU General Public License v3.0 4 votes vote down vote up
@Override
public CallerInfo findCallerInfo(Context ctxt, String number) {
    Uri searchUri = Uri
            .withAppendedPath(Phones.CONTENT_FILTER_URL, Uri.encode(number));

    CallerInfo callerInfo = new CallerInfo();

    Cursor cursor = ctxt.getContentResolver().query(searchUri, null, null, null, null);
    if (cursor != null) {
        try {
            if (cursor.getCount() > 0) {
                cursor.moveToFirst();
                ContentValues cv = new ContentValues();
                DatabaseUtils.cursorRowToContentValues(cursor, cv);
                callerInfo.contactExists = true;
                if (cv.containsKey(Phones.DISPLAY_NAME)) {
                    callerInfo.name = cv.getAsString(Phones.DISPLAY_NAME);
                }

                callerInfo.phoneNumber = cv.getAsString(Phones.NUMBER);

                if (cv.containsKey(Phones.TYPE)
                        && cv.containsKey(Phones.LABEL)) {
                    callerInfo.numberType = cv.getAsInteger(Phones.TYPE);
                    callerInfo.numberLabel = cv.getAsString(Phones.LABEL);
                    callerInfo.phoneLabel = Phones.getDisplayLabel(ctxt,
                            callerInfo.numberType, callerInfo.numberLabel)
                            .toString();
                }

                if (cv.containsKey(Phones.PERSON_ID)) {
                    callerInfo.personId = cv.getAsLong(Phones.PERSON_ID);
                    callerInfo.contactContentUri = ContentUris.withAppendedId(
                            People.CONTENT_URI, callerInfo.personId);
                }

                if (cv.containsKey(Phones.CUSTOM_RINGTONE)) {
                    String ringtoneUriString = cv.getAsString(Phones.CUSTOM_RINGTONE);
                    if (!TextUtils.isEmpty(ringtoneUriString)) {
                        callerInfo.contactRingtoneUri = Uri.parse(ringtoneUriString);
                    }
                }

                if (callerInfo.name != null && callerInfo.name.length() == 0) {
                    callerInfo.name = null;
                }

            }

        } catch (Exception e) {
            Log.e(THIS_FILE, "Exception while retrieving cursor infos", e);
        } finally {
            cursor.close();
        }

    }

    // if no query results were returned with a viable number,
    // fill in the original number value we used to query with.
    if (TextUtils.isEmpty(callerInfo.phoneNumber)) {
        callerInfo.phoneNumber = number;
    }

    return callerInfo;
}
 
Example 12
Source File: DateTimeIterableFieldAdapter.java    From opentasks with Apache License 2.0 4 votes vote down vote up
@Override
public Iterable<DateTime> getFrom(Cursor cursor, ContentValues values)
{
    int tsIdx;
    int tzIdx;
    String datetimeList;
    String timeZoneId = null;

    if (values != null && values.containsKey(mDateTimeListFieldName))
    {
        if (values.getAsString(mDateTimeListFieldName) == null)
        {
            // the date times are null, so we return null
            return EmptyIterable.instance();
        }
        datetimeList = values.getAsString(mDateTimeListFieldName);
    }
    else if (cursor != null && (tsIdx = cursor.getColumnIndex(mDateTimeListFieldName)) >= 0)
    {
        if (cursor.isNull(tsIdx))
        {
            // the date times are null, so we return an empty Iterable.
            return EmptyIterable.instance();
        }
        datetimeList = cursor.getString(tsIdx);
    }
    else
    {
        throw new IllegalArgumentException("Missing date time list column.");
    }

    if (mTimeZoneFieldName != null)
    {
        if (values != null && values.containsKey(mTimeZoneFieldName))
        {
            timeZoneId = values.getAsString(mTimeZoneFieldName);
        }
        else if (cursor != null && (tzIdx = cursor.getColumnIndex(mTimeZoneFieldName)) >= 0)
        {
            timeZoneId = cursor.getString(tzIdx);
        }
        else
        {
            throw new IllegalArgumentException("Missing timezone column.");
        }
    }

    // create a new TimeZone for the given time zone string
    TimeZone timeZone = timeZoneId == null ? null : TimeZone.getTimeZone(timeZoneId);

    return new DateTimeList(timeZone, datetimeList);
}
 
Example 13
Source File: LibraryUpdaterTask.java    From android-viewer-for-khan-academy with GNU General Public License v3.0 4 votes vote down vote up
private ContentValues parseObject(JsonParser parser, SQLiteDatabase tempDb, String parentId, int seq) throws JsonParseException, IOException {
	// TODO : Grab id of root topic here, and store it in shared prefs, in case it ever
	//        changes. Currently we assume "root" and a change would be catastrophic.
	ContentValues result = new ContentValues();
	ChildArrayResults childResults = null;
	boolean badKind = false;
	
	result.put("parentTopic_id", parentId);
	result.put("seq", seq);
	
	while (parser.nextValue() != JsonToken.END_OBJECT) {
		
		// Allows us to burn through the rest of the object once we discover it's an exercise or something else we don't care about.
		if (badKind) continue;
		
		String fieldName = parser.getCurrentName();
		
		// Keys present will determine object type.
		if (stringFields.contains(fieldName)) {
			// Use getValueAsString over getText; getText returns "null" while getValueAsString returns null.
			String value = parser.getValueAsString();
			result.put(fieldName, value);
			
			if ("id".equals(fieldName)) {
				if (childResults != null) {
					addParentIdToChildren(tempDb, childResults, value);
				}
			}
		} else if (intFields.contains(fieldName)) {
			result.put(fieldName, parser.getIntValue());
		} else if (booleanFields.contains(fieldName)) {
			result.put(fieldName, parser.getBooleanValue());
		} else if ("children".equals(fieldName)) {
			childResults = parseChildArray(parser, tempDb, result.containsKey("id") ? result.getAsString("id") : null);
			result.put("video_count", childResults.videoCount);
			result.put("child_kind", childResults.childKind);
			result.put("thumb_id", childResults.thumbId);
		} else if ("download_urls".equals(fieldName)) {
			parseDownloadUrls(parser, result);
		} else if (null == fieldName) {
			// Noop. Just in case.
		} else {
			JsonToken next = parser.getCurrentToken();
			if (next == JsonToken.START_OBJECT || next == JsonToken.START_ARRAY) {
				// Skip this object or array, leaving us pointing at the matching end_object / end_array token.
				parser.skipChildren();
			}
		}
	}
	
	// Ignore types we don't need.
	if (badKind) {
		return null;
	}
	
	// Having parsed this whole object, we can insert it.
	if (result.containsKey("kind")) {
		String kind = result.getAsString("kind");
		if ("Topic".equals(kind)) {
			if (result.containsKey("id")) {
				result.put("_id", result.getAsString("id"));
				result.remove("id");
			}
			if (result.containsKey("child_kind")) {
				String child_kind = result.getAsString("child_kind");
				if ("Topic".equals(child_kind) || "Video".equals(child_kind)) {
					insertTopic(tempDb, result);
				}
			}
		} else if ("Video".equals(kind)) {
			if (result.containsKey("id")) {
				result.put("video_id", result.getAsString("id"));
				result.remove("id");
			}
			insertTopicVideo(tempDb, result);
			insertVideo(tempDb, result);
		}
	}
	
	return result;
}
 
Example 14
Source File: Repo.java    From fdroidclient with GNU General Public License v3.0 4 votes vote down vote up
public void setValues(ContentValues values) {

        if (values.containsKey(Cols._ID)) {
            id = toInt(values.getAsInteger(Cols._ID));
        }

        if (values.containsKey(Cols.LAST_ETAG)) {
            lastetag = values.getAsString(Cols.LAST_ETAG);
        }

        if (values.containsKey(Cols.ADDRESS)) {
            address = values.getAsString(Cols.ADDRESS);
        }

        if (values.containsKey(Cols.DESCRIPTION)) {
            description = values.getAsString(Cols.DESCRIPTION);
        }

        if (values.containsKey(Cols.FINGERPRINT)) {
            fingerprint = values.getAsString(Cols.FINGERPRINT);
        }

        if (values.containsKey(Cols.IN_USE)) {
            inuse = toInt(values.getAsInteger(Cols.IN_USE)) == 1;
        }

        if (values.containsKey(Cols.LAST_UPDATED)) {
            final String dateString = values.getAsString(Cols.LAST_UPDATED);
            lastUpdated = Utils.parseTime(dateString, Utils.parseDate(dateString, null));
        }

        if (values.containsKey(Cols.MAX_AGE)) {
            maxage = toInt(values.getAsInteger(Cols.MAX_AGE));
        }

        if (values.containsKey(Cols.VERSION)) {
            version = toInt(values.getAsInteger(Cols.VERSION));
        }

        if (values.containsKey(Cols.NAME)) {
            name = values.getAsString(Cols.NAME);
        }

        if (values.containsKey(Cols.SIGNING_CERT)) {
            signingCertificate = values.getAsString(Cols.SIGNING_CERT);
        }

        if (values.containsKey(Cols.PRIORITY)) {
            priority = toInt(values.getAsInteger(Cols.PRIORITY));
        }

        if (values.containsKey(Cols.IS_SWAP)) {
            isSwap = toInt(values.getAsInteger(Cols.IS_SWAP)) == 1;
        }

        if (values.containsKey(Cols.USERNAME)) {
            username = values.getAsString(Cols.USERNAME);
        }

        if (values.containsKey(Cols.PASSWORD)) {
            password = values.getAsString(Cols.PASSWORD);
        }

        if (values.containsKey(Cols.TIMESTAMP)) {
            timestamp = toInt(values.getAsInteger(Cols.TIMESTAMP));
        }

        if (values.containsKey(Cols.ICON)) {
            icon = values.getAsString(Cols.ICON);
        }

        if (values.containsKey(Cols.MIRRORS)) {
            mirrors = Utils.parseCommaSeparatedString(values.getAsString(Cols.MIRRORS));
        }

        if (values.containsKey(Cols.USER_MIRRORS)) {
            userMirrors = Utils.parseCommaSeparatedString(values.getAsString(Cols.USER_MIRRORS));
        }

        if (values.containsKey(Cols.DISABLED_MIRRORS)) {
            disabledMirrors = Utils.parseCommaSeparatedString(values.getAsString(Cols.DISABLED_MIRRORS));
        }

        if (values.containsKey(Cols.PUSH_REQUESTS)) {
            pushRequests = toInt(values.getAsInteger(Cols.PUSH_REQUESTS));
        }
    }
 
Example 15
Source File: MmsDatabase.java    From Silence with GNU General Public License v3.0 4 votes vote down vote up
private Pair<Long, Long> insertMessageInbox(MasterSecret masterSecret, IncomingMediaMessage retrieved,
                                            String contentLocation, long threadId, long mailbox)
    throws MmsException
{
  if (threadId == -1 || retrieved.isGroupMessage()) {
    try {
      threadId = getThreadIdFor(retrieved);
    } catch (RecipientFormattingException e) {
      Log.w("MmsDatabase", e);
      if (threadId == -1)
        throw new MmsException(e);
    }
  }
  ContentValues contentValues = new ContentValues();

  contentValues.put(DATE_SENT, retrieved.getSentTimeMillis());
  contentValues.put(ADDRESS, retrieved.getAddresses().getFrom());

  contentValues.put(MESSAGE_BOX, mailbox);
  contentValues.put(MESSAGE_TYPE, PduHeaders.MESSAGE_TYPE_RETRIEVE_CONF);
  contentValues.put(THREAD_ID, threadId);
  contentValues.put(CONTENT_LOCATION, contentLocation);
  contentValues.put(STATUS, Status.DOWNLOAD_INITIALIZED);
  contentValues.put(DATE_RECEIVED, generatePduCompatTimestamp());
  contentValues.put(PART_COUNT, retrieved.getAttachments().size());
  contentValues.put(SUBSCRIPTION_ID, retrieved.getSubscriptionId());
  contentValues.put(READ, 0);

  if (!contentValues.containsKey(DATE_SENT)) {
    contentValues.put(DATE_SENT, contentValues.getAsLong(DATE_RECEIVED));
  }

  long messageId = insertMediaMessage(masterSecret, retrieved.getAddresses(),
                                      retrieved.getBody(), retrieved.getAttachments(),
                                      contentValues);

  DatabaseFactory.getThreadDatabase(context).setUnread(threadId);
  DatabaseFactory.getThreadDatabase(context).update(threadId, true);
  notifyConversationListeners(threadId);
  jobManager.add(new TrimThreadJob(context, threadId));

  return new Pair<>(messageId, threadId);
}
 
Example 16
Source File: BaseModelProvider.java    From framework with GNU Affero General Public License v3.0 4 votes vote down vote up
@Override
public int update(@NonNull Uri uri, ContentValues all_values, String selection, String[] selectionArgs) {
    OModel model = getModel(uri);
    setMatcher(model, uri);
    ContentValues[] values = generateValues(model, all_values);
    ContentValues value_to_update = values[0];
    if (!value_to_update.containsKey("_write_date")) {
        value_to_update.put("_write_date", ODateUtils.getUTCDate());
    }
    if (!value_to_update.containsKey("_is_dirty")) {
        value_to_update.put("_is_dirty", "true");
    }
    int count = 0;
    int match = matcher.match(uri);
    switch (match) {
        case COLLECTION:
            SQLiteDatabase db = model.getWritableDatabase();
            count = db.update(model.getTableName(), value_to_update, selection, selectionArgs);
            // Updating relation columns
            if (values[1].size() > 0) {
                storeUpdateRelationRecords(model, values[1], selection, selectionArgs);
            }

            break;
        case SINGLE_ROW:
            String row_id = uri.getLastPathSegment();
            db = model.getWritableDatabase();
            count = db.update(model.getTableName(), value_to_update, OColumn.ROW_ID + "  = ?", new String[]{row_id});
            // Updating relation columns for record
            if (values[1].size() > 0) {
                storeUpdateRelationRecords(model, values[1], OColumn.ROW_ID + "  = ?", new String[]{row_id});
            }
            break;
        case UriMatcher.NO_MATCH:
            break;
        default:
            throw new UnsupportedOperationException("Unknown uri: " + uri);
    }
    notifyDataChange(uri);
    return count;
}
 
Example 17
Source File: BaseModelProvider.java    From hr with GNU Affero General Public License v3.0 4 votes vote down vote up
@Override
public int update(Uri uri, ContentValues all_values, String selection, String[] selectionArgs) {
    setModel(uri);
    setMatcher(uri);
    ContentValues[] values = generateValues(all_values);
    ContentValues value_to_update = values[0];
    if (!value_to_update.containsKey("_write_date")) {
        value_to_update.put("_write_date", ODateUtils.getUTCDate());
    }
    if (!value_to_update.containsKey("_is_dirty")) {
        value_to_update.put("_is_dirty", "true");
    }
    int count = 0;
    int match = matcher.match(uri);
    switch (match) {
        case COLLECTION:
            SQLiteDatabase db = mModel.getWritableDatabase();
            count = db.update(mModel.getTableName(), value_to_update, selection, selectionArgs);
            // Updating relation columns
            if (values[1].size() > 0) {
                storeUpdateRelationRecords(values[1], selection, selectionArgs);
            }

            break;
        case SINGLE_ROW:
            String row_id = uri.getLastPathSegment();
            db = mModel.getWritableDatabase();
            count = db.update(mModel.getTableName(), value_to_update, OColumn.ROW_ID + "  = ?", new String[]{row_id});
            // Updating relation columns for record
            if (values[1].size() > 0) {
                storeUpdateRelationRecords(values[1], OColumn.ROW_ID + "  = ?", new String[]{row_id});
            }
            break;
        case UriMatcher.NO_MATCH:
            break;
        default:
            throw new UnsupportedOperationException("Unknown uri: " + uri);
    }
    notifyDataChange(uri);
    return count;
}
 
Example 18
Source File: MmsDatabase.java    From Silence with GNU General Public License v3.0 4 votes vote down vote up
public Pair<Long, Long> insertMessageInbox(@NonNull NotificationInd notification, int subscriptionId) {
  SQLiteDatabase     db              = databaseHelper.getWritableDatabase();
  MmsAddressDatabase addressDatabase = DatabaseFactory.getMmsAddressDatabase(context);
  long                 threadId       = getThreadIdFor(notification);
  ContentValues        contentValues  = new ContentValues();
  ContentValuesBuilder contentBuilder = new ContentValuesBuilder(contentValues);

  Log.w(TAG, "Message received type: " + notification.getMessageType());

  contentBuilder.add(CONTENT_LOCATION, notification.getContentLocation());
  contentBuilder.add(DATE_SENT, System.currentTimeMillis());
  contentBuilder.add(EXPIRY, notification.getExpiry());
  contentBuilder.add(MESSAGE_SIZE, notification.getMessageSize());
  contentBuilder.add(TRANSACTION_ID, notification.getTransactionId());
  contentBuilder.add(MESSAGE_TYPE, notification.getMessageType());

  if (notification.getFrom() != null) {
    contentBuilder.add(ADDRESS, notification.getFrom().getTextString());
  } else {
    contentBuilder.add(ADDRESS, null);
  }

  long dateReceived = generatePduCompatTimestamp();

  contentValues.put(MESSAGE_BOX, Types.BASE_INBOX_TYPE);
  contentValues.put(THREAD_ID, threadId);
  contentValues.put(STATUS, Status.DOWNLOAD_INITIALIZED);
  contentValues.put(DATE_RECEIVED, dateReceived);
  contentValues.put(READ, Util.isDefaultSmsProvider(context) ? 0 : 1);
  contentValues.put(SUBSCRIPTION_ID, subscriptionId);

  if (!contentValues.containsKey(DATE_SENT))
    contentValues.put(DATE_SENT, contentValues.getAsLong(DATE_RECEIVED));

  if (contentValues.getAsLong(DATE_SENT) <= 0)
    contentValues.put(DATE_SENT, dateReceived);

  long messageId = db.insert(TABLE_NAME, null, contentValues);

  if (notification.getFrom() != null) {
    addressDatabase.insertAddressesForId(messageId, MmsAddresses.forFrom(Util.toIsoString(notification.getFrom().getTextString())));
  }

  return new Pair<>(messageId, threadId);
}
 
Example 19
Source File: DateTimeFieldAdapter.java    From opentasks with Apache License 2.0 4 votes vote down vote up
@Override
public DateTime getFrom(Cursor cursor, ContentValues values)
{
    int tsIdx;
    int tzIdx;
    int adIdx;
    long timestamp;
    String timeZoneId = null;
    Integer allDay = 0;

    if (values != null && values.containsKey(mTimestampField))
    {
        if (values.getAsLong(mTimestampField) == null)
        {
            // if the time stamp is null we return null
            return null;
        }
        timestamp = values.getAsLong(mTimestampField);
    }
    else if (cursor != null && (tsIdx = cursor.getColumnIndex(mTimestampField)) >= 0)
    {
        if (cursor.isNull(tsIdx))
        {
            // if the time stamp is null we return null
            return null;
        }
        timestamp = cursor.getLong(tsIdx);
    }
    else
    {
        throw new IllegalArgumentException("Missing timestamp column.");
    }

    if (mTzField != null)
    {
        if (values != null && values.containsKey(mTzField))
        {
            timeZoneId = values.getAsString(mTzField);
        }
        else if (cursor != null && (tzIdx = cursor.getColumnIndex(mTzField)) >= 0)
        {
            timeZoneId = cursor.getString(tzIdx);
        }
        else
        {
            throw new IllegalArgumentException("Missing timezone column.");
        }
    }

    if (mAllDayField != null)
    {
        if (values != null && values.containsKey(mAllDayField))
        {
            allDay = values.getAsInteger(mAllDayField);
        }
        else if (cursor != null && (adIdx = cursor.getColumnIndex(mAllDayField)) >= 0)
        {
            allDay = cursor.getInt(adIdx);
        }
        else
        {
            throw new IllegalArgumentException("Missing timezone column.");
        }
    }

    // create a new Time for the given time zone, falling back to UTC if none is given
    DateTime value = new DateTime(timeZoneId == null ? DateTime.UTC : TimeZone.getTimeZone(timeZoneId), timestamp);

    if (allDay != 0)
    {
        value = value.toAllDay();
    }
    return value;
}
 
Example 20
Source File: DateTimeArrayFieldAdapter.java    From opentasks-provider with Apache License 2.0 4 votes vote down vote up
@Override
public DateTime[] getFrom(Cursor cursor, ContentValues values)
{
	int tsIdx;
	int tzIdx;
	String datetimeList;
	String timeZoneId = null;

	if (values != null && values.containsKey(mDateTimeListFieldName))
	{
		if (values.getAsLong(mDateTimeListFieldName) == null)
		{
			// the date times are null, so we return null
			return null;
		}
		datetimeList = values.getAsString(mDateTimeListFieldName);
	}
	else if (cursor != null && (tsIdx = cursor.getColumnIndex(mDateTimeListFieldName)) >= 0)
	{
		if (cursor.isNull(tsIdx))
		{
			// the date times are null, so we return null
			return null;
		}
		datetimeList = cursor.getString(tsIdx);
	}
	else
	{
		throw new IllegalArgumentException("Missing date time list column.");
	}

	if (mTimeZoneFieldName != null)
	{
		if (values != null && values.containsKey(mTimeZoneFieldName))
		{
			timeZoneId = values.getAsString(mTimeZoneFieldName);
		}
		else if (cursor != null && (tzIdx = cursor.getColumnIndex(mTimeZoneFieldName)) >= 0)
		{
			timeZoneId = cursor.getString(tzIdx);
		}
		else
		{
			throw new IllegalArgumentException("Missing timezone column.");
		}
	}

	// create a new TimeZone for the given time zone string
	TimeZone timeZone = timeZoneId == null ? null : TimeZone.getTimeZone(timeZoneId);

	String[] datetimes = SEPARATOR_PATTERN.split(datetimeList);

	DateTime[] result = new DateTime[datetimes.length];
	for (int i = 0, count = datetimes.length; i < count; ++i)
	{
		DateTime value = DateTime.parse(timeZone, datetimes[i]);

		if (!value.isAllDay() && value.isFloating())
		{
			throw new IllegalArgumentException("DateTime values must not be floating, unless they are all-day.");
		}

		result[i] = value;
		if (i > 0 && result[0].isAllDay() != value.isAllDay())
		{
			throw new IllegalArgumentException("DateTime values must all be of the same type.");
		}
	}

	return result;
}