|
|
|
@ -154,35 +154,45 @@ public class SqlData {
|
|
|
|
|
return js;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* 功能描述:commit函数用于把当前造作所做的修改保存到数据库
|
|
|
|
|
*/
|
|
|
|
|
/**
|
|
|
|
|
* 提交数据变更到数据库
|
|
|
|
|
*
|
|
|
|
|
* @param noteId 笔记 ID,用于关联数据
|
|
|
|
|
* @param validateVersion 是否验证版本信息
|
|
|
|
|
* @param version 笔记版本号
|
|
|
|
|
*/
|
|
|
|
|
public void commit(long noteId, boolean validateVersion, long version) {
|
|
|
|
|
|
|
|
|
|
// 如果是新创建的数据
|
|
|
|
|
if (mIsCreate) {
|
|
|
|
|
// 如果数据 ID 无效且差异数据集合包含数据 ID,则移除数据 ID
|
|
|
|
|
if (mDataId == INVALID_ID && mDiffDataValues.containsKey(DataColumns.ID)) {
|
|
|
|
|
mDiffDataValues.remove(DataColumns.ID);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 设置笔记 ID,将差异数据插入到数据表
|
|
|
|
|
mDiffDataValues.put(DataColumns.NOTE_ID, noteId);
|
|
|
|
|
Uri uri = mContentResolver.insert(Notes.CONTENT_DATA_URI, mDiffDataValues);
|
|
|
|
|
try {
|
|
|
|
|
// 从 URI 中获取插入的数据 ID
|
|
|
|
|
mDataId = Long.valueOf(uri.getPathSegments().get(1));
|
|
|
|
|
} catch (NumberFormatException e) {
|
|
|
|
|
Log.e(TAG, "Get note id error :" + e.toString());
|
|
|
|
|
throw new ActionFailureException("create note failed");
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// 如果有数据更新
|
|
|
|
|
if (mDiffDataValues.size() > 0) {
|
|
|
|
|
int result = 0;
|
|
|
|
|
if (!validateVersion) {
|
|
|
|
|
// 如果不需要验证版本,直接更新数据表
|
|
|
|
|
result = mContentResolver.update(ContentUris.withAppendedId(
|
|
|
|
|
Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues, null, null);
|
|
|
|
|
} else {
|
|
|
|
|
// 需要验证版本,构造 SQL 语句进行更新
|
|
|
|
|
result = mContentResolver.update(ContentUris.withAppendedId(
|
|
|
|
|
Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues,
|
|
|
|
|
" ? in (SELECT " + NoteColumns.ID + " FROM " + TABLE.NOTE
|
|
|
|
|
+ " WHERE " + NoteColumns.VERSION + "=?)", new String[] {
|
|
|
|
|
+ " WHERE " + NoteColumns.VERSION + "=?)", new String[]{
|
|
|
|
|
String.valueOf(noteId), String.valueOf(version)
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
@ -191,10 +201,12 @@ public class SqlData {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 清空差异数据集合和创建标志
|
|
|
|
|
mDiffDataValues.clear();
|
|
|
|
|
mIsCreate = false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* 功能描述:获取当前id
|
|
|
|
|