pull/8/head
dszubf 7 months ago
parent 98bd8e6a48
commit c5be0da1f1

@ -77,7 +77,7 @@ public class Contact {
// 如果查询结果不为空并且有数据 // 如果查询结果不为空并且有数据
if (cursor != null && cursor.moveToFirst()) { if (cursor != null && cursor.moveToFirst()) {
try { try {
// 获取查询结果中的联系人名称 // 获取查询结果中的联系人名称
String name = cursor.getString(0); String name = cursor.getString(0);
// 将结果缓存起来,以便后续查询直接使用缓存 // 将结果缓存起来,以便后续查询直接使用缓存

@ -24,7 +24,7 @@ import android.net.Uri;
*/ */
public class Notes { public class Notes {
// Content provider 的 authority用于在应用内唯一标识 Notes 数据。 // Content provider 的 authority用于在应用内唯一标识 Notes 数据。
public static final String AUTHORITY = "micode_notes"; public static final String AUTHORITY = "micode_notes";
// 用于日志输出的 TAG // 用于日志输出的 TAG

@ -32,7 +32,7 @@ import net.micode.notes.data.Notes.NoteColumns;
* *
*/ */
public class NotesDatabaseHelper extends SQLiteOpenHelper { public class NotesDatabaseHelper extends SQLiteOpenHelper {
// 数据库名称和版本 // 数据库名称和版本
private static final String DB_NAME = "note.db"; private static final String DB_NAME = "note.db";
private static final int DB_VERSION = 4; private static final int DB_VERSION = 4;

@ -1,3 +1,4 @@
/* /*
* Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
* *
@ -34,7 +35,7 @@ import net.micode.notes.data.Notes.NoteColumns;
import net.micode.notes.data.NotesDatabaseHelper.TABLE; import net.micode.notes.data.NotesDatabaseHelper.TABLE;
public class NotesProvider extends ContentProvider { public class NotesProvider extends ContentProvider {
// URI Matcher 用于将 URI 映射到相应的操作 // URI Matcher 用于将 URI 映射到相应的操作
private static final UriMatcher mMatcher; private static final UriMatcher mMatcher;
// 数据库帮助类实例 // 数据库帮助类实例
@ -208,4 +209,3 @@ public class NotesProvider extends ContentProvider {
* @return * @return
*/ */

@ -40,7 +40,7 @@ public class MetaData extends Task {
*/ */
public void setMeta(String gid, JSONObject metaInfo) { public void setMeta(String gid, JSONObject metaInfo) {
//对函数块进行注释 //对函数块进行注释
try { try {
metaInfo.put(GTaskStringUtils.META_HEAD_GTASK_ID, gid); metaInfo.put(GTaskStringUtils.META_HEAD_GTASK_ID, gid);
/* /*

@ -21,7 +21,7 @@ import android.database.Cursor;
import org.json.JSONObject; import org.json.JSONObject;
public abstract class Node { 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;// 需要在远程云端增加内容

@ -64,7 +64,7 @@ public class SqlData {
DataColumns.DATA3 DataColumns.DATA3
}; };
/** /**
* sql5 * sql5
*/ */
public static final int DATA_ID_COLUMN = 0; public static final int DATA_ID_COLUMN = 0;
@ -224,7 +224,7 @@ public class SqlData {
Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues, null, null); Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues, null, null);
} else { } else {
result = mContentResolver.update(ContentUris.withAppendedId( result = mContentResolver.update(ContentUris.withAppendedId(
Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues, Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues,
" ? in (SELECT " + NoteColumns.ID + " FROM " + TABLE.NOTE " ? in (SELECT " + NoteColumns.ID + " FROM " + TABLE.NOTE
+ " WHERE " + NoteColumns.VERSION + "=?)", new String[] { + " WHERE " + NoteColumns.VERSION + "=?)", new String[] {
String.valueOf(noteId), String.valueOf(version) String.valueOf(noteId), String.valueOf(version)

@ -58,7 +58,7 @@ public class SqlNote {
private static final int INVALID_ID = -99999; private static final int INVALID_ID = -99999;
/** /**
* NotesDataColumn * NotesDataColumn
*/ */
@ -191,7 +191,7 @@ public class SqlNote {
try { try {
c = mContentResolver.query(Notes.CONTENT_NOTE_URI, PROJECTION_NOTE, "(_id=?)", c = mContentResolver.query(Notes.CONTENT_NOTE_URI, PROJECTION_NOTE, "(_id=?)",
new String[] { new String[] {
String.valueOf(id) String.valueOf(id)
}, null); }, null);
if (c != null) { if (c != null) {
c.moveToNext(); c.moveToNext();
@ -226,7 +226,7 @@ public class SqlNote {
try { try {
c = mContentResolver.query(Notes.CONTENT_DATA_URI, SqlData.PROJECTION_DATA, c = mContentResolver.query(Notes.CONTENT_DATA_URI, SqlData.PROJECTION_DATA,
"(note_id=?)", new String[] { "(note_id=?)", new String[] {
String.valueOf(mId) String.valueOf(mId)
}, null); }, null);
if (c != null) { if (c != null) {
if (c.getCount() == 0) { if (c.getCount() == 0) {
@ -493,11 +493,11 @@ public class SqlNote {
if (!validateVersion) { if (!validateVersion) {
result = mContentResolver.update(Notes.CONTENT_NOTE_URI, mDiffNoteValues, "(" result = mContentResolver.update(Notes.CONTENT_NOTE_URI, mDiffNoteValues, "("
+ NoteColumns.ID + "=?)", new String[] { + NoteColumns.ID + "=?)", new String[] {
String.valueOf(mId) String.valueOf(mId)
}); });
} else { } else {
result = mContentResolver.update(Notes.CONTENT_NOTE_URI, mDiffNoteValues, "(" result = mContentResolver.update(Notes.CONTENT_NOTE_URI, mDiffNoteValues, "("
+ NoteColumns.ID + "=?) AND (" + NoteColumns.VERSION + "<=?)", + NoteColumns.ID + "=?) AND (" + NoteColumns.VERSION + "<=?)",
new String[] { new String[] {
String.valueOf(mId), String.valueOf(mVersion) String.valueOf(mId), String.valueOf(mVersion)
}); });

@ -54,6 +54,7 @@ public class Task extends Node {
mMetaInfo = null; mMetaInfo = null;
} }
public JSONObject getCreateAction(int actionId) { public JSONObject getCreateAction(int actionId) {
JSONObject js = new JSONObject(); JSONObject js = new JSONObject();

@ -43,7 +43,7 @@ public class TaskList extends Node {
mIndex = 1; mIndex = 1;
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see net.micode.notes.gtask.data.Node#getCreateAction(int) * @see net.micode.notes.gtask.data.Node#getCreateAction(int)
* JSONObject * JSONObject
*/ */

@ -22,7 +22,7 @@ package net.micode.notes.gtask.exception;
public class ActionFailureException extends RuntimeException { public class ActionFailureException extends RuntimeException {
private static final long serialVersionUID = 4425249765923293627L; private static final long serialVersionUID = 4425249765923293627L;
/* /*
* serialVersionUIDjava * serialVersionUIDjava
* serialVersionUID * serialVersionUID
* Made By Cuican * Made By Cuican

@ -22,7 +22,7 @@ package net.micode.notes.gtask.exception;
public class NetworkFailureException extends Exception { public class NetworkFailureException extends Exception {
private static final long serialVersionUID = 2107610287180234136L; private static final long serialVersionUID = 2107610287180234136L;
/* /*
* serialVersionUIDjava * serialVersionUIDjava
* serialVersionUID * serialVersionUID
* Made By Cuican * Made By Cuican

@ -65,7 +65,7 @@ public class GTaskASyncTask extends AsyncTask<Void, String, Integer> {
public void publishProgess(String message) {// 发布进度单位系统将会调用onProgressUpdate()方法更新这些值 public void publishProgess(String message) {// 发布进度单位系统将会调用onProgressUpdate()方法更新这些值
publishProgress(new String[] { publishProgress(new String[] {
message message
}); });
} }

@ -135,7 +135,7 @@ public class GTaskClient {
// need to re-login after account switch // need to re-login after account switch
if (mLoggedin if (mLoggedin
&& !TextUtils.equals(getSyncAccount().name, NotesPreferenceActivity && !TextUtils.equals(getSyncAccount().name, NotesPreferenceActivity
.getSyncAccountName(activity))) { .getSyncAccountName(activity))) {
mLoggedin = false; mLoggedin = false;
} }
//如果没超过时间,则不需要重新登录 //如果没超过时间,则不需要重新登录

@ -258,7 +258,7 @@ public class GTaskManager {
if (name.startsWith(GTaskStringUtils.MIUI_FOLDER_PREFFIX) if (name.startsWith(GTaskStringUtils.MIUI_FOLDER_PREFFIX)
&& !name.equals(GTaskStringUtils.MIUI_FOLDER_PREFFIX && !name.equals(GTaskStringUtils.MIUI_FOLDER_PREFFIX
+ GTaskStringUtils.FOLDER_META)) { + GTaskStringUtils.FOLDER_META)) {
TaskList tasklist = new TaskList();//继承自Node TaskList tasklist = new TaskList();//继承自Node
tasklist.setContentByRemoteJSON(object); tasklist.setContentByRemoteJSON(object);
mGTaskListHashMap.put(gid, tasklist); mGTaskListHashMap.put(gid, tasklist);
@ -443,7 +443,7 @@ public class GTaskManager {
try { try {
c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE, "(_id=?)", c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE, "(_id=?)",
new String[] { new String[] {
String.valueOf(Notes.ID_CALL_RECORD_FOLDER) String.valueOf(Notes.ID_CALL_RECORD_FOLDER)
}, null); }, null);
if (c != null) { if (c != null) {
if (c.moveToNext()) { if (c.moveToNext()) {
@ -799,109 +799,109 @@ public class GTaskManager {
//preParentList为通过node获取的父节点列表 //preParentList为通过node获取的父节点列表
String curParentGid = mNidToGid.get(sqlNote.getParentId()); String curParentGid = mNidToGid.get(sqlNote.getParentId());
//curParentGid为通过光标在数据库中找到sqlNote的mParentId再通过mNidToGid由long类型转为String类型的Gid if (curParentGid == null) { //curParentGid为通过光标在数据库中找到sqlNote的mParentId再通过mNidToGid由long类型转为String类型的Gid if (curParentGid == null) {
Log.e(TAG, "cannot find task's parent tasklist"); Log.e(TAG, "cannot find task's parent tasklist");
throw new ActionFailureException("cannot update remote task"); throw new ActionFailureException("cannot update remote task");
} }
TaskList curParentList = mGTaskListHashMap.get(curParentGid); TaskList curParentList = mGTaskListHashMap.get(curParentGid);
//通过HashMap找到对应Gid的TaskList //通过HashMap找到对应Gid的TaskList
if (preParentList != curParentList) { if (preParentList != curParentList) {
preParentList.removeChildTask(task); preParentList.removeChildTask(task);
curParentList.addChildTask(task); curParentList.addChildTask(task);
GTaskClient.getInstance().moveTask(task, preParentList, curParentList); GTaskClient.getInstance().moveTask(task, preParentList, curParentList);
}
} }
}
// clear local modified flag // clear local modified flag
sqlNote.resetLocalModified(); sqlNote.resetLocalModified();
//commit到本地数据库 //commit到本地数据库
sqlNote.commit(true); sqlNote.commit(true);
} }
/** /**
* meta meta---------- * meta meta----------
* @author TTS * @author TTS
* @param gid * @param gid
* ---GoogleIDString * ---GoogleIDString
* @param sqlNote * @param sqlNote
* ---使SqlNote * ---使SqlNote
* @throws NetworkFailureException * @throws NetworkFailureException
*/ */
private void updateRemoteMeta(String gid, SqlNote sqlNote) throws NetworkFailureException { private void updateRemoteMeta(String gid, SqlNote sqlNote) throws NetworkFailureException {
if (sqlNote != null && sqlNote.isNoteType()) { if (sqlNote != null && sqlNote.isNoteType()) {
MetaData metaData = mMetaHashMap.get(gid); MetaData metaData = mMetaHashMap.get(gid);
if (metaData != null) { if (metaData != null) {
metaData.setMeta(gid, sqlNote.getContent()); metaData.setMeta(gid, sqlNote.getContent());
GTaskClient.getInstance().addUpdateNode(metaData); GTaskClient.getInstance().addUpdateNode(metaData);
} else { } else {
metaData = new MetaData(); metaData = new MetaData();
metaData.setMeta(gid, sqlNote.getContent()); metaData.setMeta(gid, sqlNote.getContent());
mMetaList.addChildTask(metaData); mMetaList.addChildTask(metaData);
mMetaHashMap.put(gid, metaData); mMetaHashMap.put(gid, metaData);
GTaskClient.getInstance().createTask(metaData); GTaskClient.getInstance().createTask(metaData);
}
} }
} }
/** }
* syncID /**
* @author TTS * syncID
* @return void * @author TTS
* @throws NetworkFailureException * @return void
*/ * @throws NetworkFailureException
private void refreshLocalSyncId() throws NetworkFailureException { */
if (mCancelled) { private void refreshLocalSyncId() throws NetworkFailureException {
return; if (mCancelled) {
} return;
}
// get the latest gtask list //获取最近的最晚的gtask list
mGTaskHashMap.clear();
mGTaskListHashMap.clear();
mMetaHashMap.clear();
initGTaskList();
Cursor c = null; // get the latest gtask list //获取最近的最晚的gtask list
try { mGTaskHashMap.clear();
c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE, mGTaskListHashMap.clear();
"(type<>? AND parent_id<>?)", new String[] { mMetaHashMap.clear();
String.valueOf(Notes.TYPE_SYSTEM), String.valueOf(Notes.ID_TRASH_FOLER) initGTaskList();
}, NoteColumns.TYPE + " DESC"); //query语句五个参数NoteColumns.TYPE + " DESC"-----为按类型递减顺序返回查询结果。new String[] {String.valueOf(Notes.TYPE_SYSTEM), String.valueOf(Notes.ID_TRASH_FOLER)}------为选择参数。"(type<>? AND parent_id<>?)"-------指明返回行过滤器。SqlNote.PROJECTION_NOTE--------应返回的数据列的名字。Notes.CONTENT_NOTE_URI--------contentProvider包含所有数据集所对应的uri
if (c != null) { Cursor c = null;
while (c.moveToNext()) { try {
String gid = c.getString(SqlNote.GTASK_ID_COLUMN); c = mContentResolver.query(Notes.CONTENT_NOTE_URI, SqlNote.PROJECTION_NOTE,
Node node = mGTaskHashMap.get(gid); "(type<>? AND parent_id<>?)", new String[] {
if (node != null) { String.valueOf(Notes.TYPE_SYSTEM), String.valueOf(Notes.ID_TRASH_FOLER)
mGTaskHashMap.remove(gid); }, NoteColumns.TYPE + " DESC"); //query语句五个参数NoteColumns.TYPE + " DESC"-----为按类型递减顺序返回查询结果。new String[] {String.valueOf(Notes.TYPE_SYSTEM), String.valueOf(Notes.ID_TRASH_FOLER)}------为选择参数。"(type<>? AND parent_id<>?)"-------指明返回行过滤器。SqlNote.PROJECTION_NOTE--------应返回的数据列的名字。Notes.CONTENT_NOTE_URI--------contentProvider包含所有数据集所对应的uri
ContentValues values = new ContentValues();//在ContentValues中创建键值对。准备通过contentResolver写入数据 if (c != null) {
values.put(NoteColumns.SYNC_ID, node.getLastModified()); while (c.moveToNext()) {
mContentResolver.update(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI,//进行批量更改选择参数为NULL应该可以用insert替换参数分别为表名和需要更新的value对象。 String gid = c.getString(SqlNote.GTASK_ID_COLUMN);
c.getLong(SqlNote.ID_COLUMN)), values, null, null); Node node = mGTaskHashMap.get(gid);
} else { if (node != null) {
Log.e(TAG, "something is missed"); mGTaskHashMap.remove(gid);
throw new ActionFailureException( ContentValues values = new ContentValues();//在ContentValues中创建键值对。准备通过contentResolver写入数据
"some local items don't have gid after sync"); values.put(NoteColumns.SYNC_ID, node.getLastModified());
} mContentResolver.update(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI,//进行批量更改选择参数为NULL应该可以用insert替换参数分别为表名和需要更新的value对象。
c.getLong(SqlNote.ID_COLUMN)), values, null, null);
} else {
Log.e(TAG, "something is missed");
throw new ActionFailureException(
"some local items don't have gid after sync");
} }
} else {
Log.w(TAG, "failed to query local note to refresh sync id");
}
} finally {
if (c != null) {
c.close();
c = null;
} }
} else {
Log.w(TAG, "failed to query local note to refresh sync id");
}
} finally {
if (c != null) {
c.close();
c = null;
} }
} }
/** }
* ,mAccount.name /**
* @author TTS * ,mAccount.name
* @return String * @author TTS
*/ * @return String
public String getSyncAccount() { */
return GTaskClient.getInstance().getSyncAccount().name; public String getSyncAccount() {
} return GTaskClient.getInstance().getSyncAccount().name;
/** }
* mCancelledtrue /**
* @author TTS * mCancelledtrue
*/ * @author TTS
public void cancelSync() { */
mCancelled = true; public void cancelSync() {
} mCancelled = true;
}
} }

@ -141,3 +141,4 @@ public class GTaskSyncService extends Service {
return mSyncProgress; return mSyncProgress;
} }
} }

@ -34,7 +34,7 @@ import net.micode.notes.data.Notes.TextNote;
import java.util.ArrayList; import java.util.ArrayList;
/** /**
* Note * Note
*/ */
public class Note { public class Note {

@ -32,7 +32,7 @@ import net.micode.notes.data.Notes.TextNote;
import net.micode.notes.tool.ResourceParser.NoteBgResources; import net.micode.notes.tool.ResourceParser.NoteBgResources;
/** /**
* WorkingNote * WorkingNote
*/ */
public class WorkingNote { public class WorkingNote {

@ -39,7 +39,7 @@ public class BackupUtils {
private static final String TAG = "BackupUtils"; // 定义日志标签 private static final String TAG = "BackupUtils"; // 定义日志标签
private static BackupUtils sInstance; // 单例模式实例 private static BackupUtils sInstance; // 单例模式实例
// 获取单例实例的方法,确保整个应用中只有一个 BackupUtils 对象 // 获取单例实例的方法,确保整个应用中只有一个 BackupUtils 对象
public static synchronized BackupUtils getInstance(Context context) { public static synchronized BackupUtils getInstance(Context context) {
if (sInstance == null) { if (sInstance == null) {
sInstance = new BackupUtils(context); sInstance = new BackupUtils(context);

@ -38,7 +38,7 @@ import java.util.HashSet;
public class DataUtils { public class DataUtils {
public static final String TAG = "DataUtils"; // 日志标签 public static final String TAG = "DataUtils"; // 日志标签
// 批量删除笔记,删除给定 HashSet 中的所有笔记 // 批量删除笔记,删除给定 HashSet 中的所有笔记
public static boolean batchDeleteNotes(ContentResolver resolver, HashSet<Long> ids) { public static boolean batchDeleteNotes(ContentResolver resolver, HashSet<Long> ids) {
// 检查输入的 IDs 是否为空 // 检查输入的 IDs 是否为空
if (ids == null) { if (ids == null) {

@ -18,7 +18,7 @@ package net.micode.notes.tool;
public class GTaskStringUtils { public class GTaskStringUtils {
// GTASK 相关的 JSON 字段名常量 // GTASK 相关的 JSON 字段名常量
// action_id - 操作的唯一标识符 // action_id - 操作的唯一标识符
public final static String GTASK_JSON_ACTION_ID = "action_id"; public final static String GTASK_JSON_ACTION_ID = "action_id";

@ -24,7 +24,7 @@ import net.micode.notes.ui.NotesPreferenceActivity;
public class ResourceParser { public class ResourceParser {
// 定义笔记背景颜色的常量 // 定义笔记背景颜色的常量
public static final int YELLOW = 0; // 黄色 public static final int YELLOW = 0; // 黄色
public static final int BLUE = 1; // 蓝色 public static final int BLUE = 1; // 蓝色
public static final int WHITE = 2; // 白色 public static final int WHITE = 2; // 白色

@ -30,7 +30,7 @@ import net.micode.notes.data.Notes.NoteColumns;
public class AlarmInitReceiver extends BroadcastReceiver { public class AlarmInitReceiver extends BroadcastReceiver {
// 定义查询笔记的列,只查询 ID 和 ALERTED_DATE // 定义查询笔记的列,只查询 ID 和 ALERTED_DATE
private static final String [] PROJECTION = new String [] { private static final String [] PROJECTION = new String [] {
NoteColumns.ID, // 笔记 ID NoteColumns.ID, // 笔记 ID
NoteColumns.ALERTED_DATE // 警报时间(即提醒时间) NoteColumns.ALERTED_DATE // 警报时间(即提醒时间)

Loading…
Cancel
Save