|  |  | @ -26,198 +26,197 @@ import net.micode.notes.data.Notes.DataColumns; | 
			
		
	
		
		
			
				
					
					|  |  |  | import net.micode.notes.data.Notes.DataConstants; |  |  |  | import net.micode.notes.data.Notes.DataConstants; | 
			
		
	
		
		
			
				
					
					|  |  |  | import net.micode.notes.data.Notes.NoteColumns; |  |  |  | import net.micode.notes.data.Notes.NoteColumns; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                                                                                                     //引入Notes中接口
 |  |  |  | //引入Notes中接口
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | public class NotesDatabaseHelper extends SQLiteOpenHelper {                                         //该类为便签SQL表的定义以及操作,便于进行文件夹与便签的各种操作,例如添加或删除的行为
 |  |  |  | public class NotesDatabaseHelper extends SQLiteOpenHelper { // 该类为便签SQL表的定义以及操作,易于进行文件夹与便签的各种操作,例如添加或删除的行为
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     private static final String DB_NAME = "note.db";                                                //数据库名称
 |  |  |  |     private static final String DB_NAME = "note.db"; // 数据库名称
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     private static final int DB_VERSION = 4;                                                        //数据库版本
 |  |  |  |     private static final int DB_VERSION = 4; // 数据库版本
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     public interface TABLE {                                                                        //定义一个数据库表接口
 |  |  |  |     public interface TABLE { // 定义一个数据库表接口
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         public static final String NOTE = "note";                                                   //便签名
 |  |  |  |         public static final String NOTE = "note"; // 便签名
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         public static final String DATA = "data";                                                   //便签数据
 |  |  |  |         public static final String DATA = "data"; // 便签数据
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     private static final String TAG = "NotesDatabaseHelper";                                        //日志类型
 |  |  |  |     private static final String TAG = "NotesDatabaseHelper"; // 日志类型
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     private static NotesDatabaseHelper mInstance;                                                   //创建NotesDatabaseHelper类对象
 |  |  |  |     private static NotesDatabaseHelper mInstance; // 创建NotesDatabaseHelper类对象
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     private static final String CREATE_NOTE_TABLE_SQL =                                             //SQL语句,创建便签表,包含ID、最后修改日期、背景颜色、便签数等在Notes类中的内容
 |  |  |  |     private static final String CREATE_NOTE_TABLE_SQL = // SQL语句,创建便签表,包含ID、最后修改日期、背景颜色、便签数等在Notes类中的内容
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "CREATE TABLE " + TABLE.NOTE + "(" + |  |  |  |             "CREATE TABLE " + TABLE.NOTE + "(" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             NoteColumns.ID + " INTEGER PRIMARY KEY," + |  |  |  |                     NoteColumns.ID + " INTEGER PRIMARY KEY," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             NoteColumns.PARENT_ID + " INTEGER NOT NULL DEFAULT 0," + |  |  |  |                     NoteColumns.PARENT_ID + " INTEGER NOT NULL DEFAULT 0," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             NoteColumns.ALERTED_DATE + " INTEGER NOT NULL DEFAULT 0," + |  |  |  |                     NoteColumns.ALERTED_DATE + " INTEGER NOT NULL DEFAULT 0," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             NoteColumns.BG_COLOR_ID + " INTEGER NOT NULL DEFAULT 0," + |  |  |  |                     NoteColumns.BG_COLOR_ID + " INTEGER NOT NULL DEFAULT 0," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + |  |  |  |                     NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             NoteColumns.HAS_ATTACHMENT + " INTEGER NOT NULL DEFAULT 0," + |  |  |  |                     NoteColumns.HAS_ATTACHMENT + " INTEGER NOT NULL DEFAULT 0," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + |  |  |  |                     NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             NoteColumns.NOTES_COUNT + " INTEGER NOT NULL DEFAULT 0," + |  |  |  |                     NoteColumns.NOTES_COUNT + " INTEGER NOT NULL DEFAULT 0," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             NoteColumns.SNIPPET + " TEXT NOT NULL DEFAULT ''," + |  |  |  |                     NoteColumns.SNIPPET + " TEXT NOT NULL DEFAULT ''," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             NoteColumns.TYPE + " INTEGER NOT NULL DEFAULT 0," + |  |  |  |                     NoteColumns.TYPE + " INTEGER NOT NULL DEFAULT 0," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             NoteColumns.WIDGET_ID + " INTEGER NOT NULL DEFAULT 0," + |  |  |  |                     NoteColumns.WIDGET_ID + " INTEGER NOT NULL DEFAULT 0," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             NoteColumns.WIDGET_TYPE + " INTEGER NOT NULL DEFAULT -1," + |  |  |  |                     NoteColumns.WIDGET_TYPE + " INTEGER NOT NULL DEFAULT -1," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             NoteColumns.SYNC_ID + " INTEGER NOT NULL DEFAULT 0," + |  |  |  |                     NoteColumns.SYNC_ID + " INTEGER NOT NULL DEFAULT 0," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             NoteColumns.LOCAL_MODIFIED + " INTEGER NOT NULL DEFAULT 0," + |  |  |  |                     NoteColumns.LOCAL_MODIFIED + " INTEGER NOT NULL DEFAULT 0," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             NoteColumns.ORIGIN_PARENT_ID + " INTEGER NOT NULL DEFAULT 0," + |  |  |  |                     NoteColumns.ORIGIN_PARENT_ID + " INTEGER NOT NULL DEFAULT 0," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             NoteColumns.GTASK_ID + " TEXT NOT NULL DEFAULT ''," + |  |  |  |                     NoteColumns.GTASK_ID + " TEXT NOT NULL DEFAULT ''," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0" + |  |  |  |                     NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         ")"; |  |  |  |                     ")"; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     private static final String CREATE_DATA_TABLE_SQL =                                             //创建数据表的SQL语句
 |  |  |  |     private static final String CREATE_DATA_TABLE_SQL = // 创建数据表的SQL语句
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "CREATE TABLE " + TABLE.DATA + "(" + |  |  |  |             "CREATE TABLE " + TABLE.DATA + "(" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             DataColumns.ID + " INTEGER PRIMARY KEY," + |  |  |  |                     DataColumns.ID + " INTEGER PRIMARY KEY," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             DataColumns.MIME_TYPE + " TEXT NOT NULL," + |  |  |  |                     DataColumns.MIME_TYPE + " TEXT NOT NULL," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             DataColumns.NOTE_ID + " INTEGER NOT NULL DEFAULT 0," + |  |  |  |                     DataColumns.NOTE_ID + " INTEGER NOT NULL DEFAULT 0," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + |  |  |  |                     NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + |  |  |  |                     NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             DataColumns.CONTENT + " TEXT NOT NULL DEFAULT ''," + |  |  |  |                     DataColumns.CONTENT + " TEXT NOT NULL DEFAULT ''," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             DataColumns.DATA1 + " INTEGER," + |  |  |  |                     DataColumns.DATA1 + " INTEGER," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             DataColumns.DATA2 + " INTEGER," + |  |  |  |                     DataColumns.DATA2 + " INTEGER," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             DataColumns.DATA3 + " TEXT NOT NULL DEFAULT ''," + |  |  |  |                     DataColumns.DATA3 + " TEXT NOT NULL DEFAULT ''," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             DataColumns.DATA4 + " TEXT NOT NULL DEFAULT ''," + |  |  |  |                     DataColumns.DATA4 + " TEXT NOT NULL DEFAULT ''," + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             DataColumns.DATA5 + " TEXT NOT NULL DEFAULT ''" + |  |  |  |                     DataColumns.DATA5 + " TEXT NOT NULL DEFAULT ''" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         ")"; |  |  |  |                     ")"; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     private static final String CREATE_DATA_NOTE_ID_INDEX_SQL = |  |  |  |     private static final String CREATE_DATA_NOTE_ID_INDEX_SQL = "CREATE INDEX IF NOT EXISTS note_id_index ON " + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "CREATE INDEX IF NOT EXISTS note_id_index ON " + |  |  |  |             TABLE.DATA + "(" + DataColumns.NOTE_ID + ");"; // 创建查询操作表索引,用于查找
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         TABLE.DATA + "(" + DataColumns.NOTE_ID + ");";                                              //创建查询操作表索引,用于查找
 |  |  |  |  | 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /** |  |  |  |     /** | 
			
		
	
		
		
			
				
					
					|  |  |  |      * Increase folder's note count when move note to the folder |  |  |  |      * Increase folder's note count when move note to the folder | 
			
		
	
		
		
			
				
					
					|  |  |  |      */ |  |  |  |      */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     private static final String NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER = |  |  |  |     private static final String NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER = "CREATE TRIGGER increase_folder_count_on_update " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "CREATE TRIGGER increase_folder_count_on_update "+ |  |  |  |             + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE + |  |  |  |             " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " BEGIN " + |  |  |  |             " BEGIN " + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "  UPDATE " + TABLE.NOTE + |  |  |  |             "  UPDATE " + TABLE.NOTE + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "   SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" + |  |  |  |             "   SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "  WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" + |  |  |  |             "  WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " END";                                                                                     //创建触发器,方便进行操作,当移动便签时统计新的父文件夹内便签数量
 |  |  |  |             " END"; // 创建触发器,方便进行操作,当移动便签时统计新的父文件夹内便签数量
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /** |  |  |  |     /** | 
			
		
	
		
		
			
				
					
					|  |  |  |      * Decrease folder's note count when move note from folder |  |  |  |      * Decrease folder's note count when move note from folder | 
			
		
	
		
		
			
				
					
					|  |  |  |      */ |  |  |  |      */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     private static final String NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER = |  |  |  |     private static final String NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER = "CREATE TRIGGER decrease_folder_count_on_update " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "CREATE TRIGGER decrease_folder_count_on_update " + |  |  |  |             + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE + |  |  |  |             " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " BEGIN " + |  |  |  |             " BEGIN " + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "  UPDATE " + TABLE.NOTE + |  |  |  |             "  UPDATE " + TABLE.NOTE + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "   SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" + |  |  |  |             "   SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "  WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID + |  |  |  |             "  WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "  AND " + NoteColumns.NOTES_COUNT + ">0" + ";" + |  |  |  |             "  AND " + NoteColumns.NOTES_COUNT + ">0" + ";" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " END";                                                                                     //与上一个方法作用相反,统计旧的父文件夹便签数量
 |  |  |  |             " END"; // 与上一个方法作用相反,统计旧的父文件夹便签数量
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /** |  |  |  |     /** | 
			
		
	
		
		
			
				
					
					|  |  |  |      * Increase folder's note count when insert new note to the folder |  |  |  |      * Increase folder's note count when insert new note to the folder | 
			
		
	
		
		
			
				
					
					|  |  |  |      */ |  |  |  |      */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     private static final String NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER = |  |  |  |     private static final String NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER = "CREATE TRIGGER increase_folder_count_on_insert " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "CREATE TRIGGER increase_folder_count_on_insert " + |  |  |  |             + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " AFTER INSERT ON " + TABLE.NOTE + |  |  |  |             " AFTER INSERT ON " + TABLE.NOTE + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " BEGIN " + |  |  |  |             " BEGIN " + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "  UPDATE " + TABLE.NOTE + |  |  |  |             "  UPDATE " + TABLE.NOTE + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "   SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" + |  |  |  |             "   SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "  WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" + |  |  |  |             "  WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " END";                                                                                     //创建便签时增加统计数量
 |  |  |  |             " END"; // 创建便签时增加统计数量
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /** |  |  |  |     /** | 
			
		
	
		
		
			
				
					
					|  |  |  |      * Decrease folder's note count when delete note from the folder |  |  |  |      * Decrease folder's note count when delete note from the folder | 
			
		
	
		
		
			
				
					
					|  |  |  |      */ |  |  |  |      */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     private static final String NOTE_DECREASE_FOLDER_COUNT_ON_DELETE_TRIGGER = |  |  |  |     private static final String NOTE_DECREASE_FOLDER_COUNT_ON_DELETE_TRIGGER = "CREATE TRIGGER decrease_folder_count_on_delete " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "CREATE TRIGGER decrease_folder_count_on_delete " + |  |  |  |             + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " AFTER DELETE ON " + TABLE.NOTE + |  |  |  |             " AFTER DELETE ON " + TABLE.NOTE + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " BEGIN " + |  |  |  |             " BEGIN " + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "  UPDATE " + TABLE.NOTE + |  |  |  |             "  UPDATE " + TABLE.NOTE + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "   SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" + |  |  |  |             "   SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "  WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID + |  |  |  |             "  WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "  AND " + NoteColumns.NOTES_COUNT + ">0;" + |  |  |  |             "  AND " + NoteColumns.NOTES_COUNT + ">0;" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " END";                                                                                     //删除时减少数量
 |  |  |  |             " END"; // 删除时减少数量
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /** |  |  |  |     /** | 
			
		
	
		
		
			
				
					
					|  |  |  |      * Update note's content when insert data with type {@link DataConstants#NOTE} |  |  |  |      * Update note's content when insert data with type {@link DataConstants#NOTE} | 
			
		
	
		
		
			
				
					
					|  |  |  |      */ |  |  |  |      */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     private static final String DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER = |  |  |  |     private static final String DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER = "CREATE TRIGGER update_note_content_on_insert " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "CREATE TRIGGER update_note_content_on_insert " + |  |  |  |             + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " AFTER INSERT ON " + TABLE.DATA + |  |  |  |             " AFTER INSERT ON " + TABLE.DATA + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " WHEN new." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + |  |  |  |             " WHEN new." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " BEGIN" + |  |  |  |             " BEGIN" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "  UPDATE " + TABLE.NOTE + |  |  |  |             "  UPDATE " + TABLE.NOTE + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "   SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + |  |  |  |             "   SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "  WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + |  |  |  |             "  WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " END";                                                                                     //更新便签数据时更改table表内容
 |  |  |  |             " END"; // 更新便签数据时更改table表内容
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /** |  |  |  |     /** | 
			
		
	
		
		
			
				
					
					|  |  |  |      * Update note's content when data with {@link DataConstants#NOTE} type has changed |  |  |  |      * Update note's content when data with {@link DataConstants#NOTE} type has | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      * changed | 
			
		
	
		
		
			
				
					
					|  |  |  |      */ |  |  |  |      */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     private static final String DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER = |  |  |  |     private static final String DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER = "CREATE TRIGGER update_note_content_on_update " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "CREATE TRIGGER update_note_content_on_update " + |  |  |  |             + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " AFTER UPDATE ON " + TABLE.DATA + |  |  |  |             " AFTER UPDATE ON " + TABLE.DATA + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + |  |  |  |             " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " BEGIN" + |  |  |  |             " BEGIN" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "  UPDATE " + TABLE.NOTE + |  |  |  |             "  UPDATE " + TABLE.NOTE + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "   SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + |  |  |  |             "   SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "  WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + |  |  |  |             "  WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " END";                                                                                     //改变便签数据时更改table表内容
 |  |  |  |             " END"; // 改变便签数据时更改table表内容
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /** |  |  |  |     /** | 
			
		
	
		
		
			
				
					
					|  |  |  |      * Update note's content when data with {@link DataConstants#NOTE} type has deleted |  |  |  |      * Update note's content when data with {@link DataConstants#NOTE} type has | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      * deleted | 
			
		
	
		
		
			
				
					
					|  |  |  |      */ |  |  |  |      */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     private static final String DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER = |  |  |  |     private static final String DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER = "CREATE TRIGGER update_note_content_on_delete " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "CREATE TRIGGER update_note_content_on_delete " + |  |  |  |             + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " AFTER delete ON " + TABLE.DATA + |  |  |  |             " AFTER delete ON " + TABLE.DATA + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + |  |  |  |             " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " BEGIN" + |  |  |  |             " BEGIN" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "  UPDATE " + TABLE.NOTE + |  |  |  |             "  UPDATE " + TABLE.NOTE + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "   SET " + NoteColumns.SNIPPET + "=''" + |  |  |  |             "   SET " + NoteColumns.SNIPPET + "=''" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "  WHERE " + NoteColumns.ID + "=old." + DataColumns.NOTE_ID + ";" + |  |  |  |             "  WHERE " + NoteColumns.ID + "=old." + DataColumns.NOTE_ID + ";" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " END";                                                                                     //删除便签数据时改变table表内容
 |  |  |  |             " END"; // 删除便签数据时改变table表内容
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /** |  |  |  |     /** | 
			
		
	
		
		
			
				
					
					|  |  |  |      * Delete datas belong to note which has been deleted |  |  |  |      * Delete datas belong to note which has been deleted | 
			
		
	
		
		
			
				
					
					|  |  |  |      */ |  |  |  |      */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     private static final String NOTE_DELETE_DATA_ON_DELETE_TRIGGER = |  |  |  |     private static final String NOTE_DELETE_DATA_ON_DELETE_TRIGGER = "CREATE TRIGGER delete_data_on_delete " + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "CREATE TRIGGER delete_data_on_delete " + |  |  |  |             " AFTER DELETE ON " + TABLE.NOTE + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " AFTER DELETE ON " + TABLE.NOTE + |  |  |  |             " BEGIN" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " BEGIN" + |  |  |  |             "  DELETE FROM " + TABLE.DATA + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "  DELETE FROM " + TABLE.DATA + |  |  |  |             "   WHERE " + DataColumns.NOTE_ID + "=old." + NoteColumns.ID + ";" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "   WHERE " + DataColumns.NOTE_ID + "=old." + NoteColumns.ID + ";" + |  |  |  |             " END"; // 删除便签时删除便签内容
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " END";                                                                                     //删除便签时删除便签内容
 |  |  |  |  | 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /** |  |  |  |     /** | 
			
		
	
		
		
			
				
					
					|  |  |  |      * Delete notes belong to folder which has been deleted |  |  |  |      * Delete notes belong to folder which has been deleted | 
			
		
	
		
		
			
				
					
					|  |  |  |      */ |  |  |  |      */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     private static final String FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER = |  |  |  |     private static final String FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER = "CREATE TRIGGER folder_delete_notes_on_delete " | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "CREATE TRIGGER folder_delete_notes_on_delete " + |  |  |  |             + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " AFTER DELETE ON " + TABLE.NOTE + |  |  |  |             " AFTER DELETE ON " + TABLE.NOTE + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " BEGIN" + |  |  |  |             " BEGIN" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "  DELETE FROM " + TABLE.NOTE + |  |  |  |             "  DELETE FROM " + TABLE.NOTE + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "   WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + |  |  |  |             "   WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " END";                                                                                     //删除文件夹时删除内部的便签
 |  |  |  |             " END"; // 删除文件夹时删除内部的便签
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     /** |  |  |  |     /** | 
			
		
	
		
		
			
				
					
					|  |  |  |      * Move notes belong to folder which has been moved to trash folder |  |  |  |      * Move notes belong to folder which has been moved to trash folder | 
			
		
	
		
		
			
				
					
					|  |  |  |      */ |  |  |  |      */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     private static final String FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER = |  |  |  |     private static final String FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER = "CREATE TRIGGER folder_move_notes_on_trash " + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "CREATE TRIGGER folder_move_notes_on_trash " + |  |  |  |             " AFTER UPDATE ON " + TABLE.NOTE + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " AFTER UPDATE ON " + TABLE.NOTE + |  |  |  |             " WHEN new." + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " WHEN new." + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER + |  |  |  |             " BEGIN" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " BEGIN" + |  |  |  |             "  UPDATE " + TABLE.NOTE + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "  UPDATE " + TABLE.NOTE + |  |  |  |             "   SET " + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "   SET " + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER + |  |  |  |             "  WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         "  WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + |  |  |  |             " END"; // 移动便签的父文件夹时便签也一起更改
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         " END";                                                                                     //移动便签的父文件夹时便签也一起更改
 |  |  |  |  | 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     public NotesDatabaseHelper(Context context) { |  |  |  |     public NotesDatabaseHelper(Context context) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         super(context, DB_NAME, null, DB_VERSION); |  |  |  |         super(context, DB_NAME, null, DB_VERSION); | 
			
		
	
		
		
			
				
					
					|  |  |  |     }                                                                                               //创建一个数据库
 |  |  |  |     } // 创建一个数据库
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     public void createNoteTable(SQLiteDatabase db) { |  |  |  |     public void createNoteTable(SQLiteDatabase db) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.execSQL(CREATE_NOTE_TABLE_SQL); |  |  |  |         db.execSQL(CREATE_NOTE_TABLE_SQL); | 
			
		
	
		
		
			
				
					
					|  |  |  |         reCreateNoteTableTriggers(db);                                                              //重新创建触发器
 |  |  |  |         reCreateNoteTableTriggers(db); // 重新创建触发器
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         createSystemFolder(db);                                                                     //创建系统文件夹
 |  |  |  |         createSystemFolder(db); // 创建系统文件夹
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         Log.d(TAG, "note table has been created");                                             //创建一个新的便签表,返回日志
 |  |  |  |         Log.d(TAG, "note table has been created"); // 创建一个新的便签表,返回日志
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     private void reCreateNoteTableTriggers(SQLiteDatabase db) {                                     //数据库对象DB
 |  |  |  |     private void reCreateNoteTableTriggers(SQLiteDatabase db) { // 数据库对象DB
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         db.execSQL("DROP TRIGGER IF EXISTS increase_folder_count_on_update"); |  |  |  |         db.execSQL("DROP TRIGGER IF EXISTS increase_folder_count_on_update"); | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.execSQL("DROP TRIGGER IF EXISTS decrease_folder_count_on_update"); |  |  |  |         db.execSQL("DROP TRIGGER IF EXISTS decrease_folder_count_on_update"); | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.execSQL("DROP TRIGGER IF EXISTS decrease_folder_count_on_delete"); |  |  |  |         db.execSQL("DROP TRIGGER IF EXISTS decrease_folder_count_on_delete"); | 
			
		
	
	
		
		
			
				
					|  |  | @ -233,17 +232,17 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.execSQL(NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER); |  |  |  |         db.execSQL(NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER); | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.execSQL(FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER); |  |  |  |         db.execSQL(FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER); | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.execSQL(FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER); |  |  |  |         db.execSQL(FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER); | 
			
		
	
		
		
			
				
					
					|  |  |  |     }                                                                                               //用于执行SQL语句,运行重新创建便签表触发器函数
 |  |  |  |     } // 用于执行SQL语句,运行重新创建便签表触发器函数
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     private void createSystemFolder(SQLiteDatabase db) {                                            //创建系统级文件夹
 |  |  |  |     private void createSystemFolder(SQLiteDatabase db) { // 创建系统级文件夹
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         ContentValues values = new ContentValues();                                                 //为字典类创建对象
 |  |  |  |         ContentValues values = new ContentValues(); // 为字典类创建对象
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         /** |  |  |  |         /** | 
			
		
	
		
		
			
				
					
					|  |  |  |          * call record foler for call notes |  |  |  |          * call record foler for call notes | 
			
		
	
		
		
			
				
					
					|  |  |  |          */ |  |  |  |          */ | 
			
		
	
		
		
			
				
					
					|  |  |  |         values.put(NoteColumns.ID, Notes.ID_CALL_RECORD_FOLDER); |  |  |  |         values.put(NoteColumns.ID, Notes.ID_CALL_RECORD_FOLDER); | 
			
		
	
		
		
			
				
					
					|  |  |  |         values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); |  |  |  |         values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.insert(TABLE.NOTE, null, values);                                          //为通讯便签创建记录文件夹,并添加键值对
 |  |  |  |         db.insert(TABLE.NOTE, null, values); // 为通讯便签创建记录文件夹,并添加键值对
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         /** |  |  |  |         /** | 
			
		
	
		
		
			
				
					
					|  |  |  |          * root folder which is default folder |  |  |  |          * root folder which is default folder | 
			
		
	
	
		
		
			
				
					|  |  | @ -251,7 +250,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { | 
			
		
	
		
		
			
				
					
					|  |  |  |         values.clear(); |  |  |  |         values.clear(); | 
			
		
	
		
		
			
				
					
					|  |  |  |         values.put(NoteColumns.ID, Notes.ID_ROOT_FOLDER); |  |  |  |         values.put(NoteColumns.ID, Notes.ID_ROOT_FOLDER); | 
			
		
	
		
		
			
				
					
					|  |  |  |         values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); |  |  |  |         values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.insert(TABLE.NOTE, null, values);                                          //创建根文件夹,是默认的、最终的父文件夹
 |  |  |  |         db.insert(TABLE.NOTE, null, values); // 创建根文件夹,是默认的、最终的父文件夹
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         /** |  |  |  |         /** | 
			
		
	
		
		
			
				
					
					|  |  |  |          * temporary folder which is used for moving note |  |  |  |          * temporary folder which is used for moving note | 
			
		
	
	
		
		
			
				
					|  |  | @ -259,7 +258,7 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { | 
			
		
	
		
		
			
				
					
					|  |  |  |         values.clear(); |  |  |  |         values.clear(); | 
			
		
	
		
		
			
				
					
					|  |  |  |         values.put(NoteColumns.ID, Notes.ID_TEMPARAY_FOLDER); |  |  |  |         values.put(NoteColumns.ID, Notes.ID_TEMPARAY_FOLDER); | 
			
		
	
		
		
			
				
					
					|  |  |  |         values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); |  |  |  |         values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.insert(TABLE.NOTE, null, values);                                          //为移动中的便签创建的临时文件夹
 |  |  |  |         db.insert(TABLE.NOTE, null, values); // 为移动中的便签创建的临时文件夹
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         /** |  |  |  |         /** | 
			
		
	
		
		
			
				
					
					|  |  |  |          * create trash folder |  |  |  |          * create trash folder | 
			
		
	
	
		
		
			
				
					|  |  | @ -267,24 +266,24 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { | 
			
		
	
		
		
			
				
					
					|  |  |  |         values.clear(); |  |  |  |         values.clear(); | 
			
		
	
		
		
			
				
					
					|  |  |  |         values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER); |  |  |  |         values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER); | 
			
		
	
		
		
			
				
					
					|  |  |  |         values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); |  |  |  |         values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.insert(TABLE.NOTE, null, values);                                          //创建垃圾桶
 |  |  |  |         db.insert(TABLE.NOTE, null, values); // 创建垃圾桶
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     public void createDataTable(SQLiteDatabase db) {                                                //创建数据表
 |  |  |  |     public void createDataTable(SQLiteDatabase db) { // 创建数据表
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         db.execSQL(CREATE_DATA_TABLE_SQL);                                                          //SQL输入保存的语句
 |  |  |  |         db.execSQL(CREATE_DATA_TABLE_SQL); // SQL输入保存的语句
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         reCreateDataTableTriggers(db); |  |  |  |         reCreateDataTableTriggers(db); | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.execSQL(CREATE_DATA_NOTE_ID_INDEX_SQL); |  |  |  |         db.execSQL(CREATE_DATA_NOTE_ID_INDEX_SQL); | 
			
		
	
		
		
			
				
					
					|  |  |  |         Log.d(TAG, "data table has been created");                                             //日志记录
 |  |  |  |         Log.d(TAG, "data table has been created"); // 日志记录
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     private void reCreateDataTableTriggers(SQLiteDatabase db) {                                     //为数据表重新创建触发器
 |  |  |  |     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_insert"); | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_update"); |  |  |  |         db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_update"); | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_delete");                         //删除触发器
 |  |  |  |         db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_delete"); // 删除触发器
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER); |  |  |  |         db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER); | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER); |  |  |  |         db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER); | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER);                                     //重新创建被删除的触发器
 |  |  |  |         db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER); // 重新创建被删除的触发器
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     static synchronized NotesDatabaseHelper getInstance(Context context) { |  |  |  |     static synchronized NotesDatabaseHelper getInstance(Context context) { | 
			
		
	
	
		
		
			
				
					|  |  | @ -292,16 +291,16 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { | 
			
		
	
		
		
			
				
					
					|  |  |  |             mInstance = new NotesDatabaseHelper(context); |  |  |  |             mInstance = new NotesDatabaseHelper(context); | 
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |         return mInstance; |  |  |  |         return mInstance; | 
			
		
	
		
		
			
				
					
					|  |  |  |     }                                                                                               //静态同步方法,用于返回NotesDatabaseHelper的对象实例mInstance
 |  |  |  |     } // 静态同步方法,用于返回NotesDatabaseHelper的对象实例mInstance
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     @Override |  |  |  |     @Override | 
			
		
	
		
		
			
				
					
					|  |  |  |     public void onCreate(SQLiteDatabase db) { |  |  |  |     public void onCreate(SQLiteDatabase db) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         createNoteTable(db);                                                                        //创建便签表
 |  |  |  |         createNoteTable(db); // 创建便签表
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         createDataTable(db);                                                                        //创建数据表
 |  |  |  |         createDataTable(db); // 创建数据表
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     }                                                                                               //用于初始化表
 |  |  |  |     } // 用于初始化表
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     @Override |  |  |  |     @Override | 
			
		
	
		
		
			
				
					
					|  |  |  |     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {                      //用于检查并升级数据库版本
 |  |  |  |     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // 用于检查并升级数据库版本
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         boolean reCreateTriggers = false; |  |  |  |         boolean reCreateTriggers = false; | 
			
		
	
		
		
			
				
					
					|  |  |  |         boolean skipV2 = false; |  |  |  |         boolean skipV2 = false; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -309,31 +308,31 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { | 
			
		
	
		
		
			
				
					
					|  |  |  |             upgradeToV2(db); |  |  |  |             upgradeToV2(db); | 
			
		
	
		
		
			
				
					
					|  |  |  |             skipV2 = true; // this upgrade including the upgrade from v2 to v3
 |  |  |  |             skipV2 = true; // this upgrade including the upgrade from v2 to v3
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             oldVersion++; |  |  |  |             oldVersion++; | 
			
		
	
		
		
			
				
					
					|  |  |  |         }                                                                                           //检测到版本为1,升级版本
 |  |  |  |         } // 检测到版本为1,升级版本
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (oldVersion == 2 && !skipV2) { |  |  |  |         if (oldVersion == 2 && !skipV2) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             upgradeToV3(db); |  |  |  |             upgradeToV3(db); | 
			
		
	
		
		
			
				
					
					|  |  |  |             reCreateTriggers = true;                                                                //重建触发器标志
 |  |  |  |             reCreateTriggers = true; // 重建触发器标志
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             oldVersion++;                                                                           //检测到版本为2,升级版本
 |  |  |  |             oldVersion++; // 检测到版本为2,升级版本
 | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (oldVersion == 3) { |  |  |  |         if (oldVersion == 3) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             upgradeToV4(db); |  |  |  |             upgradeToV4(db); | 
			
		
	
		
		
			
				
					
					|  |  |  |             oldVersion++; |  |  |  |             oldVersion++; | 
			
		
	
		
		
			
				
					
					|  |  |  |         }                                                                                           //检测到版本为3,升级版本
 |  |  |  |         } // 检测到版本为3,升级版本
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (reCreateTriggers) { |  |  |  |         if (reCreateTriggers) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             reCreateNoteTableTriggers(db); |  |  |  |             reCreateNoteTableTriggers(db); | 
			
		
	
		
		
			
				
					
					|  |  |  |             reCreateDataTableTriggers(db); |  |  |  |             reCreateDataTableTriggers(db); | 
			
		
	
		
		
			
				
					
					|  |  |  |         }                                                                                           //进行触发器的重建
 |  |  |  |         } // 进行触发器的重建
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (oldVersion != newVersion) { |  |  |  |         if (oldVersion != newVersion) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             throw new IllegalStateException("Upgrade notes database to version " + newVersion |  |  |  |             throw new IllegalStateException("Upgrade notes database to version " + newVersion | 
			
		
	
		
		
			
				
					
					|  |  |  |                     + "fails");                                                                     //版本不匹配则抛出异常
 |  |  |  |                     + "fails"); // 版本不匹配则抛出异常
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     private void upgradeToV2(SQLiteDatabase db) {                                                   //升级版本并重建表
 |  |  |  |     private void upgradeToV2(SQLiteDatabase db) { // 升级版本并重建表
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         db.execSQL("DROP TABLE IF EXISTS " + TABLE.NOTE); |  |  |  |         db.execSQL("DROP TABLE IF EXISTS " + TABLE.NOTE); | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.execSQL("DROP TABLE IF EXISTS " + TABLE.DATA); |  |  |  |         db.execSQL("DROP TABLE IF EXISTS " + TABLE.DATA); | 
			
		
	
		
		
			
				
					
					|  |  |  |         createNoteTable(db); |  |  |  |         createNoteTable(db); | 
			
		
	
	
		
		
			
				
					|  |  | @ -349,14 +348,15 @@ public class NotesDatabaseHelper extends SQLiteOpenHelper { | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.GTASK_ID |  |  |  |         db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.GTASK_ID | 
			
		
	
		
		
			
				
					
					|  |  |  |                 + " TEXT NOT NULL DEFAULT ''"); |  |  |  |                 + " TEXT NOT NULL DEFAULT ''"); | 
			
		
	
		
		
			
				
					
					|  |  |  |         // add a trash system folder
 |  |  |  |         // add a trash system folder
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         ContentValues values = new ContentValues(); |  |  |  |         ContentValues values = new ContentValues(); | 
			
		
	
		
		
			
				
					
					|  |  |  |         values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER); |  |  |  |         values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER); | 
			
		
	
		
		
			
				
					
					|  |  |  |         values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); |  |  |  |         values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.insert(TABLE.NOTE, null, values); |  |  |  |         db.insert(TABLE.NOTE, null, values); | 
			
		
	
		
		
			
				
					
					|  |  |  |     }                                                                                               //删除不用的触发器,并添加不为空的新列,添加键值对
 |  |  |  |     } // 删除不用的触发器,并添加不为空的新列,添加键值对
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     private void upgradeToV4(SQLiteDatabase db) { |  |  |  |     private void upgradeToV4(SQLiteDatabase db) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.VERSION |  |  |  |         db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.VERSION | 
			
		
	
		
		
			
				
					
					|  |  |  |                 + " INTEGER NOT NULL DEFAULT 0"); |  |  |  |                 + " INTEGER NOT NULL DEFAULT 0"); | 
			
		
	
		
		
			
				
					
					|  |  |  |     }                                                                                               //添加新的不为空的列
 |  |  |  |     } // 添加新的不为空的列
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
	
		
		
			
				
					|  |  | 
 |