Vip.java 3.59 KB
package fi.codecrew.moya.model;

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

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * VIP list. Info staff will use the VIP list information to allow certain
 * special treatment of people :)
 *
 * The VIP list entry can be just a free form description containing the names
 * of VIPs and what makes them VIP, or the entry may refer to an EventUser.
 *
 * Every VIP entry must have a responsible person in the organization. Creator
 * must also be recorder.
 *
 */
@Entity
@Table(name = "vips")
public class Vip extends GenericEntity {
	private static final long serialVersionUID = 1L;
	private static final String EVENT_ID_COLUMN = "event_id";
	private static final String VIP_EVENT_USER_ID_COLUMN = "vip_event_user_id";
	private static final String CREATOR_EVENT_USER_ID_COLUMN = "creator_event_user_id";
	private static final String HOST_EVENT_USER_ID_COLUMN = "host_event_user_id";

	@Column(name = "description", nullable = false)
	@Lob
	private String description;

	@Column(name = "shortdescr", nullable = false)
	@Lob
	private String shortdescr;

	@Column(name = "created", nullable = false, updatable = false)
	@Temporal(TemporalType.TIMESTAMP)
	private Date created = new Date();

	@ManyToOne
	@JoinColumn(name = EVENT_ID_COLUMN, referencedColumnName = LanEvent.ID_COLUMN, nullable = false)
	private LanEvent event;

	@ManyToOne
	@JoinColumn(name = VIP_EVENT_USER_ID_COLUMN, referencedColumnName = EventUser.ID_COLUMN, nullable = true)
	private EventUser eventUser;

	/**
	 * Mandatory creator of this VIP list entry.
	 */
	@ManyToOne
	@JoinColumn(name = CREATOR_EVENT_USER_ID_COLUMN, referencedColumnName = EventUser.ID_COLUMN, nullable = false)
	private EventUser creator;

	/**
	 * Mandatory responsible person of this VIP list entry.
	 */
	@ManyToOne
	@JoinColumn(name = HOST_EVENT_USER_ID_COLUMN, referencedColumnName = EventUser.ID_COLUMN, nullable = false)
	private EventUser host;

	@OneToMany(mappedBy = "vip")
	private List<VipProduct> products = new ArrayList<>();

	public String getShortDisplayDescr() {
		String ret = shortdescr;
		if ((ret == null || ret.trim().isEmpty()) && description != null) {
			ret = description;
			if (description.length() > 85)
				ret = description.substring(0, 80);
		}
		return ret;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	public Date getCreated() {
		return created;
	}

	public void setCreated(Date created) {
		this.created = created;
	}

	public LanEvent getEvent() {
		return event;
	}

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

	public EventUser getEventUser() {
		return eventUser;
	}

	public void setEventUser(EventUser eventUser) {
		this.eventUser = eventUser;
	}

	public EventUser getCreator() {
		return creator;
	}

	public void setCreator(EventUser creator) {
		this.creator = creator;
	}

	public EventUser getHost() {
		return host;
	}

	public void setHost(EventUser host) {
		this.host = host;
	}

	public String getShortdescr() {
		return shortdescr;
	}

	public void setShortdescr(String shortdescr) {
		this.shortdescr = shortdescr;
	}

	public List<VipProduct> getProducts() {
		return products;
	}

	public void setProducts(List<VipProduct> products) {
		this.products = products;
	}

}