package com.sequenceiq.cloudbreak.domain;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
@Entity
@Table(uniqueConstraints = {
@UniqueConstraint(columnNames = {"account", "name"})
})
@NamedQueries({
@NamedQuery(
name = "FlexSubscription.findById",
query = "SELECT f FROM FlexSubscription f WHERE f.id= :id"
),
@NamedQuery(
name = "FlexSubscription.findOneByName",
query = "SELECT f FROM FlexSubscription f WHERE f.name= :name"
),
@NamedQuery(
name = "FlexSubscription.findOneByNameInAccount",
query = "SELECT f FROM FlexSubscription f WHERE f.name= :name AND ((f.account= :account AND f.publicInAccount= true) OR f.owner= :owner)"
),
@NamedQuery(
name = "FlexSubscription.findByOwner",
query = "SELECT f FROM FlexSubscription f WHERE f.owner= :owner"
),
@NamedQuery(
name = "FlexSubscription.findPublicInAccountForUser",
query = "SELECT f FROM FlexSubscription f WHERE (f.account= :account AND f.publicInAccount= true) OR f.owner= :owner"
),
@NamedQuery(
name = "FlexSubscription.findAllInAccount",
query = "SELECT f FROM FlexSubscription f WHERE f.account= :account"
)
})
public class FlexSubscription {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "flexsubscription_generator")
@SequenceGenerator(name = "flexsubscription_generator", sequenceName = "flexsubscription_id_seq", allocationSize = 1)
private Long id;
@Column(nullable = false)
private String name;
@Column(nullable = false)
private String subscriptionId;
@ManyToOne
private SmartSenseSubscription smartSenseSubscription;
@Column(nullable = false)
private String owner;
@Column(nullable = false)
private String account;
@Column(nullable = false)
private boolean publicInAccount;
@Column
//CHECKSTYLE:OFF
private boolean isDefault;
//CHECKSTYLE:ON
@Column
private boolean usedForController;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSubscriptionId() {
return subscriptionId;
}
public void setSubscriptionId(String subscriptionId) {
this.subscriptionId = subscriptionId;
}
public SmartSenseSubscription getSmartSenseSubscription() {
return smartSenseSubscription;
}
public void setSmartSenseSubscription(SmartSenseSubscription smartSenseSubscription) {
this.smartSenseSubscription = smartSenseSubscription;
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public boolean isPublicInAccount() {
return publicInAccount;
}
public void setPublicInAccount(boolean publicInAccount) {
this.publicInAccount = publicInAccount;
}
public boolean isDefault() {
return isDefault;
}
public void setDefault(boolean aDefault) {
isDefault = aDefault;
}
public boolean isUsedForController() {
return usedForController;
}
public void setUsedForController(boolean usedForController) {
this.usedForController = usedForController;
}
@Override
public String toString() {
return "FlexSubscription{" + "id=" + id
+ ", name='" + name + '\''
+ ", subscriptionId='" + subscriptionId + '\''
+ ", smartSenseSubscription='" + smartSenseSubscription.toString() + '\''
+ ", owner='" + owner + '\''
+ ", account='" + account + '\''
+ ", publicInAccount=" + publicInAccount + '}';
}
}