/* * Copyright (c) 2015 EMC Corporation * All Rights Reserved */ package com.emc.sa.util; import java.net.URI; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.lang.StringUtils; public enum ResourceType { VOLUME("Volume"), EXPORT_GROUP("ExportGroup"), FILE_SHARE("FileShare"), FILE_SNAPSHOT("Snapshot"), QUOTA_DIRECTORY("QuotaDirectory"), BLOCK_SNAPSHOT("BlockSnapshot"), BLOCK_SNAPSHOT_SESSION("BlockSnapshotSession"), BLOCK_CONTINUOUS_COPY("BlockMirror"), VPLEX_CONTINUOUS_COPY("VplexMirror"), PROJECT("Project"), INITIATOR("Initiator"), HOST("Host"), CLUSTER("Cluster"), VCENTER("Vcenter"), VCENTER_DATA_CENTER("VcenterDataCenter"), COMPUTE_VIRTUAL_POOL("ComputeVirtualPool"), VIRTUAL_ARRAY("VirtualArray"), VIRTUAL_POOL("VirtualPool"), CONSISTENCY_GROUP("BlockConsistencyGroup"), SMIS_PROVIDER("SMISProvider"), STORAGE_PROVIDER("StorageProvider"), STORAGE_POOL("StoragePool"), STORAGE_SYSTEM("StorageSystem"), NETWORK_SYSTEM("NetworkSystem"), PROTECTION_SYSTEM("ProtectionSystem"), COMPUTE_SYSTEM("ComputeSystem"), UNMANAGED_VOLUME("UnManagedVolume"), UNMANAGED_FILESYSTEM("UnManagedFileSystem"), UNMANAGED_EXPORTMASK("UnManagedExportMask"), BUCKET("Bucket"), STORAGE_PORT("StoragePort"), UNKNOWN("Unknown"); private static final Pattern RESOURCE_ID = Pattern.compile("urn\\:storageos\\:([^\\:]+)"); private String label; ResourceType(String label) { this.label = label; } public static boolean isResourceId(String resourceId) { Matcher m = RESOURCE_ID.matcher(resourceId); return m.find(); } public static ResourceType fromResourceId(URI resourceId) { if (resourceId != null) { return fromResourceId(resourceId.toString()); } return UNKNOWN; } public static ResourceType fromResourceId(String resourceId) { Matcher m = RESOURCE_ID.matcher(resourceId); String label = m.find() ? m.group(1) : null; if (StringUtils.isBlank(label)) { return UNKNOWN; } for (ResourceType resourceType : values()) { if (resourceType.label.equals(label)) { return resourceType; } } return UNKNOWN; } public static boolean isType(ResourceType resourceType, String resourceId) { if (resourceType != null && StringUtils.isNotBlank(resourceId)) { return resourceType.equals(ResourceType.fromResourceId(resourceId)); } return false; } public static boolean isType(ResourceType resourceType, URI resourceId) { if (resourceId != null) { return isType(resourceType, resourceId.toString()); } return false; } }