From 14c06ccf3e58aa686faf8af202e61a53b33d3cf1 Mon Sep 17 00:00:00 2001 From: SheYu <2893251844@qq.com> Date: Thu, 21 Dec 2023 21:28:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=86data=E5=8C=85?= =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/net/micode/notes/data/Contact.java | 13 ++- .../java/net/micode/notes/data/Notes.java | 8 ++ .../notes/data/NotesDatabaseHelper.java | 91 ++++++++++++------- .../net/micode/notes/data/NotesProvider.java | 54 +++++++++-- 4 files changed, 124 insertions(+), 42 deletions(-) diff --git a/src/Notes-master1/app/src/main/java/net/micode/notes/data/Contact.java b/src/Notes-master1/app/src/main/java/net/micode/notes/data/Contact.java index 1400dee..95d8bce 100644 --- a/src/Notes-master1/app/src/main/java/net/micode/notes/data/Contact.java +++ b/src/Notes-master1/app/src/main/java/net/micode/notes/data/Contact.java @@ -27,7 +27,7 @@ import java.util.HashMap; /** * @Package: net.micode.notes.data * @ClassName: Contact - * @Description: java类作用描述 + * @Description: * @Author: WUSHUXIAN * @CreateDate: 2023/12/20 23:26 * @Version: 1.0 @@ -42,8 +42,17 @@ public class Contact { + "(SELECT raw_contact_id " + " FROM phone_lookup" + " WHERE min_match = '+')"; - + /** + * @method getContact + * @description: + * @date: 2023/12/21 19:18 + * @author: WuShuxian + * @param: context + * @param: phoneNumber + * @return: String + */ public static String getContact(Context context, String phoneNumber) { + // if(sContactCache == null) { sContactCache = new HashMap(); } diff --git a/src/Notes-master1/app/src/main/java/net/micode/notes/data/Notes.java b/src/Notes-master1/app/src/main/java/net/micode/notes/data/Notes.java index f240604..609eaff 100644 --- a/src/Notes-master1/app/src/main/java/net/micode/notes/data/Notes.java +++ b/src/Notes-master1/app/src/main/java/net/micode/notes/data/Notes.java @@ -17,6 +17,14 @@ package net.micode.notes.data; import android.net.Uri; +/** + * @Package: net.micode.notes.data + * @ClassName: Notes + * @Description: + * @Author: WuShuxian + * @CreateDate: 2023/12/21 19:32 + * @Version: 1.0 + */ public class Notes { public static final String AUTHORITY = "micode_notes"; public static final String TAG = "Notes"; diff --git a/src/Notes-master1/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java b/src/Notes-master1/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java index ffe5d57..1f05bbf 100644 --- a/src/Notes-master1/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java +++ b/src/Notes-master1/app/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java @@ -16,22 +16,31 @@ package net.micode.notes.data; -import android.content.ContentValues; +import android.content.ContentValues;//就是用于保存一些数据(string boolean ...)信息,这些信息可以被数据库操作时使用。 import android.content.Context; -import android.database.sqlite.SQLiteDatabase; -import android.database.sqlite.SQLiteOpenHelper; +import android.database.sqlite.SQLiteDatabase;//主要提供了对应于添加、删除、更新、查询的操作方法: insert()、delete()、update()和query()。配合content.values +import android.database.sqlite.SQLiteOpenHelper;//用来管理数据的创建和版本更新 import android.util.Log; import net.micode.notes.data.Notes.DataColumns; import net.micode.notes.data.Notes.DataConstants; import net.micode.notes.data.Notes.NoteColumns; - +/** + * @Package: net.micode.notes.data + * @ClassName: NotesDatabaseHelper + * @Description: 便签数据库操作底层实现 + * @Author: WuShuxian + * @CreateDate: 2023/12/21 19:46 + * @Version: 1.0 + */ public class NotesDatabaseHelper extends SQLiteOpenHelper { private static final String DB_NAME = "note.db"; private static final int DB_VERSION = 4; - + /** + * 接口,创建数据库表头 + */ public interface TABLE { public static final String NOTE = "note"; @@ -41,7 +50,9 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { private static final String TAG = "NotesDatabaseHelper"; private static NotesDatabaseHelper mInstance; - + /** + * 便签的属性数据库 + */ private static final String CREATE_NOTE_TABLE_SQL = "CREATE TABLE " + TABLE.NOTE + "(" + NoteColumns.ID + " INTEGER PRIMARY KEY," + @@ -62,7 +73,9 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { NoteColumns.GTASK_ID + " TEXT NOT NULL DEFAULT ''," + NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0" + ")"; - + /** + * 便签的内容数据库 + */ private static final String CREATE_DATA_TABLE_SQL = "CREATE TABLE " + TABLE.DATA + "(" + DataColumns.ID + " INTEGER PRIMARY KEY," + @@ -83,7 +96,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { TABLE.DATA + "(" + DataColumns.NOTE_ID + ");"; /** - * Increase folder's note count when move note to the folder + * 文件夹内移进便签时需要修改的数据 */ private static final String NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER = "CREATE TRIGGER increase_folder_count_on_update "+ @@ -95,7 +108,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " END"; /** - * Decrease folder's note count when move note from folder + * 便签移出文件夹时需要修改的数据 */ private static final String NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER = "CREATE TRIGGER decrease_folder_count_on_update " + @@ -108,7 +121,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " END"; /** - * Increase folder's note count when insert new note to the folder + * 插入(新建)便签时需要修改的数据 */ private static final String NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER = "CREATE TRIGGER increase_folder_count_on_insert " + @@ -120,7 +133,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { " END"; /** - * Decrease folder's note count when delete note from the folder + * 删除便签时需要修改的数据 */ private static final String NOTE_DECREASE_FOLDER_COUNT_ON_DELETE_TRIGGER = "CREATE TRIGGER decrease_folder_count_on_delete " + @@ -234,36 +247,35 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { db.execSQL(FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER); db.execSQL(FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER); } - + /** + * @method createSystemFolder + * @description: 创建系统缺省文件夹:通话记录、缺省根目录、临时文件夹、回收文件夹 + * @date: 2023/12/21 20:19 + * @author: WuShuxian + * @param: db + * @return: void + */ private void createSystemFolder(SQLiteDatabase db) { ContentValues values = new ContentValues(); - /** - * call record foler for call notes - */ + //通话记录文件夹 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 - */ + //缺省根目录 values.clear(); values.put(NoteColumns.ID, Notes.ID_ROOT_FOLDER); values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); db.insert(TABLE.NOTE, null, values); - /** - * temporary folder which is used for moving note - */ + //临时文件夹 values.clear(); values.put(NoteColumns.ID, Notes.ID_TEMPARAY_FOLDER); values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); db.insert(TABLE.NOTE, null, values); - /** - * create trash folder - */ + //回收站文件夹 values.clear(); values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER); values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); @@ -296,27 +308,34 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { @Override public void onCreate(SQLiteDatabase db) { - createNoteTable(db); - createDataTable(db); + createNoteTable(db);//属性数据库 + createDataTable(db);//内容数据库 } - + /** + * @method onUpgrade + * @description: 便签版本更新?没有使用者判断不了 + * @date: 2023/12/21 20:42 + * @author: WuShuxian + * @param: + * @return: + */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { boolean reCreateTriggers = false; boolean skipV2 = false; - + //V1->V2 if (oldVersion == 1) { upgradeToV2(db); skipV2 = true; // this upgrade including the upgrade from v2 to v3 oldVersion++; } - + //V2->V3 if (oldVersion == 2 && !skipV2) { upgradeToV3(db); reCreateTriggers = true; oldVersion++; } - + //V3->V4 if (oldVersion == 3) { upgradeToV4(db); oldVersion++; @@ -332,14 +351,18 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { + "fails"); } } - + /** + * 升级到V2,修改相应数据库 + */ private void upgradeToV2(SQLiteDatabase db) { db.execSQL("DROP TABLE IF EXISTS " + TABLE.NOTE); db.execSQL("DROP TABLE IF EXISTS " + TABLE.DATA); createNoteTable(db); createDataTable(db); } - + /** + * 升级到V3,修改相应数据库 + */ private void upgradeToV3(SQLiteDatabase db) { // drop unused triggers db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_insert"); @@ -354,7 +377,9 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); db.insert(TABLE.NOTE, null, values); } - + /** + * 升级到V4,修改相应数据库 + */ private void upgradeToV4(SQLiteDatabase db) { db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0"); diff --git a/src/Notes-master1/app/src/main/java/net/micode/notes/data/NotesProvider.java b/src/Notes-master1/app/src/main/java/net/micode/notes/data/NotesProvider.java index edb0a60..ddb2282 100644 --- a/src/Notes-master1/app/src/main/java/net/micode/notes/data/NotesProvider.java +++ b/src/Notes-master1/app/src/main/java/net/micode/notes/data/NotesProvider.java @@ -34,8 +34,18 @@ import net.micode.notes.data.Notes.DataColumns; import net.micode.notes.data.Notes.NoteColumns; import net.micode.notes.data.NotesDatabaseHelper.TABLE; - +/** + * @Package: net.micode.notes.data + * @ClassName: NotesProvider + * @Description: 为存储和获取数据提供接口。可以在不同的应用程序之间共享数据 + * @Author: WuShuxian + * @CreateDate: 2023/12/21 20:50 + * @Version: 1.0 + */ public class NotesProvider extends ContentProvider { + /** + * UriMatcher用于匹配Uri + */ private static final UriMatcher mMatcher; private NotesDatabaseHelper mHelper; @@ -62,6 +72,7 @@ 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. */ @@ -84,12 +95,19 @@ public class NotesProvider extends ContentProvider { mHelper = NotesDatabaseHelper.getInstance(getContext()); return true; } - + /** + * @Package: net.micode.notes.data + * @ClassName: NotesProvider + * @Description: 查询Uri在数据库中的位置 + * @Author: WuShuxian + * @CreateDate: 2023/12/21 21:06 + * @Version: 1.0 + */ @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { Cursor c = null; - SQLiteDatabase db = mHelper.getReadableDatabase(); + SQLiteDatabase db = mHelper.getReadableDatabase();//读数据库 String id = null; switch (mMatcher.match(uri)) { case URI_NOTE: @@ -131,7 +149,7 @@ public class NotesProvider extends ContentProvider { } try { - searchString = String.format("%%%s%%", searchString); + searchString = String.format("%%%s%%", searchString);//在新建便签并输入内容保存后会跳到这里,暂时不知道为什么 c = db.rawQuery(NOTES_SNIPPET_SEARCH_QUERY, new String[] { searchString }); } catch (IllegalStateException ex) { @@ -147,6 +165,14 @@ public class NotesProvider extends ContentProvider { return c; } + /** + * @method insert + * @description: 插入一个Uri,只有新建便签并保存后才会触发,修改内容不会触发 + * @date: 2023/12/21 21:16 + * @author: WuShuxian + * @param: + * @return: + */ @Override public Uri insert(Uri uri, ContentValues values) { SQLiteDatabase db = mHelper.getWritableDatabase(); @@ -180,7 +206,14 @@ public class NotesProvider extends ContentProvider { return ContentUris.withAppendedId(uri, insertedId); } - + /** + * @method delete + * @description: 删除一个Uri,删除便签时会触发 + * @date: 2023/12/21 21:17 + * @author: WuShuxian + * @param: + * @return: + */ @Override public int delete(Uri uri, String selection, String[] selectionArgs) { int count = 0; @@ -193,7 +226,7 @@ public class NotesProvider extends ContentProvider { count = db.delete(TABLE.NOTE, selection, selectionArgs); break; case URI_NOTE_ITEM: - id = uri.getPathSegments().get(1); + id = uri.getPathSegments().get(1);//修改便签内容时会触发,原因不明 /** * ID that smaller than 0 is system folder which is not allowed to * trash @@ -226,7 +259,14 @@ public class NotesProvider extends ContentProvider { } return count; } - + /** + * @method update + * @description: 更新Uri,修改便签时会触发。期间会跳到delete中执行,原因不明 + * @date: 2023/12/21 21:19 + * @author: WuShuxian + * @param: + * @return: + */ @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { int count = 0;