diff --git a/MetaData.txt b/MetaData.txt new file mode 100644 index 0000000..eb000f7 --- /dev/null +++ b/MetaData.txt @@ -0,0 +1,115 @@ +/* + * 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.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 类,用于处理与 Google Task 相关的元数据。 + * 该类主要用于存储和获取与 Google Task 相关的元数据信息。 + */ +public class MetaData extends Task { + private final static String TAG = MetaData.class.getSimpleName(); + + private String mRelatedGid = null; // 相关 Google Task 的 ID +/* + * 设置元数据信息。 + * 该方法用于将 Google Task 的 ID 和元数据信息存储到任务的备注字段中。 + * @param gid Google Task 的 ID。 + * @param metaInfo 元数据信息的 JSON 对象。 + */ + public void setMeta(String gid, JSONObject metaInfo) { + try { + metaInfo.put(GTaskStringUtils.META_HEAD_GTASK_ID, gid); // 将 Google Task 的 ID 添加到元数据信息中 + } catch (JSONException e) { + Log.e(TAG, "failed to put related gid"); // 记录日志,添加失败 + } + setNotes(metaInfo.toString()); // 将元数据信息存储到任务的备注字段中 + setName(GTaskStringUtils.META_NOTE_NAME); // 设置任务的名称为元数据名称 + } +/* + * 获取相关 Google Task 的 ID。 + * @return 返回相关 Google Task 的 ID。 + */ + public String getRelatedGid() { + return mRelatedGid; + } +/* + * 判断任务是否值得保存。 + * 该方法用于判断任务是否包含有效的备注信息。 + * @return 如果任务包含有效的备注信息,则返回 true,否则返回 false。 + */ + @Override + public boolean isWorthSaving() { + return getNotes() != null; + } +/* + * 根据远程 JSON 对象设置任务内容。 + * 该方法用于从远程 JSON 对象中提取元数据信息,并设置相关 Google Task 的 ID。 + * @param js 远程 JSON 对象。 + */ + @Override + public void setContentByRemoteJSON(JSONObject js) { + super.setContentByRemoteJSON(js); // 调用父类方法设置任务内容 + if (getNotes() != null) { + try { + JSONObject metaInfo = new JSONObject(getNotes().trim()); // 解析备注字段中的元数据信息 + mRelatedGid = metaInfo.getString(GTaskStringUtils.META_HEAD_GTASK_ID); // 获取相关 Google Task 的 ID + } catch (JSONException e) { + Log.w(TAG, "failed to get related gid"); // 记录日志,获取失败 + mRelatedGid = null; + } + } + } +/* + * 根据本地 JSON 对象设置任务内容。 + * 该方法不应被调用,因为元数据任务不应从本地 JSON 对象中设置内容。 + * @param js 本地 JSON 对象。 + */ + @Override + public void setContentByLocalJSON(JSONObject js) { + // this function should not be called + // 该方法不应被调用 + throw new IllegalAccessError("MetaData:setContentByLocalJSON should not be called"); + } +/* + * 从任务内容中获取本地 JSON 对象。 + * 该方法不应被调用,因为元数据任务不应生成本地 JSON 对象。 + * @return 抛出异常,表示该方法不应被调用。 + */ + @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"); + } + +}