All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.emc.vipr.client.catalog.AssetOptions Maven / Gradle / Ivy

There is a newer version: 3.5.0.0
Show newest version
/*
 * Copyright (c) 2015 EMC Corporation
 * All Rights Reserved
 */
package com.emc.vipr.client.catalog;

import static com.emc.vipr.client.core.util.ResourceUtils.uri;
import java.net.URI;
import java.util.*;

import com.emc.vipr.client.ViPRCatalogClient2;
import com.emc.vipr.client.catalog.impl.PathConstants;
import com.emc.vipr.client.impl.RestClient;
import com.emc.vipr.model.catalog.AssetDependencyRequest;
import com.emc.vipr.model.catalog.AssetDependencyResponse;
import com.emc.vipr.model.catalog.AssetOption;
import com.emc.vipr.model.catalog.AssetOptionsRequest;
import com.emc.vipr.model.catalog.AssetOptionsResponse;
import com.emc.vipr.model.catalog.CatalogServiceRestRep;
import com.emc.vipr.model.catalog.ServiceDescriptorRestRep;
import com.emc.vipr.model.catalog.ServiceFieldGroupRestRep;
import com.emc.vipr.model.catalog.ServiceFieldRestRep;
import com.emc.vipr.model.catalog.ServiceFieldTableRestRep;
import com.emc.vipr.model.catalog.ServiceItemRestRep;

public class AssetOptions {

    protected final ViPRCatalogClient2 parent;
    protected final RestClient client;

    public AssetOptions(ViPRCatalogClient2 parent, RestClient client) {
        this.parent = parent;
        this.client = client;
    }

    public List getAssetOptions(String assetType) {
        return getAssetOptions(assetType, new HashMap());
    }

    public List getAssetOptions(String assetType, Map assetParameters) {
        AssetOptionsRequest request = new AssetOptionsRequest();
        request.setTenantId(uri(parent.getUserInfo().getTenant()));
        request.setAvailableAssets(assetParameters);
        return getAssetOptions(assetType, request);
    }

    public List getAssetOptions(String assetType, AssetOptionsRequest request) {
        AssetOptionsResponse response = client.post(AssetOptionsResponse.class, request, PathConstants.ASSET_OPTIONS2_OPTIONS_URL,
                cleanAssetType(assetType));
        return response.getOptions();
    }

    public List getAssetDependencies(String assetType, String serviceDescriptorName) {
        ServiceDescriptorRestRep serviceDescriptor = parent.serviceDescriptors().getServiceDescriptor(serviceDescriptorName);
        return getAssetDependencies(assetType, serviceDescriptor);
    }

    public List getAssetDependencies(String assetType, URI catalogServiceId) {
        CatalogServiceRestRep catalogService = parent.services().get(catalogServiceId);
        ServiceDescriptorRestRep serviceDescriptor = catalogService.getServiceDescriptor();
        return getAssetDependencies(assetType, serviceDescriptor);
    }

    public List getAssetDependencies(String assetType, ServiceDescriptorRestRep serviceDescriptor) {
        return getAssetDependencies(assetType, getAllAssetTypes(serviceDescriptor));
    }

    public List getAssetDependencies(String assetType, Set availableAssetTypes) {
        AssetDependencyRequest request = new AssetDependencyRequest();
        request.setTenantId(uri(parent.getUserInfo().getTenant()));
        request.setAvailableAssetTypes(availableAssetTypes);
        return getAssetDependencies(assetType, request);
    }

    public List getAssetDependencies(String assetType, AssetDependencyRequest request) {
        AssetDependencyResponse response = client.post(AssetDependencyResponse.class, request, PathConstants.ASSET_OPTIONS2_DEP_URL,
                cleanAssetType(assetType));
        return response.getAssetDependencies();
    }

    private String cleanAssetType(String assetType) {
        return assetType.replaceFirst("assetType\\.", "");
    }

    public static Set getAllAssetTypes(ServiceDescriptorRestRep serviceDescriptor) {
        Set allAvailableAssets = new HashSet<>();
        for (ServiceFieldRestRep field : getAllFields(serviceDescriptor.getItems())) {
            if (field.isAsset()) {
                allAvailableAssets.add(field.getAssetType());
            }
        }
        return allAvailableAssets;
    }

    public static List getAllFields(List items) {
        List allFields = new ArrayList<>();
        for (ServiceItemRestRep item : items) {
            if (item.isField()) {
                allFields.add((ServiceFieldRestRep) item);
            }
            else if (item.isGroup()) {
                allFields.addAll(getAllFields(((ServiceFieldGroupRestRep) item).getItems()));
            }
            else if (item.isTable()) {
                allFields.addAll(getAllFields(((ServiceFieldTableRestRep) item).getItems()));
            }
        }
        return allFields;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy