Signed-off-by:

Tanshuhan
谭淑涵 5 months ago
parent b9cadba7b9
commit 21cf85e072

@ -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");
}
}
Loading…
Cancel
Save