From 3d820e61411fccafba146b9eca258c18e1f9aa2b Mon Sep 17 00:00:00 2001 From: hejunjie Date: Fri, 8 Dec 2023 11:56:24 +0800 Subject: [PATCH] hejunjie is reading now --- src/net/micode/notes/gtask/data/SqlNote.java | 28 +++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/src/net/micode/notes/gtask/data/SqlNote.java b/src/net/micode/notes/gtask/data/SqlNote.java index 45fc1a3..16ca4fb 100644 --- a/src/net/micode/notes/gtask/data/SqlNote.java +++ b/src/net/micode/notes/gtask/data/SqlNote.java @@ -361,7 +361,7 @@ public class SqlNote { } } - if (sqlData == null) { + if (sqlData == null) {‘’ sqlData = new SqlData(mContext); mDataList.add(sqlData); } @@ -377,16 +377,19 @@ public class SqlNote { return true; } + //函数用于获取便签的内容 public JSONObject getContent() { try { JSONObject js = new JSONObject(); + //如果mIsCreate属性为true,表示该便签还未在数据库中创建,此时打印警告信息并返回null if (mIsCreate) { Log.e(TAG, "it seems that we haven't created this in database yet"); return null; } JSONObject note = new JSONObject(); + //如果便签类型是笔记,将便签的各个属性添加到note对象中,然后将note对象添加到js对象中。同时创建一个名为dataArray的JSONArray数组,并遍历mDataList列表中的每个SqlData对象。对于每个SqlData对象,调用getContent获取其内容数据,并将数据对象添加到dataArray数组中。 if (mType == Notes.TYPE_NOTE) { note.put(NoteColumns.ID, mId); note.put(NoteColumns.ALERTED_DATE, mAlertDate); @@ -410,7 +413,7 @@ public class SqlNote { } } js.put(GTaskStringUtils.META_HEAD_DATA, dataArray); - } else if (mType == Notes.TYPE_FOLDER || mType == Notes.TYPE_SYSTEM) { + } //如果类型是文件夹和系统,将ID、类型和摘要属性添加到note对象中,然后将note对象添加到js对象中。 else if (mType == Notes.TYPE_FOLDER || mType == Notes.TYPE_SYSTEM) { note.put(NoteColumns.ID, mId); note.put(NoteColumns.TYPE, mType); note.put(NoteColumns.SNIPPET, mSnippet); @@ -425,45 +428,56 @@ public class SqlNote { return null; } + //函数用于给当前ID设置父ID public void setParentId(long id) { mParentId = id; mDiffNoteValues.put(NoteColumns.PARENT_ID, id); } + //函数用于给当前ID设置GTASK_ID, public void setGtaskId(String gid) { mDiffNoteValues.put(NoteColumns.GTASK_ID, gid); } + //函数用于给当前ID设置同步ID public void setSyncId(long syncId) { mDiffNoteValues.put(NoteColumns.SYNC_ID, syncId); } + //函数用于初始化本地修改,即撤销所有当前修改 public void resetLocalModified() { mDiffNoteValues.put(NoteColumns.LOCAL_MODIFIED, 0); } + //函数用于获得当前ID public long getId() { return mId; } + //函数用于获得当前ID的父ID public long getParentId() { return mParentId; } + //函数用于显示当前便签的摘要 public String getSnippet() { return mSnippet; } + //函数用于判断是否为笔记属性 public boolean isNoteType() { return mType == Notes.TYPE_NOTE; } + //函数用于把对当前便签所做的修改保存到数据库中 public void commit(boolean validateVersion) { if (mIsCreate) { + //如果便签的ID为无效值(INVALID_ID)且mDiffNoteValues集合中包含键为NoteColumns.ID的键值对,则将该键值对从集合中移除 if (mId == INVALID_ID && mDiffNoteValues.containsKey(NoteColumns.ID)) { mDiffNoteValues.remove(NoteColumns.ID); } + //调用ContentResolver的insert将便签的内容插入到数据库中 Uri uri = mContentResolver.insert(Notes.CONTENT_NOTE_URI, mDiffNoteValues); try { mId = Long.valueOf(uri.getPathSegments().get(1)); @@ -475,12 +489,14 @@ public class SqlNote { throw new IllegalStateException("Create thread id failed"); } + //如果便签类型为笔记,则遍历mDataList列表中的每个SqlData对象,并调用commit,将对应的数据保存到数据库中 if (mType == Notes.TYPE_NOTE) { for (SqlData sqlData : mDataList) { sqlData.commit(mId, false, -1); } } } else { + //如果便签的ID无效或为根文件夹或通话记录文件夹,则抛出IllegalStateException异常,提示正在尝试使用无效ID更新笔记 if (mId <= 0 && mId != Notes.ID_ROOT_FOLDER && mId != Notes.ID_CALL_RECORD_FOLDER) { Log.e(TAG, "No such note"); throw new IllegalStateException("Try to update note with invalid id"); @@ -488,6 +504,7 @@ public class SqlNote { if (mDiffNoteValues.size() > 0) { mVersion ++; int result = 0; + //如果validateVersion值为false,则直接调用update更新内容到数据库中,否则先查询数据库中该便签的版本号,如果查询得到的版本号小于等于mVersion,则更新笔记到数据库中,否则抛出异常,提示提交失败 if (!validateVersion) { result = mContentResolver.update(Notes.CONTENT_NOTE_URI, mDiffNoteValues, "(" + NoteColumns.ID + "=?)", new String[] { @@ -503,8 +520,9 @@ public class SqlNote { if (result == 0) { Log.w(TAG, "there is no update. maybe user updates note when syncing"); } - } - + } + + //如果便签类型为笔记,则遍历mDataList列表中的每个SqlData对象,调用commit,将对应的数据保存到数据库中 if (mType == Notes.TYPE_NOTE) { for (SqlData sqlData : mDataList) { sqlData.commit(mId, validateVersion, mVersion); @@ -513,10 +531,12 @@ public class SqlNote { } // refresh local info + //调用loadFromCursor重新加载从数据库中获取的数据,并调用loadDataContent重新加载便签的附加数据,以确保对便签修改的完整性和正确性 loadFromCursor(mId); if (mType == Notes.TYPE_NOTE) loadDataContent(); + //最后清空mDiffNoteValues集合,将mIsCreate属性设置为false,表示提交操作已完成 mDiffNoteValues.clear(); mIsCreate = false; }