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.

85 lines
3.1 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;
//元数据类继承自Task类用于处理与Google Task相关的元数据信息
public class MetaData extends Task {// 日志标签
private final static String TAG = MetaData.class.getSimpleName();// 关联的Google Task ID
private String mRelatedGid = null;//设置元数据信息
public void setMeta(String gid, JSONObject metaInfo) {
try { // 将Google Task ID添加到元数据中
metaInfo.put(GTaskStringUtils.META_HEAD_GTASK_ID, gid);
} catch (JSONException e) {
Log.e(TAG, "failed to put related gid");// 将元数据JSON对象转换为字符串并保存到notes字段
}
setNotes(metaInfo.toString());// 设置任务名称为预定义的元数据名称
setName(GTaskStringUtils.META_NOTE_NAME);
}
public String getRelatedGid() {
return mRelatedGid;
}//检查是否需要保存
@Override
public boolean isWorthSaving() {
return getNotes() != null;
}//从远程JSON数据设置内容
@Override
public void setContentByRemoteJSON(JSONObject js) { // 调用父类方法处理基本数据
super.setContentByRemoteJSON(js);// 如果notes字段不为空尝试解析其中的Google Task ID
if (getNotes() != null) {
try {
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数据设置内容不应被调用
}
}
}
@Override
public void setContentByLocalJSON(JSONObject js) {// 此方法不应被调用,直接抛出异常
// this function should not be called
throw new IllegalAccessError("MetaData:setContentByLocalJSON should not be called");
}
@Override
public JSONObject getLocalJSONFromContent() { // 此方法不应被调用,直接抛出异常
throw new IllegalAccessError("MetaData:getLocalJSONFromContent should not be called");
}
@Override
public int getSyncAction(Cursor c) { // 此方法不应被调用,直接抛出异常
throw new IllegalAccessError("MetaData:getSyncAction should not be called");
}
}