diff --git a/src/net/micode/notes/gtask/data/SqlData.java b/src/net/micode/notes/gtask/data/SqlData.java deleted file mode 100644 index fde3d87..0000000 --- a/src/net/micode/notes/gtask/data/SqlData.java +++ /dev/null @@ -1,226 +0,0 @@ - package net.micode.notes.gtask.data; - -import android.content.ContentResolver; -import android.content.ContentUris; -import android.content.ContentValues; -import android.content.Context; -import android.database.Cursor; -import android.net.Uri; -import android.util.Log; - -import net.micode.notes.data.Notes; -import net.micode.notes.data.Notes.DataColumns; -import net.micode.notes.data.Notes.DataConstants; -import net.micode.notes.data.Notes.NoteColumns; -import net.micode.notes.gtask.exception.ActionFailureException; - -import org.json.JSONException; -import org.json.JSONObject; - -/** - * SqlData 类用于处理与数据库交互的任务数据。 - * 包含了从 JSON 对象加载数据、将数据保存到数据库以及获取和设置任务数据的方法。 - */ -public class SqlData { - private static final String TAG = SqlData.class.getSimpleName(); // 日志标签 - - private static final int INVALID_ID = -99999; // 无效的 ID,表示未初始化或无效的数据 - - /** - * 数据库查询投影,包含需要查询的列名 - */ - public static final String[] PROJECTION_DATA = new String[] { - DataColumns.ID, DataColumns.MIME_TYPE, DataColumns.CONTENT, DataColumns.DATA1, - DataColumns.DATA3 - }; - - /** - * 数据 ID 列索引 - */ - public static final int DATA_ID_COLUMN = 0; - - /** - * MIME 类型列索引 - */ - public static final int DATA_MIME_TYPE_COLUMN = 1; - - /** - * 内容列索引 - */ - public static final int DATA_CONTENT_COLUMN = 2; - - /** - * 数据1列索引 - */ - public static final int DATA_CONTENT_DATA_1_COLUMN = 3; - - /** - * 数据3列索引 - */ - public static final int DATA_CONTENT_DATA_3_COLUMN = 4; - - private ContentResolver mContentResolver; // 内容解析器,用于与内容提供者交互 - private boolean mIsCreate; // 标记是否为创建操作 - private long mDataId; // 数据 ID - private String mDataMimeType; // 数据 MIME 类型 - private String mDataContent; // 数据内容 - private long mDataContentData1; // 数据字段1 - private String mDataContentData3; // 数据字段3 - private ContentValues mDiffDataValues; // 用于存储要更新的字段值 - - /** - * 构造函数,初始化一个新的 SqlData 实例。 - * - * @param context 上下文对象 - */ - public SqlData(Context context) { - mContentResolver = context.getContentResolver(); - mIsCreate = true; - mDataId = INVALID_ID; - mDataMimeType = DataConstants.NOTE; - mDataContent = ""; - mDataContentData1 = 0; - mDataContentData3 = ""; - mDiffDataValues = new ContentValues(); - } - - /** - * 构造函数,从游标加载现有数据并初始化 SqlData 实例。 - * - * @param context 上下文对象 - * @param c 游标对象 - */ - public SqlData(Context context, Cursor c) { - mContentResolver = context.getContentResolver(); - mIsCreate = false; - loadFromCursor(c); - mDiffDataValues = new ContentValues(); - } - - /** - * 从游标中加载数据。 - * - * @param c 游标对象 - */ - private void loadFromCursor(Cursor c) { - mDataId = c.getLong(DATA_ID_COLUMN); - mDataMimeType = c.getString(DATA_MIME_TYPE_COLUMN); - mDataContent = c.getString(DATA_CONTENT_COLUMN); - mDataContentData1 = c.getLong(DATA_CONTENT_DATA_1_COLUMN); - mDataContentData3 = c.getString(DATA_CONTENT_DATA_3_COLUMN); - } - - /** - * 从 JSON 对象加载数据,并记录差异。 - * - * @param js JSON 对象 - * @throws JSONException 如果解析 JSON 失败 - */ - public void setContent(JSONObject js) throws JSONException { - long dataId = js.has(DataColumns.ID) ? js.getLong(DataColumns.ID) : INVALID_ID; - if (mIsCreate || mDataId != dataId) { - mDiffDataValues.put(DataColumns.ID, dataId); - } - mDataId = dataId; - - String dataMimeType = js.has(DataColumns.MIME_TYPE) ? js.getString(DataColumns.MIME_TYPE) - : DataConstants.NOTE; - if (mIsCreate || !mDataMimeType.equals(dataMimeType)) { - mDiffDataValues.put(DataColumns.MIME_TYPE, dataMimeType); - } - mDataMimeType = dataMimeType; - - String dataContent = js.has(DataColumns.CONTENT) ? js.getString(DataColumns.CONTENT) : ""; - if (mIsCreate || !mDataContent.equals(dataContent)) { - mDiffDataValues.put(DataColumns.CONTENT, dataContent); - } - mDataContent = dataContent; - - long dataContentData1 = js.has(DataColumns.DATA1) ? js.getLong(DataColumns.DATA1) : 0; - if (mIsCreate || mDataContentData1 != dataContentData1) { - mDiffDataValues.put(DataColumns.DATA1, dataContentData1); - } - mDataContentData1 = dataContentData1; - - String dataContentData3 = js.has(DataColumns.DATA3) ? js.getString(DataColumns.DATA3) : ""; - if (mIsCreate || !mDataContentData3.equals(dataContentData3)) { - mDiffDataValues.put(DataColumns.DATA3, dataContentData3); - } - mDataContentData3 = dataContentData3; - } - - /** - * 将当前数据转换为 JSON 对象。 - * - * @return JSON 对象 - * @throws JSONException 如果生成 JSON 失败 - */ - public JSONObject getContent() throws JSONException { - if (mIsCreate) { - Log.e(TAG, "似乎我们还没有在数据库中创建此数据"); - return null; - } - JSONObject js = new JSONObject(); - js.put(DataColumns.ID, mDataId); - js.put(DataColumns.MIME_TYPE, mDataMimeType); - js.put(DataColumns.CONTENT, mDataContent); - js.put(DataColumns.DATA1, mDataContentData1); - js.put(DataColumns.DATA3, mDataContentData3); - return js; - } - - /** - * 将数据提交到数据库。 - * - * @param noteId 笔记 ID - * @param validateVersion 是否验证版本号 - * @param version 版本号 - */ - public void commit(long noteId, boolean validateVersion, long version) { - if (mIsCreate) { - if (mDataId == INVALID_ID && mDiffDataValues.containsKey(DataColumns.ID)) { - mDiffDataValues.remove(DataColumns.ID); - } - - mDiffDataValues.put(DataColumns.NOTE_ID, noteId); - Uri uri = mContentResolver.insert(Notes.CONTENT_DATA_URI, mDiffDataValues); - try { - mDataId = Long.valueOf(uri.getPathSegments().get(1)); - } catch (NumberFormatException e) { - Log.e(TAG, "获取笔记 ID 错误:" + e.toString()); - throw new ActionFailureException("创建笔记失败"); - } - } else { - if (mDiffDataValues.size() > 0) { - int result = 0; - if (!validateVersion) { - result = mContentResolver.update(ContentUris.withAppendedId( - Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues, null, null); - } else { - result = mContentResolver.update(ContentUris.withAppendedId( - Notes.CONTENT_DATA_URI, mDataId), mDiffDataValues, - " ? in (SELECT " + NoteColumns.ID + " FROM " + Notes.TABLE_NAME - + " WHERE " + NoteColumns.VERSION + "=?)", new String[] { - String.valueOf(noteId), String.valueOf(version) - }); - } - if (result == 0) { - Log.w(TAG, "没有更新。可能是用户在同步时修改了笔记"); - } - } - } - - mDiffDataValues.clear(); - mIsCreate = false; - } - - /** - * 获取数据 ID。 - * - * @return 数据 ID - */ - public long getId() { - return mDataId; - } -} -