package com.sequenceiq.cloudbreak.domain; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; import javax.persistence.Enumerated; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.SequenceGenerator; import com.sequenceiq.cloudbreak.common.type.CommonStatus; import com.sequenceiq.cloudbreak.common.type.ResourceType; @Entity @NamedQueries({ @NamedQuery( name = "Resource.findByStackIdAndNameAndType", query = "SELECT r FROM Resource r " + "WHERE r.stack.id = :stackId AND r.resourceName = :name AND r.resourceType = :type"), @NamedQuery( name = "Resource.findByStackIdAndResourceNameOrReference", query = "SELECT r FROM Resource r " + "WHERE r.stack.id = :stackId AND (r.resourceName = :resource OR r.resourceReference = :resource)") }) public class Resource implements ProvisionEntity { @Id @GeneratedValue(strategy = GenerationType.AUTO, generator = "resource_generator") @SequenceGenerator(name = "resource_generator", sequenceName = "resource_id_seq", allocationSize = 1) private Long id; private String instanceGroup; @Column(nullable = false) @Enumerated(EnumType.STRING) private ResourceType resourceType; @Column(nullable = false) @Enumerated(EnumType.STRING) private CommonStatus resourceStatus; private String resourceName; private String resourceReference; @ManyToOne @JoinColumn(name = "resource_stack") private Stack stack; public Resource() { } public Resource(ResourceType resourceType, String resourceName, Stack stack) { this(resourceType, resourceName, null, CommonStatus.CREATED, stack, null); } public Resource(ResourceType resourceType, String resourceName, Stack stack, String instanceGroup) { this(resourceType, resourceName, null, CommonStatus.CREATED, stack, instanceGroup); } public Resource(ResourceType resourceType, String resourceName, String resourceReference, CommonStatus status, Stack stack, String instanceGroup) { this.resourceType = resourceType; this.resourceName = resourceName; this.resourceReference = resourceReference; this.resourceStatus = status; this.instanceGroup = instanceGroup; this.stack = stack; } public String getInstanceGroup() { return instanceGroup; } public void setInstanceGroup(String instanceGroup) { this.instanceGroup = instanceGroup; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public ResourceType getResourceType() { return resourceType; } public void setResourceType(ResourceType resourceType) { this.resourceType = resourceType; } public String getResourceName() { return resourceName; } public void setResourceName(String resourceName) { this.resourceName = resourceName; } public CommonStatus getResourceStatus() { return resourceStatus; } public void setResourceStatus(CommonStatus resourceStatus) { this.resourceStatus = resourceStatus; } public String getResourceReference() { return resourceReference; } public void setResourceReference(String resourceReference) { this.resourceReference = resourceReference; } public Stack getStack() { return stack; } public void setStack(Stack stack) { this.stack = stack; } }