com.google.android.gms.drive.MetadataBuffer Java Examples

The following examples show how to use com.google.android.gms.drive.MetadataBuffer. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: GoogleDriveClient.java    From financisto with GNU General Public License v2.0 6 votes vote down vote up
private List<DriveFileInfo> fetchFiles(DriveApi.MetadataBufferResult metadataBufferResult) {
    List<DriveFileInfo> files = new ArrayList<DriveFileInfo>();
    MetadataBuffer metadataBuffer = metadataBufferResult.getMetadataBuffer();
    if (metadataBuffer == null) return files;
    try {
        for (Metadata metadata : metadataBuffer) {
            if (metadata == null) continue;
            String title = metadata.getTitle();
            if (!title.endsWith(".backup")) continue;
            files.add(new DriveFileInfo(metadata.getDriveId(), title, metadata.getCreatedDate()));
        }
    } finally {
        metadataBuffer.close();
    }
    Collections.sort(files);
    return files;
}
 
Example #2
Source File: Querier.java    From Drive-Database-Sync with Apache License 2.0 6 votes vote down vote up
/**
 * Handles the result of the query. If the results are nonzero, passes up the {@link Metadata}
 * out of the result one at a time through {@link QuerierResultCallback#onQuerierResult(Metadata)}
 * with the {@link QuerierResultCallback} registered in ths {@link Querier}. If the results are
 * null, calls {@link QuerierResultCallback#onNoQuerierResult()}
 * @param result the result of the query
 */
@Override
public void onResult(DriveApi.MetadataBufferResult result) {
    if (!result.getStatus().isSuccess()) {
        Log.e("Querier", "Problem while retrieving files");
        return;
    }

    // Get the metadata buffer
    MetadataBuffer buffer = result.getMetadataBuffer();

    // Check for file dne
    if (buffer.getCount() == 0) {
        // Call null result callback
        callback.onNoQuerierResult();
    }

    // Get the metadata
    for (Metadata m : buffer) {
        if (m.isInAppFolder() && !m.isTrashed()) {
            callback.onQuerierResult(m);
            break;
        }
    }
}
 
Example #3
Source File: FileManager.java    From amiibo with GNU General Public License v2.0 6 votes vote down vote up
@DebugLog
public void readFileContent(final String file_name, final List<Metadata> remainings) {
    Query query = new Query.Builder()
            .addFilter(Filters.eq(SearchableField.TITLE, file_name))
            .build();

    app_folder_for_user.queryChildren(_parent.getClient(), query)
            .setResultCallback(new ResultCallback<DriveApi.MetadataBufferResult>() {
                @Override
                public void onResult(DriveApi.MetadataBufferResult metadataBufferResult) {
                    MetadataBuffer buffer = metadataBufferResult.getMetadataBuffer();
                    int count = buffer.getCount();
                    if (count > 0) {
                        readFileFromDrive(buffer, buffer.get(0).getDriveId());
                    } else {
                        _parent.onFileRead(null);
                    }

                    readFileContent(remainings);
                }
            });
}
 
Example #4
Source File: FileManager.java    From amiibo with GNU General Public License v2.0 6 votes vote down vote up
@DebugLog
private void readFileFromDrive(final MetadataBuffer meta_data, final DriveId drive_id) {
    Drive.DriveApi.getFile(_parent.getClient(), drive_id)
            .open(_parent.getClient(), DriveFile.MODE_READ_ONLY, null)
            .setResultCallback(new ResultCallback<DriveApi.DriveContentsResult>() {
                @Override
                public void onResult(DriveApi.DriveContentsResult driveContentsResult) {
                    try {
                        InputStream input = driveContentsResult.getDriveContents()
                                .getInputStream();
                        String total = consumeStream(input);

                        AmiiboFile amiibo_file = AmiiboFile.fromString(total.toString());
                        _parent.onFileRead(amiibo_file);
                        if (!meta_data.isClosed()) meta_data.release();
                    } catch (IOException e) {
                        e.printStackTrace();
                        _parent.onFileRead(null);
                    }
                }
            });
}
 
