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.
software/MetaData.java

116 lines
3.8 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)
*
* 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");
}
}