Reputation: 17105
So using REST API you could list folder children like
final StringBuilder searchQuery = new StringBuilder();
searchQuery.append('\'').append(parentResourceId).append('\'').append(" in parents");
searchQuery.append(" and mimeType=\'").append(DriveFolder.MIME_TYPE).append('\'');
searchQuery.append(" and trashed=false and title=\'").append(driveFolderName).append('\'');
final Uri url =
Uri.parse(FILES_URL).buildUpon().appendQueryParameter("q", searchQuery.toString()).build();
final HttpGet get = new HttpGet(url.toString());
Now in Google Api Java Client I don't see how can I do this.
Whan I have currently found is
@NonNull
public static Set<String>
listChildrenIds(@NonNull final Drive service, @NonNull final String parentResId)
throws IOException {
final Set<String> result = new HashSet<>();
final Children.List request = service.children().list(parentResId);
final ChildList list = request.execute();
for (ChildReference child : list.getItems()) {
final String id = child.getId();
if (id != null) {
result.add(id);
}
}
return result;
}
@Nullable
public static File find(@NonNull final Drive service,
@NonNull final Collection<String> ids,
@NonNull final String title,
@Nullable final String mimeType) throws IOException {
for (final String id : ids) {
final File file = service.files().get(id).execute();
if (file.getTitle().equals(title)) {
if (mimeType == null || file.getMimeType().equals(mimeType)) {
return file;
}
}
}
return null;
}
@Nullable
public static File findFile(@NonNull final Drive service,
@NonNull final String title,
@NonNull final String parentId,
@Nullable final String mimeType) throws IOException {
final Set<String> children = listChildrenIds(service, parentId);
return find(service, children, title, mimeType);
}
But that gives extra request for every File. And also this way I have to manually filter out trashed files.
Upvotes: 1
Views: 679
Reputation: 17105
Found it. I was searching in get()
, so I couldn't find it for a while. It appeared to be list()
driveService.files().list().setQ(query).execute();
Upvotes: 2