Example #5
Source File: QueryFilesInFolderActivity.java    From android-samples with Apache License 2.0 6 votes vote down vote up
/**
 * Retrieves results for the next page. For the first run,
 * it retrieves results for the first page.
 */
private void listFilesInFolder(DriveFolder folder) {
    Query query = new Query.Builder()
                          .addFilter(Filters.eq(SearchableField.MIME_TYPE, "text/plain"))
                          .build();
    // [START drive_android_query_children]
    Task<MetadataBuffer> queryTask = getDriveResourceClient().queryChildren(folder, query);
    // END drive_android_query_children]
    queryTask
            .addOnSuccessListener(this,
                    metadataBuffer -> mResultsAdapter.append(metadataBuffer))
            .addOnFailureListener(this, e -> {
                Log.e(TAG, "Error retrieving files", e);
                showMessage(getString(R.string.query_failed));
                finish();
            });
}
 
Example #6
Source File: QueryFilesWithTitleActivity.java    From android-samples with Apache License 2.0 6 votes vote down vote up
/**
 * Retrieves results for the next page. For the first run,
 * it retrieves results for the first page.
 */
private void listFiles() {
    // [START drive_android_query_title]
    Query query = new Query.Builder()
                          .addFilter(Filters.eq(SearchableField.TITLE, "HelloWorld.txt"))
                          .build();
    // [END drive_android_query_title]
    Task<MetadataBuffer> queryTask =
            getDriveResourceClient()
                    .query(query)
                    .addOnSuccessListener(this,
                            metadataBuffer -> mResultsAdapter.append(metadataBuffer))
                    .addOnFailureListener(this, e -> {
                        Log.e(TAG, "Error retrieving files", e);
                        showMessage(getString(R.string.query_failed));
                        finish();
                    });
}
 
Example #7
Source File: MainActivity.java    From android-samples with Apache License 2.0 6 votes vote down vote up
/**
 * Retrieves the list from Drive if it exists. If not, create a new list.
 */
private Task<Void> initializeGroceryList() {
    Log.d(TAG, "Locating grocery list file.");
    Query query = new Query.Builder()
                          .addFilter(Filters.eq(SearchableField.TITLE,
                                  getResources().getString(R.string.groceryListFileName)))
                          .build();
    return getDriveResourceClient()
            .query(query)
            .continueWithTask(task -> {
                MetadataBuffer metadataBuffer = task.getResult();
                try {
                    if (metadataBuffer.getCount() == 0) {
                        return createNewFile();
                    } else {
                        DriveId id = metadataBuffer.get(0).getDriveId();
                        return Tasks.forResult(id.asDriveFile());
                    }
                } finally {
                    metadataBuffer.release();
                }
            })
            .continueWithTask(task -> loadContents(task.getResult()));
}
 
Example #8
Source File: GoogleDriveClient.java    From financisto with GNU General Public License v2.0 5 votes vote down vote up
private DriveId fetchDriveId(DriveApi.MetadataBufferResult result) {
    MetadataBuffer buffer = result.getMetadataBuffer();
    try {
        for (Metadata metadata : buffer) {
            if (metadata == null) continue;
            return metadata.getDriveId();
        }
    } finally {
        buffer.close();
    }
    return null;
}
 
Example #9
Source File: FileManager.java    From amiibo with GNU General Public License v2.0 5 votes vote down vote up
@DebugLog
public void listFiles() {

    if (app_folder_for_user != null) {

        Log.d("FileManager", app_folder_for_user.getDriveId().toString());

        app_folder_for_user.listChildren(_parent.getClient())
                .setResultCallback(new ResultCallback<DriveApi.MetadataBufferResult>() {
                    @Override
                    public void onResult(DriveApi.MetadataBufferResult metadataBufferResult) {
                        List<Metadata> files = new ArrayList<>();
                        MetadataBuffer buffer = metadataBufferResult.getMetadataBuffer();
                        Metadata data;
                        Log.d("FileManager", "onResult " + buffer.getCount() + " " + metadataBufferResult.getStatus().isSuccess());

                        for (int i = 0; i < buffer.getCount(); i++) {
                            data = buffer.get(i);
                            Log.d("FileManager", "data :: " + data.getTitle());
                            if (data.getTitle().endsWith(EXTENSION)) {
                                if (!hasFileLocally(data.getTitle())) {
                                    files.add(data);
                                }
                            }
                        }

                        _parent.onListFilesResult(files);
                    }
                });
    } else {
        getAmiiboFolder();
    }
}
 
