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

103 lines
4.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;
// MetaData类继承自Task类用于处理与任务相关的元数据
public class MetaData extends Task {
// 用于日志记录的标签,使用类的简单名称
private final static String TAG = MetaData.class.getSimpleName();
// 存储相关的Google任务IDgid
private String mRelatedGid = null;
// 设置元数据的方法接受一个gid和一个包含元信息的JSONObject
public void setMeta(String gid, JSONObject metaInfo) {
try {
// 在元信息的JSONObject中添加一个键值对键为GTaskStringUtils.META_HEAD_GTASK_ID值为gid
metaInfo.put(GTaskStringUtils.META_HEAD_GTASK_ID, gid);
} catch (JSONException e) {
// 如果在添加键值对时发生JSON异常记录错误日志
Log.e(TAG, "failed to put related gid");
}
// 将包含元信息的JSONObject转换为字符串并设置为笔记内容
setNotes(metaInfo.toString());
// 设置任务名称为GTaskStringUtils.META_NOTE_NAME
setName(GTaskStringUtils.META_NOTE_NAME);
}
// 获取相关的Google任务IDgid的方法
public String getRelatedGid() {
return mRelatedGid;
}
// 判断该元数据是否值得保存的方法
@Override
public boolean isWorthSaving() {
// 如果笔记内容不为null则认为值得保存返回true否则返回false
return getNotes()!= null;
}
// 根据远程JSON数据设置内容的方法
@Override
public void setContentByRemoteJSON(JSONObject js) {
// 调用父类的setContentByRemoteJSON方法处理通用的内容设置
super.setContentByRemoteJSON(js);
// 如果笔记内容不为null
if (getNotes()!= null) {
try {
// 将笔记内容解析为JSONObject
JSONObject metaInfo = new JSONObject(getNotes().trim());
// 从解析后的JSONObject中获取相关的Google任务IDgid
mRelatedGid = metaInfo.getString(GTaskStringUtils.META_HEAD_GTASK_ID);
} catch (JSONException e) {
// 如果在获取gid时发生JSON异常记录警告日志
Log.w(TAG, "failed to get related gid");
// 将mRelatedGid设置为null
mRelatedGid = null;
}
}
}
// 根据本地JSON数据设置内容的方法该方法不应该被调用
@Override
public void setContentByLocalJSON(JSONObject js) {
// 抛出非法访问错误,提示该方法不应该被调用
throw new IllegalAccessError("MetaData:setContentByLocalJSON should not be called");
}
// 从内容中获取本地JSON数据的方法该方法不应该被调用
@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");
}
}