1/*
2 * Copyright (C) 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package com.android.providers.telephony;
17
18import android.database.sqlite.SQLiteDatabase;
19import android.database.sqlite.SQLiteOpenHelper;
20import android.util.Log;
21
22/**
23 * A subclass of CarrierIdProvider used for testing on an in-memory database
24 */
25public class CarrierIdProviderTestable extends CarrierIdProvider {
26    private static final String TAG = CarrierIdProviderTestable.class.getSimpleName();
27
28    private InMemoryCarrierIdProviderDbHelper mDbHelper;
29
30    @Override
31    public boolean onCreate() {
32        Log.d(TAG, "onCreate called: mDbHelper = new InMemoryCarrierIdProviderDbHelper()");
33        mDbHelper = new InMemoryCarrierIdProviderDbHelper();
34        return true;
35    }
36
37    // close mDbHelper database object
38    protected void closeDatabase() {
39        mDbHelper.close();
40    }
41
42    @Override
43    SQLiteDatabase getReadableDatabase() {
44        Log.d(TAG, "getReadableDatabase called" + mDbHelper.getReadableDatabase());
45        return mDbHelper.getReadableDatabase();
46    }
47
48    @Override
49    SQLiteDatabase getWritableDatabase() {
50        Log.d(TAG, "getWritableDatabase called" + mDbHelper.getWritableDatabase());
51        return mDbHelper.getWritableDatabase();
52    }
53
54    /**
55     * An in memory DB for CarrierIdProviderTestable to use
56     */
57    public static class InMemoryCarrierIdProviderDbHelper extends SQLiteOpenHelper {
58        public InMemoryCarrierIdProviderDbHelper() {
59            super(null,      // no context is needed for in-memory db
60                  null,      // db file name is null for in-memory db
61                  null,      // CursorFactory is null by default
62                  1);        // db version is no-op for tests
63            Log.d(TAG, "InMemoryCarrierIdProviderDbHelper creating in-memory database");
64        }
65
66        @Override
67        public void onCreate(SQLiteDatabase db) {
68            //set up the Carrier id table
69            Log.d(TAG, "InMemoryCarrierIdProviderDbHelper onCreate creating the carrier infp table");
70            db.execSQL(CarrierIdProvider.getStringForCarrierIdTableCreation(
71                    CarrierIdProvider.CARRIER_ID_TABLE));
72            db.execSQL(CarrierIdProvider.getStringForIndexCreation(
73                    CarrierIdProvider.CARRIER_ID_TABLE));
74        }
75
76        @Override
77        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
78            Log.d(TAG, "InMemoryCarrierIdProviderDbHelper onUpgrade doing nothing");
79            return;
80        }
81    }
82}
83