public ResourceMetadata getResourceMetadata()

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();
    }