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;// 同步出现错误

    private String mGid;

    private String mName;

    private long mLastModified;//记录最后一次修改时间

    private boolean mDeleted;//表征是否被删除
    
    //mGid: 字符串类型，用于标识 Node 对象的唯一 ID。
    //mName: 字符串类型，表示 Node 对象的名称。
    //mLastModified: 长整型，表示 Node 对象最后一次修改的时间戳。
    //mDeleted: 布尔型，表示 Node 对象是否已被删除。
    
  public Node() {
        mGid = null;
        mName = "";
        mLastModified = 0;
        mDeleted = false;
    }
  //getCreateAction(int actionId): 返回一个 JSON 对象，用于创建一个新的 Node 对象。
    public abstract JSONObject getCreateAction(int actionId);
  //getUpdateAction(int actionId): 返回一个 JSON 对象，用于更新已有的 Node 对象。
    public abstract JSONObject getUpdateAction(int actionId);
  //setContentByRemoteJSON(JSONObject js): 从远程 JSON 对象中解析数据并设置 Node 对象的属性。
    public abstract void setContentByRemoteJSON(JSONObject js);
  //setContentByLocalJSON(JSONObject js): 从本地 JSON 对象中解析数据并设置 Node 对象的属性。
    public abstract void setContentByLocalJSON(JSONObject js);
  //getLocalJSONFromContent(): 返回一个本地 JSON 对象，包含了 Node 对象的所有属性。
    public abstract JSONObject getLocalJSONFromContent();
  //getSyncAction(Cursor c): 返回一个整型值，表示需要执行的同步操作类型。
    public abstract int getSyncAction(Cursor c);
  //setGid(String gid): 设置 mGid 属性的值。
    public void setGid(String gid) {
        this.mGid = gid;
    }
    //setName(String name): 设置 mName 属性的值。
    public void setName(String name) {
        this.mName = name;
    }
  //setLastModified(long lastModified): 设置 mLastModified 属性的值。
    public void setLastModified(long lastModified) {
        this.mLastModified = lastModified;
    }
    //setDeleted(boolean deleted): 设置 mDeleted 属性的值。
    public void setDeleted(boolean deleted) {
        this.mDeleted = deleted;
    }
  //getGid(): 返回 mGid 属性的值。
    public String getGid() {
        return this.mGid;
    }
  //getName(): 返回 mName 属性的值。
    public String getName() {
        return this.mName;
    }
  //getLastModified(): 返回 mLastModified 属性的值。
    public long getLastModified() {
        return this.mLastModified;
    }
  //getDeleted(): 返回 mDeleted 属性的值。
    public boolean getDeleted() {
        return this.mDeleted;
    }

}
