diff --git a/src/net/micode/notes/gtask/data/MetaData.java b/src/net/micode/notes/gtask/data/MetaData.java index 3a2050b..bf97b1e 100644 --- a/src/net/micode/notes/gtask/data/MetaData.java +++ b/src/net/micode/notes/gtask/data/MetaData.java @@ -16,12 +16,17 @@ package net.micode.notes.gtask.data; +//cursor类用于在Android中进行数据库查询操作的游标类 import android.database.Cursor; +//log类用于在Android应用程序中输出日志的类 import android.util.Log; +//GTaskStringUtils用于处理相关的字符串操作 import net.micode.notes.tool.GTaskStringUtils; +//JSONException类用于JSON解析过程中可能出现的异常类 import org.json.JSONException; +//JSONObject类用于在Java中创建和操作JSON对象的类 import org.json.JSONObject; @@ -29,30 +34,38 @@ public class MetaData extends Task { private final static String TAG = MetaData.class.getSimpleName(); private String mRelatedGid = null; - + + //此函数用于设置元数据信息,首先接受两个参数gid(字符串类型)和metainfo,gid是Goole任务的ID,metainfo是包含元数据信息的JSON对象。 public void setMeta(String gid, JSONObject metaInfo) { + //在try-catch块中,首先使用put方法将gid添加到metainfo中,如果添加失败,会抛出JSONException异常,然后在catch块中通过日志输出错误信息。 try { metaInfo.put(GTaskStringUtils.META_HEAD_GTASK_ID, gid); + } catch (JSONException e) { Log.e(TAG, "failed to put related gid"); } + //然后将metainfo转换为字符串并调用setNotes方法进行设置。 setNotes(metaInfo.toString()); setName(GTaskStringUtils.META_NOTE_NAME); } + //获取相关联的gid public String getRelatedGid() { return mRelatedGid; } + //判断当前数据是否为空,若为空则返回真值并保存。 @Override public boolean isWorthSaving() { return getNotes() != null; } - + + //这段代码是对note类中setContentByRemoteJSON的重写,作用是通过远程JSON数据设置笔记里的内容 @Override public void setContentByRemoteJSON(JSONObject js) { super.setContentByRemoteJSON(js); if (getNotes() != null) { + //在 try-catch 块中,尝试从JSON对象中获取相关的任务 ID,并将其赋值给成员变量mRelatedGid,如果获取失败或者注释不是有效的 JSON 格式,则将 mRelatedGid 设为 null。 try { JSONObject metaInfo = new JSONObject(getNotes().trim()); mRelatedGid = metaInfo.getString(GTaskStringUtils.META_HEAD_GTASK_ID); @@ -63,17 +76,20 @@ 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/src/net/micode/notes/gtask/data/Node.java b/src/net/micode/notes/gtask/data/Node.java index 63950e0..a0666a5 100644 --- a/src/net/micode/notes/gtask/data/Node.java +++ b/src/net/micode/notes/gtask/data/Node.java @@ -20,30 +20,31 @@ 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_NONE = 0;//本地和云端都无可更新内容(即本地和云端内容一致) - public static final int SYNC_ACTION_ADD_REMOTE = 1; + public static final int SYNC_ACTION_ADD_REMOTE = 1;//在云端增加内容 - public static final int SYNC_ACTION_ADD_LOCAL = 2; + 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_REMOTE = 3;//在云端删除内容 - public static final int SYNC_ACTION_DEL_LOCAL = 4; + 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_REMOTE = 5;//将本地内容更新到云端 - public static final int SYNC_ACTION_UPDATE_LOCAL = 6; + public static final int SYNC_ACTION_UPDATE_LOCAL = 6;//将云端内容更新到本地 - public static final int SYNC_ACTION_UPDATE_CONFLICT = 7; + public static final int SYNC_ACTION_UPDATE_CONFLICT = 7;//同步出现冲突 - public static final int SYNC_ACTION_ERROR = 8; + public static final int SYNC_ACTION_ERROR = 8;//同步出现错误 private String mGid; private String mName; - private long mLastModified; + private long mLastModified;//记录最后一次修改时间 private boolean mDeleted; @@ -54,46 +55,60 @@ public abstract class Node { mDeleted = false; } + //根据操作ID获取用于创建节点的 JSON 对象。 public abstract JSONObject getCreateAction(int actionId); + //根据操作ID获取用于更新节点的 JSON 对象。 public abstract JSONObject getUpdateAction(int actionId); + //根据云端JSON数据设置节点的内容。 public abstract void setContentByRemoteJSON(JSONObject js); + //根据本地JSON数据设置节点的内容。 public abstract void setContentByLocalJSON(JSONObject js); + //根据节点的内容生成本地 JSON 对象。 public abstract JSONObject getLocalJSONFromContent(); + //根据游标获取同步操作类型。 public abstract int getSyncAction(Cursor c); + //用于记录用于标识节点的ID public void setGid(String gid) { this.mGid = gid; } + //用于记录节点名称 public void setName(String name) { this.mName = name; } - + + //用于记录节点最后的修改时间 public void setLastModified(long lastModified) { this.mLastModified = lastModified; } + //用于表示节点是否删除 public void setDeleted(boolean deleted) { this.mDeleted = deleted; } + //返回用于标识节点的ID public String getGid() { return this.mGid; } + //用于返回节点名称 public String getName() { return this.mName; } + //返回节点最后的修改时间 public long getLastModified() { return this.mLastModified; } + //判断节点是否删除 public boolean getDeleted() { return this.mDeleted; }