in transport/ftp-transport/src/main/java/org/apache/airavata/mft/transport/ftp/FTPMetadataCollector.java [51:104]
public ResourceMetadata getResourceMetadata(String resourcePath, boolean recursiveSearch) throws Exception {
checkInitialized();
ResourceMetadata.Builder resourceBuilder = ResourceMetadata.newBuilder();
FTPClient ftpClient = null;
try {
ftpClient = FTPTransportUtil.getFTPClient(ftpStorage, ftpSecret);
logger.info("Fetching metadata for resource {} in {}", resourcePath, ftpStorage.getHost());
FTPFile ftpFile = ftpClient.mlistFile(resourcePath);
if (ftpFile == null) {
resourceBuilder.setError(MetadataFetchError.NOT_FOUND);
return resourceBuilder.build();
}
if (ftpFile.isDirectory()) {
DirectoryMetadata.Builder dirBuilder = DirectoryMetadata.newBuilder();
FTPFile[] ftpFiles = ftpClient.listFiles(resourcePath);
Arrays.stream(ftpFiles).forEach(child -> {
if (child.isFile()) {
FileMetadata.Builder fileBuilder = FileMetadata.newBuilder();
fileBuilder.setResourcePath(resourcePath + "/" + child.getName());
fileBuilder.setFriendlyName(child.getName());
fileBuilder.setCreatedTime(child.getTimestamp().getTimeInMillis());
fileBuilder.setUpdateTime(child.getTimestamp().getTimeInMillis());
fileBuilder.setResourceSize(child.getSize());
dirBuilder.addFiles(fileBuilder);
} else if (child.isFile()) {
DirectoryMetadata.Builder childDirBuilder = DirectoryMetadata.newBuilder();
childDirBuilder.setResourcePath(resourcePath + "/" + child.getName());
childDirBuilder.setFriendlyName(child.getName());
childDirBuilder.setCreatedTime(child.getTimestamp().getTimeInMillis());
childDirBuilder.setUpdateTime(child.getTimestamp().getTimeInMillis());
dirBuilder.addDirectories(childDirBuilder);
}
});
resourceBuilder.setDirectory(dirBuilder);
} else if (ftpFile.isFile()) {
FileMetadata.Builder fileBuilder = FileMetadata.newBuilder();
fileBuilder.setResourcePath(resourcePath);
fileBuilder.setFriendlyName(ftpFile.getName());
fileBuilder.setCreatedTime(ftpFile.getTimestamp().getTimeInMillis());
fileBuilder.setUpdateTime(ftpFile.getTimestamp().getTimeInMillis());
fileBuilder.setResourceSize(ftpFile.getSize());
resourceBuilder.setFile(fileBuilder);
}
return resourceBuilder.build();
} finally {
FTPTransportUtil.disconnectFTP(ftpClient);
}
}