|
|
|
|
@ -24,59 +24,117 @@ import net.micode.notes.tool.GTaskStringUtils;
|
|
|
|
|
import org.json.JSONException;
|
|
|
|
|
import org.json.JSONObject;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* MetaData 类继承自 Task 类,用于处理与 Google 任务相关的元数据。
|
|
|
|
|
* 该类负责设置和获取元数据中的相关 Google 任务 ID,并提供了一些方法用于处理元数据的同步和存储。
|
|
|
|
|
*/
|
|
|
|
|
public class MetaData extends Task {
|
|
|
|
|
// 日志标签,用于在日志中标识该类的相关信息
|
|
|
|
|
private final static String TAG = MetaData.class.getSimpleName();
|
|
|
|
|
|
|
|
|
|
// 存储相关的 Google 任务 ID
|
|
|
|
|
private String mRelatedGid = null;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 设置元数据信息。
|
|
|
|
|
* 将相关的 Google 任务 ID 放入元信息的 JSON 对象中,并将该 JSON 对象转换为字符串设置为笔记内容,
|
|
|
|
|
* 同时将笔记名称设置为预定义的元数据笔记名称。
|
|
|
|
|
*
|
|
|
|
|
* @param gid 相关的 Google 任务 ID
|
|
|
|
|
* @param metaInfo 包含元信息的 JSON 对象
|
|
|
|
|
*/
|
|
|
|
|
public void setMeta(String gid, JSONObject metaInfo) {
|
|
|
|
|
try {
|
|
|
|
|
// 将相关的 Google 任务 ID 放入元信息的 JSON 对象中
|
|
|
|
|
metaInfo.put(GTaskStringUtils.META_HEAD_GTASK_ID, gid);
|
|
|
|
|
} catch (JSONException e) {
|
|
|
|
|
// 记录失败日志
|
|
|
|
|
Log.e(TAG, "failed to put related gid");
|
|
|
|
|
}
|
|
|
|
|
// 将包含相关 Google 任务 ID 的元信息 JSON 对象转换为字符串设置为笔记内容
|
|
|
|
|
setNotes(metaInfo.toString());
|
|
|
|
|
// 将笔记名称设置为预定义的元数据笔记名称
|
|
|
|
|
setName(GTaskStringUtils.META_NOTE_NAME);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取相关的 Google 任务 ID。
|
|
|
|
|
*
|
|
|
|
|
* @return 相关的 Google 任务 ID,如果没有则返回 null
|
|
|
|
|
*/
|
|
|
|
|
public String getRelatedGid() {
|
|
|
|
|
return mRelatedGid;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 判断该元数据是否值得保存。
|
|
|
|
|
* 如果笔记内容不为空,则认为值得保存。
|
|
|
|
|
*
|
|
|
|
|
* @return 如果笔记内容不为空返回 true,否则返回 false
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public boolean isWorthSaving() {
|
|
|
|
|
return getNotes() != null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据远程 JSON 对象设置元数据内容。
|
|
|
|
|
* 首先调用父类的方法设置内容,然后从笔记内容中解析出相关的 Google 任务 ID。
|
|
|
|
|
*
|
|
|
|
|
* @param js 包含远程元数据的 JSON 对象
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public void setContentByRemoteJSON(JSONObject js) {
|
|
|
|
|
// 调用父类方法设置内容
|
|
|
|
|
super.setContentByRemoteJSON(js);
|
|
|
|
|
if (getNotes() != null) {
|
|
|
|
|
try {
|
|
|
|
|
// 将笔记内容解析为 JSON 对象
|
|
|
|
|
JSONObject metaInfo = new JSONObject(getNotes().trim());
|
|
|
|
|
// 从 JSON 对象中获取相关的 Google 任务 ID
|
|
|
|
|
mRelatedGid = metaInfo.getString(GTaskStringUtils.META_HEAD_GTASK_ID);
|
|
|
|
|
} catch (JSONException e) {
|
|
|
|
|
// 记录解析失败日志,并将相关的 Google 任务 ID 置为 null
|
|
|
|
|
Log.w(TAG, "failed to get related gid");
|
|
|
|
|
mRelatedGid = null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据本地 JSON 对象设置元数据内容。
|
|
|
|
|
* 该方法不应该被调用,因为元数据不应该通过本地 JSON 对象设置内容。
|
|
|
|
|
*
|
|
|
|
|
* @param js 包含本地元数据的 JSON 对象
|
|
|
|
|
* @throws IllegalAccessError 总是抛出该异常,表示该方法不应该被调用
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public void setContentByLocalJSON(JSONObject js) {
|
|
|
|
|
// this function should not be called
|
|
|
|
|
throw new IllegalAccessError("MetaData:setContentByLocalJSON should not be called");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 从元数据内容中获取本地 JSON 对象。
|
|
|
|
|
* 该方法不应该被调用,因为元数据不应该提供从内容获取本地 JSON 对象的功能。
|
|
|
|
|
*
|
|
|
|
|
* @return 不会返回,因为总是抛出异常
|
|
|
|
|
* @throws IllegalAccessError 总是抛出该异常,表示该方法不应该被调用
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public JSONObject getLocalJSONFromContent() {
|
|
|
|
|
throw new IllegalAccessError("MetaData:getLocalJSONFromContent should not be called");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取同步操作。
|
|
|
|
|
* 该方法不应该被调用,因为元数据不涉及同步操作。
|
|
|
|
|
*
|
|
|
|
|
* @param c 数据库游标
|
|
|
|
|
* @return 不会返回,因为总是抛出异常
|
|
|
|
|
* @throws IllegalAccessError 总是抛出该异常,表示该方法不应该被调用
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public int getSyncAction(Cursor c) {
|
|
|
|
|
throw new IllegalAccessError("MetaData:getSyncAction should not be called");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|