private File searchFile( String fileName, String parentId ) throws Exception { File file = null; StringBuffer fileQuery = new StringBuffer(); fileQuery.append( "name = '" + fileName + "'" ); if ( parentId != null ) { fileQuery.append( " and '" + parentId + "' in parents and trashed=false" ); } FileList fileList = driveService.files().list().setQ( fileQuery.toString() ).execute(); if ( !fileList.getFiles().isEmpty() ) { file = fileList.getFiles().get( 0 ); } return file; }
protected String[] doListChildren() throws Exception { String[] children = null; if ( isFolder() ) { id = id == null ? "root" : id; String fileQuery = "'" + id + "' in parents and trashed=false"; FileList files = driveService.files().list().setQ( fileQuery ).execute(); List<String> fileNames = new ArrayList<String>(); for ( File file : files.getFiles() ) { fileNames.add( file.getName() ); } children = fileNames.toArray( new String[0] ); } return children; }
.setPageSize(pageSize); if (query.isPresent()) { request = request.setQ(query.get());
putFile.setParents(Collections.singletonList(folderId)); Files.List fileRequest = drive.files().list() .setQ(format(QUERY_NOTTRASHED_NAME_NOTMIME_INPARENTS, parameters.getResourceName(), MIME_TYPE_FOLDER, folderId)); LOG.debug("[putResource] `{}` Exists in `{}` ? with `{}`.", parameters.getResourceName(), parameters.getDestinationFolderId(), fileRequest.getQ());
private boolean processFolder() throws IOException { if (folderId == null && !subFolders.isEmpty()) { folderId = subFolders.get(0); subFolders.remove(0); request.setQ(format(query, folderId)); LOG.debug("query = {} {}.", query, folderId); } searchResults.clear(); FileList files = request.execute(); for (File file : files.getFiles()) { if (canAddSubFolder(file.getMimeType())) { subFolders.add(file.getId()); } if (canAddFile(file.getMimeType())) { searchResults.add(file); result.totalCount++; } } request.setPageToken(files.getNextPageToken()); searchCount = searchResults.size(); // finished for folderId if (StringUtils.isEmpty(request.getPageToken()) || searchCount == 0) { folderId = null; } return searchCount > 0; }
request.setQ("trashed = false and '" + id + "' in parents");
private boolean processFolder() throws IOException { if (folderId == null && !subFolders.isEmpty()) { folderId = subFolders.get(0); subFolders.remove(0); request.setQ(format(query, folderId)); LOG.debug("query = {} {}.", query, folderId); } searchResults.clear(); FileList files = request.execute(); for (File file : files.getFiles()) { if (canAddSubFolder(file.getMimeType())) { subFolders.add(file.getId()); } if (canAddFile(file.getMimeType())) { searchResults.add(file); result.totalCount++; } } request.setPageToken(files.getNextPageToken()); searchCount = searchResults.size(); // finished for folderId if (StringUtils.isEmpty(request.getPageToken()) || searchCount == 0) { folderId = null; } return searchCount > 0; }
putFile.setParents(Collections.singletonList(folderId)); Files.List fileRequest = drive.files().list() .setQ(format(QUERY_NOTTRASHED_NAME_NOTMIME_INPARENTS, parameters.getResourceName(), MIME_TYPE_FOLDER, folderId)); LOG.debug("[putResource] `{}` Exists in `{}` ? with `{}`.", parameters.getResourceName(), parameters.getDestinationFolderId(), fileRequest.getQ());
/** * @param sourceFolderId source folder ID * @param destinationFolderId folder ID where to copy the sourceFolderId's content * @param newName folder name to assign * @return created folder ID * @throws IOException when operation fails */ public String copyFolder(String sourceFolderId, String destinationFolderId, String newName) throws IOException { LOG.debug("[copyFolder] sourceFolderId: {}; destinationFolderId: {}; newName: {}", sourceFolderId, destinationFolderId, newName); // create a new folder String newFolderId = createFolder(destinationFolderId, newName); // Make a recursive copy of all files/folders inside the source folder String query = format(Q_IN_PARENTS, sourceFolderId) + Q_AND + Q_NOT_TRASHED; FileList originals = drive.files().list().setQ(query).execute(); LOG.debug("[copyFolder] Searching for copy {}", query); for (File file : originals.getFiles()) { if (file.getMimeType().equals(MIME_TYPE_FOLDER)) { copyFolder(file.getId(), newFolderId, file.getName()); } else { copyFile(file.getId(), newFolderId, file.getName(), false); } } return newFolderId; }
/** * @param sourceFolderId source folder ID * @param destinationFolderId folder ID where to copy the sourceFolderId's content * @param newName folder name to assign * @return created folder ID * @throws IOException when operation fails */ public String copyFolder(String sourceFolderId, String destinationFolderId, String newName) throws IOException { LOG.debug("[copyFolder] sourceFolderId: {}; destinationFolderId: {}; newName: {}", sourceFolderId, destinationFolderId, newName); // create a new folder String newFolderId = createFolder(destinationFolderId, newName); // Make a recursive copy of all files/folders inside the source folder String query = format(Q_IN_PARENTS, sourceFolderId) + Q_AND + Q_NOT_TRASHED; FileList originals = drive.files().list().setQ(query).execute(); LOG.debug("[copyFolder] Searching for copy {}", query); for (File file : originals.getFiles()) { if (file.getMimeType().equals(MIME_TYPE_FOLDER)) { copyFolder(file.getId(), newFolderId, file.getName()); } else { copyFile(file.getId(), newFolderId, file.getName(), false); } } return newFolderId; }
public List<File> listChildren(String parentId) { List<File> resultList = new LinkedList<File>(); Drive drive = driveFactory.getDrive(this.credential); try { Drive.Files.List request = drive.files().list().setFields("nextPageToken, files"); request.setQ("trashed = false and '" + parentId + "' in parents"); request.setPageSize(1000); LOGGER.log(Level.FINE, "Listing children of folder " + parentId + "."); do { FileList fileList = executeWithRetry(options, () -> request.execute()); List<File> items = fileList.getFiles(); resultList.addAll(items); request.setPageToken(fileList.getNextPageToken()); } while (request.getPageToken() != null && request.getPageToken().length() > 0); if (LOGGER.isLoggable(Level.FINE)) { for (File file : resultList) { LOGGER.log(Level.FINE, "Child of " + parentId + ": " + file.getId() + ";" + file.getName() + ";" + file.getMimeType()); } } removeDuplicates(resultList); return resultList; } catch (IOException e) { throw new JDriveSyncException(JDriveSyncException.Reason.IOException, "Failed to execute list request: " + e.getMessage(), e); } }
public List<File> search(Optional<String> title) { Drive drive = driveFactory.getDrive(this.credential); try { List<File> result = new ArrayList<File>(); Drive.Files.List request = drive.files().list(); request.setPageSize(1000); String query = ""; if (title.isPresent()) { query += " name = '" + title.get() + "'"; } if (query.length() > 0) { request.setQ(query); } do { FileList files = executeWithRetry(options, () -> request.execute()); result.addAll(files.getFiles()); request.setPageToken(files.getNextPageToken()); } while (request.getPageToken() != null && request.getPageToken().length() > 0); return result; } catch (IOException e) { throw new JDriveSyncException(JDriveSyncException.Reason.IOException, "Failed to list all files: " + e.getMessage(), e); } }
public String getResourceId(String query, String resourceName, String type) throws IOException { LOG.debug("[getResourceId] Searching for {} named {} with `{}`.", type, resourceName, query); FileList files = drive.files().list().setQ(query).execute(); if (files.getFiles().size() > 1) { String errorMsg = messages.getMessage(format("error.%s.more.than.one", type), resourceName); LOG.error(errorMsg); throw new IOException(errorMsg); } else if (files.getFiles().isEmpty()) { String errorMsg = messages.getMessage(format("error.%s.inexistant", type), resourceName); LOG.error(errorMsg); throw new IOException(errorMsg); } LOG.debug("[getResourceId] Found `{}` [{}].", resourceName, files.getFiles().get(0).getId()); return files.getFiles().get(0).getId(); }
public String getResourceId(String query, String resourceName, String type) throws IOException { LOG.debug("[getResourceId] Searching for {} named {} with `{}`.", type, resourceName, query); FileList files = drive.files().list().setQ(query).execute(); if (files.getFiles().size() > 1) { String errorMsg = messages.getMessage(format("error.%s.more.than.one", type), resourceName); LOG.error(errorMsg); throw new IOException(errorMsg); } else if (files.getFiles().isEmpty()) { String errorMsg = messages.getMessage(format("error.%s.inexistant", type), resourceName); LOG.error(errorMsg); throw new IOException(errorMsg); } LOG.debug("[getResourceId] Found `{}` [{}].", resourceName, files.getFiles().get(0).getId()); return files.getFiles().get(0).getId(); }
private static Stream<File> getFilesInFolder(final Drive driveService, final String parentId) throws IOException { LOGGER.debug("Listing files in folder {}.", parentId); return driveService.files().list() .setQ("'" + parentId + "' in parents and trashed = false") .setFields("nextPageToken, files(" + getFields("mimeType") + ")") .execute() .getFiles() .stream() .peek(f -> LOGGER.debug("Found '{}' ({}) as {}.", f.getName(), f.getMimeType(), f.getId())); }
private File findFileByNameSync(String name) throws IOException { // escape some chars (') see : https://developers.google.com/drive/v3/web/search-parameters#fn1 List<File> files = GApiGateway.drive.files().list().setSpaces("appDataFolder").setQ("name='" + name + "'") .execute().getFiles(); if (files.size() > 1) { throw new GdxRuntimeException("multiple files with name " + name + " exists."); } else if (files.size() < 1) { return null; } else { return files.get(0); } }
private static Stream<File> getFilesInFolder(final Drive driveService, final String parentId) throws IOException { LOGGER.debug("Listing files in folder {}.", parentId); return driveService.files().list() .setQ("'" + parentId + "' in parents and trashed = false") .setFields("nextPageToken, files(" + getFields("mimeType") + ")") .execute() .getFiles() .stream() .peek(f -> LOGGER.debug("Found '{}' ({}) as {}.", f.getName(), f.getMimeType(), f.getId())); }
.setQ(String.format(DRIVE_QUERY_FORMAT, parentId));
when(listRequest.setPageSize(anyInt())).thenReturn(listRequest); when(listRequest.setFields(anyString())).thenReturn(listRequest); when(listRequest.setQ(anyString())).thenReturn(listRequest); when(listRequest.setPageToken(anyString())).thenReturn(listRequest);