package org.ovirt.engine.core.common.businessentities;
import java.util.Objects;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import org.ovirt.engine.core.common.mode.ApplicationMode;
import org.ovirt.engine.core.common.validation.annotation.ValidName;
import org.ovirt.engine.core.common.validation.group.CreateEntity;
import org.ovirt.engine.core.common.validation.group.UpdateEntity;
import org.ovirt.engine.core.compat.Guid;
public class Role implements IVdcQueryable, BusinessEntity<Guid>, Nameable {
private static final long serialVersionUID = 1487620954798772886L;
@Size(max = BusinessEntitiesDefinitions.GENERAL_MAX_SIZE)
private String description;
private Guid id;
private boolean readOnly;
@NotNull(message = "VALIDATION_ROLES_NAME_NOT_NULL", groups = { CreateEntity.class, UpdateEntity.class })
@Size(min = 1, max = BusinessEntitiesDefinitions.ROLE_NAME_SIZE, message = "VALIDATION_ROLES_NAME_MAX", groups = {
CreateEntity.class, UpdateEntity.class })
@ValidName(message = "VALIDATION_ROLES_NAME_INVALID", groups = { CreateEntity.class, UpdateEntity.class })
private String name;
/**
* MLA addition - distinct admin roles from user roles. Mainly used to prevent user from gaining admin permissions
*/
private RoleType type;
private boolean allowsViewingChildren;
private ApplicationMode appMode;
public Role() {
id = Guid.Empty;
appMode = ApplicationMode.AllModes;
}
@Override
public int hashCode() {
return Objects.hash(
id,
description,
readOnly,
name,
type,
appMode
);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!(obj instanceof Role)) {
return false;
}
Role other = (Role) obj;
return Objects.equals(id, other.id)
&& Objects.equals(description, other.description)
&& readOnly == other.readOnly
&& allowsViewingChildren == other.allowsViewingChildren
&& Objects.equals(name, other.name)
&& type == other.type
&& appMode == other.appMode;
}
public String getDescription() {
return this.description;
}
public boolean isReadonly() {
return this.readOnly;
}
@Override
public String getName() {
return this.name;
}
@Override
public Object getQueryableId() {
return getId();
}
public void setDescription(String value) {
this.description = value;
}
public void setReadonly(boolean value) {
this.readOnly = value;
}
public void setName(String value) {
this.name = value;
}
public void setType(RoleType type) {
this.type = type;
}
public RoleType getType() {
return type;
}
@Override
public Guid getId() {
return id;
}
@Override
public void setId(Guid id) {
this.id = id;
}
public boolean allowsViewingChildren() {
return allowsViewingChildren;
}
public void setAllowsViewingChildren(boolean allowsViewingChildren) {
this.allowsViewingChildren = allowsViewingChildren;
}
public ApplicationMode getAppMode() {
return this.appMode;
}
public void setAppMode(ApplicationMode mode) {
this.appMode = mode;
}
}