TestModel.java revision ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4
1ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay/* 2ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * Copyright (C) 2015 The Android Open Source Project 3ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * 4ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * Licensed under the Apache License, Version 2.0 (the "License"); 5ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * you may not use this file except in compliance with the License. 6ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * You may obtain a copy of the License at 7ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * 8ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * http://www.apache.org/licenses/LICENSE-2.0 9ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * 10ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * Unless required by applicable law or agreed to in writing, software 11ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * distributed under the License is distributed on an "AS IS" BASIS, 12ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * See the License for the specific language governing permissions and 14ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * limitations under the License. 15ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay */ 16ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay 17ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKaypackage com.android.documentsui.dirlist; 18ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay 19ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKayimport android.content.Context; 20ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKayimport android.database.MatrixCursor; 21ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKayimport android.provider.DocumentsContract.Document; 22ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay 23ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKayimport com.android.documentsui.DirectoryResult; 24ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKayimport com.android.documentsui.RootCursorWrapper; 25ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKayimport com.android.documentsui.dirlist.MultiSelectManager.Selection; 26ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay 27ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKayimport java.util.Random; 28ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKayimport java.util.Set; 29ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay 30ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKaypublic class TestModel extends Model { 31ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay 32ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay private static final String[] COLUMNS = new String[]{ 33ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay RootCursorWrapper.COLUMN_AUTHORITY, 34ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay Document.COLUMN_DOCUMENT_ID, 35ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay Document.COLUMN_FLAGS, 36ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay Document.COLUMN_DISPLAY_NAME, 37ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay Document.COLUMN_SIZE, 38ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay Document.COLUMN_MIME_TYPE 39ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay }; 40ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay 41ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay private final String mAuthority; 42ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay private Set<String> mDeleted; 43ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay 44ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay /** 45ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * Creates a new context. context must be configured with provider for authority. 46ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay * @see TestContext#createStorageTestContext(Context, String). 47ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay */ 48ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay public TestModel(Context context, String authority) { 49ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay super(context); 50ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay mAuthority = authority; 51ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay } 52ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay 53ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay void update(String... names) { 54ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay Random rand = new Random(); 55ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay 56ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay MatrixCursor c = new MatrixCursor(COLUMNS); 57ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay for (int i = 0; i < names.length; i++) { 58ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay MatrixCursor.RowBuilder row = c.newRow(); 59ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay row.add(RootCursorWrapper.COLUMN_AUTHORITY, mAuthority); 60ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay row.add(Document.COLUMN_DOCUMENT_ID, Integer.toString(i)); 61ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay row.add(Document.COLUMN_FLAGS, Document.FLAG_SUPPORTS_DELETE); 62ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay // Generate random document names and sizes. This forces the model's internal sort code 63ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay // to actually do something. 64ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay row.add(Document.COLUMN_DISPLAY_NAME, names[i]); 65ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay row.add(Document.COLUMN_SIZE, rand.nextInt()); 66ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay } 67ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay 68ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay DirectoryResult r = new DirectoryResult(); 69ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay r.cursor = c; 70ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay update(r); 71ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay } 72ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay 73ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay @Override 74ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay public void delete(Selection selected, DeletionListener listener) { 75ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay for (String id : selected.getAll()) { 76ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay mDeleted.add(id); 77ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay } 78ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay listener.onCompletion(); 79ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay } 80ef16f5f41106eaa89e5fdf0958e408a6faf7a5f4Steve McKay} 81