# HG changeset patch
# User "Vincent Veronis"
# Date 1304849071 -7200
# Node ID 9ffd19d0249cb502a7e9f92624c5b9977a420d82
# Parent d9a0565ccaccbc373a86a57f6689c84c727001a4
Improve code style
diff -r d9a0565ccacc -r 9ffd19d0249c AndroidManifest.xml
--- a/AndroidManifest.xml Sun May 08 11:35:51 2011 +0200
+++ b/AndroidManifest.xml Sun May 08 12:04:31 2011 +0200
@@ -55,16 +55,7 @@
android:label="Beem Connection">
-
-
-
-
-
-
+
ops) {
+ /**
+ * Method to execute content provider operation.
+ * @param ops
+ */
+ private static void executeOperation(final ArrayList ops) {
try {
mContentResolver.applyBatch(ContactsContract.AUTHORITY, ops);
} catch (RemoteException e) {
@@ -154,6 +168,11 @@
}
}
+ /**
+ * Roster sync method.
+ * @param r The roster to sync
+ * @param a The account related
+ */
private static void manageRoster(final Roster r, final Account a) {
ArrayList ops = new ArrayList();
for (RosterEntry entry : r.getEntries()) {
@@ -163,20 +182,18 @@
if (ops.size() > 100)
executeOperation(ops);
}
- // TODO: dont know how to ttest
- // for (RosterGroup group : r.getGroups()) {
- // if (group != null)
- // manageGroup(ops, a, group);
- // if (ops.size() > 0)
- // executeOperation(ops);
- // }
if (ops.size() > 0)
executeOperation(ops);
}
+ /**
+ * RosterEntry sync method.
+ * @param ops The content provider operation
+ * @param account The account related
+ * @param entry The roster entry to sync
+ */
private static void manageEntry(ArrayList ops, Account account, RosterEntry entry) {
long rawContactID = getRawContactID(account.name, entry.getUser());
- String displayName = entry.getName() != null ? entry.getName() : entry.getUser();
Log.i(TAG, "Sync Contact : " + entry.getUser() + " RawContactID : " + rawContactID);
if (rawContactID == -1) { // Not found in database, add new
ContentValues values = new ContentValues();
@@ -186,17 +203,57 @@
Uri rawContactUri = mContentResolver.insert(ContactsContract.RawContacts.CONTENT_URI, values);
rawContactID = ContentUris.parseId(rawContactUri);
values.clear();
- //Insert Name values
- ContentProviderOperation.Builder builder = ContentProviderOperation
- .newInsert(ContactsContract.Data.CONTENT_URI);
+ ContentProviderOperation.Builder builder = addUpdateStructuredName(entry, rawContactID, true);
+ ops.add(builder.build());
+ builder = addUpdateIm(entry, rawContactID, true);
+ ops.add(builder.build());
+ } else { // Found, update
+ ContentProviderOperation.Builder builder = addUpdateStructuredName(entry, rawContactID, false);
+ ops.add(builder.build());
+ }
+ }
+
+ /**
+ * Method to insert or update structured name informations.
+ * @param entry The roster entry to sync
+ * @param rawContactID The contact ID in the android database
+ * @param isInsert Insert boolean
+ * @return
+ */
+ private static ContentProviderOperation.Builder addUpdateStructuredName(RosterEntry entry, long rawContactID,
+ boolean isInsert) {
+ String displayName = entry.getName() != null ? entry.getName() : entry.getUser();
+ ContentProviderOperation.Builder builder;
+ if (isInsert) {
+ builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
builder.withValue(ContactsContract.Data.RAW_CONTACT_ID, rawContactID);
builder.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
builder.withValue(ContactsContract.CommonDataKinds.StructuredName.RAW_CONTACT_ID, rawContactID);
- builder.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, displayName);
- builder.withValue(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, displayName);
- builder.withValue(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, displayName);
- ops.add(builder.build());
+ } else {
+ builder = ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI);
+ builder.withSelection(
+ ContactsContract.CommonDataKinds.StructuredName.RAW_CONTACT_ID + " =? AND "
+ + ContactsContract.Data.MIMETYPE + " = '" + ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE
+ + "'", new String[] { String.valueOf(rawContactID) });
+ }
+ builder.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, displayName);
+ builder.withValue(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, displayName);
+ builder.withValue(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, displayName);
+ return builder;
+ }
+
+ /**
+ * Method to insert or update IM informations.
+ * @param entry The roster entry to sync
+ * @param rawContactID The contact ID in the android database
+ * @param isInsert Insert boolean
+ * @return
+ */
+ private static ContentProviderOperation.Builder addUpdateIm(RosterEntry entry, long rawContactID, boolean isInsert) {
+ String displayName = entry.getName() != null ? entry.getName() : entry.getUser();
+ ContentProviderOperation.Builder builder;
+ if (isInsert) {
builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
builder.withValue(ContactsContract.Data.RAW_CONTACT_ID, rawContactID);
builder.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE);
@@ -204,23 +261,18 @@
builder.withValue(ContactsContract.CommonDataKinds.Im.DATA1, displayName);
builder.withValue(ContactsContract.CommonDataKinds.Im.PROTOCOL,
ContactsContract.CommonDataKinds.Im.PROTOCOL_JABBER);
- ops.add(builder.build());
- } else { // Found, update
- // Update Name values
- ContentProviderOperation.Builder builder = ContentProviderOperation
- .newUpdate(ContactsContract.Data.CONTENT_URI);
- builder.withSelection(
- ContactsContract.CommonDataKinds.StructuredName.RAW_CONTACT_ID + " =? AND "
- + ContactsContract.Data.MIMETYPE + " = '" + ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE
- + "'", new String[] { String.valueOf(rawContactID)});
- builder.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, displayName);
- builder.withValue(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, displayName);
- builder.withValue(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, displayName);
- ops.add(builder.build());
+ } else {
+ builder = ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI);
}
+ return builder;
}
-
+ /**
+ * Get contact ID from android database.
+ * @param account The account related
+ * @param jid The jid related
+ * @return ID in the database of the jid
+ */
private static long getRawContactID(String account, String jid) {
long authorId = -1;
final Cursor c = mContentResolver.query(ContactsContract.RawContacts.CONTENT_URI, new String[] {