package org.ovirt.engine.core.common.businessentities;
import java.io.Serializable;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.ovirt.engine.core.common.businessentities.mapping.GuidType;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.compat.NotImplementedException;
@XmlAccessorType(XmlAccessType.NONE)
@XmlType(name = "ad_groups")
@Entity
@Table(name = "ad_groups")
@TypeDef(name = "guid", typeClass = GuidType.class)
public class ad_groups extends DbUserBase implements Serializable {
private static final long serialVersionUID = 6717840754119287059L;
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "org.ovirt.engine.core.dao.GuidGenerator")
@Column(name = "id")
@Type(type = "guid")
private Guid id = new Guid();
@Column(name = "name")
private String name;
@Column(name = "status")
private AdRefStatus status = AdRefStatus.Inactive;
@Column(name = "domain", length = 100, nullable = false)
private String domain;
@Transient
private List<String> memberOf;
@Transient
private String distinguishedName;
public ad_groups() {
this.status = AdRefStatus.Active;
id = Guid.Empty;
name = "";
distinguishedName = "";
}
public ad_groups(Guid id, String name, int status) {
this.id = id;
this.name = name;
this.status = AdRefStatus.forValue(status);
}
@XmlElement
public Guid getid() {
return this.id;
}
public void setid(Guid value) {
this.id = value;
}
@XmlElement
public String getname() {
return this.name;
}
public void setname(String value) {
this.name = value;
}
@XmlElement
public AdRefStatus getstatus() {
return status;
}
public void setstatus(AdRefStatus value) {
status = value;
}
public ad_groups(Guid id, String name) {
this.id = id;
this.name = name;
}
public ad_groups(Guid id, String name, String domain) {
this(id, name);
this.domain = domain;
}
public ad_groups(Guid id, String name, String domain, String distinguishedName) {
this(id, name, domain);
this.distinguishedName = distinguishedName;
}
public ad_groups(Guid id, String name, String domain, String distinguishedName, List<String> memberOf) {
this(id, name, domain, distinguishedName);
this.setMemberOf(memberOf);
}
/**
* This constructor used only for Inactive groups
*
* @param id
*/
public ad_groups(Guid id) {
this.id = id;
status = AdRefStatus.Inactive;
}
@XmlElement
public String getdomain() {
return domain;
}
public void setdomain(String value) {
domain = value;
}
@Override
public Object getQueryableId() {
return getid();
}
@Override
public java.util.ArrayList<String> getChangeablePropertiesList() {
throw new NotImplementedException();
}
public void setDistinguishedName(String distinguishedName) {
this.distinguishedName = distinguishedName;
}
public String getDistinguishedName() {
return distinguishedName;
}
public void setMemberOf(List<String> memberOf) {
this.memberOf = memberOf;
}
public List<String> getMemberOf() {
return memberOf;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((distinguishedName == null) ? 0 : distinguishedName.hashCode());
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((domain == null) ? 0 : domain.hashCode());
result = prime * result + ((memberOf == null) ? 0 : memberOf.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + ((status == null) ? 0 : status.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
ad_groups other = (ad_groups) obj;
if (distinguishedName == null) {
if (other.distinguishedName != null)
return false;
} else if (!distinguishedName.equals(other.distinguishedName))
return false;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (domain == null) {
if (other.domain != null)
return false;
} else if (!domain.equals(other.domain))
return false;
if (memberOf == null) {
if (other.memberOf != null)
return false;
} else if (!memberOf.equals(other.memberOf))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (status != other.status)
return false;
return true;
}
}