Cleanup Provider Message in preparation for upload
* Remove mServerIntId and its special logic * Add mServerTimeStamp * Add column dynamically so we don't lose accounts Bug # 2097471
This commit is contained in:
parent
39ec429862
commit
0d00889f83
|
@ -60,6 +60,7 @@ public class LegacyConversions {
|
|||
Address[] replyTo = message.getReplyTo();
|
||||
String subject = message.getSubject();
|
||||
Date sentDate = message.getSentDate();
|
||||
Date internalDate = message.getInternalDate();
|
||||
|
||||
if (from != null && from.length > 0) {
|
||||
localMessage.mDisplayName = from[0].toFriendly();
|
||||
|
@ -86,7 +87,9 @@ public class LegacyConversions {
|
|||
// public int mFlags = 0;
|
||||
|
||||
localMessage.mServerId = message.getUid();
|
||||
// public int mServerIntId;
|
||||
if (internalDate != null) {
|
||||
localMessage.mServerTimeStamp = internalDate.getTime();
|
||||
}
|
||||
// public String mClientId;
|
||||
// public String mMessageId;
|
||||
|
||||
|
|
|
@ -171,6 +171,8 @@ public abstract class EmailContent {
|
|||
public static final String ID = "_id";
|
||||
// source id (string) : the source's name of this item
|
||||
public static final String SERVER_ID = "syncServerId";
|
||||
// source's timestamp (long) for this item
|
||||
public static final String SERVER_TIMESTAMP = "syncServerTimeStamp";
|
||||
}
|
||||
|
||||
public interface BodyColumns {
|
||||
|
@ -419,6 +421,7 @@ public abstract class EmailContent {
|
|||
public static final int CONTENT_CC_LIST_COLUMN = 16;
|
||||
public static final int CONTENT_BCC_LIST_COLUMN = 17;
|
||||
public static final int CONTENT_REPLY_TO_COLUMN = 18;
|
||||
public static final int CONTENT_SERVER_TIMESTAMP_COLUMN = 19;
|
||||
|
||||
public static final String[] CONTENT_PROJECTION = new String[] {
|
||||
RECORD_ID,
|
||||
|
@ -431,6 +434,7 @@ public abstract class EmailContent {
|
|||
MessageColumns.ACCOUNT_KEY, MessageColumns.FROM_LIST,
|
||||
MessageColumns.TO_LIST, MessageColumns.CC_LIST,
|
||||
MessageColumns.BCC_LIST, MessageColumns.REPLY_TO_LIST,
|
||||
SyncColumns.SERVER_TIMESTAMP,
|
||||
};
|
||||
|
||||
public static final int LIST_ID_COLUMN = 0;
|
||||
|
@ -476,7 +480,7 @@ public abstract class EmailContent {
|
|||
public int mFlags = 0;
|
||||
|
||||
public String mServerId;
|
||||
public int mServerIntId;
|
||||
public long mServerTimeStamp;
|
||||
public String mClientId;
|
||||
public String mMessageId;
|
||||
|
||||
|
@ -534,12 +538,8 @@ public abstract class EmailContent {
|
|||
values.put(MessageColumns.FLAG_ATTACHMENT, mFlagAttachment);
|
||||
values.put(MessageColumns.FLAGS, mFlags);
|
||||
|
||||
if (mServerId != null) {
|
||||
values.put(SyncColumns.SERVER_ID, mServerId);
|
||||
} else {
|
||||
values.put(SyncColumns.SERVER_ID, mServerIntId);
|
||||
}
|
||||
|
||||
values.put(SyncColumns.SERVER_ID, mServerId);
|
||||
values.put(SyncColumns.SERVER_TIMESTAMP, mServerTimeStamp);
|
||||
values.put(MessageColumns.CLIENT_ID, mClientId);
|
||||
values.put(MessageColumns.MESSAGE_ID, mMessageId);
|
||||
|
||||
|
@ -585,7 +585,7 @@ public abstract class EmailContent {
|
|||
mFlagAttachment = c.getInt(CONTENT_FLAG_ATTACHMENT_COLUMN) == 1;
|
||||
mFlags = c.getInt(CONTENT_FLAGS_COLUMN);
|
||||
mServerId = c.getString(CONTENT_SERVER_ID_COLUMN);
|
||||
mServerIntId = c.getInt(CONTENT_SERVER_ID_COLUMN);
|
||||
mServerTimeStamp = c.getLong(CONTENT_SERVER_TIMESTAMP_COLUMN);
|
||||
mClientId = c.getString(CONTENT_CLIENT_ID_COLUMN);
|
||||
mMessageId = c.getString(CONTENT_MESSAGE_ID_COLUMN);
|
||||
mMailboxKey = c.getLong(CONTENT_MAILBOX_KEY_COLUMN);
|
||||
|
|
|
@ -60,12 +60,15 @@ public class EmailProvider extends ContentProvider {
|
|||
// Any changes to the database format *must* include update-in-place code.
|
||||
// Original version: 3
|
||||
// Version 4: Database wipe required; changing AccountManager interface w/Exchange
|
||||
public static final int DATABASE_VERSION = 5;
|
||||
// Version 5: Database wipe required; changing AccountManager interface w/Exchange
|
||||
// Version 6: Adding Message.mServerTimeStamp column
|
||||
public static final int DATABASE_VERSION = 6;
|
||||
|
||||
// Any changes to the database format *must* include update-in-place code.
|
||||
// Original version: 2
|
||||
// Version 3: Add "sourceKey" column
|
||||
// Version 4: Database wipe required; changing AccountManager interface w/Exchange
|
||||
// Version 5: Database wipe required; changing AccountManager interface w/Exchange
|
||||
public static final int BODY_DATABASE_VERSION = 5;
|
||||
|
||||
public static final String EMAIL_AUTHORITY = "com.android.email.provider";
|
||||
|
@ -276,14 +279,16 @@ public class EmailProvider extends ContentProvider {
|
|||
// This String and the following String MUST have the same columns, except for the type
|
||||
// of those columns!
|
||||
String createString = " (" + EmailContent.RECORD_ID + " integer primary key autoincrement, "
|
||||
+ SyncColumns.SERVER_ID + " integer, "
|
||||
+ SyncColumns.SERVER_ID + " text, "
|
||||
+ SyncColumns.SERVER_TIMESTAMP + " integer, "
|
||||
+ messageColumns;
|
||||
|
||||
// For the updated and deleted tables, the id is assigned, but we do want to keep track
|
||||
// of the ORDER of updates using an autoincrement primary key. We use the DATA column
|
||||
// at this point; it has no other function
|
||||
String altCreateString = " (" + EmailContent.RECORD_ID + " integer unique, "
|
||||
+ SyncColumns.SERVER_ID + " integer, "
|
||||
+ SyncColumns.SERVER_ID + " text, "
|
||||
+ SyncColumns.SERVER_TIMESTAMP + " integer, "
|
||||
+ messageColumns;
|
||||
|
||||
// The three tables have the same schema
|
||||
|
@ -505,9 +510,6 @@ public class EmailProvider extends ContentProvider {
|
|||
}
|
||||
}
|
||||
|
||||
private final int mDatabaseVersion = DATABASE_VERSION;
|
||||
private final int mBodyDatabaseVersion = BODY_DATABASE_VERSION;
|
||||
|
||||
private SQLiteDatabase mDatabase;
|
||||
private SQLiteDatabase mBodyDatabase;
|
||||
|
||||
|
@ -532,7 +534,7 @@ public class EmailProvider extends ContentProvider {
|
|||
|
||||
private class BodyDatabaseHelper extends SQLiteOpenHelper {
|
||||
BodyDatabaseHelper(Context context, String name) {
|
||||
super(context, name, null, mBodyDatabaseVersion);
|
||||
super(context, name, null, BODY_DATABASE_VERSION);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -555,7 +557,7 @@ public class EmailProvider extends ContentProvider {
|
|||
Context mContext;
|
||||
|
||||
DatabaseHelper(Context context, String name) {
|
||||
super(context, name, null, mDatabaseVersion);
|
||||
super(context, name, null, DATABASE_VERSION);
|
||||
mContext = context;
|
||||
}
|
||||
|
||||
|
@ -584,6 +586,17 @@ public class EmailProvider extends ContentProvider {
|
|||
resetMailboxTable(db, oldVersion, newVersion);
|
||||
resetHostAuthTable(db, oldVersion, newVersion);
|
||||
resetAccountTable(db, oldVersion, newVersion);
|
||||
return;
|
||||
}
|
||||
if (oldVersion == 5) {
|
||||
// Message Tables: Add SyncColumns.SERVER_TIMESTAMP
|
||||
db.execSQL("alter table " + Message.TABLE_NAME
|
||||
+ " add column " + SyncColumns.SERVER_TIMESTAMP + " integer" + ";");
|
||||
db.execSQL("alter table " + Message.UPDATED_TABLE_NAME
|
||||
+ " add column " + SyncColumns.SERVER_TIMESTAMP + " integer" + ";");
|
||||
db.execSQL("alter table " + Message.DELETED_TABLE_NAME
|
||||
+ " add column " + SyncColumns.SERVER_TIMESTAMP + " integer" + ";");
|
||||
oldVersion = 6;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -123,7 +123,7 @@ public class ProviderTestUtils extends Assert {
|
|||
Message message = new Message();
|
||||
|
||||
message.mDisplayName = name;
|
||||
message.mTimeStamp = 1;
|
||||
message.mTimeStamp = 100 + name.length();
|
||||
message.mSubject = "subject " + name;
|
||||
message.mFlagRead = true;
|
||||
message.mFlagLoaded = Message.FLAG_LOADED_UNLOADED;
|
||||
|
@ -132,7 +132,7 @@ public class ProviderTestUtils extends Assert {
|
|||
message.mFlags = 2;
|
||||
|
||||
message.mServerId = "serverid " + name;
|
||||
message.mServerIntId = 0;
|
||||
message.mServerTimeStamp = 300 + name.length();
|
||||
message.mClientId = "clientid " + name;
|
||||
message.mMessageId = "messageid " + name;
|
||||
|
||||
|
@ -150,7 +150,7 @@ public class ProviderTestUtils extends Assert {
|
|||
message.mHtml = "body html " + name;
|
||||
message.mTextReply = "reply text " + name;
|
||||
message.mHtmlReply = "reply html " + name;
|
||||
message.mSourceKey = 1000;
|
||||
message.mSourceKey = 400 + name.length();
|
||||
}
|
||||
|
||||
if (saveIt) {
|
||||
|
@ -296,7 +296,7 @@ public class ProviderTestUtils extends Assert {
|
|||
assertEquals(caller + " mFlags", expect.mFlags, actual.mFlags);
|
||||
|
||||
assertEquals(caller + " mServerId", expect.mServerId, actual.mServerId);
|
||||
assertEquals(caller + " mServerIntId", expect.mServerIntId, actual.mServerIntId);
|
||||
assertEquals(caller + " mServerTimeStamp", expect.mServerTimeStamp,actual.mServerTimeStamp);
|
||||
assertEquals(caller + " mClientId", expect.mClientId, actual.mClientId);
|
||||
assertEquals(caller + " mMessageId", expect.mMessageId, actual.mMessageId);
|
||||
|
||||
|
|
|
@ -69,6 +69,10 @@ public class ProviderTests extends ProviderTestCase2<EmailProvider> {
|
|||
super.tearDown();
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: Database upgrade tests
|
||||
*/
|
||||
|
||||
/**
|
||||
* Test simple account save/retrieve
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue