private GetResourceMetadataRequest deriveDirectRequest()

in api/service/src/main/java/org/apache/airavata/mft/api/handler/MFTApiHandler.java [238:383]


    private GetResourceMetadataRequest deriveDirectRequest(GetResourceMetadataFromIDsRequest idRequest) {

        StorageServiceClient storageClient = StorageServiceClientBuilder.buildClient(resourceServiceHost, resourceServicePort);
        SecretServiceClient secretClient = SecretServiceClientBuilder.buildClient(secretServiceHost, secretServicePort);
        StorageTypeResolveResponse storageTypeResp = storageClient.common().resolveStorageType(
                StorageTypeResolveRequest.newBuilder().setStorageId(idRequest.getStorageId()).build());

        GetResourceMetadataRequest.Builder directReqBuilder = GetResourceMetadataRequest.newBuilder();
        directReqBuilder.setResourcePath(idRequest.getResourcePath());
        directReqBuilder.setRecursiveSearch(idRequest.getRecursiveSearch());

        switch (storageTypeResp.getStorageType()) {
            case S3:
                S3Storage s3Storage = storageClient.s3()
                        .getS3Storage(S3StorageGetRequest.newBuilder()
                                .setStorageId(idRequest.getStorageId()).build());
                S3Secret s3Secret = secretClient.s3()
                        .getS3Secret(S3SecretGetRequest.newBuilder()
                                .setSecretId(idRequest.getSecretId()).build());

                directReqBuilder
                        .setStorage(StorageWrapper.newBuilder().setS3(s3Storage).build())
                        .setSecret(SecretWrapper.newBuilder().setS3(s3Secret).build());
                break;
            case FTP:
                FTPStorage ftpStorage = storageClient.ftp()
                        .getFTPStorage(FTPStorageGetRequest.newBuilder()
                                .setStorageId(idRequest.getStorageId()).build());
                FTPSecret ftpSecret = secretClient.ftp()
                        .getFTPSecret(FTPSecretGetRequest.newBuilder()
                                .setSecretId(idRequest.getSecretId()).build());

                directReqBuilder
                        .setStorage(StorageWrapper.newBuilder().setFtp(ftpStorage).build())
                        .setSecret(SecretWrapper.newBuilder().setFtp(ftpSecret).build());
                break;
            case LOCAL:
                LocalStorage localStorage = storageClient.local()
                        .getLocalStorage(LocalStorageGetRequest.newBuilder()
                                .setStorageId(idRequest.getStorageId()).build());

                directReqBuilder
                        .setStorage(StorageWrapper.newBuilder().setLocal(localStorage).build());

                break;
            case BOX:
                BoxStorage boxStorage = storageClient.box()
                        .getBoxStorage(BoxStorageGetRequest.newBuilder()
                                .setStorageId(idRequest.getStorageId()).build());
                BoxSecret boxSecret = secretClient.box()
                        .getBoxSecret(BoxSecretGetRequest.newBuilder()
                                .setSecretId(idRequest.getSecretId()).build());

                directReqBuilder
                        .setStorage(StorageWrapper.newBuilder().setBox(boxStorage).build())
                        .setSecret(SecretWrapper.newBuilder().setBox(boxSecret).build());
                break;
            case DROPBOX:
                DropboxStorage dropBoxStorage = storageClient.dropbox()
                        .getDropboxStorage(DropboxStorageGetRequest.newBuilder()
                                .setStorageId(idRequest.getStorageId()).build());
                DropboxSecret dropBoxSecret = secretClient.dropbox()
                        .getDropboxSecret(DropboxSecretGetRequest.newBuilder()
                                .setSecretId(idRequest.getSecretId()).build());

                directReqBuilder
                        .setStorage(StorageWrapper.newBuilder().setDropbox(dropBoxStorage).build())
                        .setSecret(SecretWrapper.newBuilder().setDropbox(dropBoxSecret).build());
                break;
            case GCS:
                GCSStorage gcsStorage = storageClient.gcs()
                        .getGCSStorage(GCSStorageGetRequest.newBuilder()
                                .setStorageId(idRequest.getStorageId()).build());
                GCSSecret gcsSecret = secretClient.gcs()
                        .getGCSSecret(GCSSecretGetRequest.newBuilder()
                                .setSecretId(idRequest.getSecretId()).build());

                directReqBuilder
                        .setStorage(StorageWrapper.newBuilder().setGcs(gcsStorage).build())
                        .setSecret(SecretWrapper.newBuilder().setGcs(gcsSecret).build());
                break;
            case AZURE:
                AzureStorage azureStorage = storageClient.azure()
                        .getAzureStorage(AzureStorageGetRequest.newBuilder()
                                .setStorageId(idRequest.getStorageId()).build());
                AzureSecret azureSecret = secretClient.azure()
                        .getAzureSecret(AzureSecretGetRequest.newBuilder()
                                .setSecretId(idRequest.getSecretId()).build());

                directReqBuilder
                        .setStorage(StorageWrapper.newBuilder().setAzure(azureStorage).build())
                        .setSecret(SecretWrapper.newBuilder().setAzure(azureSecret).build());
                break;
            case SWIFT:
                SwiftStorage swiftStorage = storageClient.swift()
                        .getSwiftStorage(SwiftStorageGetRequest.newBuilder()
                                .setStorageId(idRequest.getStorageId()).build());
                SwiftSecret swiftSecret = secretClient.swift()
                        .getSwiftSecret(SwiftSecretGetRequest.newBuilder()
                                .setSecretId(idRequest.getSecretId()).build());

                directReqBuilder
                        .setStorage(StorageWrapper.newBuilder().setSwift(swiftStorage).build())
                        .setSecret(SecretWrapper.newBuilder().setSwift(swiftSecret).build());
                break;
            case ODATA:
                ODataStorage odataStorage = storageClient.odata()
                        .getODataStorage(ODataStorageGetRequest.newBuilder()
                                .setStorageId(idRequest.getStorageId()).build());
                ODataSecret odataSecret = secretClient.odata()
                        .getODataSecret(ODataSecretGetRequest.newBuilder()
                                .setSecretId(idRequest.getSecretId()).build());

                directReqBuilder
                        .setStorage(StorageWrapper.newBuilder().setOdata(odataStorage).build())
                        .setSecret(SecretWrapper.newBuilder().setOdata(odataSecret).build());
                break;
            case SCP:
                SCPStorage scpStorage = storageClient.scp()
                        .getSCPStorage(SCPStorageGetRequest.newBuilder()
                                .setStorageId(idRequest.getStorageId()).build());
                SCPSecret scpSecret = secretClient.scp()
                        .getSCPSecret(SCPSecretGetRequest.newBuilder()
                                .setSecretId(idRequest.getSecretId()).build());

                directReqBuilder
                        .setStorage(StorageWrapper.newBuilder().setScp(scpStorage).build())
                        .setSecret(SecretWrapper.newBuilder().setScp(scpSecret).build());
                break;
            case HTTP:
                HTTPStorage httpStorage = storageClient.http()
                        .getHTTPStorage(HTTPStorageGetRequest.newBuilder()
                                .setStorageId(idRequest.getStorageId()).build());
                HTTPSecret httpSecret = secretClient.http()
                        .getHTTPSecret(HTTPSecretGetRequest.newBuilder()
                                .setSecretId(idRequest.getSecretId()).build());

                directReqBuilder
                        .setStorage(StorageWrapper.newBuilder().setHttp(httpStorage).build())
                        .setSecret(SecretWrapper.newBuilder().setHttp(httpSecret).build());
                break;

        }

        return directReqBuilder.build();
    }