in transport/box-transport/src/main/java/org/apache/airavata/mft/transport/box/BoxMetadataCollector.java [51:115]
public ResourceMetadata getResourceMetadata(String resourcePath, boolean recursiveSearch) throws Exception {
checkInitialized();
BoxAPIConnection api = new BoxAPIConnection(boxSecret.getAccessToken());
BoxFile boxFile = null;
BoxFile.Info boxFileInfo = null;
BoxFolder boxFolder = null;
BoxFolder.Info boxFolderInfo;
boolean isFile = true;
ResourceMetadata.Builder resourceBuilder = ResourceMetadata.newBuilder();
try { // There is no API to derive the type of entry. So, manually checking the file type is used
boxFile = new BoxFile(api, resourcePath);
boxFileInfo = boxFile.getInfo();
} catch (BoxAPIException e) {
try {
boxFolder = new BoxFolder(api, resourcePath);
boxFolderInfo = boxFolder.getInfo();
isFile = false;
} catch (BoxAPIException ex) {
logger.error("Failed to fetch information of box item {}", resourcePath, ex);
resourceBuilder.setError(MetadataFetchError.NOT_FOUND);
return resourceBuilder.build();
}
}
if (isFile) {
FileMetadata.Builder fileBuilder = FileMetadata.newBuilder();
fileBuilder.setResourcePath(resourcePath);
fileBuilder.setFriendlyName(boxFileInfo.getName());
fileBuilder.setResourceSize(boxFileInfo.getSize());
fileBuilder.setCreatedTime(boxFileInfo.getCreatedAt().getTime());
fileBuilder.setUpdateTime(boxFileInfo.getModifiedAt().getTime());
resourceBuilder.setFile(fileBuilder);
} else {
DirectoryMetadata.Builder dirBuilder = DirectoryMetadata.newBuilder();
Iterable<BoxItem.Info> itemsInFolder = boxFolder.getChildren("metadata.global.properties");
for (BoxItem.Info itemInfo : itemsInFolder) {
if (itemInfo instanceof BoxFile.Info) {
BoxFile.Info fileInfo = (BoxFile.Info) itemInfo;
FileMetadata.Builder fileBuilder = FileMetadata.newBuilder();
fileBuilder.setResourcePath(fileInfo.getID());
fileBuilder.setFriendlyName(fileInfo.getName());
fileBuilder.setResourceSize(fileInfo.getSize());
fileBuilder.setCreatedTime(fileInfo.getCreatedAt().getTime());
fileBuilder.setUpdateTime(fileInfo.getModifiedAt().getTime());
dirBuilder.addFiles(fileBuilder);
} else if (itemInfo instanceof BoxFolder.Info) {
BoxFolder.Info folderInfo = (BoxFolder.Info) itemInfo;
DirectoryMetadata.Builder subDirBuilder = DirectoryMetadata.newBuilder();
subDirBuilder.setFriendlyName(folderInfo.getName());
subDirBuilder.setResourcePath(folderInfo.getID());
subDirBuilder.setCreatedTime(folderInfo.getCreatedAt().getTime());
subDirBuilder.setUpdateTime(folderInfo.getModifiedAt().getTime());
dirBuilder.addDirectories(subDirBuilder);
}
}
resourceBuilder.setDirectory(dirBuilder);
}
return resourceBuilder.build();
}