public ResourceMetadata getResourceMetadata()

in transport/swift-transport/src/main/java/org/apache/airavata/mft/transport/swift/SwiftMetadataCollector.java [50:108]


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

        SwiftApi swiftApi = SwiftUtil.getInstance().leaseSwiftApi(swiftSecret);

        try {
            ResourceMetadata.Builder resourceBuilder = ResourceMetadata.newBuilder();
            if ("".equals(resourcePath) && "".equals(swiftStorage.getContainer())) {
                FluentIterable<Container> containers = swiftApi.getContainerApi(swiftStorage.getRegion()).list();
                DirectoryMetadata.Builder parentDir = DirectoryMetadata.newBuilder();
                parentDir.setResourcePath("");
                parentDir.setFriendlyName("");
                containers.forEach(container -> {
                    DirectoryMetadata.Builder bucketDir = DirectoryMetadata.newBuilder();
                    bucketDir.setFriendlyName(container.getName());
                    bucketDir.setResourcePath(container.getName());
                    parentDir.addDirectories(bucketDir);
                });
                resourceBuilder.setDirectory(parentDir);

            } else {
                ObjectApi objectApi = swiftApi.getObjectApi(swiftStorage.getRegion(), swiftStorage.getContainer());
                if ("".equals(resourcePath)) {

                    DirectoryMetadata.Builder rootDirBuilder = DirectoryMetadata.newBuilder();

                    ObjectList objectList = objectApi.list();
                    objectList.forEach(swiftObject -> {
                        FileMetadata.Builder fileBuilder = FileMetadata.newBuilder();
                        fileBuilder.setFriendlyName(swiftObject.getName());
                        fileBuilder.setResourcePath(swiftObject.getName());
                        fileBuilder.setCreatedTime(swiftObject.getLastModified().getTime());
                        fileBuilder.setUpdateTime(swiftObject.getLastModified().getTime());
                        fileBuilder.setResourceSize(swiftObject.getPayload().getContentMetadata().getContentLength());
                        rootDirBuilder.addFiles(fileBuilder);
                    });
                    resourceBuilder.setDirectory(rootDirBuilder);
                } else {
                    SwiftObject swiftObject = objectApi.get(resourcePath);

                    if (swiftObject == null) {
                        resourceBuilder.setError(MetadataFetchError.NOT_FOUND);
                        return resourceBuilder.build();
                    }

                    FileMetadata.Builder fileBuilder = FileMetadata.newBuilder();
                    fileBuilder.setFriendlyName(swiftObject.getName());
                    fileBuilder.setResourcePath(swiftObject.getName());
                    fileBuilder.setCreatedTime(swiftObject.getLastModified().getTime());
                    fileBuilder.setUpdateTime(swiftObject.getLastModified().getTime());
                    fileBuilder.setResourceSize(swiftObject.getPayload().getContentMetadata().getContentLength());
                    resourceBuilder.setFile(fileBuilder);
                }
            }
            return resourceBuilder.build();
        } finally{
            //swiftApi.close();
        }
    }