1e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria/* 2e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * Copyright (C) 2017 The Android Open Source Project 3e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * 4e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * Licensed under the Apache License, Version 2.0 (the "License"); 5e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * you may not use this file except in compliance with the License. 6e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * You may obtain a copy of the License at 7e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * 8e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * http://www.apache.org/licenses/LICENSE-2.0 9e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * 10e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * Unless required by applicable law or agreed to in writing, software 11e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * distributed under the License is distributed on an "AS IS" BASIS, 12e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * See the License for the specific language governing permissions and 14e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * limitations under the License. 15e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria */ 16564e43098c323d1a90be53c190b8fdbdde973505Sumir Katariapackage androidx.work.integration.testapp.db; 17e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria 18e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Katariaimport android.arch.persistence.room.Database; 19e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Katariaimport android.arch.persistence.room.Room; 20e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Katariaimport android.arch.persistence.room.RoomDatabase; 21e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Katariaimport android.content.Context; 22e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria 23e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria/** 24e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * A test database. 25e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria */ 26bf442d53cfe91cb9712765770b15dbbb9c912ae9Sumir Kataria@Database(entities = {WordCount.class, Image.class}, version = 1, exportSchema = false) 27e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Katariapublic abstract class TestDatabase extends RoomDatabase { 28e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria 29e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria private static TestDatabase sInstance; 30e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria 31e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria /** 32e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * Gets a static instance of the test database. 33e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * 34e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * @param context A {@link Context} for initialization (we use the application context) 35e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * @return The static instance of a {@link TestDatabase} 36e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria */ 37e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria public static TestDatabase getInstance(Context context) { 38e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria if (sInstance == null) { 39e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria sInstance = Room.databaseBuilder( 40c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar context.getApplicationContext(), TestDatabase.class, "testdb").build(); 41e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria } 42e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria return sInstance; 43e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria } 44e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria 45e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria /** 46e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * Gets the Data Access Object for the wordcount table. 47e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * 48e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria * @return The Data Access Object for the wordcount table 49e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria */ 50e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria public abstract WordCountDao getWordCountDao(); 51c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar 52c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar /** 53c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar * Gets the Data Access Object for the image table. 54c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar * 55c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar * @return The Data Access Object for the image table 56c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar */ 57c5c83e113f5047c3c957a6179bac88721bceb6abXyan Bhatnagar public abstract ImageDao getImageDao(); 58e89fa65672b38c2f8c80f0e89e592a0b175d24aeSumir Kataria} 59