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

101 lines
4.0 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 {
// 定义一个静态常量TAG用于日志记录时标识这个类
private final static String TAG = MetaData.class.getSimpleName();
// 定义一个私有变量mRelatedGid用于存储相关的gid全局唯一标识符
private String mRelatedGid = null;
// 定义一个方法,用于设置元数据
// 参数gid是全局唯一标识符metaInfo是包含元数据的JSONObject
public void setMeta(String gid, JSONObject metaInfo) {
try {
// 将gid添加到metaInfo中键为GTaskStringUtils.META_HEAD_GTASK_ID
metaInfo.put(GTaskStringUtils.META_HEAD_GTASK_ID, gid);
} catch (JSONException e) {
// 如果添加失败,则记录错误日志
Log.e(TAG, "failed to put related gid");
}
// 调用setNotes方法将metaInfo的字符串表示形式设置为任务的备注
setNotes(metaInfo.toString());
// 设置任务的名称为预设的元数据名称
setName(GTaskStringUtils.META_NOTE_NAME);
}
// 定义一个方法用于获取相关的gid
public String getRelatedGid() {
return mRelatedGid;
}
// 重写isWorthSaving方法判断这个MetaData对象是否值得保存
// 如果备注即元数据不为null则认为值得保存
@Override
public boolean isWorthSaving() {
return getNotes() != null;
}
// 重写setContentByRemoteJSON方法用于从远程JSON对象中设置内容
// 首先调用父类的同名方法然后从备注中提取JSON对象并获取gid
@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);
} catch (JSONException e) {
// 如果获取gid失败则记录警告日志并将mRelatedGid设置为null
Log.w(TAG, "failed to get related gid");
mRelatedGid = null;
}
}
}
// 重写setContentByLocalJSON方法由于这个方法不应该被调用所以抛出IllegalAccessError异常
@Override
public void setContentByLocalJSON(JSONObject js) {
// this function should not be called
throw new IllegalAccessError("MetaData:setContentByLocalJSON should not be called");
}
// 重写getLocalJSONFromContent方法同样由于不应该被调用抛出IllegalAccessError异常
@Override
public JSONObject getLocalJSONFromContent() {
throw new IllegalAccessError("MetaData:getLocalJSONFromContent should not be called");
}
// 重写getSyncAction方法由于不应该被调用抛出IllegalAccessError异常
// 这个方法通常用于同步操作但在这个MetaData类中不适用
@Override
public int getSyncAction(Cursor c) {
throw new IllegalAccessError("MetaData:getSyncAction should not be called");
}
}