Example #10
Source File: FileManager.java    From amiibo with GNU General Public License v2.0 5 votes vote down vote up
@DebugLog
private void getAmiiboFolder() {
    Drive.DriveApi.getRootFolder(_parent.getClient())
            .listChildren(_parent.getClient())
            .setResultCallback(new ResultCallback<DriveApi.MetadataBufferResult>() {
                @Override
                public void onResult(DriveApi.MetadataBufferResult metadataBufferResult) {
                    boolean found = false;
                    try {
                        List<Metadata> files = new ArrayList<>();
                        MetadataBuffer buffer = metadataBufferResult.getMetadataBuffer();
                        Metadata data;

                        for (int i = 0; i < buffer.getCount(); i++) {
                            data = buffer.get(i);
                            if (data.getTitle().equals(AMIIBO_FOLDER) && data.isFolder()
                                    && !data.isTrashed()) {
                                app_folder_for_user = Drive.DriveApi
                                        .getFolder(_parent.getClient(), data.getDriveId());
                                Log.d("FileManager", data.getDriveId() + " " + data.getTitle());
                            }
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }

                    if (app_folder_for_user != null) {
                        listFiles();
                    } else {
                        createAmiiboFolder();
                    }
                }
            });
}
 
Example #11
Source File: QueryFilesActivity.java    From android-samples with Apache License 2.0 5 votes vote down vote up
/**
 * Retrieves results for the next page. For the first run,
 * it retrieves results for the first page.
 */
private void listFiles() {
    Query query = new Query.Builder()
                          .addFilter(Filters.eq(SearchableField.MIME_TYPE, "text/plain"))
                          .build();
    // [START drive_android_query_files]
    Task<MetadataBuffer> queryTask = getDriveResourceClient().query(query);
    // [END drive_android_query_files]
    // [START drive_android_query_results]
    queryTask
            .addOnSuccessListener(this,
                    metadataBuffer -> {
                        // Handle results...
                        // [START_EXCLUDE]
                        mResultsAdapter.append(metadataBuffer);
                        // [END_EXCLUDE]
                    })
            .addOnFailureListener(this, e -> {
                // Handle failure...
                // [START_EXCLUDE]
                Log.e(TAG, "Error retrieving files", e);
                showMessage(getString(R.string.query_failed));
                finish();
                // [END_EXCLUDE]
            });
    // [END drive_android_query_results]
}
 
Example #12
Source File: MainActivity.java    From android-samples with Apache License 2.0 5 votes vote down vote up
private Task<Void> loadFolderContents(DriveFolder folder) {
    Query folderQuery = new Query.Builder()
            .setSortOrder(new SortOrder.Builder()
                    .addSortAscending(SortableField.CREATED_DATE)
                    .build())
            .build();

    Task<MetadataBuffer> task = mDriveResourceClient.queryChildren(folder, folderQuery);
    return task.continueWith(task1 -> {
        MetadataBuffer items = task1.getResult();
        List<Metadata> children = new ArrayList<>(items.getCount());
        try {
            for (int i = 0; i < items.getCount(); i++) {
                children.add(items.get(i).freeze());
            }
            // Show folders first
            Collections.sort(children, new Comparator<Metadata>() {
                @Override
                public int compare(Metadata a, Metadata b) {
                    int aVal = a.isFolder() ? 1 : 0;
                    int bVal = b.isFolder() ? 1 : 0;
                    return bVal - aVal;
                }
            });
            mFileFolderAdapter.setFiles(children);
            mFileFolderAdapter.notifyDataSetChanged();
        } finally {
            items.release();
        }
        return null;
    });
}