EventUser.java 5.34 KB
package fi.insomnia.bortal.model;

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

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OrderBy;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

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

@Entity
@Table(name = "event_users", uniqueConstraints = @UniqueConstraint(columnNames = { EventUser.USER_ID_COLUMN, EventUser.EVENT_ID_COLUMN }))
@OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
public class EventUser extends GenericEntity {

    protected static final String USER_ID_COLUMN = "user_id";
    protected static final String EVENT_ID_COLUMN = "event_id";

    @ManyToOne
    @JoinColumn(nullable = false, name = USER_ID_COLUMN)
    private User user;
    @ManyToOne
    @JoinColumn(nullable = false, name = EVENT_ID_COLUMN)
    private LanEvent event;

    private static final long serialVersionUID = 6042691271548196815L;

    @OneToMany(mappedBy = "voter", cascade = CascadeType.ALL)
    private List<Vote> votes;

    @OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
    private List<UserNote> notes;

    @ManyToMany(cascade = CascadeType.ALL)
    private List<Role> roles = new ArrayList<Role>();

    @OneToMany(mappedBy = "user")
    private List<CompoEntryParticipant> compoEntryParticipants;

    @OneToMany(mappedBy = "creator")
    @OrderBy("id")
    private List<CompoEntry> compoEntries;

    @OneToMany(mappedBy = "creator", cascade = CascadeType.ALL)
    private List<PlaceGroup> placeGroups = new ArrayList<PlaceGroup>();

    @OneToMany(mappedBy = "user")
    private List<GroupMembership> groupMemberships;

    /**
     * The places this user has registered into.
     */
    @OneToMany(mappedBy = "currentUser", fetch = FetchType.LAZY)
    @OrderBy(Place.ID_COLUMN)
    private List<Place> currentPlaces;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
    private List<PrintedCard> printedCards;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
    @OrderBy(AccountEvent.ID_COLUMN)
    private List<AccountEvent> accountEvents;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
    @OrderBy(Bill.ID_COLUMN)
    private List<Bill> bills;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "seller")
    @OrderBy(AccountEvent.ID_COLUMN)
    private List<AccountEvent> soldItems;

    @OneToMany(mappedBy = "user")
    private List<PollAnswer> pollAnswers;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public LanEvent getEvent() {
        return event;
    }

    public void setEvent(LanEvent event) {
        this.event = event;
    }

    public List<Vote> getVotes() {
        return votes;
    }

    public void setVotes(List<Vote> votes) {
        this.votes = votes;
    }

    public List<UserNote> getNotes() {
        return notes;
    }

    public void setNotes(List<UserNote> notes) {
        this.notes = notes;
    }

    public List<Role> getRoles() {
        return roles;
    }

    public void setRoles(List<Role> roles) {
        this.roles = roles;
    }

    public List<CompoEntryParticipant> getCompoEntryParticipants() {
        return compoEntryParticipants;
    }

    public void setCompoEntryParticipants(List<CompoEntryParticipant> compoEntryParticipants) {
        this.compoEntryParticipants = compoEntryParticipants;
    }

    public List<CompoEntry> getCompoEntries() {
        return compoEntries;
    }

    public void setCompoEntries(List<CompoEntry> compoEntries) {
        this.compoEntries = compoEntries;
    }

    public List<PlaceGroup> getPlaceGroups() {
        return placeGroups;
    }

    public void setPlaceGroups(List<PlaceGroup> placeGroups) {
        this.placeGroups = placeGroups;
    }

    public List<GroupMembership> getGroupMemberships() {
        return groupMemberships;
    }

    public void setGroupMemberships(List<GroupMembership> groupMemberships) {
        this.groupMemberships = groupMemberships;
    }

    public List<Place> getCurrentPlaces() {
        return currentPlaces;
    }

    public void setCurrentPlaces(List<Place> currentPlaces) {
        this.currentPlaces = currentPlaces;
    }

    public List<PrintedCard> getPrintedCards() {
        return printedCards;
    }

    public void setPrintedCards(List<PrintedCard> printedCards) {
        this.printedCards = printedCards;
    }

    public List<AccountEvent> getAccountEvents() {
        return accountEvents;
    }

    public void setAccountEvents(List<AccountEvent> accountEvents) {
        this.accountEvents = accountEvents;
    }

    public List<Bill> getBills() {
        return bills;
    }

    public void setBills(List<Bill> bills) {
        this.bills = bills;
    }

    public List<AccountEvent> getSoldItems() {
        return soldItems;
    }

    public void setSoldItems(List<AccountEvent> soldItems) {
        this.soldItems = soldItems;
    }

    public List<PollAnswer> getPollAnswers() {
        return pollAnswers;
    }

    public void setPollAnswers(List<PollAnswer> pollAnswers) {
        this.pollAnswers = pollAnswers;
    }

}