xref: /aosp_15_r20/cts/tests/JobScheduler/src/android/jobscheduler/DummyJobContentProvider.java (revision b7c941bb3fa97aba169d73cee0bed2de8ac964bf)
1*b7c941bbSAndroid Build Coastguard Worker /*
2*b7c941bbSAndroid Build Coastguard Worker  * Copyright (C) 2016 The Android Open Source Project.
3*b7c941bbSAndroid Build Coastguard Worker  *
4*b7c941bbSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*b7c941bbSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*b7c941bbSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*b7c941bbSAndroid Build Coastguard Worker  *
8*b7c941bbSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*b7c941bbSAndroid Build Coastguard Worker  *
10*b7c941bbSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*b7c941bbSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*b7c941bbSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*b7c941bbSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*b7c941bbSAndroid Build Coastguard Worker  * limitations under the License.
15*b7c941bbSAndroid Build Coastguard Worker  */
16*b7c941bbSAndroid Build Coastguard Worker 
17*b7c941bbSAndroid Build Coastguard Worker package android.jobscheduler;
18*b7c941bbSAndroid Build Coastguard Worker 
19*b7c941bbSAndroid Build Coastguard Worker import android.content.ContentProvider;
20*b7c941bbSAndroid Build Coastguard Worker import android.content.ContentValues;
21*b7c941bbSAndroid Build Coastguard Worker import android.content.Context;
22*b7c941bbSAndroid Build Coastguard Worker import android.content.UriMatcher;
23*b7c941bbSAndroid Build Coastguard Worker import android.database.Cursor;
24*b7c941bbSAndroid Build Coastguard Worker import android.database.sqlite.SQLiteDatabase;
25*b7c941bbSAndroid Build Coastguard Worker import android.database.sqlite.SQLiteOpenHelper;
26*b7c941bbSAndroid Build Coastguard Worker import android.net.Uri;
27*b7c941bbSAndroid Build Coastguard Worker 
28*b7c941bbSAndroid Build Coastguard Worker /**
29*b7c941bbSAndroid Build Coastguard Worker  * Stub content provider used for generating content change reports
30*b7c941bbSAndroid Build Coastguard Worker  */
31*b7c941bbSAndroid Build Coastguard Worker public class DummyJobContentProvider extends ContentProvider {
32*b7c941bbSAndroid Build Coastguard Worker     private static final String DATABASE_NAME = "dummy.db";
33*b7c941bbSAndroid Build Coastguard Worker     private static final String NAME_VALUE_TABLE = "name_value";
34*b7c941bbSAndroid Build Coastguard Worker 
35*b7c941bbSAndroid Build Coastguard Worker     private DatabaseHelper mDbHelper;
36*b7c941bbSAndroid Build Coastguard Worker     private static UriMatcher sMatcher = new UriMatcher(UriMatcher.NO_MATCH);
37*b7c941bbSAndroid Build Coastguard Worker 
38*b7c941bbSAndroid Build Coastguard Worker     private static final int MATCH_NAME_VALUE      = 1;
39*b7c941bbSAndroid Build Coastguard Worker 
40*b7c941bbSAndroid Build Coastguard Worker     public static final String AUTHORITY = "android.jobscheduler.dummyprovider";
41*b7c941bbSAndroid Build Coastguard Worker     public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY);
42*b7c941bbSAndroid Build Coastguard Worker 
43*b7c941bbSAndroid Build Coastguard Worker     public static final String _ID   = "_id";
44*b7c941bbSAndroid Build Coastguard Worker     public static final String NAME  = "name";
45*b7c941bbSAndroid Build Coastguard Worker     public static final String VALUE = "value";
46*b7c941bbSAndroid Build Coastguard Worker 
47*b7c941bbSAndroid Build Coastguard Worker     static {
sMatcher.addURI(AUTHORITY, null, MATCH_NAME_VALUE)48*b7c941bbSAndroid Build Coastguard Worker         sMatcher.addURI(AUTHORITY, null, MATCH_NAME_VALUE);
49*b7c941bbSAndroid Build Coastguard Worker     }
50*b7c941bbSAndroid Build Coastguard Worker 
51*b7c941bbSAndroid Build Coastguard Worker     /*
52*b7c941bbSAndroid Build Coastguard Worker      * (non-Javadoc)
53*b7c941bbSAndroid Build Coastguard Worker      * @see android.content.ContentProvider#onCreate()
54*b7c941bbSAndroid Build Coastguard Worker      */
55*b7c941bbSAndroid Build Coastguard Worker     @Override
onCreate()56*b7c941bbSAndroid Build Coastguard Worker     public boolean onCreate() {
57*b7c941bbSAndroid Build Coastguard Worker         mDbHelper = new DatabaseHelper(getContext());
58*b7c941bbSAndroid Build Coastguard Worker         return true;
59*b7c941bbSAndroid Build Coastguard Worker     }
60*b7c941bbSAndroid Build Coastguard Worker 
61*b7c941bbSAndroid Build Coastguard Worker     private class DatabaseHelper extends SQLiteOpenHelper {
62*b7c941bbSAndroid Build Coastguard Worker         private static final int DATABASE_VERSION = 1;
63*b7c941bbSAndroid Build Coastguard Worker 
DatabaseHelper(Context context)64*b7c941bbSAndroid Build Coastguard Worker         DatabaseHelper(Context context) {
65*b7c941bbSAndroid Build Coastguard Worker             super(context, DATABASE_NAME, null, DATABASE_VERSION);
66*b7c941bbSAndroid Build Coastguard Worker         }
67*b7c941bbSAndroid Build Coastguard Worker 
68*b7c941bbSAndroid Build Coastguard Worker         @Override
onCreate(SQLiteDatabase db)69*b7c941bbSAndroid Build Coastguard Worker         public void onCreate(SQLiteDatabase db) {
70*b7c941bbSAndroid Build Coastguard Worker             // create an empty name_value table
71*b7c941bbSAndroid Build Coastguard Worker             db.execSQL("CREATE TABLE " + NAME_VALUE_TABLE + " (" + _ID + " INTEGER PRIMARY KEY,"
72*b7c941bbSAndroid Build Coastguard Worker                     + NAME + " TEXT," + VALUE + " TEXT"+ ");");
73*b7c941bbSAndroid Build Coastguard Worker         }
74*b7c941bbSAndroid Build Coastguard Worker 
75*b7c941bbSAndroid Build Coastguard Worker         @Override
onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)76*b7c941bbSAndroid Build Coastguard Worker         public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
77*b7c941bbSAndroid Build Coastguard Worker         }
78*b7c941bbSAndroid Build Coastguard Worker     }
79*b7c941bbSAndroid Build Coastguard Worker 
80*b7c941bbSAndroid Build Coastguard Worker     /*
81*b7c941bbSAndroid Build Coastguard Worker      * (non-Javadoc)
82*b7c941bbSAndroid Build Coastguard Worker      * @see android.content.ContentProvider#insert(android.net.Uri,
83*b7c941bbSAndroid Build Coastguard Worker      * android.content.ContentValues)
84*b7c941bbSAndroid Build Coastguard Worker      */
85*b7c941bbSAndroid Build Coastguard Worker     @Override
insert(Uri uri, ContentValues values)86*b7c941bbSAndroid Build Coastguard Worker     public Uri insert(Uri uri, ContentValues values) {
87*b7c941bbSAndroid Build Coastguard Worker         String tbName = getTableName(uri);
88*b7c941bbSAndroid Build Coastguard Worker         if (tbName == null) {
89*b7c941bbSAndroid Build Coastguard Worker             return null;
90*b7c941bbSAndroid Build Coastguard Worker         }
91*b7c941bbSAndroid Build Coastguard Worker         SQLiteDatabase db = mDbHelper.getWritableDatabase();
92*b7c941bbSAndroid Build Coastguard Worker         db.insert(tbName, VALUE, values);
93*b7c941bbSAndroid Build Coastguard Worker         getContext().getContentResolver().notifyChange(uri, null);
94*b7c941bbSAndroid Build Coastguard Worker         return uri;
95*b7c941bbSAndroid Build Coastguard Worker     }
96*b7c941bbSAndroid Build Coastguard Worker 
97*b7c941bbSAndroid Build Coastguard Worker     /*
98*b7c941bbSAndroid Build Coastguard Worker      * (non-Javadoc)
99*b7c941bbSAndroid Build Coastguard Worker      * @see android.content.ContentProvider#query(android.net.Uri,
100*b7c941bbSAndroid Build Coastguard Worker      * java.lang.String[], java.lang.String, java.lang.String[],
101*b7c941bbSAndroid Build Coastguard Worker      * java.lang.String)
102*b7c941bbSAndroid Build Coastguard Worker      */
103*b7c941bbSAndroid Build Coastguard Worker     @Override
query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)104*b7c941bbSAndroid Build Coastguard Worker     public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
105*b7c941bbSAndroid Build Coastguard Worker             String sortOrder) {
106*b7c941bbSAndroid Build Coastguard Worker         String tbName = getTableName(uri);
107*b7c941bbSAndroid Build Coastguard Worker         if (tbName == null) {
108*b7c941bbSAndroid Build Coastguard Worker             return null;
109*b7c941bbSAndroid Build Coastguard Worker         }
110*b7c941bbSAndroid Build Coastguard Worker         SQLiteDatabase db = mDbHelper.getReadableDatabase();
111*b7c941bbSAndroid Build Coastguard Worker         Cursor c = db.query(tbName, projection, selection, selectionArgs, null, null, sortOrder);
112*b7c941bbSAndroid Build Coastguard Worker         c.setNotificationUri(getContext().getContentResolver(), uri);
113*b7c941bbSAndroid Build Coastguard Worker         return c;
114*b7c941bbSAndroid Build Coastguard Worker     }
115*b7c941bbSAndroid Build Coastguard Worker 
getTableName(Uri uri)116*b7c941bbSAndroid Build Coastguard Worker     private String getTableName(Uri uri) {
117*b7c941bbSAndroid Build Coastguard Worker         switch (sMatcher.match(uri)) {
118*b7c941bbSAndroid Build Coastguard Worker             case MATCH_NAME_VALUE:
119*b7c941bbSAndroid Build Coastguard Worker                 return NAME_VALUE_TABLE;
120*b7c941bbSAndroid Build Coastguard Worker             default:
121*b7c941bbSAndroid Build Coastguard Worker                 throw new UnsupportedOperationException();
122*b7c941bbSAndroid Build Coastguard Worker         }
123*b7c941bbSAndroid Build Coastguard Worker     }
124*b7c941bbSAndroid Build Coastguard Worker 
125*b7c941bbSAndroid Build Coastguard Worker     /*
126*b7c941bbSAndroid Build Coastguard Worker      * (non-Javadoc)
127*b7c941bbSAndroid Build Coastguard Worker      * @see android.content.ContentProvider#update(android.net.Uri,
128*b7c941bbSAndroid Build Coastguard Worker      * android.content.ContentValues, java.lang.String, java.lang.String[])
129*b7c941bbSAndroid Build Coastguard Worker      */
130*b7c941bbSAndroid Build Coastguard Worker     @Override
update(Uri uri, ContentValues values, String selection, String[] selectionArgs)131*b7c941bbSAndroid Build Coastguard Worker     public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
132*b7c941bbSAndroid Build Coastguard Worker         String tbName = getTableName(uri);
133*b7c941bbSAndroid Build Coastguard Worker         if (tbName == null) {
134*b7c941bbSAndroid Build Coastguard Worker             return 0;
135*b7c941bbSAndroid Build Coastguard Worker         }
136*b7c941bbSAndroid Build Coastguard Worker         SQLiteDatabase db = mDbHelper.getWritableDatabase();
137*b7c941bbSAndroid Build Coastguard Worker         int count = db.update(tbName, values, selection, selectionArgs);
138*b7c941bbSAndroid Build Coastguard Worker         getContext().getContentResolver().notifyChange(uri, null);
139*b7c941bbSAndroid Build Coastguard Worker         return count;
140*b7c941bbSAndroid Build Coastguard Worker     }
141*b7c941bbSAndroid Build Coastguard Worker 
142*b7c941bbSAndroid Build Coastguard Worker     /*
143*b7c941bbSAndroid Build Coastguard Worker      * (non-Javadoc)
144*b7c941bbSAndroid Build Coastguard Worker      * @see android.content.ContentProvider#delete(android.net.Uri,
145*b7c941bbSAndroid Build Coastguard Worker      * java.lang.String, java.lang.String[])
146*b7c941bbSAndroid Build Coastguard Worker      */
147*b7c941bbSAndroid Build Coastguard Worker     @Override
delete(Uri uri, String selection, String[] selectionArgs)148*b7c941bbSAndroid Build Coastguard Worker     public int delete(Uri uri, String selection, String[] selectionArgs) {
149*b7c941bbSAndroid Build Coastguard Worker         String tbName = getTableName(uri);
150*b7c941bbSAndroid Build Coastguard Worker         if (tbName == null) {
151*b7c941bbSAndroid Build Coastguard Worker             return 0;
152*b7c941bbSAndroid Build Coastguard Worker         }
153*b7c941bbSAndroid Build Coastguard Worker         SQLiteDatabase db = mDbHelper.getWritableDatabase();
154*b7c941bbSAndroid Build Coastguard Worker         int count = db.delete(tbName, selection, selectionArgs);
155*b7c941bbSAndroid Build Coastguard Worker         getContext().getContentResolver().notifyChange(uri, null);
156*b7c941bbSAndroid Build Coastguard Worker         return count;
157*b7c941bbSAndroid Build Coastguard Worker     }
158*b7c941bbSAndroid Build Coastguard Worker 
159*b7c941bbSAndroid Build Coastguard Worker     /*
160*b7c941bbSAndroid Build Coastguard Worker      * (non-Javadoc)
161*b7c941bbSAndroid Build Coastguard Worker      * @see android.content.ContentProvider#getType(android.net.Uri)
162*b7c941bbSAndroid Build Coastguard Worker      */
163*b7c941bbSAndroid Build Coastguard Worker     @Override
getType(Uri uri)164*b7c941bbSAndroid Build Coastguard Worker     public String getType(Uri uri) {
165*b7c941bbSAndroid Build Coastguard Worker         return null;
166*b7c941bbSAndroid Build Coastguard Worker     }
167*b7c941bbSAndroid Build Coastguard Worker }
168