SynchronousContactsProvider2.java revision 53056d49d8adf5d1fe2d18cb60c3c26f281e7a6c
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
17619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkeypackage com.android.providers.contacts2;
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
41d35d9c748af4c3182679c4c546137acfc11eb7a8Dmitri Plotnikov    @Override
42619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey    public boolean onCreate() {
43619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey        boolean created = super.onCreate();
44619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey        synchronized (sDataWiped) {
45619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey            if (!sDataWiped) {
46619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey                sDataWiped = true;
47619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey                wipeData();
48619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey            }
49619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey        }
50619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey        return created;
51619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey    }
5253056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov
5353056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov    private static class SynchronousAggregationScheduler extends ContactAggregationScheduler {
5453056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov
5553056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov        @Override
5653056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov        public void start() {
5753056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov        }
5853056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov
5953056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov        @Override
6053056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov        public void stop() {
6153056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov        }
6253056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov
6353056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov        @Override
6453056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov        long currentTime() {
6553056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov            return 0;
6653056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov        }
6753056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov
6853056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov        @Override
6953056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov        void runDelayed() {
7053056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov            super.run();
7153056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov        }
7253056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov
7353056d49d8adf5d1fe2d18cb60c3c26f281e7a6cDmitri Plotnikov    }
74619871b0fb0175d75ff9336bfe5aec0b27b9bdadJeff Sharkey}
75