diff --git a/src/net/micode/notes/gtask/data/TaskList.java b/src/net/micode/notes/gtask/data/TaskList.java index f36b69a..b2fb382 100644 --- a/src/net/micode/notes/gtask/data/TaskList.java +++ b/src/net/micode/notes/gtask/data/TaskList.java @@ -34,35 +34,35 @@ public class TaskList extends Node { private static final String TAG = TaskList.class.getSimpleName(); private int mIndex; - //表示TaskList在其父节点下的索引位置。 + //琛ㄧずTaskList鍦ㄥ叾鐖惰妭鐐逛笅鐨勭储寮曚綅缃 private ArrayList mChildren; - //表示TaskList的子任务列表 + //琛ㄧずTaskList鐨勫瓙浠诲姟鍒楄〃 public TaskList() { super(); mChildren = new ArrayList(); mIndex = 1; - }//初始化 + }//鍒濆鍖 public JSONObject getCreateAction(int actionId) { JSONObject js = new JSONObject(); try { - // action_type 操作类型为 "create" + // action_type 鎿嶄綔绫诲瀷涓 "create" js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, GTaskStringUtils.GTASK_JSON_ACTION_TYPE_CREATE); - // action_id 由参数 actionId 指定的操作 ID + // action_id 鐢卞弬鏁 actionId 鎸囧畾鐨勬搷浣 ID js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); - // index Google 任务清单的索引值 + // index Google 浠诲姟娓呭崟鐨勭储寮曞 js.put(GTaskStringUtils.GTASK_JSON_INDEX, mIndex); - // entity_delta 实体数据的 JSON 对象 + // entity_delta 瀹炰綋鏁版嵁鐨 JSON 瀵硅薄 JSONObject entity = new JSONObject(); - entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName());//Google 任务清单的名称 - entity.put(GTaskStringUtils.GTASK_JSON_CREATOR_ID, "null");//创建该清单的用户的 ID + entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName());//Google 浠诲姟娓呭崟鐨勫悕绉 + entity.put(GTaskStringUtils.GTASK_JSON_CREATOR_ID, "null");//鍒涘缓璇ユ竻鍗曠殑鐢ㄦ埛鐨 ID entity.put(GTaskStringUtils.GTASK_JSON_ENTITY_TYPE, - GTaskStringUtils.GTASK_JSON_TYPE_GROUP);//任务清单 + GTaskStringUtils.GTASK_JSON_TYPE_GROUP);//浠诲姟娓呭崟 js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); } catch (JSONException e) { @@ -72,26 +72,26 @@ public class TaskList extends Node { } return js; - }//创建Google任务清单的JSON对象 + }//鍒涘缓Google浠诲姟娓呭崟鐨凧SON瀵硅薄 public JSONObject getUpdateAction(int actionId) { JSONObject js = new JSONObject(); try { - // action_type 动作类型,此处为“update”表示更新操作 + // action_type 鍔ㄤ綔绫诲瀷锛屾澶勪负鈥渦pdate鈥濊〃绀烘洿鏂版搷浣 js.put(GTaskStringUtils.GTASK_JSON_ACTION_TYPE, GTaskStringUtils.GTASK_JSON_ACTION_TYPE_UPDATE); - // action_id 动作ID,用于标识此次操作 + // action_id 鍔ㄤ綔ID锛岀敤浜庢爣璇嗘娆℃搷浣 js.put(GTaskStringUtils.GTASK_JSON_ACTION_ID, actionId); - // id 任务列表ID + // id 浠诲姟鍒楄〃ID js.put(GTaskStringUtils.GTASK_JSON_ID, getGid()); - // entity_delta 实体增量,即更新的具体内容 + // entity_delta 瀹炰綋澧為噺锛屽嵆鏇存柊鐨勫叿浣撳唴瀹 JSONObject entity = new JSONObject(); - entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName());//name:任务列表名称 - entity.put(GTaskStringUtils.GTASK_JSON_DELETED, getDeleted());//deleted:是否已删除 + entity.put(GTaskStringUtils.GTASK_JSON_NAME, getName());//name锛氫换鍔″垪琛ㄥ悕绉 + entity.put(GTaskStringUtils.GTASK_JSON_DELETED, getDeleted());//deleted锛氭槸鍚﹀凡鍒犻櫎 js.put(GTaskStringUtils.GTASK_JSON_ENTITY_DELTA, entity); } catch (JSONException e) { @@ -101,7 +101,7 @@ public class TaskList extends Node { } return js; - }//生成一个Google任务列表的更新操作的JSON对象 + }//鐢熸垚涓涓狦oogle浠诲姟鍒楄〃鐨勬洿鏂版搷浣滅殑JSON瀵硅薄 public void setContentByRemoteJSON(JSONObject js) { if (js != null) { @@ -120,19 +120,19 @@ public class TaskList extends Node { if (js.has(GTaskStringUtils.GTASK_JSON_NAME)) { setName(js.getString(GTaskStringUtils.GTASK_JSON_NAME)); } - //尝试解析其id、last_modified和name属性,相应地设置任务列表的gid、lastModified和name属性 + //灏濊瘯瑙f瀽鍏秈d銆乴ast_modified鍜宯ame灞炴,鐩稿簲鍦拌缃换鍔″垪琛ㄧ殑gid銆乴astModified鍜宯ame灞炴 } catch (JSONException e) { Log.e(TAG, e.toString()); e.printStackTrace(); throw new ActionFailureException("fail to get tasklist content from jsonobject"); - }//发生异常,则记录错误日志并抛出ActionFailureException异常 + }//鍙戠敓寮傚父锛屽垯璁板綍閿欒鏃ュ織骞舵姏鍑篈ctionFailureException寮傚父 } - }//解析从服务器返回的JSON对象并设置相应的任务列表属性 + }//瑙f瀽浠庢湇鍔″櫒杩斿洖鐨凧SON瀵硅薄骞惰缃浉搴旂殑浠诲姟鍒楄〃灞炴 public void setContentByLocalJSON(JSONObject js) { if (js == null || !js.has(GTaskStringUtils.META_HEAD_NOTE)) { Log.w(TAG, "setContentByLocalJSON: nothing is avaiable"); - }//判断传入的 JSON 是否为空或者是否包含头部信息,如果不包含则打印警告日志并返回 + }//鍒ゆ柇浼犲叆鐨 JSON 鏄惁涓虹┖鎴栬呮槸鍚﹀寘鍚ご閮ㄤ俊鎭紝濡傛灉涓嶅寘鍚垯鎵撳嵃璀﹀憡鏃ュ織骞惰繑鍥 try { JSONObject folder = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE); @@ -140,7 +140,7 @@ public class TaskList extends Node { if (folder.getInt(NoteColumns.TYPE) == Notes.TYPE_FOLDER) { String name = folder.getString(NoteColumns.SNIPPET); setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX + name); - }//是文件夹则将文件夹的名称设置为当前笔记本的名称,名称前加上前缀 + }//鏄枃浠跺す鍒欏皢鏂囦欢澶圭殑鍚嶇О璁剧疆涓哄綋鍓嶇瑪璁版湰鐨勫悕绉帮紝鍚嶇О鍓嶅姞涓婂墠缂 else if (folder.getInt(NoteColumns.TYPE) == Notes.TYPE_SYSTEM) { if (folder.getLong(NoteColumns.ID) == Notes.ID_ROOT_FOLDER) setName(GTaskStringUtils.MIUI_FOLDER_PREFFIX + GTaskStringUtils.FOLDER_DEFAULT); @@ -149,31 +149,31 @@ public class TaskList extends Node { + GTaskStringUtils.FOLDER_CALL_NOTE); else Log.e(TAG, "invalid system folder"); - }//是系统类型的笔记,则根据笔记的 ID 判断是默认文件夹还是通话记录文件夹,并设置相应的名称 + }//鏄郴缁熺被鍨嬬殑绗旇锛屽垯鏍规嵁绗旇鐨 ID 鍒ゆ柇鏄粯璁ゆ枃浠跺す杩樻槸閫氳瘽璁板綍鏂囦欢澶癸紝骞惰缃浉搴旂殑鍚嶇О else { Log.e(TAG, "error type"); - }//不是文件夹也不是系统类型,则打印错误日志 + }//涓嶆槸鏂囦欢澶逛篃涓嶆槸绯荤粺绫诲瀷锛屽垯鎵撳嵃閿欒鏃ュ織 } catch (JSONException e) { Log.e(TAG, e.toString()); e.printStackTrace(); } - }//解析其中的笔记信息,并设置到当前对象中 + }//瑙f瀽鍏朵腑鐨勭瑪璁颁俊鎭紝骞惰缃埌褰撳墠瀵硅薄涓 public JSONObject getLocalJSONFromContent() { try { JSONObject js = new JSONObject(); JSONObject folder = new JSONObject(); - String folderName = getName();//获取TaskList对象的名称 - if (getName().startsWith(GTaskStringUtils.MIUI_FOLDER_PREFFIX))//判断是否以指定前缀GTaskStringUtils.MIUI_FOLDER_PREFFIX开头 + String folderName = getName();//鑾峰彇TaskList瀵硅薄鐨勫悕绉 + if (getName().startsWith(GTaskStringUtils.MIUI_FOLDER_PREFFIX))//鍒ゆ柇鏄惁浠ユ寚瀹氬墠缂GTaskStringUtils.MIUI_FOLDER_PREFFIX寮澶 folderName = folderName.substring(GTaskStringUtils.MIUI_FOLDER_PREFFIX.length(), - folderName.length());//是,则将前缀截去,得到真正的名称 + folderName.length());//鏄紝鍒欏皢鍓嶇紑鎴幓锛屽緱鍒扮湡姝g殑鍚嶇О folder.put(NoteColumns.SNIPPET, folderName); - if (folderName.equals(GTaskStringUtils.FOLDER_DEFAULT)//名称为默认名称 + if (folderName.equals(GTaskStringUtils.FOLDER_DEFAULT)//鍚嶇О涓洪粯璁ゅ悕绉 || folderName.equals(GTaskStringUtils.FOLDER_CALL_NOTE)) - folder.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM);//置folder对象的类型为Notes.TYPE_SYSTEM - else//为来电记事本名称 - folder.put(NoteColumns.TYPE, Notes.TYPE_FOLDER);//设置folder对象的类型为Notes.TYPE_FOLDER + folder.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM);//缃甪older瀵硅薄鐨勭被鍨嬩负Notes.TYPE_SYSTEM + else//涓烘潵鐢佃浜嬫湰鍚嶇О + folder.put(NoteColumns.TYPE, Notes.TYPE_FOLDER);//璁剧疆folder瀵硅薄鐨勭被鍨嬩负Notes.TYPE_FOLDER js.put(GTaskStringUtils.META_HEAD_NOTE, folder); @@ -182,31 +182,31 @@ public class TaskList extends Node { Log.e(TAG, e.toString()); e.printStackTrace(); return null; - }//有异常发生,会打印错误日志并返回null - }//将TaskList对象的名称转换成本地JSON格式 + }//鏈夊紓甯稿彂鐢燂紝浼氭墦鍗伴敊璇棩蹇楀苟杩斿洖null + }//灏員askList瀵硅薄鐨勫悕绉拌浆鎹㈡垚鏈湴JSON鏍煎紡 public int getSyncAction(Cursor c) { try { if (c.getInt(SqlNote.LOCAL_MODIFIED_COLUMN) == 0) {// - // there is no local update 表示没有本地更新 + // there is no local update 琛ㄧず娌℃湁鏈湴鏇存柊 if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { - // no update both side 没有任何更新 + // no update both side 娌℃湁浠讳綍鏇存柊 return SYNC_ACTION_NONE; } else { - // apply remote to local 表示需要将远程的更新应用到本地 + // apply remote to local 琛ㄧず闇瑕佸皢杩滅▼鐨勬洿鏂板簲鐢ㄥ埌鏈湴 return SYNC_ACTION_UPDATE_LOCAL; } } else { - // validate gtask id 验证 GTASK_ID_COLUMN 列的值是否等于 getGid() 方法返回的值 + // validate gtask id 楠岃瘉 GTASK_ID_COLUMN 鍒楃殑鍊兼槸鍚︾瓑浜 getGid() 鏂规硶杩斿洖鐨勫 if (!c.getString(SqlNote.GTASK_ID_COLUMN).equals(getGid())) { Log.e(TAG, "gtask id doesn't match"); - return SYNC_ACTION_ERROR;//异常 + return SYNC_ACTION_ERROR;//寮傚父 } if (c.getLong(SqlNote.SYNC_ID_COLUMN) == getLastModified()) { - // local modification only 表示只有本地有修改,需要将其同步到远程 + // local modification only 琛ㄧず鍙湁鏈湴鏈変慨鏀癸紝闇瑕佸皢鍏跺悓姝ュ埌杩滅▼ return SYNC_ACTION_UPDATE_REMOTE; } else { - // for folder conflicts, just apply local modification 需要优先应用本地的修改 + // for folder conflicts, just apply local modification 闇瑕佷紭鍏堝簲鐢ㄦ湰鍦扮殑淇敼 return SYNC_ACTION_UPDATE_REMOTE; } } @@ -216,37 +216,37 @@ public class TaskList extends Node { } return SYNC_ACTION_ERROR; - }//检查了 Cursor 对象中的某些属性值,以确定需要执行哪些同步操作 + }//妫鏌ヤ簡 Cursor 瀵硅薄涓殑鏌愪簺灞炴у硷紝浠ョ‘瀹氶渶瑕佹墽琛屽摢浜涘悓姝ユ搷浣 public int getChildTaskCount() { return mChildren.size(); - }//返回私有变量 mChildren 列表的大小。 + }//杩斿洖绉佹湁鍙橀噺 mChildren 鍒楄〃鐨勫ぇ灏忋 public boolean addChildTask(Task task) { boolean ret = false; - if (task != null && !mChildren.contains(task)) {//判断传入的任务对象 task 是否为空,以及当前对象的子任务列表 mChildren 是否已包含该任务 - ret = mChildren.add(task);//将该任务添加到 mChildren 列表中 + if (task != null && !mChildren.contains(task)) {//鍒ゆ柇浼犲叆鐨勪换鍔″璞 task 鏄惁涓虹┖锛屼互鍙婂綋鍓嶅璞$殑瀛愪换鍔″垪琛 mChildren 鏄惁宸插寘鍚浠诲姟 + ret = mChildren.add(task);//灏嗚浠诲姟娣诲姞鍒 mChildren 鍒楄〃涓 if (ret) { // need to set prior sibling and parent task.setPriorSibling(mChildren.isEmpty() ? null : mChildren .get(mChildren.size() - 1)); task.setParent(this); - }//若添加成功,则需要对该任务进行设置其前一个同级任务和父级任务。 + }//鑻ユ坊鍔犳垚鍔燂紝鍒欓渶瑕佸璇ヤ换鍔¤繘琛岃缃叾鍓嶄竴涓悓绾т换鍔″拰鐖剁骇浠诲姟銆 } return ret; - }//向当前对象添加一个子任务的操作是否成功 + }//鍚戝綋鍓嶅璞℃坊鍔犱竴涓瓙浠诲姟鐨勬搷浣滄槸鍚︽垚鍔 public boolean addChildTask(Task task, int index) { if (index < 0 || index > mChildren.size()) { Log.e(TAG, "add child task: invalid index"); return false; - }//判断传入的 index 是否在合法范围内 + }//鍒ゆ柇浼犲叆鐨 index 鏄惁鍦ㄥ悎娉曡寖鍥村唴 - int pos = mChildren.indexOf(task);//查找任务列表中是否已包含传入的任务对象 task - if (task != null && pos == -1) {//未包含该任务 - mChildren.add(index, task);//将其插入到 index 指定的位置 + int pos = mChildren.indexOf(task);//鏌ユ壘浠诲姟鍒楄〃涓槸鍚﹀凡鍖呭惈浼犲叆鐨勪换鍔″璞 task + if (task != null && pos == -1) {//鏈寘鍚浠诲姟 + mChildren.add(index, task);//灏嗗叾鎻掑叆鍒 index 鎸囧畾鐨勪綅缃 - // update the task list 更新插入任务的前一个同级任务和后一个同级任务的引用 + // update the task list 鏇存柊鎻掑叆浠诲姟鐨勫墠涓涓悓绾т换鍔″拰鍚庝竴涓悓绾т换鍔$殑寮曠敤 Task preTask = null; Task afterTask = null; if (index != 0) @@ -257,89 +257,89 @@ public class TaskList extends Node { task.setPriorSibling(preTask); if (afterTask != null) afterTask.setPriorSibling(task); - }//返回 true 表示添加任务成功,否则返回 false。 + }//杩斿洖 true 琛ㄧず娣诲姞浠诲姟鎴愬姛锛屽惁鍒欒繑鍥 false銆 return true; - }//表示向当前对象的子任务列表指定位置添加一个任务的操作是否成功 + }//琛ㄧず鍚戝綋鍓嶅璞$殑瀛愪换鍔″垪琛ㄦ寚瀹氫綅缃坊鍔犱竴涓换鍔$殑鎿嶄綔鏄惁鎴愬姛 public boolean removeChildTask(Task task) { boolean ret = false; - int index = mChildren.indexOf(task);//查找传入的任务对象 task 在子任务列表中的索引位置 - if (index != -1) {//该任务在子任务列表中存在 - ret = mChildren.remove(task);//移除该任务 + int index = mChildren.indexOf(task);//鏌ユ壘浼犲叆鐨勪换鍔″璞 task 鍦ㄥ瓙浠诲姟鍒楄〃涓殑绱㈠紩浣嶇疆 + if (index != -1) {//璇ヤ换鍔″湪瀛愪换鍔″垪琛ㄤ腑瀛樺湪 + ret = mChildren.remove(task);//绉婚櫎璇ヤ换鍔 if (ret) { - // reset prior sibling and parent 更新被移除任务的前一个同级任务和父级任务的引用 + // reset prior sibling and parent 鏇存柊琚Щ闄や换鍔$殑鍓嶄竴涓悓绾т换鍔″拰鐖剁骇浠诲姟鐨勫紩鐢 task.setPriorSibling(null); task.setParent(null); // update the task list - if (index != mChildren.size()) {//该任务不是子任务列表的最后一个任务 + if (index != mChildren.size()) {//璇ヤ换鍔′笉鏄瓙浠诲姟鍒楄〃鐨勬渶鍚庝竴涓换鍔 mChildren.get(index).setPriorSibling( index == 0 ? null : mChildren.get(index - 1)); - }//更新其后一个同级任务的前一个同级任务的引用 + }//鏇存柊鍏跺悗涓涓悓绾т换鍔$殑鍓嶄竴涓悓绾т换鍔$殑寮曠敤 } } return ret; - }//表示从当前对象的子任务列表中移除一个指定任务的操作是否成功 + }//琛ㄧず浠庡綋鍓嶅璞$殑瀛愪换鍔″垪琛ㄤ腑绉婚櫎涓涓寚瀹氫换鍔$殑鎿嶄綔鏄惁鎴愬姛 public boolean moveChildTask(Task task, int index) { if (index < 0 || index >= mChildren.size()) { Log.e(TAG, "move child task: invalid index"); return false; - }//判断传入的 index 是否在合法范围内 + }//鍒ゆ柇浼犲叆鐨 index 鏄惁鍦ㄥ悎娉曡寖鍥村唴 int pos = mChildren.indexOf(task); if (pos == -1) { Log.e(TAG, "move child task: the task should in the list"); return false; - }//查找子任务列表中是否包含传入的任务对象 task + }//鏌ユ壘瀛愪换鍔″垪琛ㄤ腑鏄惁鍖呭惈浼犲叆鐨勪换鍔″璞 task - if (pos == index)//任务在子任务列表中的位置已经是 index + if (pos == index)//浠诲姟鍦ㄥ瓙浠诲姟鍒楄〃涓殑浣嶇疆宸茬粡鏄 index return true; return (removeChildTask(task) && addChildTask(task, index)); - }//表示将当前对象子任务列表中的一个任务移动到指定位置的操作是否成功 + }//琛ㄧず灏嗗綋鍓嶅璞″瓙浠诲姟鍒楄〃涓殑涓涓换鍔$Щ鍔ㄥ埌鎸囧畾浣嶇疆鐨勬搷浣滄槸鍚︽垚鍔 public Task findChildTaskByGid(String gid) { - for (int i = 0; i < mChildren.size(); i++) {//遍历当前对象子任务列表中的所有任务 + for (int i = 0; i < mChildren.size(); i++) {//閬嶅巻褰撳墠瀵硅薄瀛愪换鍔″垪琛ㄤ腑鐨勬墍鏈変换鍔 Task t = mChildren.get(i); - if (t.getGid().equals(gid)) {//任务的 gid 属性与传入的 gid 相同 + if (t.getGid().equals(gid)) {//浠诲姟鐨 gid 灞炴т笌浼犲叆鐨 gid 鐩稿悓 return t; } } return null; - }//根据传入的 gid 在当前对象的子任务列表中查找并返回相应的任务对象 + }//鏍规嵁浼犲叆鐨 gid 鍦ㄥ綋鍓嶅璞$殑瀛愪换鍔″垪琛ㄤ腑鏌ユ壘骞惰繑鍥炵浉搴旂殑浠诲姟瀵硅薄 public int getChildTaskIndex(Task task) { return mChildren.indexOf(task); - }//表示当前对象子任务列表中传入任务对象 task 的索引位置 + }//琛ㄧず褰撳墠瀵硅薄瀛愪换鍔″垪琛ㄤ腑浼犲叆浠诲姟瀵硅薄 task 鐨勭储寮曚綅缃 public Task getChildTaskByIndex(int index) { - if (index < 0 || index >= mChildren.size()) {//判断传入的 index 是否在合法范围内 + if (index < 0 || index >= mChildren.size()) {//鍒ゆ柇浼犲叆鐨 index 鏄惁鍦ㄥ悎娉曡寖鍥村唴 Log.e(TAG, "getTaskByIndex: invalid index"); return null; } return mChildren.get(index); - }//表示当前对象子任务列表中指定索引位置 index 的任务对象 + }//琛ㄧず褰撳墠瀵硅薄瀛愪换鍔″垪琛ㄤ腑鎸囧畾绱㈠紩浣嶇疆 index 鐨勪换鍔″璞 public Task getChilTaskByGid(String gid) { - for (Task task : mChildren) {//遍历 - if (task.getGid().equals(gid))//若任务的 gid 属性与传入的 gid 相同,则返回该任务对象 + for (Task task : mChildren) {//閬嶅巻 + if (task.getGid().equals(gid))//鑻ヤ换鍔$殑 gid 灞炴т笌浼犲叆鐨 gid 鐩稿悓锛屽垯杩斿洖璇ヤ换鍔″璞 return task; } return null; - }//表示根据传入的 gid 在当前对象的子任务列表中查找并返回相应的任务对象 + }//琛ㄧず鏍规嵁浼犲叆鐨 gid 鍦ㄥ綋鍓嶅璞$殑瀛愪换鍔″垪琛ㄤ腑鏌ユ壘骞惰繑鍥炵浉搴旂殑浠诲姟瀵硅薄 public ArrayList getChildTaskList() { return this.mChildren; - }//表示当前对象的子任务列表 + }//琛ㄧず褰撳墠瀵硅薄鐨勫瓙浠诲姟鍒楄〃 public void setIndex(int index) { this.mIndex = index; - }//设置当前任务的索引位置 + }//璁剧疆褰撳墠浠诲姟鐨勭储寮曚綅缃 public int getIndex() { return this.mIndex; - }//返回当前任务在其父任务中的索引位置 + }//杩斿洖褰撳墠浠诲姟鍦ㄥ叾鐖朵换鍔′腑鐨勭储寮曚綅缃 }