|
|
|
@ -35,6 +35,9 @@ import java.util.ArrayList;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class Note {
|
|
|
|
|
/**
|
|
|
|
|
*private ContentValues mNoteDiffValues;
|
|
|
|
|
*/
|
|
|
|
|
private ContentValues mNoteDiffValues;
|
|
|
|
|
private NoteData mNoteData;
|
|
|
|
|
private static final String TAG = "Note";
|
|
|
|
@ -50,7 +53,14 @@ public class Note {
|
|
|
|
|
values.put(NoteColumns.TYPE, Notes.TYPE_NOTE);
|
|
|
|
|
values.put(NoteColumns.LOCAL_MODIFIED, 1);
|
|
|
|
|
values.put(NoteColumns.PARENT_ID, folderId);
|
|
|
|
|
/**
|
|
|
|
|
* 将数据写入数据库表格
|
|
|
|
|
*/
|
|
|
|
|
Uri uri = context.getContentResolver().insert(Notes.CONTENT_NOTE_URI, values);
|
|
|
|
|
/**
|
|
|
|
|
* ContentResolver()主要是实现外部应用对ContentProvider中的数据
|
|
|
|
|
* 进行添加、删除、修改和查询操作
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
long noteId = 0;
|
|
|
|
|
try {
|
|
|
|
@ -59,6 +69,9 @@ public class Note {
|
|
|
|
|
Log.e(TAG, "Get note id error :" + e.toString());
|
|
|
|
|
noteId = 0;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* try-catch异常处理
|
|
|
|
|
*/
|
|
|
|
|
if (noteId == -1) {
|
|
|
|
|
throw new IllegalStateException("Wrong note id:" + noteId);
|
|
|
|
|
}
|
|
|
|
@ -70,36 +83,81 @@ public class Note {
|
|
|
|
|
mNoteData = new NoteData();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 定义两个变量用来存储便签的数据,一个存储便签属性,一个存储便签内容
|
|
|
|
|
* @param key
|
|
|
|
|
* @param value
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
public void setNoteValue(String key, String value) {
|
|
|
|
|
mNoteDiffValues.put(key, value);
|
|
|
|
|
mNoteDiffValues.put(NoteColumns.LOCAL_MODIFIED, 1);
|
|
|
|
|
mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 设置数据库表格的标签属性数据
|
|
|
|
|
* @param key
|
|
|
|
|
* @param value
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
public void setTextData(String key, String value) {
|
|
|
|
|
mNoteData.setTextData(key, value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 设置数据库表格的标签文本内容的数据
|
|
|
|
|
* @param id
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
public void setTextDataId(long id) {
|
|
|
|
|
mNoteData.setTextDataId(id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 设置文本数据的ID
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
public long getTextDataId() {
|
|
|
|
|
return mNoteData.mTextDataId;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 得到文本数据的ID
|
|
|
|
|
* @param id
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
public void setCallDataId(long id) {
|
|
|
|
|
mNoteData.setCallDataId(id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 设置电话号码数据的ID
|
|
|
|
|
* @param key
|
|
|
|
|
* @param value
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
public void setCallData(String key, String value) {
|
|
|
|
|
mNoteData.setCallData(key, value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 得到电话号码数据的ID
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
public boolean isLocalModified() {
|
|
|
|
|
return mNoteDiffValues.size() > 0 || mNoteData.isLocalModified();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 判断是否是本地修改
|
|
|
|
|
* @param context
|
|
|
|
|
* @param noteId
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
public boolean syncNote(Context context, long noteId) {
|
|
|
|
|
if (noteId <= 0) {
|
|
|
|
|
throw new IllegalArgumentException("Wrong note id:" + noteId);
|
|
|
|
@ -130,14 +188,27 @@ public class Note {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 判断数据是否同步
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
private class NoteData {
|
|
|
|
|
/**
|
|
|
|
|
* 定义一个基本的便签内容的数据类,主要包含文本数据和电话号码数据
|
|
|
|
|
*/
|
|
|
|
|
private long mTextDataId;
|
|
|
|
|
|
|
|
|
|
private ContentValues mTextDataValues;
|
|
|
|
|
/**
|
|
|
|
|
* 文本数据
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
private long mCallDataId;
|
|
|
|
|
|
|
|
|
|
private ContentValues mCallDataValues;
|
|
|
|
|
/**
|
|
|
|
|
* 电话号码数据
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
private static final String TAG = "NoteData";
|
|
|
|
|
|
|
|
|
@ -148,6 +219,11 @@ public class Note {
|
|
|
|
|
mCallDataId = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 下面是上述几个函数的具体实现方式
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
boolean isLocalModified() {
|
|
|
|
|
return mTextDataValues.size() > 0 || mCallDataValues.size() > 0;
|
|
|
|
|
}
|
|
|
|
@ -178,6 +254,13 @@ public class Note {
|
|
|
|
|
mNoteDiffValues.put(NoteColumns.MODIFIED_DATE, System.currentTimeMillis());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 下面函数的作用是将新的数据通过Uri的操作存储到数据库
|
|
|
|
|
* @param context
|
|
|
|
|
* @param noteId
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
Uri pushIntoContentResolver(Context context, long noteId) {
|
|
|
|
|
/**
|
|
|
|
|
* Check for safety
|
|
|
|
@ -185,9 +268,15 @@ public class Note {
|
|
|
|
|
if (noteId <= 0) {
|
|
|
|
|
throw new IllegalArgumentException("Wrong note id:" + noteId);
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 判断数据是否合法
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>();
|
|
|
|
|
ContentProviderOperation.Builder builder = null;
|
|
|
|
|
/**
|
|
|
|
|
* 数据库的操作列表
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
if(mTextDataValues.size() > 0) {
|
|
|
|
|
mTextDataValues.put(DataColumns.NOTE_ID, noteId);
|
|
|
|
@ -210,6 +299,9 @@ public class Note {
|
|
|
|
|
}
|
|
|
|
|
mTextDataValues.clear();
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 把文本数据存入DataColums
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
if(mCallDataValues.size() > 0) {
|
|
|
|
|
mCallDataValues.put(DataColumns.NOTE_ID, noteId);
|
|
|
|
@ -232,6 +324,9 @@ public class Note {
|
|
|
|
|
}
|
|
|
|
|
mCallDataValues.clear();
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 把电话号码数据存入DataColumns
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
if (operationList.size() > 0) {
|
|
|
|
|
try {
|
|
|
|
@ -247,6 +342,9 @@ public class Note {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 存储过程中的异常处理
|
|
|
|
|
*/
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|