OrgRole.java 2.91 KB
package fi.insomnia.bortal.model;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

import org.eclipse.persistence.annotations.OptimisticLocking;
import org.eclipse.persistence.annotations.OptimisticLockingType;

/**
 * Entity implementation class for Entity: OrganizationalRole
 * 
 */
@Entity
@Table(name = "org_roles", uniqueConstraints = { @UniqueConstraint(columnNames = { OrgRole.NAME_COLUMN }) })
@OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
public class OrgRole extends GenericEntity {

    private static final long serialVersionUID = 1L;

    protected static final String NAME_COLUMN = "role_name";

    @Column(name = NAME_COLUMN, nullable = false)
    private String name;

    @ManyToMany()
    @JoinTable(name = "org_role_memberships",
            joinColumns = { @JoinColumn(name = "org_role_id", referencedColumnName = OrgRole.ID_COLUMN) },
            inverseJoinColumns = { @JoinColumn(name = "user_id", referencedColumnName = User.ID_COLUMN) })
    private List<User> users;

    @ManyToMany()
    @JoinTable(name = "org_role_parents",
            joinColumns = { @JoinColumn(name = "parent_id", referencedColumnName = OrgRole.ID_COLUMN) },
            inverseJoinColumns = { @JoinColumn(name = "org_role_id", referencedColumnName = OrgRole.ID_COLUMN) })
    private List<OrgRole> parents = new ArrayList<OrgRole>();

    @ManyToMany(mappedBy = "parents")
    private List<OrgRole> children = new ArrayList<OrgRole>();

    @JoinColumn(nullable = false)
    @ManyToOne()
    private EventOrganiser eventOrganizer;

    @OneToMany
    private List<Role> eventRoles;

    public OrgRole() {
        super();
    }

    public List<User> getUsers() {
        return this.users;
    }

    public void setUsers(List<User> users) {
        this.users = users;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<OrgRole> getParents() {
        return parents;
    }

    public void setParents(List<OrgRole> parents) {
        this.parents = parents;
    }

    public List<OrgRole> getChildren() {
        return children;
    }

    public void setChildren(List<OrgRole> children) {
        this.children = children;
    }

    public EventOrganiser getEventOrganizer() {
        return eventOrganizer;
    }

    public void setEventOrganizer(EventOrganiser eventOrganizer) {
        this.eventOrganizer = eventOrganizer;
    }

    public List<Role> getEventRoles() {
        return eventRoles;
    }

    public void setEventRoles(List<Role> eventRoles) {
        this.eventRoles = eventRoles;
    }

}