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.

152 lines
4.2 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 org.json.JSONObject;
/**
* 表示同步系统中节点的抽象基类
* 定义了节点基础属性和同步操作行为
*/
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;
// 节点全局唯一标识符 (GID)
private String mGid;
// 节点名称
private String mName;
// 节点最后修改时间戳
private long mLastModified;
// 节点删除状态标记
private boolean mDeleted;
/**
* 节点构造函数
* 初始化默认状态GID为空、名称为空字符串、
* 最后修改时间为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 数据库游标对象
* @return 同步操作类型常量
*/
public abstract int getSyncAction(Cursor c);
// 以下是基础属性的访问方法 //
public void setGid(String gid) {
this.mGid = gid;
}
public void setName(String name) {
this.mName = name;
}
public void setLastModified(long lastModified) {
this.mLastModified = lastModified;
}
public void setDeleted(boolean deleted) {
this.mDeleted = deleted;
}
public String getGid() {
return this.mGid;
}
public String getName() {
return this.mName;
}
public long getLastModified() {
return this.mLastModified;
}
public boolean getDeleted() {
return this.mDeleted;
}
}