/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package util; import static util.BourneUtil.getCatalogClient; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Set; import com.emc.vipr.client.ViPRCatalogClient2; import com.emc.vipr.client.catalog.AssetOptions; import com.emc.vipr.model.catalog.ServiceDescriptorRestRep; import com.emc.vipr.model.catalog.ServiceFieldGroupRestRep; import com.emc.vipr.model.catalog.ServiceFieldModalRestRep; import com.emc.vipr.model.catalog.ServiceFieldRestRep; import com.emc.vipr.model.catalog.ServiceFieldTableRestRep; import com.emc.vipr.model.catalog.ServiceItemRestRep; public class ServiceDescriptorUtils { public static ServiceDescriptorRestRep getDescriptor(String baseServiceName) { ViPRCatalogClient2 catalog = getCatalogClient(); return catalog.serviceDescriptors().getServiceDescriptor(baseServiceName); } public static List<ServiceDescriptorRestRep> getDescriptors() { ViPRCatalogClient2 catalog = getCatalogClient(); return catalog.serviceDescriptors().getServiceDescriptors(); } public static ServiceFieldRestRep getField(ServiceDescriptorRestRep serviceDescriptor, String name) { return findField(serviceDescriptor.getItems(), name); } public static List<ServiceFieldRestRep> getAssetFields(List<ServiceItemRestRep> items) { List<ServiceFieldRestRep> assetFields = new ArrayList<ServiceFieldRestRep>(); for (ServiceItemRestRep item : items) { if (item.isField() && ((ServiceFieldRestRep) item).isAsset()) { assetFields.add(((ServiceFieldRestRep) item)); } } return assetFields; } public static Set<String> getAllAssetTypes(ServiceDescriptorRestRep serviceDescriptor) { return AssetOptions.getAllAssetTypes(serviceDescriptor); } public static List<ServiceFieldRestRep> getAllFieldList(List<? extends ServiceItemRestRep> items) { return AssetOptions.getAllFields(items); } public static ServiceFieldRestRep findField(Collection<? extends ServiceItemRestRep> items, String name) { ServiceItemRestRep value = findItemByName(items, name); if (value != null && value.isField()) { return (ServiceFieldRestRep) value; } // Search for a nested field for (ServiceItemRestRep item : items) { if (item instanceof ServiceFieldGroupRestRep) { ServiceFieldGroupRestRep group = (ServiceFieldGroupRestRep) item; ServiceFieldRestRep field = findField(group.getItems(), name); if (field != null) { return field; } } else if (item instanceof ServiceFieldTableRestRep) { ServiceFieldTableRestRep table = (ServiceFieldTableRestRep) item; ServiceFieldRestRep field = findField(table.getItems(), name); if (field != null) { return field; } } else if (item instanceof ServiceFieldModalRestRep) { ServiceFieldModalRestRep modal = (ServiceFieldModalRestRep) item; ServiceFieldRestRep field = findField(modal.getItems(), name); if (field != null) { return field; } } } // No field found return null; } public static ServiceItemRestRep findItemByName(Collection<? extends ServiceItemRestRep> items, String name) { if (items != null && name != null) { for (ServiceItemRestRep item : items) { if (item != null && name.equals(item.getName())) { return item; } } } return null; } }