SynchronousContactsProvider2.java revision 3d8b043c3341a5b6c2e781b7eba9767d5cd13267
1619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey/* 2619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey * Copyright (C) 2009 The Android Open Source Project 3619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey * 4619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey * Licensed under the Apache License, Version 2.0 (the "License"); 5619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey * you may not use this file except in compliance with the License. 6619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey * You may obtain a copy of the License at 7619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey * 8619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey * http://www.apache.org/licenses/LICENSE-2.0 9619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey * 10619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey * Unless required by applicable law or agreed to in writing, software 11619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey * distributed under the License is distributed on an "AS IS" BASIS, 12619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey * See the License for the specific language governing permissions and 14619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey * limitations under the License. 15619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey */ 16619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey 1728f8857b1b46bde18b85c6d3c2a63ac44c3c2e1cEvan Millarpackage com.android.providers.contacts; 18619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey 19d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikovimport android.content.Context; 20d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov 21619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey/** 22619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey * A version of {@link ContactsProvider2} class that performs aggregation 23619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey * synchronously and wipes all data at construction time. 24619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey */ 25619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkeypublic class SynchronousContactsProvider2 extends ContactsProvider2 { 26619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey private static Boolean sDataWiped = false; 27d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov private static OpenHelper mOpenHelper; 28619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey 29619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey public SynchronousContactsProvider2() { 3053056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov super(new SynchronousAggregationScheduler()); 31619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey } 32619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey 33619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey @Override 34d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov protected OpenHelper getOpenHelper(final Context context) { 35d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov if (mOpenHelper == null) { 36d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov mOpenHelper = new OpenHelper(context); 37d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov } 38d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov return mOpenHelper; 39d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov } 40d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov 413d8b043c3341a5b6c2e781b7eba9767d5cd13267Dmitri Plotnikov public static void resetOpenHelper() { 423d8b043c3341a5b6c2e781b7eba9767d5cd13267Dmitri Plotnikov mOpenHelper = null; 433d8b043c3341a5b6c2e781b7eba9767d5cd13267Dmitri Plotnikov } 443d8b043c3341a5b6c2e781b7eba9767d5cd13267Dmitri Plotnikov 45d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov @Override 46619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey public boolean onCreate() { 47619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey boolean created = super.onCreate(); 48619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey synchronized (sDataWiped) { 49619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey if (!sDataWiped) { 50619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey sDataWiped = true; 51619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey wipeData(); 52619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey } 53619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey } 54619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey return created; 55619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey } 5653056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov 573d8b043c3341a5b6c2e781b7eba9767d5cd13267Dmitri Plotnikov @Override 583d8b043c3341a5b6c2e781b7eba9767d5cd13267Dmitri Plotnikov protected boolean isLegacyContactImportNeeded() { 593d8b043c3341a5b6c2e781b7eba9767d5cd13267Dmitri Plotnikov 603d8b043c3341a5b6c2e781b7eba9767d5cd13267Dmitri Plotnikov // We have an explicit test for data conversion - no need to do it every time 613d8b043c3341a5b6c2e781b7eba9767d5cd13267Dmitri Plotnikov return false; 623d8b043c3341a5b6c2e781b7eba9767d5cd13267Dmitri Plotnikov } 633d8b043c3341a5b6c2e781b7eba9767d5cd13267Dmitri Plotnikov 6453056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov private static class SynchronousAggregationScheduler extends ContactAggregationScheduler { 6553056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov 6653056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov @Override 6753056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov public void start() { 6853056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov } 6953056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov 7053056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov @Override 7153056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov public void stop() { 7253056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov } 7353056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov 7453056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov @Override 7553056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov long currentTime() { 7653056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov return 0; 7753056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov } 7853056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov 7953056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov @Override 8053056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov void runDelayed() { 8153056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov super.run(); 8253056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov } 8353056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov 8453056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov } 85619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey} 86