package com.sequenceiq.cloudbreak.domain;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import org.apache.commons.lang3.StringUtils;
@Entity
@Table(name = "account_preferences")
@NamedQueries({
@NamedQuery(
name = "AccountPreferences.findByAccount",
query = "SELECT ap FROM AccountPreferences ap "
+ "WHERE ap.account= :account")
})
public class AccountPreferences {
private static final String INSTANCE_TYPE_SEPARATOR = ",";
@Id
private String account;
private Long maxNumberOfClusters;
private Long maxNumberOfNodesPerCluster;
private Long maxNumberOfClustersPerUser;
private String allowedInstanceTypes;
@Column(nullable = false)
private Long clusterTimeToLive;
@Column(nullable = false)
private Long userTimeToLive;
@Column(columnDefinition = "TEXT")
private String platforms;
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public Long getMaxNumberOfClusters() {
return maxNumberOfClusters;
}
public void setMaxNumberOfClusters(Long maxNumberOfClusters) {
this.maxNumberOfClusters = maxNumberOfClusters;
}
public Long getMaxNumberOfNodesPerCluster() {
return maxNumberOfNodesPerCluster;
}
public void setMaxNumberOfNodesPerCluster(Long maxNumberOfNodesPerCluster) {
this.maxNumberOfNodesPerCluster = maxNumberOfNodesPerCluster;
}
public List<String> getAllowedInstanceTypes() {
return StringUtils.isEmpty(allowedInstanceTypes) ? new ArrayList<>() : Arrays.asList(allowedInstanceTypes.split(INSTANCE_TYPE_SEPARATOR));
}
public void setAllowedInstanceTypes(Iterable<String> allowedInstanceTypes) {
StringBuilder builder = new StringBuilder();
Iterator<String> it = allowedInstanceTypes.iterator();
while (it.hasNext()) {
String instanceType = it.next();
builder.append(instanceType);
if (it.hasNext()) {
builder.append(INSTANCE_TYPE_SEPARATOR);
}
}
this.allowedInstanceTypes = builder.toString();
}
public Long getClusterTimeToLive() {
return clusterTimeToLive;
}
public void setClusterTimeToLive(Long clusterTimeToLive) {
this.clusterTimeToLive = clusterTimeToLive;
}
public Long getUserTimeToLive() {
return userTimeToLive;
}
public void setUserTimeToLive(Long userTimeToLive) {
this.userTimeToLive = userTimeToLive;
}
public Long getMaxNumberOfClustersPerUser() {
return maxNumberOfClustersPerUser;
}
public void setMaxNumberOfClustersPerUser(Long maxNumberOfClustersPerUser) {
this.maxNumberOfClustersPerUser = maxNumberOfClustersPerUser;
}
public String getPlatforms() {
return platforms;
}
public void setPlatforms(String platforms) {
this.platforms = platforms;
}
}