public ResourceMetadata getResourceMetadata()

in transport/s3-transport/src/main/java/org/apache/airavata/mft/transport/s3/S3MetadataCollector.java [62:110]


    public ResourceMetadata getResourceMetadata(String resourcePath, boolean recursiveSearch) throws Exception {

        checkInitialized();

        AmazonS3 s3Client = S3Util.getInstance().leaseS3Client(s3Secret, s3Storage);

        ResourceMetadata.Builder resourceBuilder = ResourceMetadata.newBuilder();

        if (s3Storage.getBucketName().isEmpty() && resourcePath.isEmpty()) {
            List<Bucket> buckets = s3Client.listBuckets();
            DirectoryMetadata.Builder parentDir = DirectoryMetadata.newBuilder();
            parentDir.setResourcePath("");
            parentDir.setFriendlyName("");
            buckets.forEach(b -> {
                DirectoryMetadata.Builder bucketDir = DirectoryMetadata.newBuilder();
                bucketDir.setFriendlyName(b.getName());
                bucketDir.setResourcePath(b.getName());
                bucketDir.setCreatedTime(b.getCreationDate().getTime());
                bucketDir.setUpdateTime(b.getCreationDate().getTime());
                parentDir.addDirectories(bucketDir);
            });
            resourceBuilder.setDirectory(parentDir);

            return resourceBuilder.build();
        }

        // If directory path or top level bucket path
        if (resourcePath.endsWith("/") || resourcePath.isEmpty()) { // Directory
            ObjectListing objectListing = s3Client.listObjects(s3Storage.getBucketName(), resourcePath);
            resourceBuilder.setDirectory(processDirectory(resourcePath, objectListing));

        } else if (s3Client.doesObjectExist(s3Storage.getBucketName(), resourcePath)){ // File

            FileMetadata.Builder fileBuilder = FileMetadata.newBuilder();
            ObjectMetadata fileMetadata = s3Client.getObjectMetadata(s3Storage.getBucketName(), resourcePath);
            fileBuilder.setResourceSize(fileMetadata.getContentLength());
            fileBuilder.setResourcePath(resourcePath);
            fileBuilder.setMd5Sum(fileMetadata.getContentMD5() == null ? "" : fileMetadata.getContentMD5() );
            fileBuilder.setFriendlyName(new File(resourcePath).getName());
            fileBuilder.setCreatedTime(fileMetadata.getLastModified().getTime());
            fileBuilder.setUpdateTime(fileMetadata.getLastModified().getTime());
            resourceBuilder.setFile(fileBuilder);
        } else { // Try if user forgot add trailing /
            ObjectListing objectListing = s3Client.listObjects(s3Storage.getBucketName(), resourcePath + "/");
            resourceBuilder.setDirectory(processDirectory(resourcePath + "/", objectListing));
        }

        return resourceBuilder.build();
    }