package alien4cloud.rest.component;
import org.alien4cloud.tosca.model.types.ArtifactType;
import org.alien4cloud.tosca.model.types.CapabilityType;
import org.alien4cloud.tosca.model.types.NodeType;
import org.alien4cloud.tosca.model.types.RelationshipType;
import org.alien4cloud.tosca.model.types.AbstractToscaType;
/**
* Enumeration of the components types available for search.
*/
public enum QueryComponentType {
NODE_TYPE(NodeType.class), CAPABILITY_TYPE(CapabilityType.class), RELATIONSHIP_TYPE(RelationshipType.class), ARTIFACT_TYPE(
ArtifactType.class);
private final Class<? extends AbstractToscaType> indexedToscaElementClass;
private QueryComponentType(Class<? extends AbstractToscaType> matchingClass) {
this.indexedToscaElementClass = matchingClass;
}
public Class<? extends AbstractToscaType> getIndexedToscaElementClass() {
return indexedToscaElementClass;
}
public String getMatchingClassName() {
return indexedToscaElementClass.getName();
}
/**
* Get the {@link QueryComponentType} from the indexed tosca element class.
*
* @param componentClass The class for which to get the {@link QueryComponentType}.
* @return The matching {@link QueryComponentType} if found or null if no type matches the given class.
*/
public static QueryComponentType valueOf(Class<? extends AbstractToscaType> componentClass) {
for (QueryComponentType type : QueryComponentType.values()) {
if (type.getMatchingClassName().equals(componentClass.getName())) {
return type;
}
}
return null;
}
}