/* * 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"); } }