in transport/dropbox-transport/src/main/java/org/apache/airavata/mft/transport/dropbox/DropboxMetadataCollector.java [53:133]
public ResourceMetadata getResourceMetadata(String resourcePath, boolean recursiveSearch) throws Exception {
checkInitialized();
DbxRequestConfig config = DbxRequestConfig.newBuilder("mftdropbox/v1").build();
DbxClientV2 dbxClientV2 = new DbxClientV2(config, dropboxSecret.getAccessToken());
ResourceMetadata.Builder resourceBuilder = ResourceMetadata.newBuilder();
if (resourcePath.isEmpty()) { // List root folder
ListFolderResult listFolderResult = dbxClientV2.files().listFolder(resourcePath);
List<Metadata> entryMetadatas = listFolderResult.getEntries();
DirectoryMetadata.Builder directoryBuilder = DirectoryMetadata.newBuilder();
directoryBuilder.setResourcePath("");
directoryBuilder.setFriendlyName("");
entryMetadatas.forEach(entryMetadata -> {
if (entryMetadata instanceof com.dropbox.core.v2.files.FileMetadata) {
com.dropbox.core.v2.files.FileMetadata fileMetadata = (com.dropbox.core.v2.files.FileMetadata) entryMetadata;
FileMetadata.Builder fileBuilder = FileMetadata.newBuilder();
fileBuilder.setResourceSize(fileMetadata.getSize());
fileBuilder.setUpdateTime(fileMetadata.getServerModified().getTime());
fileBuilder.setCreatedTime(fileMetadata.getClientModified().getTime());
fileBuilder.setFriendlyName(fileMetadata.getName());
fileBuilder.setResourcePath(resourcePath);
directoryBuilder.addFiles(fileBuilder);
} else if (entryMetadata instanceof FolderMetadata) {
FolderMetadata folderMetadata = (FolderMetadata) entryMetadata;
DirectoryMetadata.Builder subDirBuilder = DirectoryMetadata.newBuilder();
subDirBuilder.setFriendlyName(folderMetadata.getName());
subDirBuilder.setResourcePath(folderMetadata.getName());
directoryBuilder.addDirectories(subDirBuilder);
}
});
resourceBuilder.setDirectory(directoryBuilder);
} else {
Metadata entryMetadata = dbxClientV2.files().getMetadata(resourcePath);
if (entryMetadata instanceof com.dropbox.core.v2.files.FileMetadata) {
com.dropbox.core.v2.files.FileMetadata fileMetadata = (com.dropbox.core.v2.files.FileMetadata) entryMetadata;
FileMetadata.Builder fileBuilder = FileMetadata.newBuilder();
fileBuilder.setResourceSize(fileMetadata.getSize());
fileBuilder.setUpdateTime(fileMetadata.getServerModified().getTime());
fileBuilder.setCreatedTime(fileMetadata.getClientModified().getTime());
fileBuilder.setFriendlyName(fileMetadata.getName());
fileBuilder.setResourcePath(resourcePath);
resourceBuilder.setFile(fileBuilder);
} else if (entryMetadata instanceof FolderMetadata) {
ListFolderResult listFolderResult = dbxClientV2.files().listFolder(resourcePath);
List<Metadata> entryMetadatas = listFolderResult.getEntries();
DirectoryMetadata.Builder directoryBuilder = DirectoryMetadata.newBuilder();
directoryBuilder.setResourcePath(resourcePath);
directoryBuilder.setFriendlyName(entryMetadata.getName());
entryMetadatas.forEach(em -> {
if (em instanceof com.dropbox.core.v2.files.FileMetadata) {
com.dropbox.core.v2.files.FileMetadata fileMetadata = (com.dropbox.core.v2.files.FileMetadata) em;
FileMetadata.Builder fileBuilder = FileMetadata.newBuilder();
fileBuilder.setResourceSize(fileMetadata.getSize());
fileBuilder.setUpdateTime(fileMetadata.getServerModified().getTime());
fileBuilder.setCreatedTime(fileMetadata.getClientModified().getTime());
fileBuilder.setFriendlyName(fileMetadata.getName());
fileBuilder.setResourcePath(resourcePath + "/" + fileMetadata.getName());
directoryBuilder.addFiles(fileBuilder);
} else if (em instanceof FolderMetadata) {
FolderMetadata folderMetadata = (FolderMetadata) em;
DirectoryMetadata.Builder subDirBuilder = DirectoryMetadata.newBuilder();
subDirBuilder.setFriendlyName(folderMetadata.getName());
subDirBuilder.setResourcePath(resourcePath + "/" + folderMetadata.getName());
directoryBuilder.addDirectories(subDirBuilder);
}
resourceBuilder.setDirectory(directoryBuilder);
});
} else {
resourceBuilder.setError(MetadataFetchError.NOT_FOUND);
}
}
return resourceBuilder.build();
}