From 4d18192e381cc5b889e3ac24b12e0bb2adbb868a Mon Sep 17 00:00:00 2001 From: pwiz98tyo <1257800485@qq.com> Date: Thu, 12 Jun 2025 16:44:54 +0800 Subject: [PATCH] Update Note.java --- java/net/micode/notes/model/Note.java | 56 +++++++++++++++++---------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/java/net/micode/notes/model/Note.java b/java/net/micode/notes/model/Note.java index 6706cf6..8ec1935 100644 --- a/java/net/micode/notes/model/Note.java +++ b/java/net/micode/notes/model/Note.java @@ -35,14 +35,16 @@ import java.util.ArrayList; public class Note { - private ContentValues mNoteDiffValues; - private NoteData mNoteData; + private ContentValues mNoteDiffValues;//笔记差异值 + private NoteData mNoteData;//笔记数据 private static final String TAG = "Note"; /** * Create a new note id for adding a new note to databases */ + //获取新笔记id public static synchronized long getNewNoteId(Context context, long folderId) { // Create a new note in the database + //创建新笔记并插入数据库 ContentValues values = new ContentValues(); long createdTime = System.currentTimeMillis(); values.put(NoteColumns.CREATED_DATE, createdTime); @@ -65,46 +67,50 @@ public class Note { return noteId; } + // 构造函数 public Note() { mNoteDiffValues = new ContentValues(); mNoteData = new NoteData(); } + // 设置笔记值 public void setNoteValue(String key, String value) { mNoteDiffValues.put(key, value); mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1); mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis()); } + // 设置文本数据 public void setTextData(String key, String value) { mNoteData.setTextData(key, value); } + // 设置文本数据ID public void setTextDataId(long id) { mNoteData.setTextDataId(id); } - + // 获取文本数据ID public long getTextDataId() { return mNoteData.mTextDataId; } - + // 设置通话数据ID public void setCallDataId(long id) { mNoteData.setCallDataId(id); } - + // 设置通话数据 public void setCallData(String key, String value) { mNoteData.setCallData(key, value); } - + // 检查是否有本地修改 public boolean isLocalModified() { return mNoteDiffValues.size() > 0 || mNoteData.isLocalModified(); } - + // 同步笔记数据到ContentProvider public boolean syncNote(Context context, long noteId) { if (noteId <= 0) { throw new IllegalArgumentException("Wrong note id:" + noteId); } - + // 更新笔记基本信息 if (!isLocalModified()) { return true; } @@ -118,10 +124,12 @@ public class Note { ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), mNoteDiffValues, null, null) == 0) { Log.e(TAG, "Update note error, should not happen"); + // 即使更新失败也继续处理数据 // Do not return, fall through } mNoteDiffValues.clear(); + // 更新笔记关联数据 if (mNoteData.isLocalModified() && (mNoteData.pushIntoContentResolver(context, noteId) == null)) { return false; @@ -129,55 +137,54 @@ public class Note { return true; } - + // 内部类:管理笔记关联数据 private class NoteData { - private long mTextDataId; - - private ContentValues mTextDataValues; - - private long mCallDataId; - - private ContentValues mCallDataValues; + private long mTextDataId; // 文本数据ID + private ContentValues mTextDataValues; // 文本数据值 + private long mCallDataId; // 通话数据ID + private ContentValues mCallDataValues; // 通话数据值 private static final String TAG = "NoteData"; + // 构造函数 public NoteData() { mTextDataValues = new ContentValues(); mCallDataValues = new ContentValues(); mTextDataId = 0; mCallDataId = 0; } - + // 检查是否有本地修改 boolean isLocalModified() { return mTextDataValues.size() > 0 || mCallDataValues.size() > 0; } + // 设置文本数据ID void setTextDataId(long id) { if(id <= 0) { throw new IllegalArgumentException("Text data id should larger than 0"); } mTextDataId = id; } - + // 设置通话数据ID void setCallDataId(long id) { if (id <= 0) { throw new IllegalArgumentException("Call data id should larger than 0"); } mCallDataId = id; } - + // 设置通话数据 void setCallData(String key, String value) { mCallDataValues.put(key, value); mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1); mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis()); } - + // 设置文本数据 void setTextData(String key, String value) { mTextDataValues.put(key, value); mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1); mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis()); } - + // 将数据推送到ContentProvider Uri pushIntoContentResolver(Context context, long noteId) { /** * Check for safety @@ -189,9 +196,11 @@ public class Note { ArrayList operationList = new ArrayList(); ContentProviderOperation.Builder builder = null; + // 处理文本数据 if(mTextDataValues.size() > 0) { mTextDataValues.put(DataColumns.NOTE_ID, noteId); if (mTextDataId == 0) { + // 插入新文本数据 mTextDataValues.put(DataColumns.MIME_TYPE, TextNote.CONTENT_ITEM_TYPE); Uri uri = context.getContentResolver().insert(Notes.CONTENT_DATA_URI, mTextDataValues); @@ -203,6 +212,7 @@ public class Note { return null; } } else { + // 更新现有文本数据 builder = ContentProviderOperation.newUpdate(ContentUris.withAppendedId( Notes.CONTENT_DATA_URI, mTextDataId)); builder.withValues(mTextDataValues); @@ -211,9 +221,11 @@ public class Note { mTextDataValues.clear(); } + // 处理通话数据 if(mCallDataValues.size() > 0) { mCallDataValues.put(DataColumns.NOTE_ID, noteId); if (mCallDataId == 0) { + // 插入新通话数据 mCallDataValues.put(DataColumns.MIME_TYPE, CallNote.CONTENT_ITEM_TYPE); Uri uri = context.getContentResolver().insert(Notes.CONTENT_DATA_URI, mCallDataValues); @@ -225,6 +237,7 @@ public class Note { return null; } } else { + // 更新现有通话数据 builder = ContentProviderOperation.newUpdate(ContentUris.withAppendedId( Notes.CONTENT_DATA_URI, mCallDataId)); builder.withValues(mCallDataValues); @@ -233,6 +246,7 @@ public class Note { mCallDataValues.clear(); } + // 批量执行操作 if (operationList.size() > 0) { try { ContentProviderResult[] results = context.getContentResolver().applyBatch(