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.

157 lines
4.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.

/*
* 版权所有 (c) 2010-2011MiCode 开源社区 (www.micode.net)
* 根据 Apache 许可证 2.0 版本("许可证")授权;
* 除非符合许可证的规定,否则不得使用本文件。
* 您可以从以下网址获取许可证副本:
* http://www.apache.org/licenses/LICENSE-2.0
* 除非适用法律要求或书面同意,本软件按"原样"分发,
* 没有任何明示或暗示的保证或条件。
* 详见许可证中规定的权限和限制。
* 这是一份标准的Apache许可证2.0版本的开源声明)
*/
// 定义Node类所在的包路径
package net.micode.notes.gtask.data;
// 导入Android数据库Cursor类用于本地数据操作
import android.database.Cursor;
// 导入JSON处理类
import org.json.JSONObject;
/**
* 抽象Node类 - GTasks数据同步的基础节点类
* 功能:
* 1. 定义通用的同步动作常量
* 2. 提供基本属性管理GID、名称、修改时间等
* 3. 声明数据同步的核心抽象方法
*/
public abstract class Node {
// 同步动作常量:无操作
public static final int SYNC_ACTION_NONE = 0;
// 同步动作常量:添加到远程
public static final int SYNC_ACTION_ADD_REMOTE = 1;
// 同步动作常量:添加到本地
public static final int SYNC_ACTION_ADD_LOCAL = 2;
// 同步动作常量:从远程删除
public static final int SYNC_ACTION_DEL_REMOTE = 3;
// 同步动作常量:从本地删除
public static final int SYNC_ACTION_DEL_LOCAL = 4;
// 同步动作常量:更新远程
public static final int SYNC_ACTION_UPDATE_REMOTE = 5;
// 同步动作常量:更新本地
public static final int SYNC_ACTION_UPDATE_LOCAL = 6;
// 同步动作常量:更新冲突
public static final int SYNC_ACTION_UPDATE_CONFLICT = 7;
// 同步动作常量:错误状态
public static final int SYNC_ACTION_ERROR = 8;
// Google任务ID全局唯一标识
private String mGid;
// 节点名称
private String mName;
// 最后修改时间戳(毫秒)
private long mLastModified;
// 删除标记
private boolean mDeleted;
/**
* 构造函数
* 初始化默认值:
* - GID为null
* - 名称为空字符串
* - 最后修改时间为0
* - 未删除状态
*/
public Node() {
mGid = null;
mName = "";
mLastModified = 0;
mDeleted = false;
}
/**
* 抽象方法获取创建动作的JSON数据
* @param actionId 动作ID
* @return 包含创建动作数据的JSON对象
*/
public abstract JSONObject getCreateAction(int actionId);
/**
* 抽象方法获取更新动作的JSON数据
* @param actionId 动作ID
* @return 包含更新动作数据的JSON对象
*/
public abstract JSONObject getUpdateAction(int actionId);
/**
* 抽象方法从远程JSON数据设置内容
* @param js 包含远程数据的JSON对象
*/
public abstract void setContentByRemoteJSON(JSONObject js);
/**
* 抽象方法从本地JSON数据设置内容
* @param js 包含本地数据的JSON对象
*/
public abstract void setContentByLocalJSON(JSONObject js);
/**
* 抽象方法从内容生成本地JSON数据
* @return 包含本地数据的JSON对象
*/
public abstract JSONObject getLocalJSONFromContent();
/**
* 抽象方法:获取同步动作类型
* @param c 数据库Cursor对象
* @return 同步动作常量SYNC_ACTION_*
*/
public abstract int getSyncAction(Cursor c);
/**
* 设置Google任务ID
* @param gid 全局唯一标识
*/
public void setGid(String gid) {
this.mGid = gid;
}
/**
* 设置节点名称
* @param name 显示名称
*/
public void setName(String name) {
this.mName = name;
}
/**
* 设置最后修改时间
* @param lastModified 时间戳(毫秒)
*/
public void setLastModified(long lastModified) {
this.mLastModified = lastModified;
}
/**
* 设置删除标记
* @param deleted 是否已删除
*/
public void setDeleted(boolean deleted) {
this.mDeleted = deleted;
}
/**
* 获取Google任务ID
* @return 全局唯一标识可能为null
*/
public String getGid() {
return this.mGid;
}
/**
* 获取节点名称
* @return 显示名称
*/
public String getName() {
return this.mName;
}
/**
* 获取最后修改时间
* @return 时间戳(毫秒)
*/
public long getLastModified() {
return this.mLastModified;
}
/**
* 获取删除状态
* @return 是否已删除
*/
public boolean getDeleted() {
return this.mDeleted;
}
}