diff --git a/src/java/net/micode/notes/tool/BackupUtils.java b/src/java/net/micode/notes/tool/BackupUtils.java index 32eb5af..55fdd0b 100644 --- a/src/java/net/micode/notes/tool/BackupUtils.java +++ b/src/java/net/micode/notes/tool/BackupUtils.java @@ -14,6 +14,19 @@ * limitations under the License. */ + +/** + * + * @ProjectName: minode + * @Package: net.micode.notes.data + * @ClassName: BackupUtils + * @Description: 该类用于备份笔记数据到文本文件。它定义了备份状态码、单例模 + 式的实现、外部存储可用性检查、导出到文本文件的方法等。通过该类, + 可以方便地将笔记数据备份到外部存储的文本文件中。 + * @Author: 齐景熙 + */ + + package net.micode.notes.tool; public class BackupUtils { @@ -21,6 +34,16 @@ // Singleton stuff private static BackupUtils sInstance; //类里面为什么可以定义自身类的对象? + + /** + * @method getInstance + * @description 获取 BackupUtils 的单例实例。如果实例不存在,则创建一个新的实例;否则,返回已存在的实例。 + * @author: 齐景熙 + */ + /*参数: +context:上下文对象,用于访问应用程序的资源和功能。 +返回值:BackupUtils 的单例实例。 */ + public static synchronized BackupUtils getInstance(Context context) { //ynchronized 关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A) //运行到这个方法时,都要检查有没有其它线程B(或者C、 D等)正在用这个方法(或者该类的其他同步方法),有的话要等正在使用synchronized方法的线程B(或者C 、D)运行完这个方法后再运行此线程A,没有的话,锁定调用者,然后直接运行。 @@ -52,19 +75,68 @@ private BackupUtils(Context context) { //初始化函数 mTextExport = new TextExport(context); } - + +/** + * @method externalStorageAvailable + * @description 检查外部存储是否可用。通过比较外部存储状态与 Environment.MEDIA_MOUNTED,判断外部存储是否已挂载。 + * @author: 齐景熙 + */ + /*参数: +context:上下文对象,用于访问应用程序的资源和功能。 +返回值:BackupUtils 的单例实例。 +功能介绍:检查外部存储是否可用。通过比较外部存储状态与 Environment.MEDIA_MOUNTED,判断外部存储是否已挂载。 +返回值:true 表示外部存储可用,false 表示不可用。 */ + private static boolean externalStorageAvailable() { //外部存储功能是否可用 return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()); } + + /** + * @method exportToText + * @description 导出笔记数据到文本文件。调用 TextExport 类的 exportToText 方法,将笔记数据导出到文本文件,并返回导出状态码。 + * @author: 齐景熙 + */ + /*参数: +context:上下文对象,用于访问应用程序的资源和功能。 +返回值:BackupUtils 的单例实例。 +功能介绍:导出笔记数据到文本文件。调用 TextExport 类的 exportToText 方法,将笔记数据导出到文本文件,并返回导出状态码。 +返回值:导出状态码,如 STATE_SUCCESS 表示成功,STATE_SD_CARD_UNMOUONTED 表示外部存储未挂载等。*/ public int exportToText() { return mTextExport.exportToText(); } + + /** + * @method getExportedTextFileName + * @description 获取导出的文本文件名。返回 TextExport 类中保存的导出文本文件名。 + 导出笔记数据到文本文件。调用 TextExport 类的 exportToText 方法,将笔记数据导出到文本文件,并返回导出状态码。 + * @author: 齐景熙 + */ + /*参数: +context:上下文对象,用于访问应用程序的资源和功能。 +返回值:BackupUtils 的单例实例。 +功能介绍:导出笔记数据到文本文件。调用 TextExport 类的 exportToText 方法,将笔记数据导出到文本文件,并返回导出状态码。 +返回值:导出状态码,如 STATE_SUCCESS 表示成功,STATE_SD_CARD_UNMOUONTED 表示外部存储未挂载等。 +功能介绍:获取导出的文本文件名。返回 TextExport 类中保存的导出文本文件名。 +返回值:导出的文本文件名。*/ public String getExportedTextFileName() { return mTextExport.mFileName; } - + + /** + * @method getExportedTextFileDir + * @description 获取导出的文本文件目录。返回 TextExport 类中保存的导出文本文件目录。 + 导出笔记数据到文本文件。调用 TextExport 类的 exportToText 方法,将笔记数据导出到文本文件,并返回导出状态码。 + * @author: 齐景熙 + */ + /*参数: +context:上下文对象,用于访问应用程序的资源和功能。 +功能介绍:获取导出的文本文件目录。返回 TextExport 类中保存的导出文本文件目录。 +返回值:导出的文本文件目录。 +返回值:导出状态码,如 STATE_SUCCESS 表示成功,STATE_SD_CARD_UNMOUONTED 表示外部存储未挂载等。 +功能介绍:获取导出的文本文件名。返回 TextExport 类中保存的导出文本文件名。 +返回值:导出的文本文件名。*/ public String getExportedTextFileDir() { return mTextExport.mFileDirectory; } @@ -109,6 +181,20 @@ private String mFileName; private String mFileDirectory; + + /** + * @method getExportedTextFileDir + * @description 该内部类用于将笔记数据导出到文本文件。它定义了导出所需的列、格式、文件名、文件目录等,并实现了导出笔记数据到文本文件的具体逻辑。 + 获取导出的文本文件目录。返回 TextExport 类中保存的导出文本文件目录。 + 导出笔记数据到文本文件。调用 TextExport 类的 exportToText 方法,将笔记数据导出到文本文件,并返回导出状态码。 + * @author: 齐景熙 + */ + /*参数: +context:上下文对象,用于访问应用程序的资源和功能。 +功能介绍:获取导出的文本文件目录。返回 TextExport 类中保存的导出文本文件目录。 +返回值:导出的文本文件目录。 +返回值:导出状态码,如 STATE_SUCCESS 表示成功,STATE_SD_CARD_UNMOUONTED 表示外部存储未挂载等。 +该内部类用于将笔记数据导出到文本文件。它定义了导出所需的列、格式、文件名、文件目录等,并实现了导出笔记数据到文本文件的具体逻辑。*/ public TextExport(Context context) { TEXT_FORMAT = context.getResources().getStringArray(R.array.format_for_exported_note); mContext = context; @@ -116,6 +202,21 @@ mFileDirectory = ""; } + /** + * @method getFormat + * @description 获取导出格式字符串。根据传入的格式 ID,从 TEXT_FORMAT 数组中获取对应的格式字符串 + * @author: 齐景熙 + */ + /*参数: +context:上下文对象,用于访问应用程序的资源和功能。 +功能介绍:获取导出的文本文件目录。返回 TextExport 类中保存的导出文本文件目录。 +返回值:导出的文本文件目录。 +功能介绍:获取导出格式字符串。根据传入的格式 ID,从 TEXT_FORMAT 数组中获取对应的格式字符串。 +参数: +id:格式 ID。 +返回值:对应的格式字符串。 +返回值:导出状态码,如 STATE_SUCCESS 表示成功,STATE_SD_CARD_UNMOUONTED 表示外部存储未挂载等。 +该内部类用于将笔记数据导出到文本文件。它定义了导出所需的列、格式、文件名、文件目录等,并实现了导出笔记数据到文本文件的具体逻辑。*/ private String getFormat(int id) { //获取文本的组成部分 return TEXT_FORMAT[id]; } @@ -202,6 +303,21 @@ /** * Note will be exported as text which is user readable */ + +/** + * @method exportToText + * @description 导出指定笔记到文本文件。查询属于该笔记的数据,根据数据的 MIME 类型,将数据内容(如电话号码、通话日期、文本内容等)格式化后输出到文本文件。 + * @author: 齐景熙 + */ + /*参数: +context:上下文对象,用于访问应用程序的资源和功能。 +功能介绍:获取导出的文本文件目录。返回 TextExport 类中保存的导出文本文件目录。 +功能介绍:导出笔记数据到文本文件。检查外部存储是否可用,然后获取打印流,依次导出文件夹和笔记到文本文件。 +返回值:导出状态码 +noteId:笔记 ID。 +ps:打印流,用于输出到文本文件。 +返回值:导出状态码,如 STATE_SUCCESS 表示成功,STATE_SD_CARD_UNMOUONTED 表示外部存储未挂载等。 +该内部类用于将笔记数据导出到文本文件。它定义了导出所需的列、格式、文件名、文件目录等,并实现了导出笔记数据到文本文件的具体逻辑。*/ public int exportToText() { //总函数,调用上面的exportFolder和exportNote if (!externalStorageAvailable()) { Log.d(TAG, "Media was not mounted"); @@ -269,6 +385,24 @@ /** * Get a print stream pointed to the file {@generateExportedTextFile} */ + + + +/** + * @method getExportToTextPrintStream + * @description 获取指向导出文本文件的打印流。生成导出文本文件,然后创建指向该文件的打印流。 + * @author: 齐景熙 + */ + /*参数: +context:上下文对象,用于访问应用程序的资源和功能。 +功能介绍:获取导出的文本文件目录。返回 TextExport 类中保存的导出文本文件目录。 +功能介绍:导出笔记数据到文本文件。检查外部存储是否可用,然后获取打印流,依次导出文件夹和笔记到文本文件。 +返回值:导出状态码 +noteId:笔记 ID。 +ps:打印流,用于输出到文本文件。 +功能介绍:获取指向导出文本文件的打印流。生成导出文本文件,然后创建指向该文件的打印流。 +返回值:打印流,用于输出到文本文件。*/ + private PrintStream getExportToTextPrintStream() { File file = generateFileMountedOnSDcard(mContext, R.string.file_path, R.string.file_name_txt_format); @@ -296,6 +430,19 @@ /** * Generate the text file to store imported data */ + +/** + * @method generateFileMountedOnSDcard + * @description 生成导出文本文件。根据传入的文件路径和文件名格式资源 ID,生成导出文本文件的完整路径,并创建该文件。 + * @author: 齐景熙 + */ + /*参数: +功能介绍:生成导出文本文件。根据传入的文件路径和文件名格式资源 ID,生成导出文本文件的完整路径,并创建该文件。 +参数: +context:上下文对象,用于访问应用程序的资源。 +filePathResId:文件路径资源 ID。 +fileNameFormatResId:文件名格式资源 ID。 +返回值:生成的导出文本文件对象。*/ private static File generateFileMountedOnSDcard(Context context, int filePathResId, int fileNameFormatResId) { StringBuilder sb = new StringBuilder(); sb.append(Environment.getExternalStorageDirectory()); //外部(SD卡)的存储路径 diff --git a/src/java/net/micode/notes/tool/DataUtils.java b/src/java/net/micode/notes/tool/DataUtils.java index a9c6a48..750f1ad 100644 --- a/src/java/net/micode/notes/tool/DataUtils.java +++ b/src/java/net/micode/notes/tool/DataUtils.java @@ -14,6 +14,29 @@ * limitations under the License. */ /*该类定义在 net.micode.notes.tool 包下,并导入了Android和Java的一些核心类。这些导入的类提供了对内容提供者操作、日志记录、游标以及存储值的支持。 */ + + + + + /** + * + * @ProjectName: minode + * @Package: net.micode.notes.data + * @ClassName: DataUtils + * @Description: 该类提供了一系列与笔记数据操作相关的工具方法。它包含了批量删除笔记、移动笔记到文件夹、 + 获取用户文件夹数量、检查笔记或数据是否存在、获取通话记录号码、获取笔记摘要等功能。通过 + 这些方法,可以方便地对笔记数据进行批量操作和查询。 + * @Author: 齐景熙 + */ + +/*主要成员变量和常量: +DB_NAME:数据库的名称。 +DB_VERSION:数据库的版本号。 +TABLE:定义了数据库表名的接口。 +TAG:用于日志记录的标签。 +mInstance:用于实现单例模式的静态实例变量。 +CREATE_NOTE_TABLE_SQL、CREATE_DATA_TABLE_SQL 等:创建笔记表和数据表的 SQL 语句。 +NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER 等:定义了数据库触发器的 SQL 语句,用于在特定操作后自动更新数据。 */ package net.micode.notes.tool; /*定义了一个公共类 DataUtils,并创建了一个常量 TAG 用于日志记录。 */ import android.content.ContentProviderOperation; @@ -37,6 +60,22 @@ import java.util.HashSet; /*这个方法实现了根据一组ID批量删除笔记的功能。 它首先检查ID集合是否为空,并创建一个操作列表。 通过 ContentResolver 执行删除操作,成功后返回 true,失败则返回 false。 */ + + /** + * @method batchDeleteNotes + * @description 批量删除笔记。根据传入的笔记 ID 集合,构建批量删除操 + 作的 ContentProviderOperation 列表,然后通过 ContentResolver + 的 applyBatch 方法执行批量删除操作。如果删除操作成功,返回 true;否则,返回 false。 + * @author: 齐景熙 + */ + +/* +功能介绍:批量删除笔记。根据传入的笔记 ID 集合,构建批量删除操作的 ContentProviderOperation 列表,然后通过 ContentResolver +的 applyBatch 方法执行批量删除操作。如果删除操作成功,返回 true;否则,返回 false。 +参数: +resolver:内容解析器,用于访问内容提供者。 +ids:要删除的笔记 ID 集合。 +返回值:true 表示删除成功,false 表示删除失败。 */ public class DataUtils { public static final String TAG = "DataUtils"; public static boolean batchDeleteNotes(ContentResolver resolver, HashSet ids) { @@ -76,6 +115,26 @@ public class DataUtils { /*此方法将指定的笔记移动到目标文件夹。 更新笔记的父文件夹ID并标记为本地修改。 */ /*查询非系统文件夹的数量。异常处理用于确保在查询失败时释放游标资源。 */ + +/*这个方法实现了根据一组ID批量删除笔记的功能。 +它首先检查ID集合是否为空,并创建一个操作列表。 +通过 ContentResolver 执行删除操作,成功后返回 true,失败则返回 false。 */ + + /** + * @method moveNoteToFoler + * @description 将笔记移动到指定文件夹。根据传入的笔记 ID、源文件夹 ID 和目标文件夹 ID,更新笔记的父 ID、原始父 ID + 和本地修改标志。通过 ContentResolver 的 update 方法执行更新操作。 + * @author: 齐景熙 + */ + +/* +功能介绍:将笔记移动到指定文件夹。根据传入的笔记 ID、源文件夹 ID 和目标文件夹 ID,更新笔记的父 ID、原始父 ID +和本地修改标志。通过 ContentResolver 的 update 方法执行更新操作。 +参数: +resolver:内容解析器,用于访问内容提供者。 +id:要移动的笔记 ID。 +srcFolderId:源文件夹 ID。 +desFolderId:目标文件夹 ID*/ public static void moveNoteToFoler(ContentResolver resolver, long id, long srcFolderId, long desFolderId) { ContentValues values = new ContentValues(); values.put(NoteColumns.PARENT_ID, desFolderId); @@ -84,22 +143,22 @@ public class DataUtils { resolver.update(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id), values, null, null); } - /** - * @method: batchMoveToFolder - * @description: 将ids里标注的文件移至folderId指定的文件夹 - * @date: 2024/12/26 3:32 - * @author: zhoukexing - * @param: [resolver, ids, folderId] - * @return: boolean - */ - /*检查数据库中是否存在特定类型的可见笔记。 */ -/** - * 批量将便签移动到指定文件夹 - * @param resolver ContentResolver对象 - * @param ids 需要移动的便签ID集合 - * @param folderId 目标文件夹ID - * @return 是否移动成功 - */ + + /** + * @method batchMoveToFolder + * @description 批量移动笔记到指定文件夹。根据传入的笔记 ID 集合和目标文件夹 ID,构建批量更新操作的 ContentProviderOperation + 列表,然后通过 ContentResolver 的 applyBatch 方法执行批量更新操作。如果移动操作成功,返回 true;否则,返回 false。 + * @author: 齐景熙 + */ + +/* +功能介绍:批量移动笔记到指定文件夹。根据传入的笔记 ID 集合和目标文件夹 ID,构建批量更新操作的 ContentProviderOperation +列表,然后通过 ContentResolver 的 applyBatch 方法执行批量更新操作。如果移动操作成功,返回 true;否则,返回 false。 +参数: +resolver:内容解析器,用于访问内容提供者。 +ids:要移动的笔记 ID 集合。 +folderId:目标文件夹 ID。 +返回值:true 表示移动成功,false 表示移动失败。*/ public static boolean batchMoveToFolder(ContentResolver resolver, HashSet ids, long folderId) { if (ids == null) { Log.d(TAG, "the ids is null"); @@ -135,6 +194,19 @@ public static boolean batchMoveToFolder(ContentResolver resolver, HashSet * @param resolver ContentResolver对象 * @return 用户文件夹的数量 */ + + /** + * @method getUserFolderCount + * @description 获取用户文件夹数量。查询笔记表,统计类型为文件夹且父 ID 不等于回收站文件夹 ID 的笔记数量。返回查询结果中的数量。 + * @author: 齐景熙 + */ + +/* +方法 getUserFolderCount(ContentResolver resolver) +功能介绍:获取用户文件夹数量。查询笔记表,统计类型为文件夹且父 ID 不等于回收站文件夹 ID 的笔记数量。返回查询结果中的数量。 +参数: +resolver:内容解析器,用于访问内容提供者。 +返回值:用户文件夹数量。*/ public static int getUserFolderCount(ContentResolver resolver) { Cursor cursor =resolver.query(Notes.CONTENT_NOTE_URI, new String[] { "COUNT(*)" }, @@ -164,6 +236,20 @@ public static int getUserFolderCount(ContentResolver resolver) { * @param type 便签类型 * @return 是否存在 */ + + /** + * @method visibleInNoteDatabase + * @description 检查指定类型的笔记是否存在。根据传入的笔记 ID 和类型,查询笔记表,检查是否存在符合条件的笔记。如果存在,返回 true;否则,返回 false。 + * @author: 齐景熙 + */ + +/* +功能介绍:检查指定类型的笔记是否存在。根据传入的笔记 ID 和类型,查询笔记表,检查是否存在符合条件的笔记。如果存在,返回 true;否则,返回 false。 +参数: +resolver:内容解析器,用于访问内容提供者。 +noteId:要检查的笔记 ID。 +type:笔记类型。 +返回值:true 表示笔记存在,false 表示笔记不存在。*/ public static boolean visibleInNoteDatabase(ContentResolver resolver, long noteId, int type) { Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), null, @@ -187,6 +273,21 @@ public static boolean visibleInNoteDatabase(ContentResolver resolver, long noteI * @param noteId 便签ID * @return 是否存在 */ + + + + /** + * @method existInNoteDatabase + * @description 检查笔记是否存在。根据传入的笔记 ID,查询笔记表,检查是否存在该笔记。如果存在,返回 true;否则,返回 false。 + * @author: 齐景熙 + */ + +/* +功能介绍:检查笔记是否存在。根据传入的笔记 ID,查询笔记表,检查是否存在该笔记。如果存在,返回 true;否则,返回 false。 +参数: +resolver:内容解析器,用于访问内容提供者。 +noteId:要检查的笔记 ID。 +返回值:true 表示笔记存在,false 表示笔记不存在。*/ public static boolean existInNoteDatabase(ContentResolver resolver, long noteId) { Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId), null, null, null, null); @@ -207,6 +308,21 @@ public static boolean existInNoteDatabase(ContentResolver resolver, long noteId) * @param dataId 数据ID * @return 是否存在 */ + + /** + * @method existInNoteDatabase + * @description 检查数据是否存在。根据传入的数据 ID,查询数据表,检查是否存在该数据。如果存在,返回 true;否则,返回 false。 + * @author: 齐景熙 + */ + +/* +功能介绍:检查数据是否存在。根据传入的数据 ID,查询数据表,检查是否存在该数据。如果存在,返回 true;否则,返回 false。 +参数: +resolver:内容解析器,用于访问内容提供者。 +dataId:要检查的数据 ID。 +返回值:true 表示数据存在,false 表示数据不存在。 +*/ + public static boolean existInDataDatabase(ContentResolver resolver, long dataId) { Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_DATA_URI, dataId), null, null, null, null); @@ -227,6 +343,25 @@ public static boolean existInDataDatabase(ContentResolver resolver, long dataId) * @param name 文件夹名称 * @return 是否存在 */ + + + /** + * @method checkVisibleFolderName + * @description 检查数据是否存在。根据传入的数据 ID,查询数据表,检查是否存在该数据。如果存在,返回 true;否则,返回 false。 + * @author: 齐景熙 + */ + +/* +功能介绍:检查数据是否存在。根据传入的数据 ID,查询数据表,检查是否存在该数据。如果存在,返回 true;否则,返回 false。 +参数: +resolver:内容解析器,用于访问内容提供者。 +dataId:要检查的数据 ID。 +返回值:true 表示数据存在,false 表示数据不存在。功能介绍:检查可见文件夹名称是否存在。根据传入的文件夹名称,查询笔记表,检查是否存在类型为文件夹、父 ID 不等于回收站文件夹 ID 且名称等于指定名称的文件夹。如果存在,返回 true;否则,返回 false。 +参数: +resolver:内容解析器,用于访问内容提供者。 +name:要检查的文件夹名称。 +返回值:true 表示文件夹名称存在,false 表示文件夹名称不存在。 +*/ public static boolean checkVisibleFolderName(ContentResolver resolver, String name) { Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI, null, NoteColumns.TYPE + "=" + Notes.TYPE_FOLDER + @@ -249,6 +384,23 @@ public static boolean checkVisibleFolderName(ContentResolver resolver, String na * @param folderId 文件夹ID * @return 小部件属性集合 */ + + /** + * @method getFolderNoteWidget + * @description 获取指定文件夹的笔记小部件属性。根据传入的文件夹 ID,查询笔记表,获取该文件夹下所有笔记的小部件 ID 和类型, + 并将它们封装成 AppWidgetAttribute 对象,存入 HashSet 中返回。 + * @author: 齐景熙 + */ + +/* +功能介绍:获取指定文件夹的笔记小部件属性。根据传入的文件夹 ID,查询笔记表,获取该文件夹下所有笔记的小部件 ID 和类型, +并将它们封装成 AppWidgetAttribute 对象,存入 HashSet 中返回。 +参数: +resolver:内容解析器,用于访问内容提供者。 +folderId:文件夹 ID。 +返回值:包含笔记小部件属性的 HashSet。 +*/ + public static HashSet getFolderNoteWidget(ContentResolver resolver, long folderId) { Cursor c = resolver.query(Notes.CONTENT_NOTE_URI, new String[] { NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE }, @@ -282,6 +434,29 @@ public static HashSet getFolderNoteWidget(ContentResolver re * @param noteId 便签ID * @return 电话号码 */ + + /** + * @method getCallNumberByNoteId + * @description 根据笔记 ID 获取通话记录号码。根据传入的笔记 ID,查询数据表,获取该笔记对应的通话记录号码。 + 如果查询成功且存在号码,返回号码字符串;否则,返回空字符串。 + * @author: 齐景熙 + */ + +/* +功能介绍:获取指定文件夹的笔记小部件属性。根据传入的文件夹 ID,查询笔记表,获取该文件夹下所有笔记的小部件 ID 和类型, +并将它们封装成 AppWidgetAttribute 对象,存入 HashSet 中返回。 +功能介绍:根据笔记 ID 获取通话记录号码。根据传入的笔记 ID,查询数据表,获取该笔记对应的通话记录号码。如果查询成功且存 +在号码,返回号码字符串;否则,返回空字符串。 +参数: +resolver:内容解析器,用于访问内容提供者。 +noteId:笔记 ID。 +返回值:通话记录号码字符串。 +参数: +resolver:内容解析器,用于访问内容提供者。 +folderId:文件夹 ID。 +返回值:包含笔记小部件属性的 HashSet。 +*/ + public static String getCallNumberByNoteId(ContentResolver resolver, long noteId) { Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI, new String [] { CallNote.PHONE_NUMBER }, @@ -308,6 +483,24 @@ public static String getCallNumberByNoteId(ContentResolver resolver, long noteId * @param callDate 通话日期 * @return 便签ID */ + + /** + * @method getNoteIdByPhoneNumberAndCallDate + * @description 根据电话号码和通话日期获取笔记 ID。根据传入的电话号码和通话日期,查询数据表,获取匹配的笔记 ID。如果查询成功 + 且存在笔记 ID,返回笔记 ID;否则,返回 0。 + * @author: 齐景熙 + */ + +/* +功能介绍: +根据电话号码和通话日期获取笔记 ID。根据传入的电话号码和通话日期,查询数据表,获取匹配的笔记 ID。如果查询成功 +且存在笔记 ID,返回笔记 ID;否则,返回 0。 +参数: +resolver:内容解析器,用于访问内容提供者。 +phoneNumber:电话号码。 +callDate:通话日期。 +返回值:笔记 ID。 +*/ public static long getNoteIdByPhoneNumberAndCallDate(ContentResolver resolver, String phoneNumber, long callDate) { Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI, new String [] { CallNote.NOTE_ID }, @@ -335,6 +528,26 @@ public static long getNoteIdByPhoneNumberAndCallDate(ContentResolver resolver, S * @param noteId 便签ID * @return 便签摘要 */ + + + /** + * @method getSnippetById + * @description 根据笔记 ID 获取笔记摘要。根据传入的笔记 ID,查询笔记表,获取该笔记的摘要字符串。如果查询成功且存在摘要, + 返回摘要字符串;否则,抛出 IllegalArgumentException 异常。 + * @author: 齐景熙 + */ + +/* +功能介绍: +根据电话号码和通话日期获取笔记 ID。根据传入的电话号码和通话日期,查询数据表,获取匹配的笔记 ID。如果查询成功 +且存在笔记 ID,返回笔记 ID;否则,返回 0。 +功能介绍:根据笔记 ID 获取笔记摘要。根据传入的笔记 ID,查询笔记表,获取该笔记的摘要字符串。如果查询成功且存在摘要, +返回摘要字符串;否则,抛出 IllegalArgumentException 异常。 +参数: +resolver:内容解析器,用于访问内容提供者。 +noteId:笔记 ID。 +返回值:笔记摘要字符串。 +*/ public static String getSnippetById(ContentResolver resolver, long noteId) { Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI, new String [] { NoteColumns.SNIPPET }, @@ -358,6 +571,21 @@ public static String getSnippetById(ContentResolver resolver, long noteId) { * @param snippet 便签摘要 * @return 格式化后的便签摘要 */ + + /** + * @method getFormattedSnippet + * @description 格式化笔记摘要。根据传入的笔记摘要字符串,去除首尾空白字符,然后查找第一个换行符,如果存在换行符,则截取换行符之 + 前的内容作为格式化后的摘要。 + * @author: 齐景熙 + */ + +/* +功能介绍:格式化笔记摘要。根据传入的笔记摘要字符串,去除首尾空白字符,然后查找第一个换行符,如果存在换行符,则截取换行符之 +前的内容作为格式化后的摘要。 +参数: +snippet:笔记摘要字符串。 +返回值:格式化后的笔记摘要字符串。 +*/ public static String getFormattedSnippet(String snippet) { if (snippet != null) { snippet = snippet.trim(); @@ -375,6 +603,21 @@ public static String getFormattedSnippet(String snippet) { * @param query 查询内容 * @return 包含查询结果的Cursor对象 */ + + /** + * @method searchInNoteDatabase + * @description 在笔记数据库中搜索。根据传入的查询字符串,查询数据表,获取内容包含查询字符串的笔记 ID。返回查询结果的 Cursor 对象。 + * @author: 齐景熙 + */ + +/* +功能介绍:在笔记数据库中搜索。根据传入的查询字符串,查询数据表,获取内容包含查询字符串的笔记 ID。返回查询结果的 Cursor 对象。 +参数: +resolver:内容解析器,用于访问内容提供者。 +query:查询字符串。 +返回值:查询结果的 Cursor 对象。 +*/ + public static Cursor searchInNoteDatabase(ContentResolver resolver, String query) { Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI, new String[]{NoteColumns.ID}, diff --git a/src/java/net/micode/notes/tool/GTaskStringUtils.java b/src/java/net/micode/notes/tool/GTaskStringUtils.java index 694d849..db8e0a5 100644 --- a/src/java/net/micode/notes/tool/GTaskStringUtils.java +++ b/src/java/net/micode/notes/tool/GTaskStringUtils.java @@ -14,6 +14,74 @@ * limitations under the License. */ +/** + * + * @ProjectName: minode + * @Package: net.micode.notes.data + * @ClassName: GTaskStringUtils + * @Author: 齐景熙 + */ + + /* + 文件中包含了一系列的静态常量字符串。这些常量字符串主要用于表示与 GTask(Google Tasks)相关的 JSON 键和 + 一些特定的字符串前缀。以下是对这些常量的详细功能介绍: + + 常量介绍 +GTASK JSON 键 +GTASK_JSON_ACTION_ID:用于表示 GTask 操作的 ID。 +GTASK_JSON_ACTION_LIST:用于表示 GTask 操作的列表。 +GTASK_JSON_ACTION_TYPE:用于表示 GTask 操作的类型。 +GTASK_JSON_ACTION_TYPE_CREATE:创建操作类型。 +GTASK_JSON_ACTION_TYPE_GETALL:获取全部操作类型。 +GTASK_JSON_ACTION_TYPE_MOVE:移动操作类型。 +GTASK_JSON_ACTION_TYPE_UPDATE:更新操作类型。 +GTASK_JSON_CREATOR_ID:用于表示创建者的 ID。 +GTASK_JSON_CHILD_ENTITY:用于表示子实体。 +GTASK_JSON_CLIENT_VERSION:用于表示客户端版本。 +GTASK_JSON_COMPLETED:用于表示任务是否已完成。 +GTASK_JSON_CURRENT_LIST_ID:用于表示当前列表的 ID。 +GTASK_JSON_DEFAULT_LIST_ID:用于表示默认列表的 ID。 +GTASK_JSON_DELETED:用于表示实体是否已被删除。 +GTASK_JSON_DEST_LIST:用于表示目标列表。 +GTASK_JSON_DEST_PARENT:用于表示目标父实体。 +GTASK_JSON_DEST_PARENT_TYPE:用于表示目标父实体的类型。 +GTASK_JSON_ENTITY_DELTA:用于表示实体的变更信息。 +GTASK_JSON_ENTITY_TYPE:用于表示实体的类型。 +GTASK_JSON_GET_DELETED:用于表示是否获取已删除的实体。 +GTASK_JSON_ID:用于表示实体的 ID。 +GTASK_JSON_INDEX:用于表示实体的索引。 +GTASK_JSON_LAST_MODIFIED:用于表示实体最后修改的时间。 +GTASK_JSON_LATEST_SYNC_POINT:用于表示最新的同步点。 +GTASK_JSON_LIST_ID:用于表示列表的 ID。 +GTASK_JSON_LISTS:用于表示列表的集合。 +GTASK_JSON_NAME:用于表示实体的名称。 +GTASK_JSON_NEW_ID:用于表示新实体的 ID。 +GTASK_JSON_NOTES:用于表示笔记信息。 +GTASK_JSON_PARENT_ID:用于表示父实体的 ID。 +GTASK_JSON_PRIOR_SIBLING_ID:用于表示前一个兄弟实体的 ID。 +GTASK_JSON_RESULTS:用于表示操作的结果。 +GTASK_JSON_SOURCE_LIST:用于表示源列表。 +GTASK_JSON_TASKS:用于表示任务的集合。 +GTASK_JSON_TYPE:用于表示实体的类型。 +GTASK_JSON_TYPE_GROUP:组类型。 +GTASK_JSON_TYPE_TASK:任务类型。 +GTASK_JSON_USER:用于表示用户信息。 + +其他字符串常量 +MIUI_FOLDER_PREFFIX:用于表示 MIUI 笔记文件夹的前缀。 +FOLDER_DEFAULT:用于表示默认文件夹。 +FOLDER_CALL_NOTE:用于表示通话记录笔记文件夹。 +FOLDER_META:用于表示元数据文件夹。 +META_HEAD_GTASK_ID:用于表示 GTask ID 的元数据头部。 +META_HEAD_NOTE:用于表示笔记的元数据头部。 +META_HEAD_DATA:用于表示数据的元数据头部。 +META_NOTE_NAME:用于表示元数据笔记的名称,提示不要更新和删除。 + + +这些常量字符串在处理与 GTask 相关的 JSON 数据时非常有用,可以方便地获取和设置 JSON 对象中的各种属性。 +同时,它们也用于定义一些特定的文件夹名称和元数据头部,以便在笔记应用中进行相应的处理和标识。 + */ + package net.micode.notes.tool; // 该类用于定义 Google 任务相关的 JSON 字段常量