Type: INTEGER (long)
*/ - public static final String PARENT_ID = "parent_id"; + public static final String PARENT_ID = "parent_id";//为什么会有prant_id /** * Created data for note or folder @@ -147,7 +145,7 @@ public class Notes { * The last sync id *Type: INTEGER (long)
*/ - public static final String SYNC_ID = "sync_id";//同步 + public static final String SYNC_ID = "sync_id"; /** * Sign to indicate local modified or not @@ -174,9 +172,7 @@ public class Notes { public static final String VERSION = "version"; }//这些常量主要是定义便签的属性的。 - // 定义DataColumns的常量,用于后面创建数据库的表头 - - + // 定义DataColumns的常量,用于后面创建数据库的表头 public interface DataColumns { /** * The unique ID for a row @@ -249,7 +245,7 @@ public class Notes { *Type: TEXT
*/ public static final String DATA5 = "data5"; - } + }//主要是定义存储便签内容数据的 public static final class TextNote implements DataColumns { /** @@ -257,7 +253,7 @@ public class Notes { *Type: Integer 1:check list mode 0: normal mode
*/ public static final String MODE = DATA1; - //主要是定义存储便签内容数据的 + public static final int MODE_CHECK_LIST = 1; public static final String CONTENT_TYPE = "vnd.android.cursor.dir/text_note"; @@ -265,10 +261,9 @@ public class Notes { public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/text_note"; public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/text_note"); - } //文本内容的数据结构 - + }//文本内容的数据结构 -public static final class CallNote implements DataColumns { + public static final class CallNote implements DataColumns { /** * Call date for this record *Type: INTEGER (long)
diff --git a/src/Notesmaster/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java b/src/Notesmaster/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java index 9bed758..e69dc91 100644 --- a/src/Notesmaster/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java +++ b/src/Notesmaster/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java @@ -16,9 +16,9 @@ package net.micode.notes.data; -import android.content.ContentValues;//就是用于保存一些数据(string boolean byte double float int long short ...)信息,这些信息可以被数据库操作时使用。 -import android.content.Context;//加载和访问资源。(android中主要是这两个功能,但是这里具体不清楚) -import android.database.sqlite.SQLiteDatabase;//主要提供了对应于添加、删除、更新、查询的操作方法: insert()、delete()、update()和query()。配合content.values +import android.content.ContentValues;//就是用于保存一些数据信息 +import android.content.Context;//加载和访问资源 +import android.database.sqlite.SQLiteDatabase;//主要提供了对应于添加、删除、更新、查询的操作方法 import android.database.sqlite.SQLiteOpenHelper;//用来管理数据的创建和版本更新 import android.util.Log; @@ -32,7 +32,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { private static final int DB_VERSION = 4; - public interface TABLE {//接口,分成note和data,在后面的程序里分别使用过 + public interface TABLE { //接口,分成note和data,在后面的程序里分别使用过 public static final String NOTE = "note"; public static final String DATA = "data"; @@ -117,8 +117,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " UPDATE " + TABLE.NOTE + " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" + " WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" + - " END";//在文件夹中插入一个Note之后需要更改的数据的表格。 - + " END";//在文件夹中删除一个Note之后需要更改的数据的表格。 /** * Decrease folder's note count when delete note from the folder @@ -131,8 +130,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" + " WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID + " AND " + NoteColumns.NOTES_COUNT + ">0;" + - " END";//在文件夹中删除一个Note之后需要更改的数据的表格。 - + " END";//在文件夹中对一个Note导入新的数据之后需要更改的数据的表格。 /** * Update note's content when insert data with type {@link DataConstants#NOTE} @@ -145,8 +143,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " UPDATE " + TABLE.NOTE + " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + - " END";//在文件夹中对一个Note导入新的数据之后需要更改的数据的表格。 - + " END";//Note数据被修改后需要更改的数据的表格。 /** * Update note's content when data with {@link DataConstants#NOTE} type has changed @@ -159,7 +156,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " UPDATE " + TABLE.NOTE + " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + - " END";//Note数据被修改后需要更改的数据的表格。 + " END";//Note数据被删除后需要更改的数据的表格。 /** * Update note's content when data with {@link DataConstants#NOTE} type has deleted @@ -172,7 +169,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " UPDATE " + TABLE.NOTE + " SET " + NoteColumns.SNIPPET + "=''" + " WHERE " + NoteColumns.ID + "=old." + DataColumns.NOTE_ID + ";" + - " END";//Note数据被删除后需要更改的数据的表格。 + " END";//删除已删除的便签的数据后需要更改的数据的表格。 /** * Delete datas belong to note which has been deleted @@ -183,7 +180,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " BEGIN" + " DELETE FROM " + TABLE.DATA + " WHERE " + DataColumns.NOTE_ID + "=old." + NoteColumns.ID + ";" + - " END";//删除已删除的便签的数据后需要更改的数据的表格。 + " END";//删除已删除的文件夹的便签后需要更改的数据的表格。 /** * Delete notes belong to folder which has been deleted @@ -194,7 +191,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " BEGIN" + " DELETE FROM " + TABLE.NOTE + " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + - " END";//删除已删除的文件夹的便签后需要更改的数据的表格。 + " END";//还原垃圾桶中便签后需要更改的数据的表格。 /** * Move notes belong to folder which has been moved to trash folder @@ -207,7 +204,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " UPDATE " + TABLE.NOTE + " SET " + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER + " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + - " END";//还原垃圾桶中便签后需要更改的数据的表格。 + " END"; public NotesDatabaseHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); @@ -239,7 +236,6 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { }//execSQL是数据库操作的API,主要是更改行为的SQL语句。 //在这里主要是用来重新创建上述定义的表格用的,先删除原来有的数据库的触发器再重新创建新的数据库 - private void createSystemFolder(SQLiteDatabase db) { ContentValues values = new ContentValues(); @@ -249,7 +245,6 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { values.put(NoteColumns.ID, Notes.ID_CALL_RECORD_FOLDER); values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); db.insert(TABLE.NOTE, null, values); -//创建几个系统文件夹 /** * root folder which is default folder @@ -293,16 +288,14 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER); }//同上面的execSQL - static synchronized NotesDatabaseHelper getInstance(Context context) { if (mInstance == null) { mInstance = new NotesDatabaseHelper(context); } return mInstance; }//上网查是为解决同一时刻只能有一个线程执行. - //在写程序库代码时,有时有一个类需要被所有的其它类使用, - //但又要求这个类只能被实例化一次,是个服务类,定义一次,其它类使用同一个这个类的实例 - + //在写程序库代码时,有时有一个类需要被所有的其它类使用, + //但又要求这个类只能被实例化一次,是个服务类,定义一次,其它类使用同一个这个类的实例 @Override public void onCreate(SQLiteDatabase db) { @@ -343,7 +336,6 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { } }//数据库版本的更新(数据库内容的更改) - private void upgradeToV2(SQLiteDatabase db) { db.execSQL("DROP TABLE IF EXISTS " + TABLE.NOTE); db.execSQL("DROP TABLE IF EXISTS " + TABLE.DATA); @@ -351,7 +343,6 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { createDataTable(db); }//更新到V2版本 - private void upgradeToV3(SQLiteDatabase db) { // drop unused triggers db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_insert"); @@ -367,10 +358,8 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { db.insert(TABLE.NOTE, null, values); }//更新到V3版本 - private void upgradeToV4(SQLiteDatabase db) { db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0"); }//更新到V4版本,但是不知道V2、V3、V4是什么意思 - } diff --git a/src/Notesmaster/app/src/main/java/net/micode/notes/data/NotesProvider.java b/src/Notesmaster/app/src/main/java/net/micode/notes/data/NotesProvider.java index e9e64aa..c89f447 100644 --- a/src/Notesmaster/app/src/main/java/net/micode/notes/data/NotesProvider.java +++ b/src/Notesmaster/app/src/main/java/net/micode/notes/data/NotesProvider.java @@ -56,10 +56,10 @@ public class NotesProvider extends ContentProvider { private static final int URI_SEARCH = 5; private static final int URI_SEARCH_SUGGEST = 6; - // 创建UriMatcher时,调用UriMatcher(UriMatcher.NO_MATCH)表示不匹配任何路径的返回码 + static { + // 创建UriMatcher时,调用UriMatcher(UriMatcher.NO_MATCH)表示不匹配任何路径的返回码 mMatcher = new UriMatcher(UriMatcher.NO_MATCH); - // 把需要匹配Uri路径全部给注册上 mMatcher.addURI(Notes.AUTHORITY, "note", URI_NOTE); mMatcher.addURI(Notes.AUTHORITY, "note/#", URI_NOTE_ITEM); @@ -74,7 +74,6 @@ public class NotesProvider extends ContentProvider { * x'0A' represents the '\n' character in sqlite. For title and content in the search result, * we will trim '\n' and white space in order to show more information. */ - // 声明 NOTES_SEARCH_PROJECTION private static final String NOTES_SEARCH_PROJECTION = NoteColumns.ID + "," + NoteColumns.ID + " AS " + SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA + "," @@ -83,7 +82,6 @@ public class NotesProvider extends ContentProvider { + R.drawable.search_result + " AS " + SearchManager.SUGGEST_COLUMN_ICON_1 + "," + "'" + Intent.ACTION_VIEW + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_ACTION + "," + "'" + Notes.TextNote.CONTENT_TYPE + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_DATA; - // 声明NOTES_SNIPPET_SEARCH_QUERY private static String NOTES_SNIPPET_SEARCH_QUERY = "SELECT " + NOTES_SEARCH_PROJECTION + " FROM " + TABLE.NOTE @@ -100,7 +98,6 @@ public class NotesProvider extends ContentProvider { } @Override - // 查询uri在数据库中对应的位置 public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { @@ -108,10 +105,8 @@ public class NotesProvider extends ContentProvider { // 获取可读数据库 SQLiteDatabase db = mHelper.getReadableDatabase(); String id = null; - // 匹配查找uri switch (mMatcher.match(uri)) { - // 对于不同的匹配值,在数据库中查找相应的条目 case URI_NOTE: c = db.query(TABLE.NOTE, projection, selection, selectionArgs, null, null, @@ -134,7 +129,6 @@ public class NotesProvider extends ContentProvider { case URI_SEARCH: case URI_SEARCH_SUGGEST: if (sortOrder != null || projection != null) { - // 不合法的参数异常 throw new IllegalArgumentException( "do not specify sortOrder, selection, selectionArgs, or projection" + "with this query"); @@ -145,7 +139,6 @@ public class NotesProvider extends ContentProvider { if (uri.getPathSegments().size() > 1) { // getPathSegments()方法得到一个String的List, // 在uri.getPathSegments().get(1)为第2个元素 - searchString = uri.getPathSegments().get(1); } } else { @@ -175,7 +168,6 @@ public class NotesProvider extends ContentProvider { } @Override - // 插入一个uri public Uri insert(Uri uri, ContentValues values) { // 获得可写的数据库 @@ -183,11 +175,9 @@ public class NotesProvider extends ContentProvider { long dataId = 0, noteId = 0, insertedId = 0; switch (mMatcher.match(uri)) { // 新增一个条目 - case URI_NOTE: insertedId = noteId = db.insert(TABLE.NOTE, null, values); break; - // 如果存在,查找NOTE_ID case URI_DATA: if (values.containsKey(DataColumns.NOTE_ID)) { @@ -199,10 +189,9 @@ public class NotesProvider extends ContentProvider { break; default: throw new IllegalArgumentException("Unknown URI " + uri); - } // Notify the note uri - // notifyChange获得一个ContextResolver对象并且更新里面的内容 - + } // Notify the note uri + // notifyChange获得一个ContextResolver对象并且更新里面的内容 if (noteId > 0) { getContext().getContentResolver().notifyChange( ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), null); @@ -219,14 +208,11 @@ public class NotesProvider extends ContentProvider { } @Override - // 删除一个uri public int delete(Uri uri, String selection, String[] selectionArgs) { //Uri代表要操作的数据,Android上可用的每种资源 -包括 图像、视频片段、音频资源等都可以用Uri来表示。 - int count = 0; String id = null; - // 获得可写的数据库 SQLiteDatabase db = mHelper.getWritableDatabase(); boolean deleteData = false; @@ -271,7 +257,6 @@ public class NotesProvider extends ContentProvider { } @Override - // 更新一个uri public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { int count = 0; @@ -311,12 +296,10 @@ public class NotesProvider extends ContentProvider { } return count; } - // 将字符串解析成规定格式 private String parseSelection(String selection) { return (!TextUtils.isEmpty(selection) ? " AND (" + selection + ')' : ""); } - //增加一个noteVersion private void increaseNoteVersion(long id, String selection, String[] selectionArgs) { StringBuilder sql = new StringBuilder(120); @@ -339,9 +322,7 @@ public class NotesProvider extends ContentProvider { } sql.append(selectString); } - // execSQL()方法可以执行insert、delete、update和CREATE TABLE之类有更改行为的SQL语句 - - + // execSQL()方法可以执行insert、delete、update和CREATE TABLE之类有更改行为的SQL语= mHelper.getWritableDatabase().execSQL(sql.toString()); } diff --git a/src/Notesmaster/app/src/main/java/net/micode/notes/gtask/data/MetaData.java b/src/Notesmaster/app/src/main/java/net/micode/notes/gtask/data/MetaData.java index 396e0b6..3a2050b 100644 --- a/src/Notesmaster/app/src/main/java/net/micode/notes/gtask/data/MetaData.java +++ b/src/Notesmaster/app/src/main/java/net/micode/notes/gtask/data/MetaData.java @@ -26,20 +26,11 @@ import org.json.JSONObject; public class MetaData extends Task { - /* - * 功能描述:得到类的简写名称存入字符串TAG中 - * 实现过程:调用getSimpleName ()函数 - */ private final static String TAG = MetaData.class.getSimpleName(); private String mRelatedGid = null; - /* - * 功能描述:设置数据,即生成元数据库 - * 实现过程:调用JSONObject库函数put (),Task类中的setNotes ()和setName ()函数 - * 参数注解: - */ + public void setMeta(String gid, JSONObject metaInfo) { - //对函数块进行注释 try { metaInfo.put(GTaskStringUtils.META_HEAD_GTASK_ID, gid); } catch (JSONException e) { diff --git a/src/Notesmaster/app/src/main/java/net/micode/notes/gtask/remote/GTaskASyncTask.java b/src/Notesmaster/app/src/main/java/net/micode/notes/gtask/remote/GTaskASyncTask.java index 43cbee6..a1deb99 100644 --- a/src/Notesmaster/app/src/main/java/net/micode/notes/gtask/remote/GTaskASyncTask.java +++ b/src/Notesmaster/app/src/main/java/net/micode/notes/gtask/remote/GTaskASyncTask.java @@ -82,6 +82,7 @@ public class GTaskASyncTask extends AsyncTask