From 49031fd5c6c7295a6d21de7cdc391ea1b14c6a31 Mon Sep 17 00:00:00 2001 From: STRIV1 <26755173368@qq.com> Date: Mon, 30 Dec 2024 18:57:36 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gtask/data/MetaData.java | 120 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 gtask/data/MetaData.java diff --git a/gtask/data/MetaData.java b/gtask/data/MetaData.java new file mode 100644 index 0000000..5e91cca --- /dev/null +++ b/gtask/data/MetaData.java @@ -0,0 +1,120 @@ +/* + * 版权声明:2010-2011年,MiCode开源社区(www.micode.net) + * + * 根据Apache License 2.0(以下简称“许可证”)授权; + * 除非遵守许可证,否则不得使用此文件。 + * 你可以在以下网址获得许可证的副本: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 除非适用法律要求或书面同意,否则根据许可证分发的软件 + * 按“原样”分发,不附带任何明示或暗示的保证或条件。 + * 请参阅许可证,了解许可证下的权利和限制的具体语言。 + */ + +package net.micode.notes.gtask.data; + +// 导入Android框架中用于数据库操作和日志输出的相关类 +import android.database.Cursor; +import android.util.Log; + +// 导入应用内部定义的工具类,用于处理GTask相关的字符串 +import net.micode.notes.tool.GTaskStringUtils; + +// 导入JSON处理的相关类 +import org.json.JSONException; +import org.json.JSONObject; + +// 继承Task类,创建MetaData类,用于处理元数据 +public class MetaData extends Task { + // 日志标签,用于Log日志输出 + private final static String TAG = MetaData.class.getSimpleName(); + + // 相关GTask ID + private String mRelatedGid = null; + + /** + * 设置元数据。 + * @param gid 任务ID。 + * @param metaInfo 元数据信息的JSON对象。 + */ + public void setMeta(String gid, JSONObject metaInfo) { + try { + // 在元数据中添加任务ID + metaInfo.put(GTaskStringUtils.META_HEAD_GTASK_ID, gid); + } catch (JSONException e) { + Log.e(TAG, "failed to put related gid"); + } + // 设置笔记内容为元数据的字符串形式 + setNotes(metaInfo.toString()); + // 设置笔记名称为元数据的特定名称 + setName(GTaskStringUtils.META_NOTE_NAME); + } + + /** + * 获取相关GTask ID。 + * @return 相关GTask ID。 + */ + public String getRelatedGid() { + return mRelatedGid; + } + + /** + * 判断任务是否值得保存。 + * 如果笔记内容不为空,则返回true。 + * @return 任务是否值得保存。 + */ + @Override + public boolean isWorthSaving() { + return getNotes() != null; + } + + /** + * 根据远程JSON设置内容。 + * @param js 远程JSON对象。 + */ + @Override + public void setContentByRemoteJSON(JSONObject js) { + super.setContentByRemoteJSON(js); + if (getNotes() != null) { + try { + // 解析笔记内容为JSON对象,并获取相关GTask ID + JSONObject metaInfo = new JSONObject(getNotes().trim()); + mRelatedGid = metaInfo.getString(GTaskStringUtils.META_HEAD_GTASK_ID); + } catch (JSONException e) { + Log.w(TAG, "failed to get related gid"); + mRelatedGid = null; + } + } + } + + /** + * 根据本地JSON设置内容,此方法不应被调用。 + */ + @Override + public void setContentByLocalJSON(JSONObject js) { + // 抛出异常,表示此方法不应被调用 + throw new IllegalAccessError("MetaData:setContentByLocalJSON should not be called"); + } + + /** + * 从内容中获取本地JSON,此方法不应被调用。 + * @return 本地JSON对象。 + */ + @Override + public JSONObject getLocalJSONFromContent() { + // 抛出异常,表示此方法不应被调用 + throw new IllegalAccessError("MetaData:getLocalJSONFromContent should not be called"); + } + + /** + * 获取同步操作,此方法不应被调用。 + * @param c 数据库游标。 + * @return 同步操作。 + */ + @Override + public int getSyncAction(Cursor c) { + // 抛出异常,表示此方法不应被调用 + throw new IllegalAccessError("MetaData:getSyncAction should not be called"); + } +}