in transport/local-transport/src/main/java/org/apache/airavata/mft/transport/local/LocalMetadataCollector.java [65:113]
public ResourceMetadata getResourceMetadata(String resourcePath, boolean recursiveSearch) throws Exception {
checkInitialized();
ResourceMetadata.Builder resouceBuilder = ResourceMetadata.newBuilder();
File resourceFile = new File(resourcePath);
if (resourceFile.exists()) {
if (resourceFile.isFile()) {
FileMetadata.Builder fileBuilder = getFileBuilderFromPath(resourceFile);
resouceBuilder.setFile(fileBuilder);
} else if (resourceFile.isDirectory()) {
DirectoryMetadata.Builder dirBuilder = DirectoryMetadata.newBuilder();
BasicFileAttributes basicFileAttributes = Files.readAttributes(Path.of(resourcePath), BasicFileAttributes.class);
dirBuilder.setCreatedTime(basicFileAttributes.creationTime().toMillis());
dirBuilder.setUpdateTime(basicFileAttributes.lastModifiedTime().toMillis());
Stream<Path> fileList = Files.list(resourceFile.toPath());
fileList.forEach(p -> {
try {
if (p.toFile().isFile()) {
FileMetadata.Builder fileBuilder = getFileBuilderFromPath(p.toFile());
dirBuilder.addFiles(fileBuilder);
} else if (p.toFile().isDirectory()) {
DirectoryMetadata.Builder subDirBuilder = DirectoryMetadata.newBuilder();
BasicFileAttributes bfa = Files.readAttributes(p, BasicFileAttributes.class);
subDirBuilder.setCreatedTime(bfa.creationTime().toMillis());
subDirBuilder.setUpdateTime(bfa.lastModifiedTime().toMillis());
subDirBuilder.setFriendlyName(p.toFile().getName());
subDirBuilder.setResourcePath(p.toFile().toPath().toAbsolutePath().toString());
dirBuilder.addDirectories(subDirBuilder);
}
} catch (Exception e) {
// Ignore
}
});
resouceBuilder.setDirectory(dirBuilder);
} else {
resouceBuilder.setError(MetadataFetchError.UNRECOGNIZED);
}
} else {
resouceBuilder.setError(MetadataFetchError.NOT_FOUND);
}
return resouceBuilder.build();
}