LanEvent.java 6.83 KB
package fi.insomnia.bortal.model;

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

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

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

import fi.insomnia.bortal.enums.EventStatus;
import fi.insomnia.bortal.model.salespoint.Salespoint;

/**
 * 
 */
@Entity
@Table(name = "events")
@OptimisticLocking(type = OptimisticLockingType.CHANGED_COLUMNS)
public class LanEvent extends GenericEntity {

    private static final long serialVersionUID = 179811358211927126L;

    @Column(name = "start_time")
    @Temporal(TemporalType.TIMESTAMP)
    private Calendar startTime;

    @Column(name = "end_time")
    @Temporal(TemporalType.TIMESTAMP)
    private Calendar endTime;

    @Column(name = "name", nullable = false, unique = true)
    private String name;

    @Column(nullable = false, name = "event_enabled")
    private boolean eventEnabled = false;

    /**
     * Bill's reference number will be formed by adding this number to the bill
     * number and adding the checksum of that number as the last digit
     */
    private Integer referenceNumberBase = 54321;
    @Column(nullable = false)
    private int nextBillNumber = 1;

    @JoinColumn(name = "event_organiser_id", referencedColumnName = "id", nullable = false, updatable = false)
    @ManyToOne(optional = false)
    private EventOrganiser organiser;

    @Column(name = "status", nullable = false)
    @Enumerated(EnumType.STRING)
    private EventStatus status = EventStatus.INACTIVE;

    @OneToMany(mappedBy = "parentEvent")
    private List<LogEntry> logEntries;

    @JoinColumn(name = "default_role_id", referencedColumnName = "id")
    @OneToOne
    private Role defaultRole;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "event")
    private List<Compo> compos;

    @OneToMany(mappedBy = "event", cascade = CascadeType.ALL)
    private List<CardTemplate> cardTemplates;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "event")
    private List<EventMap> eventMaps;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "event")
    private List<Role> roles;

    @OneToMany(mappedBy = "event")
    private List<Bill> bills;

    @OneToMany(mappedBy = "event")
    private List<Reader> readers;

    @OneToMany(mappedBy = "event", cascade = CascadeType.ALL)
    private List<Poll> polls;

    @OneToMany(mappedBy = "event", cascade = CascadeType.ALL)
    private List<Salespoint> salespoints;

    @OneToMany(mappedBy = "event", cascade = CascadeType.ALL)
    @PrivateOwned
    private List<LanEventDomain> domains = new ArrayList<LanEventDomain>();

    @PrivateOwned
    @OneToMany(mappedBy = "event", cascade = CascadeType.ALL)
    private List<LanEventProperty> properties = new ArrayList<LanEventProperty>();

    public LanEvent() {

    }

    public Calendar getStartTime() {
        return startTime;
    }

    public void setStartTime(Calendar startTime) {
        this.startTime = startTime;
    }

    public Calendar getEndTime() {
        return endTime;
    }

    public void setEndTime(Calendar endTime) {
        this.endTime = endTime;
    }

    public String getName() {
        return name;
    }

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

    public EventStatus getStatus() {
        return status;
    }

    public void setStatus(EventStatus eventStatusId) {
        this.status = eventStatusId;
    }

    public Role getDefaultRole() {
        return defaultRole;
    }

    public void setDefaultRole(Role defaultRole) {
        this.defaultRole = defaultRole;
    }

    public List<Compo> getCompos() {
        return compos;
    }

    public void setCompos(List<Compo> compoList) {
        this.compos = compoList;
    }

    public List<CardTemplate> getCardTemplates() {
        return cardTemplates;
    }

    public void setCardTemplates(List<CardTemplate> cardTemplateList) {
        this.cardTemplates = cardTemplateList;
    }

    public List<EventMap> getEventMaps() {
        return eventMaps;
    }

    public void setEventMaps(List<EventMap> eventMapList) {
        this.eventMaps = eventMapList;
    }

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

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

    /**
     * @return the bills
     */
    public List<Bill> getBills() {
        return bills;
    }

    /**
     * @param bills
     *            the bills to set
     */
    public void setBills(List<Bill> bills) {
        this.bills = bills;
    }

    /**
     * @return the readers
     */
    public List<Reader> getReaders() {
        return readers;
    }

    /**
     * @param readers
     *            the readers to set
     */
    public void setReaders(List<Reader> readers) {
        this.readers = readers;
    }

    public void setOrganiser(EventOrganiser organiser) {
        this.organiser = organiser;
    }

    public EventOrganiser getOrganiser() {
        return organiser;
    }

    public void setReferenceNumberBase(Integer referenceNumberBase) {
        this.referenceNumberBase = referenceNumberBase;
    }

    public Integer getReferenceNumberBase() {
        return referenceNumberBase;
    }

    public void setLogEntries(List<LogEntry> logEntries) {
        this.logEntries = logEntries;
    }

    public List<LogEntry> getLogEntries() {
        return logEntries;
    }

    public void setNextBillNumber(int nextBillNumber) {
        this.nextBillNumber = nextBillNumber;
    }

    public int getNextBillNumber() {
        return nextBillNumber;
    }

    public boolean isEventEnabled() {
        return eventEnabled;
    }

    public void setEventEnabled(boolean eventEnabled) {
        this.eventEnabled = eventEnabled;
    }

    public List<Poll> getPolls() {
        return polls;
    }

    public void setPolls(List<Poll> polls) {
        this.polls = polls;
    }

    public List<Salespoint> getSalespoints() {
        return salespoints;
    }

    public void setSalespoints(List<Salespoint> salespoints) {
        this.salespoints = salespoints;
    }

    public List<LanEventDomain> getDomains() {
        return domains;
    }

    public void setDomains(List<LanEventDomain> domains) {
        this.domains = domains;
    }

    public List<LanEventProperty> getProperties() {
        return properties;
    }

    public void setProperties(List<LanEventProperty> properties) {
        this.properties = properties;
    }

}