|
|
|
|
@ -20,33 +20,42 @@ import android.database.Cursor;
|
|
|
|
|
|
|
|
|
|
import org.json.JSONObject;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 这是一个抽象类 Node,用于表示任务同步系统中的节点。
|
|
|
|
|
* 它定义了节点的基本属性和操作,以及不同的同步动作类型。
|
|
|
|
|
*/
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
// 节点的全局唯一标识符
|
|
|
|
|
private String mGid;
|
|
|
|
|
|
|
|
|
|
// 节点的名称
|
|
|
|
|
private String mName;
|
|
|
|
|
|
|
|
|
|
// 节点的最后修改时间
|
|
|
|
|
private long mLastModified;
|
|
|
|
|
|
|
|
|
|
// 表示节点是否已被删除
|
|
|
|
|
private boolean mDeleted;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 构造函数,用于初始化节点的属性。
|
|
|
|
|
*/
|
|
|
|
|
public Node() {
|
|
|
|
|
mGid = null;
|
|
|
|
|
mName = "";
|
|
|
|
|
@ -54,48 +63,106 @@ public abstract class Node {
|
|
|
|
|
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 数据库游标
|
|
|
|
|
* @return 同步动作的类型,使用 SYNC_ACTION_* 常量表示
|
|
|
|
|
*/
|
|
|
|
|
public abstract int getSyncAction(Cursor c);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 设置节点的全局唯一标识符。
|
|
|
|
|
* @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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取节点的全局唯一标识符。
|
|
|
|
|
* @return 全局唯一标识符
|
|
|
|
|
*/
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|