/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.ambari.server.orm.entities;
import java.util.Set;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
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.JoinColumns;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import javax.persistence.UniqueConstraint;
import org.apache.ambari.server.security.authorization.GroupType;
@Entity
@Table(name = "groups", uniqueConstraints = {@UniqueConstraint(columnNames = {"group_name", "ldap_group"})})
@TableGenerator(name = "group_id_generator",
table = "ambari_sequences",
pkColumnName = "sequence_name",
valueColumnName = "sequence_value",
pkColumnValue = "group_id_seq",
initialValue = 1
)
@NamedQueries({
@NamedQuery(name = "groupByName", query = "SELECT group_entity FROM GroupEntity group_entity where lower(group_entity.groupName)=:groupname")
})
public class GroupEntity {
@Id
@Column(name = "group_id")
@GeneratedValue(strategy = GenerationType.TABLE, generator = "group_id_generator")
private Integer groupId;
@Column(name = "group_name")
private String groupName;
@Column(name = "ldap_group")
private Integer ldapGroup = 0;
@Column(name = "group_type")
@Enumerated(EnumType.STRING)
@Basic
private GroupType groupType = GroupType.LOCAL;
@OneToMany(mappedBy = "group", cascade = CascadeType.ALL)
private Set<MemberEntity> memberEntities;
@OneToOne
@JoinColumns({
@JoinColumn(name = "principal_id", referencedColumnName = "principal_id", nullable = false),
})
private PrincipalEntity principal;
// ----- GroupEntity -------------------------------------------------------
public Integer getGroupId() {
return groupId;
}
public void setGroupId(Integer groupId) {
this.groupId = groupId;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public Boolean getLdapGroup() {
return ldapGroup == 0 ? Boolean.FALSE : Boolean.TRUE;
}
private void setLdapGroup(Boolean ldapGroup) {
if (ldapGroup == null) {
this.ldapGroup = null;
} else {
this.ldapGroup = ldapGroup ? 1 : 0;
}
}
public GroupType getGroupType() {
return groupType;
}
public void setGroupType(GroupType groupType) {
this.groupType = groupType;
setLdapGroup(groupType == GroupType.LDAP);
}
public Set<MemberEntity> getMemberEntities() {
return memberEntities;
}
public void setMemberEntities(Set<MemberEntity> memberEntities) {
this.memberEntities = memberEntities;
}
/**
* Get the admin principal entity.
*
* @return the principal entity
*/
public PrincipalEntity getPrincipal() {
return principal;
}
/**
* Set the admin principal entity.
*
* @param principal the principal entity
*/
public void setPrincipal(PrincipalEntity principal) {
this.principal = principal;
}
// ----- Object overrides --------------------------------------------------
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
GroupEntity that = (GroupEntity) o;
if (groupId != null ? !groupId.equals(that.groupId) : that.groupId != null) return false;
if (groupName != null ? !groupName.equals(that.groupName) : that.groupName != null) return false;
if (ldapGroup != null ? !ldapGroup.equals(that.ldapGroup) : that.ldapGroup != null) return false;
return true;
}
@Override
public int hashCode() {
int result = groupId != null ? groupId.hashCode() : 0;
result = 31 * result + (groupName != null ? groupName.hashCode() : 0);
result = 31 * result + (ldapGroup != null ? ldapGroup.hashCode() : 0);
return result;
}
}