master
陈玉爱 2 months ago
parent 77e5bc455d
commit 063a1e9e93

@ -205,39 +205,18 @@ public class Notes {
public static final String CONTENT = "content";
/**
* Generic data column, the meaning is {@link #MIMETYPE} specific, used for
* integer data type
* <P> Type: INTEGER </P>
*/
public static final String DATA1 = "data1";
/**
* Generic data column, the meaning is {@link #MIMETYPE} specific, used for
* integer data type
* <P> Type: INTEGER </P>
*/
public static final String DATA2 = "data2";
/**
* Generic data column, the meaning is {@link #MIMETYPE} specific, used for
* TEXT data type
* <P> Type: TEXT </P>
*/
public static final String DATA3 = "data3";
/**
* Generic data column, the meaning is {@link #MIMETYPE} specific, used for
* TEXT data type
* <P> Type: TEXT </P>
*/
public static final String DATA4 = "data4";
/**
* Generic data column, the meaning is {@link #MIMETYPE} specific, used for
* TEXT data type
* <P> Type: TEXT </P>
*/
public static final String DATA5 = "data5";
}

@ -52,8 +52,8 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
/**
* 1.
* 2.CREATE_NOTE_TABLE_SQL
* 3.String
* 2.CREATE_NOTE_TABLE_SQL
* 3.String
* 3.
*
*
@ -83,8 +83,8 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
/**
* 1.
* 2.CREATE_DATA_TABLE_SQL
* 3.String
* 2.CREATE_DATA_TABLE_SQL
* 3.String
* 4.
*
*
@ -107,8 +107,8 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
/**
* 1.
* 2.CREATE_DATA_NOTE_ID_INDEX_SQL
* 3.String
* 2.CREATE_DATA_NOTE_ID_INDEX_SQL
* 3.String
* 4.
* ID
* JOIN
@ -121,6 +121,15 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
/**
* Increase folder's note count when move note to the folder
*/
/**
* 1.
* 2.
* 3.
* - (parent_id)
* - UPDATE
* - COUNT(*)
*/
private static final String NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER =
"CREATE TRIGGER increase_folder_count_on_update "+
" AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE +
@ -133,6 +142,15 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
/**
* Decrease folder's note count when move note from folder
*/
/**
* 1.
* 2.NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER
* 3.String
* 4.
*
*
* 0
*/
private static final String NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER =
"CREATE TRIGGER decrease_folder_count_on_update " +
" AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE +
@ -146,6 +164,17 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
/**
* Increase folder's note count when insert new note to the folder
*/
/**
* 1.
* 2.NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER
* 3.String
* 4.
*
*
*
*/
private static final String NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER =
"CREATE TRIGGER increase_folder_count_on_insert " +
" AFTER INSERT ON " + TABLE.NOTE +
@ -158,6 +187,16 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
/**
* Decrease folder's note count when delete note from the folder
*/
/**
* 1.
* 2.NOTE_DECREASE_FOLDER_COUNT_ON_DELETE_TRIGGER
* 3.String
* 4.
*
*
*
*/
private static final String NOTE_DECREASE_FOLDER_COUNT_ON_DELETE_TRIGGER =
"CREATE TRIGGER decrease_folder_count_on_delete " +
" AFTER DELETE ON " + TABLE.NOTE +
@ -171,6 +210,17 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
/**
* Update note's content when insert data with type {@link DataConstants#NOTE}
*/
/**
/**
* 1.
* 2.DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER
* 3.String
* 4.
*
*
* MIME
*/
private static final String DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER =
"CREATE TRIGGER update_note_content_on_insert " +
" AFTER INSERT ON " + TABLE.DATA +
@ -184,6 +234,16 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
/**
* Update note's content when data with {@link DataConstants#NOTE} type has changed
*/
/**
* 1.
* 2.DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER
* 3.String
* 4.
*
*
* MIME
*/
private static final String DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER =
"CREATE TRIGGER update_note_content_on_update " +
" AFTER UPDATE ON " + TABLE.DATA +
@ -197,6 +257,15 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
/**
* Update note's content when data with {@link DataConstants#NOTE} type has deleted
*/
/**
* 1.
* 2.DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER
* 3.String
* 4.
*
*
* MIME
*/
private static final String DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER =
"CREATE TRIGGER update_note_content_on_delete " +
" AFTER delete ON " + TABLE.DATA +
@ -210,6 +279,15 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
/**
* Delete datas belong to note which has been deleted
*/
/**
* 1.
* 2.NOTE_DELETE_DATA_ON_DELETE_TRIGGER
* 3.String
* 4.
*
*
*
*/
private static final String NOTE_DELETE_DATA_ON_DELETE_TRIGGER =
"CREATE TRIGGER delete_data_on_delete " +
" AFTER DELETE ON " + TABLE.NOTE +
@ -221,6 +299,15 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
/**
* Delete notes belong to folder which has been deleted
*/
/**
* 1.
* 2.FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER
* 3.String
* 4.
*
*
*
*/
private static final String FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER =
"CREATE TRIGGER folder_delete_notes_on_delete " +
" AFTER DELETE ON " + TABLE.NOTE +
@ -232,6 +319,15 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
/**
* Move notes belong to folder which has been moved to trash folder
*/
/**
* 1.
* 2.FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER
* 3.String
* 4.
*
*
*
*/
private static final String FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER =
"CREATE TRIGGER folder_move_notes_on_trash " +
" AFTER UPDATE ON " + TABLE.NOTE +
@ -342,7 +438,13 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
db.insert(TABLE.NOTE, null, values);
}
/**
* 1.
* 2.createSystemFolder
* 3.
* SQLiteDatabase db
* 4.void
*/
public void createDataTable(SQLiteDatabase db) {
db.execSQL(CREATE_DATA_TABLE_SQL);
reCreateDataTableTriggers(db);
@ -350,7 +452,15 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
Log.d(TAG, "data table has been created");
}
/**
* 1.
* 2.reCreateDataTableTriggers
* 3.
* SQLiteDatabase db
* 4.void
* 5.
* //
*/
private void reCreateDataTableTriggers(SQLiteDatabase db) {
db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_insert");
db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_update");
@ -361,6 +471,17 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER);
}
/**
* 1.NotesDatabaseHelper
* 2.getInstance
* 3.
* Context context
* 4.NotesDatabaseHelper
* 5.
*
*
* 线访
*/
static synchronized NotesDatabaseHelper getInstance(Context context) {
if (mInstance == null) {
mInstance = new NotesDatabaseHelper(context);
@ -374,6 +495,20 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
createDataTable(db);
}
/**
* 1.
* 2.onUpgrade
* 3.
* SQLiteDatabase db
* int oldVersion
* int newVersion
* 4.void
* 5.
*
*
*
*
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
boolean reCreateTriggers = false;
@ -407,6 +542,17 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
}
}
/**
* 1.2
* 2.upgradeToV2
* 3.
* SQLiteDatabase db
* 4.void
* 5.
*
*
* 12
*/
private void upgradeToV2(SQLiteDatabase db) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE.NOTE);
db.execSQL("DROP TABLE IF EXISTS " + TABLE.DATA);
@ -414,6 +560,18 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper {
createDataTable(db);
}
/**
* 1.3
* 2.upgradeToV3
* 3.
* SQLiteDatabase db
* 4.void
* 5.
* 使
* Gtask IDGoogle
*
* 3
*/
private void upgradeToV3(SQLiteDatabase db) {
// drop unused triggers
db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_insert");

@ -36,6 +36,19 @@ import net.micode.notes.data.NotesDatabaseHelper.TABLE;
public class NotesProvider extends ContentProvider {
/**
* 1.
* 2.
* UriMatcher mMatcherURI
* NotesDatabaseHelper mHelper
* String TAG
* int URI_*URI
* 3.
* mMatcherURI
* mHelper访
* TAG便
* URI_*URI
*/
private static final UriMatcher mMatcher;
private NotesDatabaseHelper mHelper;
@ -61,9 +74,16 @@ public class NotesProvider extends ContentProvider {
mMatcher.addURI(Notes.AUTHORITY, SearchManager.SUGGEST_URI_PATH_QUERY + "/*", URI_SEARCH_SUGGEST);
}
/**
* x'0A' represents the '\n' character in sqlite. For title and content in the search result,
* we will trim '\n' and white space in order to show more information.
* 1.SQL
* 2.NOTES_SEARCH_PROJECTION
* 3.String
* 4.
* 使Android
*
*
*
*/
private static final String NOTES_SEARCH_PROJECTION = NoteColumns.ID + ","
+ NoteColumns.ID + " AS " + SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA + ","
@ -73,6 +93,17 @@ public class NotesProvider extends ContentProvider {
+ "'" + Intent.ACTION_VIEW + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_ACTION + ","
+ "'" + Notes.TextNote.CONTENT_TYPE + "' AS " + SearchManager.SUGGEST_COLUMN_INTENT_DATA;
/**
* 1.SQL
* 2.NOTES_SNIPPET_SEARCH_QUERY
* 3.String
* 4.
*
*
* (TYPE_NOTE)
*
*/
private static String NOTES_SNIPPET_SEARCH_QUERY = "SELECT " + NOTES_SEARCH_PROJECTION
+ " FROM " + TABLE.NOTE
+ " WHERE " + NoteColumns.SNIPPET + " LIKE ?"
@ -85,6 +116,22 @@ public class NotesProvider extends ContentProvider {
return true;
}
/**
* 1.URI
* 2.query
* 3.
* Uri uriURI
* String[] projectionnull
* String selectionWHEREnull
* String[] selectionArgsWHERE
* String sortOrder
* 4.Cursor
* 5.
* URI
*
*
* URI
*/
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
String sortOrder) {
@ -147,6 +194,20 @@ public class NotesProvider extends ContentProvider {
return c;
}
/**
* 1.URI
* 2.insert
* 3.
* Uri uriURI
* ContentValues values
* 4.Uri
* 5.
* URI
*
* ID
*
* IDURI
*/
@Override
public Uri insert(Uri uri, ContentValues values) {
SQLiteDatabase db = mHelper.getWritableDatabase();
@ -181,6 +242,20 @@ public class NotesProvider extends ContentProvider {
return ContentUris.withAppendedId(uri, insertedId);
}
/**
* 1.URI
* 2.delete
* 3.
* Uri uriURI
* String selectionWHEREnull
* String[] selectionArgsWHERE
* 4.int
* 5.
* URI
*
* (ID0)
*
*/
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
int count = 0;
@ -227,6 +302,21 @@ public class NotesProvider extends ContentProvider {
return count;
}
/**
* 1.URI
* 2.update
* 3.
* Uri uriURI
* ContentValues values
* String selectionWHEREnull
* String[] selectionArgsWHERE
* 4.int
* 5.
* URI
*
*
*
*/
@Override
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
int count = 0;
@ -271,6 +361,19 @@ public class NotesProvider extends ContentProvider {
return (!TextUtils.isEmpty(selection) ? " AND (" + selection + ')' : "");
}
/**
* 1.
* 2.increaseNoteVersion
* 3.
* long idID-1ID
* String selectionWHERE
* String[] selectionArgsWHERE
* 4.void
* 5.
*
*
*
*/
private void increaseNoteVersion(long id, String selection, String[] selectionArgs) {
StringBuilder sql = new StringBuilder(120);
sql.append("UPDATE ");

@ -36,10 +36,13 @@ import org.json.JSONObject;
public class SqlData {
//TAG用于日志记录方便调试和问题追踪
private static final String TAG = SqlData.class.getSimpleName();
//INVALID_ID作为无效 ID 的标识,用于初始化和错误处理
private static final int INVALID_ID = -99999;
//
public static final String[] PROJECTION_DATA = new String[] {
DataColumns.ID, DataColumns.MIME_TYPE, DataColumns.CONTENT, DataColumns.DATA1,
DataColumns.DATA3
@ -71,6 +74,12 @@ public class SqlData {
private ContentValues mDiffDataValues;
/**
* 1.
* 2. ContentResolver
* Context ContentResolver
* ContentProvider
*/
public SqlData(Context context) {
mContentResolver = context.getContentResolver();
mIsCreate = true;
@ -82,6 +91,12 @@ public class SqlData {
mDiffDataValues = new ContentValues();
}
/**
* 1.
* 2. ContentResolver
* Context ContentResolver
* ContentProvider
*/
public SqlData(Context context, Cursor c) {
mContentResolver = context.getContentResolver();
mIsCreate = false;
@ -89,6 +104,15 @@ public class SqlData {
mDiffDataValues = new ContentValues();
}
/**
1.Cursor
* 2.loadFromCursor
* 3. * Cursor cCursor
* 4.void * 5.
* CursorSqlData
* 使
*
*/
private void loadFromCursor(Cursor c) {
mDataId = c.getLong(DATA_ID_COLUMN);
mDataMimeType = c.getString(DATA_MIME_TYPE_COLUMN);
@ -97,6 +121,17 @@ public class SqlData {
mDataContentData3 = c.getString(DATA_CONTENT_DATA_3_COLUMN);
}
/**
* 1.JSONObject
* 2.setContent
* 3.
* JSONObject jsJSON
* 4.void
* 5.
* JSONSqlData
*
*
*/
public void setContent(JSONObject js) throws JSONException {
long dataId = js.has(DataColumns.ID) ? js.getLong(DataColumns.ID) : INVALID_ID;
if (mIsCreate || mDataId != dataId) {
@ -130,6 +165,16 @@ public class SqlData {
mDataContentData3 = dataContentData3;
}
/**
1.JSON
* 2.getContent
* 3.
* 4.JSONObject
* 5.
* SqlDataJSON
*
*
*/
public JSONObject getContent() throws JSONException {
if (mIsCreate) {
Log.e(TAG, "it seems that we haven't created this in database yet");
@ -144,6 +189,20 @@ public class SqlData {
return js;
}
/**
* 1.
* 2.commit
* 3.
* long noteIdID
* boolean validateVersion
* long version
* 4.void
* 5.
*
*
*
*
*/
public void commit(long noteId, boolean validateVersion, long version) {
if (mIsCreate) {

@ -43,6 +43,15 @@ public class SqlNote {
private static final int INVALID_ID = -99999;
/**
* 1.
* 2.PROJECTION_NOTE
* 3.String[]
* 4.
*
*
* 访
*/
public static final String[] PROJECTION_NOTE = new String[] {
NoteColumns.ID, NoteColumns.ALERTED_DATE, NoteColumns.BG_COLOR_ID,
NoteColumns.CREATED_DATE, NoteColumns.HAS_ATTACHMENT, NoteColumns.MODIFIED_DATE,
@ -52,6 +61,14 @@ public class SqlNote {
NoteColumns.VERSION
};
/**
* 1.
* 2.int
* 3.
* PROJECTION_NOTE
* Cursor
* 使
*/
public static final int ID_COLUMN = 0;
public static final int ALERTED_DATE_COLUMN = 1;
@ -86,26 +103,114 @@ public class SqlNote {
public static final int VERSION_COLUMN = 16;
/**
* 1.
* 2.Context
* 3.
* 访
* ContentResolver
*
*/
private Context mContext;
/**
* 1.
* 2.ContentResolver
* 3.
* CRUD
*
*
*/
private ContentResolver mContentResolver;
/**
* 1.
* 2.boolean
* 3.
*
* (/)
*
*/
private boolean mIsCreate;
/**
* 1.ID
* 2.long
* 3.
*
*
*
*/
private long mId;
/**
* 1.
* 2.long
* 3.
*
*
*
*/
private long mAlertDate;
/**
* 1.ID
* 2.int
* 3.
*
* UI
*
*/
private int mBgColorId;
/**
* 1.
* 2.long
* 3.
*
*
*
*/
private long mCreatedDate;
/**
* 1.
* 2.int
* 3.
*
* 0
* 1
*/
private int mHasAttachment;
/**
* 1.
* 2.long
* 3.
*
*
*
*/
private long mModifiedDate;
/**
* 1.ID
* 2.long
* 3.
*
*
*
*/
private long mParentId;
/**
* 1.
* 2.String
* 3.
*
*
*
*/
private String mSnippet;
private int mType;
@ -122,6 +227,16 @@ public class SqlNote {
private ArrayList<SqlData> mDataList;
/**
* 1.
* 2.SqlNote
* 3.
* Context context
* 4.
*
*
*
*/
public SqlNote(Context context) {
mContext = context;
mContentResolver = context.getContentResolver();
@ -143,6 +258,17 @@ public class SqlNote {
mDataList = new ArrayList<SqlData>();
}
/**
* 1.Cursor
* 2.SqlNote
* 3.
* Context context
* Cursor cCursor
* 4.
*
*
*
*/
public SqlNote(Context context, Cursor c) {
mContext = context;
mContentResolver = context.getContentResolver();
@ -154,6 +280,13 @@ public class SqlNote {
mDiffNoteValues = new ContentValues();
}
/**
* 1.ID
* 2.SqlNote
* 3.
* Context context
* long idID
*/
public SqlNote(Context context, long id) {
mContext = context;
mContentResolver = context.getContentResolver();
@ -166,6 +299,16 @@ public class SqlNote {
}
/**
* 1.ID
* 2.loadFromCursor
* 3.
* long idID
* 4.
*
* loadFromCursor(Cursor)
* Cursor
*/
private void loadFromCursor(long id) {
Cursor c = null;
try {
@ -185,6 +328,16 @@ public class SqlNote {
}
}
/**
* 1.Cursor
* 2.loadFromCursor
* 3.
* Cursor cCursor
* 4.
* Cursor
* 使
*
*/
private void loadFromCursor(Cursor c) {
mId = c.getLong(ID_COLUMN);
mAlertDate = c.getLong(ALERTED_DATE_COLUMN);
@ -200,6 +353,15 @@ public class SqlNote {
mVersion = c.getLong(VERSION_COLUMN);
}
/**
* 1.
* 2. loadDataContent
* 3.
* 4.
*
* mDataList
*
*/
private void loadDataContent() {
Cursor c = null;
mDataList.clear();
@ -226,6 +388,18 @@ public class SqlNote {
}
}
/**
* 1. JSON
* 2. setContent
* 3.
* JSONObject jsJSON
* 4. boolean
* 5.
* JSON
*
*
*
*/
public boolean setContent(JSONObject js) {
try {
JSONObject note = js.getJSONObject(GTaskStringUtils.META_HEAD_NOTE);
@ -359,6 +533,15 @@ public class SqlNote {
return true;
}
/**
* 1. JSON
* 2. getContent
* 3. *
* 4. JSONObject
* 5.
* null
* JSON
*/
public JSONObject getContent() {
try {
JSONObject js = new JSONObject();
@ -407,6 +590,9 @@ public class SqlNote {
return null;
}
/**
* 1.get/set
*/
public void setParentId(long id) {
mParentId = id;
mDiffNoteValues.put(NoteColumns.PARENT_ID, id);
@ -440,6 +626,15 @@ public class SqlNote {
return mType == Notes.TYPE_NOTE;
}
/**
*1.
* 2. commit
* 3. boolean validateVersion
* 4. void
* 5. * - ID
*
*
*/
public void commit(boolean validateVersion) {
if (mIsCreate) {
if (mId == INVALID_ID && mDiffNoteValues.containsKey(NoteColumns.ID)) {

Loading…
Cancel
Save