128dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesipackage com.xtremelabs.robolectric.shadows; 228dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesi 328dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesiimport android.content.Context; 428dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesiimport android.database.sqlite.SQLiteDatabase; 528dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesiimport android.database.sqlite.SQLiteDatabase.CursorFactory; 622c22c9aa4ca68c2deac6164edc1d82bc9645310Christian Williams & Phil Goodwinimport android.database.sqlite.SQLiteOpenHelper; 722c22c9aa4ca68c2deac6164edc1d82bc9645310Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.internal.Implementation; 822c22c9aa4ca68c2deac6164edc1d82bc9645310Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.internal.Implements; 922c22c9aa4ca68c2deac6164edc1d82bc9645310Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.internal.RealObject; 1028dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesi 1128dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesi/** 1228dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesi * Shadow for {@code SQLiteOpenHelper}. Provides basic support for retrieving 1328dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesi * databases and partially implements the subclass contract. (Currently, 1428dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesi * support for {@code #onUpgrade} is missing). 1528dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesi */ 1628dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesi@Implements(SQLiteOpenHelper.class) 1728dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesipublic class ShadowSQLiteOpenHelper { 1828dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesi 193f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz @RealObject private SQLiteOpenHelper realHelper; 203f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz private static SQLiteDatabase database; 213f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz 223f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz public void __constructor__(Context context, String name, CursorFactory factory, int version) { 233f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz if (database != null) { 243f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz database.close(); 253f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz } 263f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz database = null; 273f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz } 283f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz 293f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz @Implementation 303f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz public synchronized void close() { 313f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz if (database != null) { 323f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz database.close(); 333f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz } 343f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz database = null; 353f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz } 363f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz 373f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz @Implementation 383f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz public synchronized SQLiteDatabase getReadableDatabase() { 393f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz if (database == null) { 403f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz database = SQLiteDatabase.openDatabase("path", null, 0); 413f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz realHelper.onCreate(database); 423f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz } 433f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz 443f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz realHelper.onOpen(database); 453f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz return database; 463f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz } 473f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz 483f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz @Implementation 493f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz public synchronized SQLiteDatabase getWritableDatabase() { 503f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz if (database == null) { 513f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz database = SQLiteDatabase.openDatabase("path", null, 0); 523f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz realHelper.onCreate(database); 533f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz } 543f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz 553f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz realHelper.onOpen(database); 563f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz return database; 573f9ddcc54cfbf81115466d6cab8a4287b2eae67fPhil Goodwin & Tyler Schultz } 5828dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesi} 59