protected InputStream doGetInputStream() throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); driveService.files().get( id ).executeMediaAndDownloadTo( out ); ByteArrayInputStream in = new ByteArrayInputStream( out.toByteArray() ); return in; }
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; }
throws Exception { Drive driveInterface = getDriveInterface((authData)); List driveListOperation = driveInterface.files().list(); StringPaginationToken paginationToken = (StringPaginationToken) exportInformation.getPaginationData(); driveListOperation.setPageToken(paginationToken.getToken()); .setFields("files(id, name, modifiedTime, mimeType)") .setQ(String.format(DRIVE_QUERY_FORMAT, parentId)); FileList fileList = driveListOperation.execute(); for (File file : fileList.getFiles()) { if (FOLDER_MIME_TYPE.equals(file.getMimeType())) { folders.add(new BlobbyStorageContainerResource(file.getName(), file.getId(), null, null)); } else if (FUSION_TABLE_MIME_TYPE.equals(file.getMimeType())) { monitor.info(() -> "Exporting of fusion tables is not yet supported: " + file); } else if (MAP_MIME_TYPE.equals(file.getMimeType())) { monitor.info(() -> "Exporting of maps is not yet supported: " + file); } else { try { InputStream inputStream; String newMimeType = file.getMimeType(); if (EXPORT_FORMATS.containsKey(file.getMimeType())) { newMimeType = EXPORT_FORMATS.get(file.getMimeType()); inputStream = driveInterface .files()
private String importSingleFolder( UUID jobId, Drive driveInterface, String folderName, String folderId, String parentId) throws IOException { File newFolder = new File() .setName(folderName) .setMimeType(DriveExporter.FOLDER_MIME_TYPE); if (!Strings.isNullOrEmpty(parentId)) { newFolder.setParents(ImmutableList.of(parentId)); } File resultFolder = driveInterface.files().create(newFolder).execute(); DriveFolderMapping mapping = new DriveFolderMapping(folderId, resultFolder.getId()); jobStore.update(jobId, folderId, mapping); return resultFolder.getId(); }
protected void doCreateFolder() throws Exception { if ( !getName().getBaseName().isEmpty() ) { File folder = new File(); folder.setName( getName().getBaseName() ); folder.setMimeType( MIME_TYPES.FOLDER.mimeType ); folder = driveService.files().create( folder ).execute(); if ( folder != null ) { id = folder.getId(); mimeType = MIME_TYPES.get( folder.getMimeType() ); } } }
Drive.Files.List request = client.files() .list() .setFields("files/id,files/mimeType,files/modifiedTime,files/size,files/permissions") .setPageSize(pageSize); if (query.isPresent()) { request = request.setQ(query.get()); request = request.setPageToken(pageToken); fileList = request.execute(); } catch (GoogleJsonResponseException e) { GoogleJsonError error = e.getDetails(); pageToken = fileList.getNextPageToken(); List<File> files = fileList.getFiles(); if (files == null || files.isEmpty()) { return result;
private void importSingleFile( UUID jobId, Drive driveInterface, DigitalDocumentWrapper file, String parentId) throws IOException { InputStreamContent content = new InputStreamContent( null, jobStore.getStream(jobId, file.getCachedContentId())); DtpDigitalDocument dtpDigitalDocument = file.getDtpDigitalDocument(); File driveFile = new File().setName(dtpDigitalDocument.getName()); if (!Strings.isNullOrEmpty(parentId)) { driveFile.setParents(ImmutableList.of(parentId)); } if (!Strings.isNullOrEmpty(dtpDigitalDocument.getDateModified())) { driveFile.setModifiedTime(DateTime.parseRfc3339(dtpDigitalDocument.getDateModified())); } if (!Strings.isNullOrEmpty(file.getOriginalEncodingFormat()) && file.getOriginalEncodingFormat().startsWith("application/vnd.google-apps.")) { driveFile.setMimeType(file.getOriginalEncodingFormat()); } driveInterface.files().create( driveFile, content ).execute(); }
when(files.list()).thenReturn(listRequest); when(listRequest.setPageSize(anyInt())).thenReturn(listRequest); when(listRequest.setFields(anyString())).thenReturn(listRequest); when(listRequest.setQ(anyString())).thenReturn(listRequest); when(listRequest.setPageToken(anyString())).thenReturn(listRequest); final File file = new File(); file.setId("testId"); file.setModifiedTime(new DateTime(System.currentTimeMillis())); when(listRequest.execute()).thenAnswer(new Answer<FileList>() { FileList fileList = new FileList(); fileList.setFiles(ImmutableList.of(file)); if (i.intValue() > 0) { verify(listRequest, times(expectedCalls)).execute();
private Drive getDriveService() throws IOException { Credential credential = authorize(); return new Drive.Builder( HTTP_TRANSPORT, JSON_FACTORY, credential ).setApplicationName( APPLICATION_NAME ).build(); }
@Override public FSDataInputStream open(Path path, int bufferSize) throws IOException { return closer.register(new FSDataInputStream( new SeekableFSInputStream( new BufferedInputStream( client.files().get(toFileId(path)).executeMediaAsInputStream(), bufferSize)))); }
public void deleteTest() throws IOException { State state = new State(); setUp(); GoogleDriveFsHelper fsHelper = new GoogleDriveFsHelper(state, client, Closer.create()); Delete delete = mock(Delete.class); String fileId = "test_file_id"; when(files.delete(fileId)).thenReturn(delete); fsHelper.deleteFile(fileId); verify(delete, times(1)).execute(); }
private void setUp() { client = mock(Drive.class); files = mock(Files.class); when(client.files()).thenReturn(files); }
public void close() throws IOException { File file = new File(); file.setName( getName().getBaseName() ); if ( parent != null ) { file.setParents( Collections.singletonList( parent.getId() ) ); } ByteArrayContent fileContent = new ByteArrayContent( "application/octet-stream", toByteArray() ); if ( count > 0 ) { driveService.files().create( file, fileContent ).execute(); ( (GoogleDriveFileSystem) getFileSystem() ).clearFileFromCache( getName() ); } } };
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; }
static synchronized Drive makeDriveInterface( TokensAndUrlAuthData authData, GoogleCredentialFactory credentialFactory) { Credential credential = credentialFactory.createCredential(authData); return new Drive.Builder( credentialFactory.getHttpTransport(), credentialFactory.getJsonFactory(), credential) .setApplicationName(GoogleStaticObjects.APP_NAME) .build(); } }
@Override public FSDataInputStream open(Path path) throws IOException { return closer.register(new FSDataInputStream( new SeekableFSInputStream( new BufferedInputStream( client.files().get(toFileId(path)).executeMediaAsInputStream())))); }
@Override public boolean delete(Path path, boolean recursive) throws IOException { Preconditions.checkArgument(recursive, "Non-recursive is not supported."); String fileId = toFileId(path); LOG.debug("Deleting file: " + fileId); try { client.files().delete(fileId).execute(); } catch (GoogleJsonResponseException e) { GoogleJsonError error = e.getDetails(); if (404 == error.getCode()) { //Non-existing file id return false; } throw e; } return true; }
public void closeTest() throws IOException, FileBasedHelperException { State state = new State(); setUp(); GoogleDriveFsHelper fsHelper = new GoogleDriveFsHelper(state, client, Closer.create()); Get getResult = mock(Get.class); InputStream is = mock(InputStream.class); when(client.files()).thenReturn(files); when(files.get(anyString())).thenReturn(getResult); when(getResult.executeMediaAsInputStream()).thenReturn(is); fsHelper.getFileStream("test"); fsHelper.close(); verify(is, times(1)).close(); }