From 68d7cbb5c58abd36c6d107834f7f117152a00328 Mon Sep 17 00:00:00 2001 From: KasumizawaMiyu Date: Tue, 28 Mar 2023 21:45:58 +0800 Subject: [PATCH] ,-.,-. ,| /-./_ ( (___ | 'o \) ; / | ,_/ (( \) )`---.__ /( / , . `' \ / | | `. ) | | __,'| `-->___<--' | | | | ; ; | ( / \ `. ) ,j ;' `-' )-' | | / / | /| (_ ; (_( ) ( )`--' `---' Signed-off-by: KasumizawaMiyu --- .../net/micode/notes/gtask/data/MetaData.java | 20 +++++----- .../net/micode/notes/gtask/data/Node.java | 23 ++++++------ .../net/micode/notes/gtask/data/SqlData.java | 27 +++++++------- .../net/micode/notes/gtask/data/SqlNote.java | 37 ++++++++++--------- .../net/micode/notes/gtask/data/Task.java | 24 ++++++------ .../net/micode/notes/gtask/data/TaskList.java | 26 ++++++------- 6 files changed, 82 insertions(+), 75 deletions(-) diff --git a/app/src/main/java/net/micode/notes/gtask/data/MetaData.java b/app/src/main/java/net/micode/notes/gtask/data/MetaData.java index 3a2050b..c4683e4 100644 --- a/app/src/main/java/net/micode/notes/gtask/data/MetaData.java +++ b/app/src/main/java/net/micode/notes/gtask/data/MetaData.java @@ -24,31 +24,33 @@ import net.micode.notes.tool.GTaskStringUtils; import org.json.JSONException; import org.json.JSONObject; - public class MetaData extends Task { - private final static String TAG = MetaData.class.getSimpleName(); + // 通过getSimpleName()获得类的gid并存入字符串中 + private final static String TAG = MetaData.class.getSimpleName(); private String mRelatedGid = null; - + // 设置元数据,生成元数据库 public void setMeta(String gid, JSONObject metaInfo) { try { + // 注释方法块 metaInfo.put(GTaskStringUtils.META_HEAD_GTASK_ID, gid); } catch (JSONException e) { + // 生成无法创建关联gid的日志 Log.e(TAG, "failed to put related gid"); } setNotes(metaInfo.toString()); setName(GTaskStringUtils.META_NOTE_NAME); } - + // 获取关联的gid public String getRelatedGid() { return mRelatedGid; } - + // 判断数据是否为空是否值得保存 @Override public boolean isWorthSaving() { return getNotes() != null; } - + // 使用远程json设置元数据内容 @Override public void setContentByRemoteJSON(JSONObject js) { super.setContentByRemoteJSON(js); @@ -62,18 +64,18 @@ public class MetaData extends Task { } } } - + // 使用本地json对象设置数据内容,该方法不应该被调用,若调用则抛出异常 @Override public void setContentByLocalJSON(JSONObject js) { // this function should not be called throw new IllegalAccessError("MetaData:setContentByLocalJSON should not be called"); } - + // 从元数据中获取本地json对象,该方法不应该被调用,若调用则抛出异常 @Override public JSONObject getLocalJSONFromContent() { throw new IllegalAccessError("MetaData:getLocalJSONFromContent should not be called"); } - + // 获取同步动作状态,该方法不应该被调用,若调用则抛出异常 @Override public int getSyncAction(Cursor c) { throw new IllegalAccessError("MetaData:getSyncAction should not be called"); diff --git a/app/src/main/java/net/micode/notes/gtask/data/Node.java b/app/src/main/java/net/micode/notes/gtask/data/Node.java index 63950e0..1484c14 100644 --- a/app/src/main/java/net/micode/notes/gtask/data/Node.java +++ b/app/src/main/java/net/micode/notes/gtask/data/Node.java @@ -19,32 +19,33 @@ package net.micode.notes.gtask.data; import android.database.Cursor; import org.json.JSONObject; - +// 对同步操作的基本节点进行一个定义 public abstract class Node { + // 本地和云端内容一致 public static final int SYNC_ACTION_NONE = 0; - + // 需要在远程云端增加内容 public static final int SYNC_ACTION_ADD_REMOTE = 1; - + // 需要在本地增加内容 public static final int SYNC_ACTION_ADD_LOCAL = 2; - + // 需要在远程云端和删除内容 public static final int SYNC_ACTION_DEL_REMOTE = 3; - + // 需要在本地删除内容 public static final int SYNC_ACTION_DEL_LOCAL = 4; - + // 需要将本地内容更新至云端 public static final int SYNC_ACTION_UPDATE_REMOTE = 5; - + // 需要将云端内容更新至本地 public static final int SYNC_ACTION_UPDATE_LOCAL = 6; - + // 同步冲突 public static final int SYNC_ACTION_UPDATE_CONFLICT = 7; - + // 同步错误 public static final int SYNC_ACTION_ERROR = 8; private String mGid; private String mName; - + // 记录最后一次修改的时间 private long mLastModified; - + // 表征是否被删除 private boolean mDeleted; public Node() { diff --git a/app/src/main/java/net/micode/notes/gtask/data/SqlData.java b/app/src/main/java/net/micode/notes/gtask/data/SqlData.java index d3ec3be..72ba013 100644 --- a/app/src/main/java/net/micode/notes/gtask/data/SqlData.java +++ b/app/src/main/java/net/micode/notes/gtask/data/SqlData.java @@ -13,7 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - +// Description:用于支持小米便签最底层的数据库相关操作,和sqlnote的关系上是子集关系,即data是note的子集(节点)。 +// SqlData其实就是也就是所谓数据中的数据 package net.micode.notes.gtask.data; import android.content.ContentResolver; @@ -34,17 +35,17 @@ import net.micode.notes.gtask.exception.ActionFailureException; import org.json.JSONException; import org.json.JSONObject; - public class SqlData { + // 将得到的内容写入字符串tag中 private static final String TAG = SqlData.class.getSimpleName(); - + // 设置无效id为-99999 private static final int INVALID_ID = -99999; - + // 集合interface DataColumns中所有sf常量 public static final String[] PROJECTION_DATA = new String[] { DataColumns.ID, DataColumns.MIME_TYPE, DataColumns.CONTENT, DataColumns.DATA1, DataColumns.DATA3 }; - + // 为sql表编号 public static final int DATA_ID_COLUMN = 0; public static final int DATA_MIME_TYPE_COLUMN = 1; @@ -56,7 +57,7 @@ public class SqlData { public static final int DATA_CONTENT_DATA_3_COLUMN = 4; private ContentResolver mContentResolver; - + // 判断是否用content生成,真为true,假为false private boolean mIsCreate; private long mDataId; @@ -70,7 +71,7 @@ public class SqlData { private String mDataContentData3; private ContentValues mDiffDataValues; - + // 初始化数据库的构造函数 public SqlData(Context context) { mContentResolver = context.getContentResolver(); mIsCreate = true; @@ -81,14 +82,14 @@ public class SqlData { mDataContentData3 = ""; mDiffDataValues = new ContentValues(); } - + // 初始化数据库的构造函数 public SqlData(Context context, Cursor c) { mContentResolver = context.getContentResolver(); mIsCreate = false; loadFromCursor(c); mDiffDataValues = new ContentValues(); } - + // 从游标处加载数据 private void loadFromCursor(Cursor c) { mDataId = c.getLong(DATA_ID_COLUMN); mDataMimeType = c.getString(DATA_MIME_TYPE_COLUMN); @@ -96,7 +97,7 @@ public class SqlData { mDataContentData1 = c.getLong(DATA_CONTENT_DATA_1_COLUMN); mDataContentData3 = c.getString(DATA_CONTENT_DATA_3_COLUMN); } - + // 设置用于共享的数据 public void setContent(JSONObject js) throws JSONException { long dataId = js.has(DataColumns.ID) ? js.getLong(DataColumns.ID) : INVALID_ID; if (mIsCreate || mDataId != dataId) { @@ -129,7 +130,7 @@ public class SqlData { } mDataContentData3 = dataContentData3; } - + // 获取共享数据的内容 public JSONObject getContent() throws JSONException { if (mIsCreate) { Log.e(TAG, "it seems that we haven't created this in database yet"); @@ -143,7 +144,7 @@ public class SqlData { js.put(DataColumns.DATA3, mDataContentData3); return js; } - + // 提交更改至数据库 public void commit(long noteId, boolean validateVersion, long version) { if (mIsCreate) { @@ -182,7 +183,7 @@ public class SqlData { mDiffDataValues.clear(); mIsCreate = false; } - + // 获取当前id public long getId() { return mDataId; } diff --git a/app/src/main/java/net/micode/notes/gtask/data/SqlNote.java b/app/src/main/java/net/micode/notes/gtask/data/SqlNote.java index 79a4095..be42a61 100644 --- a/app/src/main/java/net/micode/notes/gtask/data/SqlNote.java +++ b/app/src/main/java/net/micode/notes/gtask/data/SqlNote.java @@ -37,12 +37,15 @@ import org.json.JSONObject; import java.util.ArrayList; +// 用于支持小米便签最底层的数据库相关操作,和sqldata的关系上是父集关系,即note是data的子父集 +// 和SqlData相比SqlNote算是真正意义上的数据 public class SqlNote { + // 得到的类名写入tag中 private static final String TAG = SqlNote.class.getSimpleName(); private static final int INVALID_ID = -99999; - + // 集合了interface NoteColumns中所有SF常量 public static final String[] PROJECTION_NOTE = new String[] { NoteColumns.ID, NoteColumns.ALERTED_DATE, NoteColumns.BG_COLOR_ID, NoteColumns.CREATED_DATE, NoteColumns.HAS_ATTACHMENT, NoteColumns.MODIFIED_DATE, @@ -121,7 +124,7 @@ public class SqlNote { private ContentValues mDiffNoteValues; private ArrayList mDataList; - + // 构造函数,初始化context参数 public SqlNote(Context context) { mContext = context; mContentResolver = context.getContentResolver(); @@ -142,7 +145,7 @@ public class SqlNote { mDiffNoteValues = new ContentValues(); mDataList = new ArrayList(); } - + // 通过游标初始化context public SqlNote(Context context, Cursor c) { mContext = context; mContentResolver = context.getContentResolver(); @@ -165,7 +168,7 @@ public class SqlNote { mDiffNoteValues = new ContentValues(); } - + // 从游标加载数据 private void loadFromCursor(long id) { Cursor c = null; try { @@ -184,7 +187,7 @@ public class SqlNote { c.close(); } } - + // 从游标加载数据 private void loadFromCursor(Cursor c) { mId = c.getLong(ID_COLUMN); mAlertDate = c.getLong(ALERTED_DATE_COLUMN); @@ -199,7 +202,7 @@ public class SqlNote { mWidgetType = c.getInt(WIDGET_TYPE_COLUMN); mVersion = c.getLong(VERSION_COLUMN); } - + // 获取共享数据并加载到数据库当前游标处 private void loadDataContent() { Cursor c = null; mDataList.clear(); @@ -225,7 +228,7 @@ public class SqlNote { c.close(); } } - + // 设置通过content机制用于共享的数据信息 public boolean setContent(JSONObject js) { try { JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); @@ -358,7 +361,7 @@ public class SqlNote { } return true; } - + // 获取content机制提供的数据并加载到note中 public JSONObject getContent() { try { JSONObject js = new JSONObject(); @@ -406,40 +409,40 @@ public class SqlNote { } return null; } - + //给当前id设置父id public void setParentId(long id) { mParentId = id; mDiffNoteValues.put(NoteColumns.PARENT_ID, id); } - + // 给当前id设置Gtaskid 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) { if (mId == INVALID_ID && mDiffNoteValues.containsKey(NoteColumns.ID)) { diff --git a/app/src/main/java/net/micode/notes/gtask/data/Task.java b/app/src/main/java/net/micode/notes/gtask/data/Task.java index 6a19454..58097db 100644 --- a/app/src/main/java/net/micode/notes/gtask/data/Task.java +++ b/app/src/main/java/net/micode/notes/gtask/data/Task.java @@ -34,17 +34,17 @@ import org.json.JSONObject; public class Task extends Node { private static final String TAG = Task.class.getSimpleName(); - + // 完成判断 private boolean mCompleted; private String mNotes; - + // 实例化存储的数据类型 private JSONObject mMetaInfo; - + // 兄弟任务的指针 private Task mPriorSibling; - + // 父类指针 private TaskList mParent; - + // 初始化构造方法 public Task() { super(); mCompleted = false; @@ -53,7 +53,7 @@ public class Task extends Node { mParent = null; mMetaInfo = null; } - + // 用于创建jsonobject对象,获取创建新行为的操作 public JSONObject getCreateAction(int actionId) { JSONObject js = new JSONObject(); @@ -102,7 +102,7 @@ public class Task extends Node { return js; } - + // 用于创建jsonobject对象,实现创建更新行为的操作 public JSONObject getUpdateAction(int actionId) { JSONObject js = new JSONObject(); @@ -134,7 +134,7 @@ public class Task extends Node { return js; } - + // 用于从远端目录创建 public void setContentByRemoteJSON(JSONObject js) { if (js != null) { try { @@ -174,7 +174,7 @@ public class Task extends Node { } } } - + // 本地创建 public void setContentByLocalJSON(JSONObject js) { if (js == null || !js.has(GTaskStringUtils.META_HEAD_NOTE) || !js.has(GTaskStringUtils.META_HEAD_DATA)) { @@ -203,7 +203,7 @@ public class Task extends Node { e.printStackTrace(); } } - + // 从目录获取本地json public JSONObject getLocalJSONFromContent() { String name = getName(); try { @@ -246,7 +246,7 @@ public class Task extends Node { return null; } } - + // 设置meta信息 public void setMetaInfo(MetaData metaData) { if (metaData != null && metaData.getNotes() != null) { try { @@ -257,7 +257,7 @@ public class Task extends Node { } } } - + // 获取同步行为 public int getSyncAction(Cursor c) { try { JSONObject noteInfo = null; diff --git a/app/src/main/java/net/micode/notes/gtask/data/TaskList.java b/app/src/main/java/net/micode/notes/gtask/data/TaskList.java index 4ea21c5..5f48d1d 100644 --- a/app/src/main/java/net/micode/notes/gtask/data/TaskList.java +++ b/app/src/main/java/net/micode/notes/gtask/data/TaskList.java @@ -32,9 +32,9 @@ import java.util.ArrayList; public class TaskList extends Node { private static final String TAG = TaskList.class.getSimpleName(); - + // 当前TaskList的指针 private int mIndex; - + // 类中主要的保存数据的单元,用来实现一个以Task为元素的ArrayList private ArrayList mChildren; public TaskList() { @@ -42,7 +42,7 @@ public class TaskList extends Node { mChildren = new ArrayList(); mIndex = 1; } - + // 生成并返回一个包含了一定数据的JSONObject实体 public JSONObject getCreateAction(int actionId) { JSONObject js = new JSONObject(); @@ -73,7 +73,7 @@ public class TaskList extends Node { return js; } - + // 更新一个包含了一定数据的JSONObject实体 public JSONObject getUpdateAction(int actionId) { JSONObject js = new JSONObject(); @@ -215,11 +215,11 @@ public class TaskList extends Node { return SYNC_ACTION_ERROR; } - + // 获得TaskList的大小 public int getChildTaskCount() { return mChildren.size(); } - + // 在当前任务表末尾添加新的任务 public boolean addChildTask(Task task) { boolean ret = false; if (task != null && !mChildren.contains(task)) { @@ -233,7 +233,7 @@ public class TaskList extends Node { } return ret; } - + // 在当前任务表的指定位置添加新的任务 public boolean addChildTask(Task task, int index) { if (index < 0 || index > mChildren.size()) { Log.e(TAG, "add child task: invalid index"); @@ -259,7 +259,7 @@ public class TaskList extends Node { return true; } - + // 删除TaskList中的一个Task public boolean removeChildTask(Task task) { boolean ret = false; int index = mChildren.indexOf(task); @@ -280,7 +280,7 @@ public class TaskList extends Node { } return ret; } - + // 移动TaskList中的一个Task public boolean moveChildTask(Task task, int index) { if (index < 0 || index >= mChildren.size()) { @@ -298,7 +298,7 @@ public class TaskList extends Node { return true; return (removeChildTask(task) && addChildTask(task, index)); } - + // 按gid寻找Task public Task findChildTaskByGid(String gid) { for (int i = 0; i < mChildren.size(); i++) { Task t = mChildren.get(i); @@ -308,11 +308,11 @@ public class TaskList extends Node { } return null; } - + // 返回指定Task的index public int getChildTaskIndex(Task task) { return mChildren.indexOf(task); } - + // 返回指定index的Task public Task getChildTaskByIndex(int index) { if (index < 0 || index >= mChildren.size()) { Log.e(TAG, "getTaskByIndex: invalid index"); @@ -320,7 +320,7 @@ public class TaskList extends Node { } return mChildren.get(index); } - + // 返回指定gid的task public Task getChilTaskByGid(String gid) { for (Task task : mChildren) { if (task.getGid().equals(gid))