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

130 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.
*/
// MetaData 类继承自 Task用于处理任务的元数据信息
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;
public class MetaData extends Task {
// 日志标签,用于日志记录
private final static String TAG = MetaData.class.getSimpleName();
// 存储相关的 Google 任务 ID
private String mRelatedGid = null;
/**
* 设置元数据信息
*
* @param gid 相关的 Google 任务 ID
* @param metaInfo 元数据信息,以 JSON 格式表示
*/
public void setMeta(String gid, JSONObject metaInfo) {
try {
// 将 Google 任务 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);
}
/**
* 获取相关的 Google 任务 ID
*
* @return 返回 Google 任务 ID
*/
public String getRelatedGid() {
return mRelatedGid;
}
/**
* 判断元数据是否值得保存
*
* @return 如果笔记不为空,则返回 true否则返回 false
*/
@Override
public boolean isWorthSaving() {
return getNotes() != null;
}
/**
* 从远程 JSON 设置内容
*
* @param js 远程 JSON 对象
*/
@Override
public void setContentByRemoteJSON(JSONObject js) {
super.setContentByRemoteJSON(js);
if (getNotes() != null) {
try {
// 解析笔记以获取 Google 任务 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 设置内容
* 此方法不应被调用
*
* @param js 本地 JSON 对象
*/
@Override
public void setContentByLocalJSON(JSONObject js) {
// 此方法不应被调用
throw new IllegalAccessError("MetaData:setContentByLocalJSON should not be called");
}
/**
* 从内容中获取本地 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");
}
}