|
|
/*
|
|
|
* Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
|
|
|
*
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
* You may obtain a copy of the License at
|
|
|
*
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
*
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
* See the License for the specific language governing permissions and
|
|
|
* limitations under the License.
|
|
|
*/
|
|
|
|
|
|
package net.micode.notes.tool;
|
|
|
|
|
|
/**
|
|
|
* Google Tasks API 工具类 - 包含与Google Tasks API交互的所有常量定义
|
|
|
* 包括:
|
|
|
* 1. JSON键名常量
|
|
|
* 2. API动作类型常量
|
|
|
* 3. 预定义文件夹名称
|
|
|
* 4. 元数据标识符
|
|
|
*
|
|
|
* 设计原则:
|
|
|
* - 所有常量按功能分组
|
|
|
* - 添加枚举类型增强类型安全
|
|
|
* - 补充必要的使用说明注释
|
|
|
*/
|
|
|
public final class GTaskStringUtils {
|
|
|
|
|
|
// 防止实例化
|
|
|
private GTaskStringUtils() {
|
|
|
throw new AssertionError("This class cannot be instantiated");
|
|
|
}
|
|
|
|
|
|
/* ================== JSON 键名常量 ================== */
|
|
|
|
|
|
/** JSON字段:操作ID */
|
|
|
public static final String GTASK_JSON_ACTION_ID = "action_id";
|
|
|
|
|
|
/** JSON字段:操作列表 */
|
|
|
public static final String GTASK_JSON_ACTION_LIST = "action_list";
|
|
|
|
|
|
/** JSON字段:操作类型 */
|
|
|
public static final String GTASK_JSON_ACTION_TYPE = "action_type";
|
|
|
|
|
|
/** JSON字段:创建者ID */
|
|
|
public static final String GTASK_JSON_CREATOR_ID = "creator_id";
|
|
|
|
|
|
/** JSON字段:子实体 */
|
|
|
public static final String GTASK_JSON_CHILD_ENTITY = "child_entity";
|
|
|
|
|
|
/** JSON字段:客户端版本 */
|
|
|
public static final String GTASK_JSON_CLIENT_VERSION = "client_version";
|
|
|
|
|
|
/** JSON字段:完成状态 */
|
|
|
public static final String GTASK_JSON_COMPLETED = "completed";
|
|
|
|
|
|
/** JSON字段:当前列表ID */
|
|
|
public static final String GTASK_JSON_CURRENT_LIST_ID = "current_list_id";
|
|
|
|
|
|
/** JSON字段:默认列表ID */
|
|
|
public static final String GTASK_JSON_DEFAULT_LIST_ID = "default_list_id";
|
|
|
|
|
|
/** JSON字段:删除标记 */
|
|
|
public static final String GTASK_JSON_DELETED = "deleted";
|
|
|
|
|
|
/** JSON字段:目标列表 */
|
|
|
public static final String GTASK_JSON_DEST_LIST = "dest_list";
|
|
|
|
|
|
/** JSON字段:目标父级 */
|
|
|
public static final String GTASK_JSON_DEST_PARENT = "dest_parent";
|
|
|
|
|
|
/** JSON字段:目标父级类型 */
|
|
|
public static final String GTASK_JSON_DEST_PARENT_TYPE = "dest_parent_type";
|
|
|
|
|
|
/** JSON字段:实体增量 */
|
|
|
public static final String GTASK_JSON_ENTITY_DELTA = "entity_delta";
|
|
|
|
|
|
/** JSON字段:实体类型 */
|
|
|
public static final String GTASK_JSON_ENTITY_TYPE = "entity_type";
|
|
|
|
|
|
/** JSON字段:获取删除项 */
|
|
|
public static final String GTASK_JSON_GET_DELETED = "get_deleted";
|
|
|
|
|
|
/** JSON字段:唯一标识 */
|
|
|
public static final String GTASK_JSON_ID = "id";
|
|
|
|
|
|
/** JSON字段:索引位置 */
|
|
|
public static final String GTASK_JSON_INDEX = "index";
|
|
|
|
|
|
/** JSON字段:最后修改时间 */
|
|
|
public static final String GTASK_JSON_LAST_MODIFIED = "last_modified";
|
|
|
|
|
|
/** JSON字段:最新同步点 */
|
|
|
public static final String GTASK_JSON_LATEST_SYNC_POINT = "latest_sync_point";
|
|
|
|
|
|
/** JSON字段:列表ID */
|
|
|
public static final String GTASK_JSON_LIST_ID = "list_id";
|
|
|
|
|
|
/** JSON字段:列表集合 */
|
|
|
public static final String GTASK_JSON_LISTS = "lists";
|
|
|
|
|
|
/** JSON字段:名称 */
|
|
|
public static final String GTASK_JSON_NAME = "name";
|
|
|
|
|
|
/** JSON字段:新ID */
|
|
|
public static final String GTASK_JSON_NEW_ID = "new_id";
|
|
|
|
|
|
/** JSON字段:笔记集合 */
|
|
|
public static final String GTASK_JSON_NOTES = "notes";
|
|
|
|
|
|
/** JSON字段:父级ID */
|
|
|
public static final String GTASK_JSON_PARENT_ID = "parent_id";
|
|
|
|
|
|
/** JSON字段:前置兄弟ID */
|
|
|
public static final String GTASK_JSON_PRIOR_SIBLING_ID = "prior_sibling_id";
|
|
|
|
|
|
/** JSON字段:结果集 */
|
|
|
public static final String GTASK_JSON_RESULTS = "results";
|
|
|
|
|
|
/** JSON字段:源列表 */
|
|
|
public static final String GTASK_JSON_SOURCE_LIST = "source_list";
|
|
|
|
|
|
/** JSON字段:任务集合 */
|
|
|
public static final String GTASK_JSON_TASKS = "tasks";
|
|
|
|
|
|
/** JSON字段:类型标识 */
|
|
|
public static final String GTASK_JSON_TYPE = "type";
|
|
|
|
|
|
/* ================== 操作类型常量 ================== */
|
|
|
|
|
|
/** 操作类型:创建 */
|
|
|
public static final String GTASK_JSON_ACTION_TYPE_CREATE = "create";
|
|
|
|
|
|
/** 操作类型:获取所有 */
|
|
|
public static final String GTASK_JSON_ACTION_TYPE_GETALL = "get_all";
|
|
|
|
|
|
/** 操作类型:移动 */
|
|
|
public static final String GTASK_JSON_ACTION_TYPE_MOVE = "move";
|
|
|
|
|
|
/** 操作类型:更新 */
|
|
|
public static final String GTASK_JSON_ACTION_TYPE_UPDATE = "update";
|
|
|
|
|
|
/* ================== 实体类型常量 ================== */
|
|
|
|
|
|
/** 实体类型:分组 */
|
|
|
public static final String GTASK_JSON_TYPE_GROUP = "GROUP";
|
|
|
|
|
|
/** 实体类型:任务 */
|
|
|
public static final String GTASK_JSON_TYPE_TASK = "TASK";
|
|
|
|
|
|
/** JSON字段:用户 */
|
|
|
public static final String GTASK_JSON_USER = "user";
|
|
|
|
|
|
/* ================== 文件夹常量 ================== */
|
|
|
|
|
|
/** MIUI笔记文件夹前缀 */
|
|
|
public static final String MIUI_FOLDER_PREFIX = "[MIUI_Notes]"; // 修正:PREFFIX → PREFIX
|
|
|
|
|
|
/** 默认文件夹名称 */
|
|
|
public static final String FOLDER_DEFAULT = "Default";
|
|
|
|
|
|
/** 通话记录文件夹名称 */
|
|
|
public static final String FOLDER_CALL_NOTE = "Call_Note";
|
|
|
|
|
|
/** 元数据文件夹名称 */
|
|
|
public static final String FOLDER_META = "METADATA";
|
|
|
|
|
|
/* ================== 元数据常量 ================== */
|
|
|
|
|
|
/** 元数据头:Google Tasks ID */
|
|
|
public static final String META_HEAD_GTASK_ID = "meta_gid";
|
|
|
|
|
|
/** 元数据头:笔记信息 */
|
|
|
public static final String META_HEAD_NOTE = "meta_note";
|
|
|
|
|
|
/** 元数据头:数据信息 */
|
|
|
public static final String META_HEAD_DATA = "meta_data";
|
|
|
|
|
|
/** 元数据笔记名称(警告用户不要修改) */
|
|
|
public static final String META_NOTE_NAME = "[META INFO] DON'T UPDATE AND DELETE";
|
|
|
|
|
|
/* ================== 增强功能:操作类型枚举 ================== */
|
|
|
|
|
|
/**
|
|
|
* Google Tasks操作类型枚举(增强类型安全性)
|
|
|
*/
|
|
|
public enum GTaskActionType {
|
|
|
CREATE(GTASK_JSON_ACTION_TYPE_CREATE),
|
|
|
GET_ALL(GTASK_JSON_ACTION_TYPE_GETALL),
|
|
|
MOVE(GTASK_JSON_ACTION_TYPE_MOVE),
|
|
|
UPDATE(GTASK_JSON_ACTION_TYPE_UPDATE);
|
|
|
|
|
|
private final String actionValue;
|
|
|
|
|
|
GTaskActionType(String value) {
|
|
|
this.actionValue = value;
|
|
|
}
|
|
|
|
|
|
public String getValue() {
|
|
|
return actionValue;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 从字符串值获取枚举实例
|
|
|
* @param value 操作类型字符串
|
|
|
* @return 对应的枚举实例,找不到时返回null
|
|
|
*/
|
|
|
public static GTaskActionType fromValue(String value) {
|
|
|
for (GTaskActionType type : values()) {
|
|
|
if (type.actionValue.equals(value)) {
|
|
|
return type;
|
|
|
}
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/* ================== 增强功能:实体类型枚举 ================== */
|
|
|
|
|
|
/**
|
|
|
* Google Tasks实体类型枚举
|
|
|
*/
|
|
|
public enum GTaskEntityType {
|
|
|
GROUP(GTASK_JSON_TYPE_GROUP),
|
|
|
TASK(GTASK_JSON_TYPE_TASK);
|
|
|
|
|
|
private final String typeValue;
|
|
|
|
|
|
GTaskEntityType(String value) {
|
|
|
this.typeValue = value;
|
|
|
}
|
|
|
|
|
|
public String getValue() {
|
|
|
return typeValue;
|
|
|
}
|
|
|
|
|
|
public static GTaskEntityType fromValue(String value) {
|
|
|
for (GTaskEntityType type : values()) {
|
|
|
if (type.typeValue.equals(value)) {
|
|
|
return type;
|
|
|
}
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/* ================== 新功能:文件夹工具方法 ================== */
|
|
|
|
|
|
/**
|
|
|
* 生成同步文件夹名(添加MIUI前缀)
|
|
|
* @param folderName 原始文件夹名
|
|
|
* @return 格式化后的带前缀文件夹名
|
|
|
*/
|
|
|
public static String generateSyncFolderName(String folderName) {
|
|
|
return MIUI_FOLDER_PREFIX + folderName;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 检查文件夹是否为MIUI同步文件夹
|
|
|
* @param folderName 文件夹名称
|
|
|
* @return 如果是MIUI同步文件夹返回true
|
|
|
*/
|
|
|
public static boolean isMiuiSyncFolder(String folderName) {
|
|
|
return folderName != null && folderName.startsWith(MIUI_FOLDER_PREFIX);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 从MIUI同步文件夹名中提取原始文件夹名
|
|
|
* @param miuiFolderName MIUI格式文件夹名
|
|
|
* @return 原始文件夹名,如果不是MIUI格式返回null
|
|
|
*/
|
|
|
public static String extractOriginalFolderName(String miuiFolderName) {
|
|
|
if (isMiuiSyncFolder(miuiFolderName)) {
|
|
|
return miuiFolderName.substring(MIUI_FOLDER_PREFIX.length());
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
} |