You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
xiaomi/MetaData.java

101 lines
3.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* Copyright (c) 2010 - 2011, The MiCode Open Source Community (www.micode.net)
*
* 遵循 Apache 许可证 2.0 版(“许可证”);
* 除非遵守许可证,否则不得使用此文件。
* 你可以在以下网址获取许可证副本:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* 除非适用法律要求或书面同意,
* 根据许可证分发的软件按“原样”分发,
* 不附带任何明示或暗示的保证或条件。
* 请参阅许可证,了解具体的权限和限制。
*/
package net.micode.notes.gtask.data;
import android.database.Cursor;
import android.util.Log;
import net.micode.notes.tool.GTaskStringUtils;
import org.json.JSONException;
import org.json.JSONObject;
// MetaData 类继承自 Task 类,用于处理与 GTask 相关的元数据
public class MetaData extends Task {
// 用于日志记录的标签,使用类的简单名称
private final static String TAG = MetaData.class.getSimpleName();
// 存储相关 GTask ID 的成员变量
private String mRelatedGid = null;
// 设置元数据的方法,接受 GTask ID 和包含元信息的 JSONObject
public void setMeta(String gid, JSONObject metaInfo) {
try {
// 将 GTask ID 放入元信息的 JSONObject 中,使用 GTaskStringUtils 中的常量作为键
metaInfo.put(GTaskStringUtils.META_HEAD_GTASK_ID, gid);
} catch (JSONException e) {
// 如果放入过程中出现 JSON 异常,记录错误日志
Log.e(TAG, "failed to put related gid");
}
// 将包含元信息的 JSONObject 转换为字符串,并设置为笔记内容
setNotes(metaInfo.toString());
// 设置名称为 GTaskStringUtils 中定义的元数据笔记名称
setName(GTaskStringUtils.META_NOTE_NAME);
}
// 获取相关 GTask ID 的方法
public String getRelatedGid() {
return mRelatedGid;
}
// 判断是否值得保存的方法,重写自父类
@Override
public boolean isWorthSaving() {
// 如果笔记内容不为空,则返回 true即值得保存
return getNotes()!= null;
}
// 根据远程 JSON 数据设置内容的方法,重写自父类
@Override
public void setContentByRemoteJSON(JSONObject js) {
// 调用父类的 setContentByRemoteJSON 方法,先处理通用部分
super.setContentByRemoteJSON(js);
if (getNotes()!= null) {
try {
// 将获取到的笔记内容(字符串)转换为 JSONObject
JSONObject metaInfo = new JSONObject(getNotes().trim());
// 从转换后的 JSONObject 中获取相关的 GTask ID
mRelatedGid = metaInfo.getString(GTaskStringUtils.META_HEAD_GTASK_ID);
} catch (JSONException e) {
// 如果获取过程中出现 JSON 异常,记录警告日志
Log.w(TAG, "failed to get related gid");
// 异常情况下将相关 GTask ID 设置为 null
mRelatedGid = null;
}
}
}
// 根据本地 JSON 数据设置内容的方法,重写自父类
@Override
public void setContentByLocalJSON(JSONObject js) {
// 该方法不应该被调用,抛出 IllegalAccessError 异常
throw new IllegalAccessError("MetaData:setContentByLocalJSON should not be called");
}
// 从内容中获取本地 JSON 数据的方法,重写自父类
@Override
public JSONObject getLocalJSONFromContent() {
// 该方法不应该被调用,抛出 IllegalAccessError 异常
throw new IllegalAccessError("MetaData:getLocalJSONFromContent should not be called");
}
// 根据 Cursor 获取同步操作的方法,重写自父类
@Override
public int getSyncAction(Cursor c) {
// 该方法不应该被调用,抛出 IllegalAccessError 异常
throw new IllegalAccessError("MetaData:getSyncAction should not be called");
}
}