package de.flower.rmt.model.db.entity; import de.flower.common.model.db.entity.AbstractBaseEntity; import org.hibernate.annotations.Index; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.persistence.UniqueConstraint; import javax.validation.constraints.NotNull; /** * @author flowerrrr */ @Entity @Table(name = "role", uniqueConstraints = @UniqueConstraint(columnNames = {"user_id", "authority"})) public class Role extends AbstractBaseEntity { /** * @author flowerrrr */ public enum Roles { PLAYER("ROLE_PLAYER"), MANAGER("ROLE_MANAGER"), ADMIN("ROLE_ADMIN"); private String roleName; Roles(String roleName) { this.roleName = roleName; } public String getRoleName() { return roleName; } public static Roles fromRoleName(String roleName) { for (Roles r : values()) { if (r.getRoleName().equals(roleName)) { return r; } } throw new IllegalArgumentException("Unknown roleName [" + roleName + "]."); } } @NotNull @Column @Index(name = "ix_authority") private String authority; @NotNull @ManyToOne @JoinColumn(name = "user_id", referencedColumnName = "id") @Index(name = "ix_user") private User user; protected Role() { } public Role(String authority) { this.authority = authority; } public String getAuthority() { return authority; } public void setAuthority(String authority) { this.authority = authority; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }