diff --git a/src/mi_note/app/src/main/java/net/micode/notes/data/Notes.java b/src/mi_note/app/src/main/java/net/micode/notes/data/Notes.java index 3b63a63..0ffdf43 100644 --- a/src/mi_note/app/src/main/java/net/micode/notes/data/Notes.java +++ b/src/mi_note/app/src/main/java/net/micode/notes/data/Notes.java @@ -317,12 +317,12 @@ public class Notes { } /** - * 数据字段接口的实现,调用便签 + * 数据字段接口的实现,电话内容 */ public static final class CallNote implements DataColumns { /** * Call date for this record - * 调用日期 + * 通话日期 *
Type: INTEGER (long)
*/ public static final String CALL_DATE = DATA1; diff --git a/src/mi_note/app/src/main/java/net/micode/notes/data/NotesProvider.java b/src/mi_note/app/src/main/java/net/micode/notes/data/NotesProvider.java index faa5b85..356f87d 100644 --- a/src/mi_note/app/src/main/java/net/micode/notes/data/NotesProvider.java +++ b/src/mi_note/app/src/main/java/net/micode/notes/data/NotesProvider.java @@ -38,7 +38,7 @@ import net.micode.notes.data.NotesDatabaseHelper.TABLE; * @author hzx * 版本:1.0 * 创建日期:2023/10/28 - * 描述:NotesProvider 便签内容提供者 + * 描述:NotesProvider 便签内容提供者 向外提供便签增删改查的接口 */ public class NotesProvider extends ContentProvider { // Uri匹配器 diff --git a/src/mi_note/app/src/main/java/net/micode/notes/model/Note.java b/src/mi_note/app/src/main/java/net/micode/notes/model/Note.java index a3bbe22..23714e3 100644 --- a/src/mi_note/app/src/main/java/net/micode/notes/model/Note.java +++ b/src/mi_note/app/src/main/java/net/micode/notes/model/Note.java @@ -38,14 +38,21 @@ import java.util.ArrayList; * @author hzx * 版本:1.0 * 创建日期:2023/10/28 - * 描述:Note + * 描述:Note 便签模型类 */ public class Note { + // 便签内容 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,以便将新的便签添加到数据库中 线程安全 + * @param context 上下文 + * @param folderId 文件夹ID + * @return long 便签ID */ public static synchronized long getNewNoteId(Context context, long folderId) { // Create a new note in the database @@ -60,8 +67,10 @@ public class Note { long noteId = 0; try { + // 从uri中获取便签ID noteId = Long.valueOf(uri.getPathSegments().get(1)); } catch (NumberFormatException e) { + // 从uri中获取便签ID失败 Log.e(TAG, "Get note id error :" + e.toString()); noteId = 0; } @@ -76,42 +85,81 @@ public class Note { mNoteData = new NoteData(); } + /** + * 将键值对存入mNoteDiffValues中 + * @param key 键 + * @param value 值 + */ public void setNoteValue(String key, String value) { mNoteDiffValues.put(key, value); mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1); mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis()); } + /** + * 将文本数据存入到mNoteData中 + * @param key 键 + * @param value 值 + */ public void setTextData(String key, String value) { mNoteData.setTextData(key, value); } + /** + * 设置mNoteData的文本数据id + * @param id 文本数据id + */ public void setTextDataId(long id) { mNoteData.setTextDataId(id); } + /** + * 获取mNoteData的文本数据id + * @return 文本数据id + */ public long getTextDataId() { return mNoteData.mTextDataId; } + /** + * 设置mNoteData的电话号码数据id + * @param id 电话号码数据id + */ public void setCallDataId(long id) { mNoteData.setCallDataId(id); } + /** + * 设置mNoteData的电话号码数据 + * @param key 键 + * @param value 值 + */ public void setCallData(String key, String value) { mNoteData.setCallData(key, value); } + /** + * 是否便签被本地修改 便签本身(mNoteDiffValues)被修改或便签的内容数据(mNoteData)被修改 + * @return true or false + */ public boolean isLocalModified() { return mNoteDiffValues.size() > 0 || mNoteData.isLocalModified(); } + /** + * 同步便签 + * @param context 上下文 + * @param noteId 便签ID + * @return boolean 是否成功 + */ public boolean syncNote(Context context, long noteId) { if (noteId <= 0) { + // 便签ID不合法 throw new IllegalArgumentException("Wrong note id:" + noteId); } if (!isLocalModified()) { + // 如果便签没有被本地修改,直接返回true,不用同步了 return true; } @@ -123,41 +171,61 @@ public class Note { if (context.getContentResolver().update( 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; } return true; } + /** + * 便签数据类 + */ private class NoteData { + // 文本数据ID private long mTextDataId; + // 文本数据修改内容,修改了但没写入数据库 private ContentValues mTextDataValues; + // 电话号码数据ID private long mCallDataId; + // 电话号码数据修改内容 private ContentValues mCallDataValues; private static final String TAG = "NoteData"; public NoteData() { + // 初始化 mTextDataValues = new ContentValues(); mCallDataValues = new ContentValues(); mTextDataId = 0; mCallDataId = 0; } + /** + * 便签内容是否被本地修改 + * @return true or false + */ boolean isLocalModified() { return mTextDataValues.size() > 0 || mCallDataValues.size() > 0; } + /** + * 设置文本数据id + * @param id 文本数据id + */ void setTextDataId(long id) { if(id <= 0) { throw new IllegalArgumentException("Text data id should larger than 0"); @@ -165,6 +233,10 @@ public class Note { mTextDataId = id; } + /** + * 设置电话号码数据id + * @param id 电话号码数据id + */ void setCallDataId(long id) { if (id <= 0) { throw new IllegalArgumentException("Call data id should larger than 0"); @@ -172,75 +244,107 @@ public class Note { mCallDataId = id; } + /** + * 设置电话号码数据 + * @param key 键 + * @param value 值 + */ void setCallData(String key, String value) { mCallDataValues.put(key, value); mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1); mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis()); } + /** + * 设置便签文本数据 + * @param key 键 + * @param value 值 + */ void setTextData(String key, String value) { mTextDataValues.put(key, value); mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1); mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis()); } + /** + * 将更新的文本数据mTextDataValues和电话号码数据mCallDataValues插入或更新到数据库 + * @param context 上下文 + * @param noteId 便签ID + * @return 便签内容Uri + */ Uri pushIntoContentResolver(Context context, long noteId) { - /** - * Check for safety - */ + // 检查便签ID是否合法 if (noteId <= 0) { throw new IllegalArgumentException("Wrong note id:" + noteId); } + // 操作列表 ArrayList