Move aggregator to its own package
... so that methods used only by ProfileAggregator don't have to be public.
And fix some method visibilities that don't make sense.
Needed to change the bogus ID in PhotoStoreTest; otherwise moving the
aggregator test will make this test fail for some unclear reason.
Bug 6118852
Change-Id: Ic0c022cbf50128f40c70559c1a7cf8e2a6c06fc8
diff --git a/src/com/android/providers/contacts/CommonNicknameCache.java b/src/com/android/providers/contacts/CommonNicknameCache.java
index 0276743..e1dfae3 100644
--- a/src/com/android/providers/contacts/CommonNicknameCache.java
+++ b/src/com/android/providers/contacts/CommonNicknameCache.java
@@ -87,7 +87,7 @@
/**
* Returns nickname cluster IDs or null. Maintains cache.
*/
- protected String[] getCommonNicknameClusters(String normalizedName) {
+ public String[] getCommonNicknameClusters(String normalizedName) {
if (mNicknameBloomFilter == null) {
preloadNicknameBloomFilter();
}
diff --git a/src/com/android/providers/contacts/ContactsDatabaseHelper.java b/src/com/android/providers/contacts/ContactsDatabaseHelper.java
index fbc2c55..074949c 100644
--- a/src/com/android/providers/contacts/ContactsDatabaseHelper.java
+++ b/src/com/android/providers/contacts/ContactsDatabaseHelper.java
@@ -83,16 +83,14 @@
import java.util.HashMap;
import java.util.Locale;
-import java.util.Map;
import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
/**
* Database helper for contacts. Designed as a singleton to make sure that all
* {@link android.content.ContentProvider} users get the same reference.
* Provides handy methods for maintaining package and mime-type lookup tables.
*/
-/* package */ class ContactsDatabaseHelper extends SQLiteOpenHelper {
+public class ContactsDatabaseHelper extends SQLiteOpenHelper {
private static final String TAG = "ContactsDatabaseHelper";
/**
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java
index 183526b..a2e4c7f 100644
--- a/src/com/android/providers/contacts/ContactsProvider2.java
+++ b/src/com/android/providers/contacts/ContactsProvider2.java
@@ -18,7 +18,6 @@
import com.android.common.content.ProjectionMap;
import com.android.common.content.SyncStateContentProviderHelper;
-import com.android.providers.contacts.ContactAggregator.AggregationSuggestionParameter;
import com.android.providers.contacts.ContactLookupKey.LookupKeySegment;
import com.android.providers.contacts.ContactsDatabaseHelper.AccountsColumns;
import com.android.providers.contacts.ContactsDatabaseHelper.AggregatedPresenceColumns;
@@ -47,6 +46,9 @@
import com.android.providers.contacts.ContactsDatabaseHelper.ViewGroupsColumns;
import com.android.providers.contacts.ContactsDatabaseHelper.Views;
import com.android.providers.contacts.SearchIndexManager.FtsQueryBuilder;
+import com.android.providers.contacts.aggregation.ContactAggregator;
+import com.android.providers.contacts.aggregation.ContactAggregator.AggregationSuggestionParameter;
+import com.android.providers.contacts.aggregation.ProfileAggregator;
import com.android.providers.contacts.util.DbQueryUtils;
import com.android.providers.contacts.util.NeededForTesting;
import com.android.vcard.VCardComposer;
@@ -1812,11 +1814,11 @@
return mProfilePhotoStore;
}
- /* package */ int getMaxDisplayPhotoDim() {
+ public int getMaxDisplayPhotoDim() {
return mMaxDisplayPhotoDim;
}
- /* package */ int getMaxThumbnailPhotoDim() {
+ public int getMaxThumbnailPhotoDim() {
return mMaxThumbnailPhotoDim;
}
@@ -6374,10 +6376,6 @@
return false;
}
- public void updateLookupKeyForRawContact(SQLiteDatabase db, long rawContactId) {
- mAggregator.get().updateLookupKeyForRawContact(db, rawContactId);
- }
-
/**
* Returns the contact ID that is mentioned the highest number of times.
*/
@@ -7793,7 +7791,7 @@
/**
* Returns true if the specified account type and data set is writable.
*/
- protected boolean isWritableAccountWithDataSet(String accountTypeAndDataSet) {
+ public boolean isWritableAccountWithDataSet(String accountTypeAndDataSet) {
if (accountTypeAndDataSet == null) {
return true;
}
diff --git a/src/com/android/providers/contacts/DataRowHandler.java b/src/com/android/providers/contacts/DataRowHandler.java
index 32e6954..b98f6c7 100644
--- a/src/com/android/providers/contacts/DataRowHandler.java
+++ b/src/com/android/providers/contacts/DataRowHandler.java
@@ -19,6 +19,7 @@
import com.android.providers.contacts.ContactsDatabaseHelper.MimetypesColumns;
import com.android.providers.contacts.ContactsDatabaseHelper.PresenceColumns;
import com.android.providers.contacts.ContactsDatabaseHelper.Tables;
+import com.android.providers.contacts.aggregation.ContactAggregator;
import android.content.ContentValues;
import android.content.Context;
diff --git a/src/com/android/providers/contacts/DataRowHandlerForCommonDataKind.java b/src/com/android/providers/contacts/DataRowHandlerForCommonDataKind.java
index ae20309..b717d31 100644
--- a/src/com/android/providers/contacts/DataRowHandlerForCommonDataKind.java
+++ b/src/com/android/providers/contacts/DataRowHandlerForCommonDataKind.java
@@ -15,6 +15,8 @@
*/
package com.android.providers.contacts;
+import com.android.providers.contacts.aggregation.ContactAggregator;
+
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
diff --git a/src/com/android/providers/contacts/DataRowHandlerForCustomMimetype.java b/src/com/android/providers/contacts/DataRowHandlerForCustomMimetype.java
index 726516c..0202fd6 100644
--- a/src/com/android/providers/contacts/DataRowHandlerForCustomMimetype.java
+++ b/src/com/android/providers/contacts/DataRowHandlerForCustomMimetype.java
@@ -15,6 +15,8 @@
*/
package com.android.providers.contacts;
+import com.android.providers.contacts.aggregation.ContactAggregator;
+
import android.content.Context;
public class DataRowHandlerForCustomMimetype extends DataRowHandler {
diff --git a/src/com/android/providers/contacts/DataRowHandlerForEmail.java b/src/com/android/providers/contacts/DataRowHandlerForEmail.java
index de4f17a..f1fa941 100644
--- a/src/com/android/providers/contacts/DataRowHandlerForEmail.java
+++ b/src/com/android/providers/contacts/DataRowHandlerForEmail.java
@@ -16,6 +16,7 @@
package com.android.providers.contacts;
import com.android.providers.contacts.SearchIndexManager.IndexBuilder;
+import com.android.providers.contacts.aggregation.ContactAggregator;
import android.content.ContentValues;
import android.content.Context;
diff --git a/src/com/android/providers/contacts/DataRowHandlerForGroupMembership.java b/src/com/android/providers/contacts/DataRowHandlerForGroupMembership.java
index 542e5a0..3a4b167 100644
--- a/src/com/android/providers/contacts/DataRowHandlerForGroupMembership.java
+++ b/src/com/android/providers/contacts/DataRowHandlerForGroupMembership.java
@@ -22,6 +22,7 @@
import com.android.providers.contacts.ContactsDatabaseHelper.RawContactsColumns;
import com.android.providers.contacts.ContactsDatabaseHelper.Tables;
import com.android.providers.contacts.ContactsProvider2.GroupIdCacheEntry;
+import com.android.providers.contacts.aggregation.ContactAggregator;
import android.content.ContentValues;
import android.content.Context;
diff --git a/src/com/android/providers/contacts/DataRowHandlerForIm.java b/src/com/android/providers/contacts/DataRowHandlerForIm.java
index 715a26c..009bb89 100644
--- a/src/com/android/providers/contacts/DataRowHandlerForIm.java
+++ b/src/com/android/providers/contacts/DataRowHandlerForIm.java
@@ -16,6 +16,7 @@
package com.android.providers.contacts;
import com.android.providers.contacts.SearchIndexManager.IndexBuilder;
+import com.android.providers.contacts.aggregation.ContactAggregator;
import android.content.ContentValues;
import android.content.Context;
diff --git a/src/com/android/providers/contacts/DataRowHandlerForNickname.java b/src/com/android/providers/contacts/DataRowHandlerForNickname.java
index efaf3b0..0fec6ee 100644
--- a/src/com/android/providers/contacts/DataRowHandlerForNickname.java
+++ b/src/com/android/providers/contacts/DataRowHandlerForNickname.java
@@ -16,6 +16,7 @@
package com.android.providers.contacts;
import com.android.providers.contacts.SearchIndexManager.IndexBuilder;
+import com.android.providers.contacts.aggregation.ContactAggregator;
import android.content.ContentValues;
import android.content.Context;
diff --git a/src/com/android/providers/contacts/DataRowHandlerForNote.java b/src/com/android/providers/contacts/DataRowHandlerForNote.java
index 4610cc7..317af1a 100644
--- a/src/com/android/providers/contacts/DataRowHandlerForNote.java
+++ b/src/com/android/providers/contacts/DataRowHandlerForNote.java
@@ -16,6 +16,7 @@
package com.android.providers.contacts;
import com.android.providers.contacts.SearchIndexManager.IndexBuilder;
+import com.android.providers.contacts.aggregation.ContactAggregator;
import android.content.ContentValues;
import android.content.Context;
diff --git a/src/com/android/providers/contacts/DataRowHandlerForOrganization.java b/src/com/android/providers/contacts/DataRowHandlerForOrganization.java
index 0280c3b..7384ccb 100644
--- a/src/com/android/providers/contacts/DataRowHandlerForOrganization.java
+++ b/src/com/android/providers/contacts/DataRowHandlerForOrganization.java
@@ -17,6 +17,7 @@
import com.android.providers.contacts.ContactsDatabaseHelper.Tables;
import com.android.providers.contacts.SearchIndexManager.IndexBuilder;
+import com.android.providers.contacts.aggregation.ContactAggregator;
import android.content.ContentValues;
import android.content.Context;
diff --git a/src/com/android/providers/contacts/DataRowHandlerForPhoneNumber.java b/src/com/android/providers/contacts/DataRowHandlerForPhoneNumber.java
index 88e432e..f6d6d5d 100644
--- a/src/com/android/providers/contacts/DataRowHandlerForPhoneNumber.java
+++ b/src/com/android/providers/contacts/DataRowHandlerForPhoneNumber.java
@@ -18,6 +18,7 @@
import com.android.providers.contacts.ContactsDatabaseHelper.PhoneLookupColumns;
import com.android.providers.contacts.ContactsDatabaseHelper.Tables;
import com.android.providers.contacts.SearchIndexManager.IndexBuilder;
+import com.android.providers.contacts.aggregation.ContactAggregator;
import android.content.ContentValues;
import android.content.Context;
diff --git a/src/com/android/providers/contacts/DataRowHandlerForPhoto.java b/src/com/android/providers/contacts/DataRowHandlerForPhoto.java
index dcd23cd..bfe1c3d 100644
--- a/src/com/android/providers/contacts/DataRowHandlerForPhoto.java
+++ b/src/com/android/providers/contacts/DataRowHandlerForPhoto.java
@@ -15,6 +15,8 @@
*/
package com.android.providers.contacts;
+import com.android.providers.contacts.aggregation.ContactAggregator;
+
import android.content.ContentValues;
import android.content.Context;
import android.content.res.Resources;
diff --git a/src/com/android/providers/contacts/DataRowHandlerForStructuredName.java b/src/com/android/providers/contacts/DataRowHandlerForStructuredName.java
index fd237fd..c84d2e8 100644
--- a/src/com/android/providers/contacts/DataRowHandlerForStructuredName.java
+++ b/src/com/android/providers/contacts/DataRowHandlerForStructuredName.java
@@ -16,6 +16,7 @@
package com.android.providers.contacts;
import com.android.providers.contacts.SearchIndexManager.IndexBuilder;
+import com.android.providers.contacts.aggregation.ContactAggregator;
import android.content.ContentValues;
import android.content.Context;
diff --git a/src/com/android/providers/contacts/DataRowHandlerForStructuredPostal.java b/src/com/android/providers/contacts/DataRowHandlerForStructuredPostal.java
index d329cb4..6898a43 100644
--- a/src/com/android/providers/contacts/DataRowHandlerForStructuredPostal.java
+++ b/src/com/android/providers/contacts/DataRowHandlerForStructuredPostal.java
@@ -16,6 +16,7 @@
package com.android.providers.contacts;
import com.android.providers.contacts.SearchIndexManager.IndexBuilder;
+import com.android.providers.contacts.aggregation.ContactAggregator;
import android.content.ContentValues;
import android.content.Context;
diff --git a/src/com/android/providers/contacts/ContactAggregator.java b/src/com/android/providers/contacts/aggregation/ContactAggregator.java
similarity index 98%
rename from src/com/android/providers/contacts/ContactAggregator.java
rename to src/com/android/providers/contacts/aggregation/ContactAggregator.java
index d6b2abc..a235ce2 100644
--- a/src/com/android/providers/contacts/ContactAggregator.java
+++ b/src/com/android/providers/contacts/aggregation/ContactAggregator.java
@@ -14,9 +14,13 @@
* limitations under the License
*/
-package com.android.providers.contacts;
+package com.android.providers.contacts.aggregation;
+import com.android.providers.contacts.CommonNicknameCache;
+import com.android.providers.contacts.ContactLookupKey;
+import com.android.providers.contacts.ContactMatcher;
import com.android.providers.contacts.ContactMatcher.MatchScore;
+import com.android.providers.contacts.ContactsDatabaseHelper;
import com.android.providers.contacts.ContactsDatabaseHelper.AccountsColumns;
import com.android.providers.contacts.ContactsDatabaseHelper.AggregatedPresenceColumns;
import com.android.providers.contacts.ContactsDatabaseHelper.ContactsColumns;
@@ -29,6 +33,13 @@
import com.android.providers.contacts.ContactsDatabaseHelper.StatusUpdatesColumns;
import com.android.providers.contacts.ContactsDatabaseHelper.Tables;
import com.android.providers.contacts.ContactsDatabaseHelper.Views;
+import com.android.providers.contacts.ContactsProvider2;
+import com.android.providers.contacts.NameLookupBuilder;
+import com.android.providers.contacts.NameNormalizer;
+import com.android.providers.contacts.NameSplitter;
+import com.android.providers.contacts.PhotoPriorityResolver;
+import com.android.providers.contacts.ReorderingCursorWrapper;
+import com.android.providers.contacts.TransactionContext;
import android.database.Cursor;
import android.database.DatabaseUtils;
@@ -549,7 +560,7 @@
return contactId;
}
- public long insertContact(SQLiteDatabase db, long rawContactId) {
+ protected long insertContact(SQLiteDatabase db, long rawContactId) {
mSelectionArgs1[0] = String.valueOf(rawContactId);
computeAggregateData(db, mRawContactsQueryByRawContactId, mSelectionArgs1, mContactInsert);
return mContactInsert.executeInsert();
@@ -2110,7 +2121,7 @@
* Execute {@link SQLiteStatement} that will update the
* {@link Contacts#STARRED} flag for the given {@link RawContacts#_ID}.
*/
- protected void updateStarred(long rawContactId) {
+ public void updateStarred(long rawContactId) {
long contactId = mDbHelper.getContactId(rawContactId);
if (contactId == 0) {
return;
diff --git a/src/com/android/providers/contacts/ProfileAggregator.java b/src/com/android/providers/contacts/aggregation/ProfileAggregator.java
similarity index 87%
rename from src/com/android/providers/contacts/ProfileAggregator.java
rename to src/com/android/providers/contacts/aggregation/ProfileAggregator.java
index e4f8a3a..6126184 100644
--- a/src/com/android/providers/contacts/ProfileAggregator.java
+++ b/src/com/android/providers/contacts/aggregation/ProfileAggregator.java
@@ -13,13 +13,21 @@
* See the License for the specific language governing permissions and
* limitations under the License
*/
-package com.android.providers.contacts;
+package com.android.providers.contacts.aggregation;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDoneException;
import android.database.sqlite.SQLiteStatement;
import android.provider.ContactsContract.Contacts;
+
+import com.android.providers.contacts.CommonNicknameCache;
+import com.android.providers.contacts.ContactLookupKey;
+import com.android.providers.contacts.ContactsDatabaseHelper;
import com.android.providers.contacts.ContactsDatabaseHelper.Tables;
+import com.android.providers.contacts.ContactsProvider2;
+import com.android.providers.contacts.NameSplitter;
+import com.android.providers.contacts.PhotoPriorityResolver;
+import com.android.providers.contacts.TransactionContext;
/**
* A version of the ContactAggregator for use against the profile database.
diff --git a/tests/src/com/android/providers/contacts/PhotoStoreTest.java b/tests/src/com/android/providers/contacts/PhotoStoreTest.java
index 601ccf5..0186741 100644
--- a/tests/src/com/android/providers/contacts/PhotoStoreTest.java
+++ b/tests/src/com/android/providers/contacts/PhotoStoreTest.java
@@ -167,7 +167,7 @@
// Run cleanup with the indication that only the large and huge photos are in use, along
// with a bogus photo file ID that isn't in the photo store.
- long bogusPhotoFileId = 42;
+ long bogusPhotoFileId = 123456789;
Set<Long> photoFileIdsInUse = new HashSet<Long>();
photoFileIdsInUse.add(resourceIdToPhotoMap.get(R.drawable.earth_large));
photoFileIdsInUse.add(resourceIdToPhotoMap.get(R.drawable.earth_huge));
diff --git a/tests/src/com/android/providers/contacts/SynchronousContactsProvider2.java b/tests/src/com/android/providers/contacts/SynchronousContactsProvider2.java
index 4fe3b56..39293c5 100644
--- a/tests/src/com/android/providers/contacts/SynchronousContactsProvider2.java
+++ b/tests/src/com/android/providers/contacts/SynchronousContactsProvider2.java
@@ -170,7 +170,7 @@
}
@Override
- protected boolean isWritableAccountWithDataSet(String accountType) {
+ public boolean isWritableAccountWithDataSet(String accountType) {
return !READ_ONLY_ACCOUNT_TYPE.equals(accountType);
}
diff --git a/tests/src/com/android/providers/contacts/ContactAggregatorTest.java b/tests/src/com/android/providers/contacts/aggregation/ContactAggregatorTest.java
similarity index 99%
rename from tests/src/com/android/providers/contacts/ContactAggregatorTest.java
rename to tests/src/com/android/providers/contacts/aggregation/ContactAggregatorTest.java
index 5c7c0ff..d2f3a60 100644
--- a/tests/src/com/android/providers/contacts/ContactAggregatorTest.java
+++ b/tests/src/com/android/providers/contacts/aggregation/ContactAggregatorTest.java
@@ -14,8 +14,10 @@
* limitations under the License.
*/
-package com.android.providers.contacts;
+package com.android.providers.contacts.aggregation;
+import com.android.providers.contacts.BaseContactsProvider2Test;
+import com.android.providers.contacts.aggregation.ContactAggregator;
import com.android.providers.contacts.tests.R;
import com.google.android.collect.Lists;