public long insert(Uri uri, ContentValues values) {
ContentValues insertValues = (values != null) ? new ContentValues(values) : new ContentValues();
final String table = UriUtils.getItemDirID(uri);
final Constraint constraint = metaInfo.getFirstConstraint(table, insertValues);
appendParentReference(uri, insertValues);
long rowId = -1;
if (constraint != null) {
rowId = tryUpdateWithConstraint(table, constraint, insertValues);
} else {
if (Log.Provider.warningLoggingEnabled()) {
Log.Provider.w("No constrain against URI: " + uri);
}
}
if (rowId <= 0) {
rowId = dbHelper.getWritableDatabase().insert(table, null, insertValues);
}
if (rowId != -1) {
return rowId;
}
throw new SQLException("Failed to insert row into " + uri);
}