PlaceSlot.java 1.94 KB
package fi.codecrew.moya.model;

import java.util.Calendar;
import java.util.Date;

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

@Entity
@Table(name = "place_slots")
public class PlaceSlot extends GenericEntity {

	private static final long serialVersionUID = -7163361140751806941L;

	@Temporal(TemporalType.TIMESTAMP)
	private Date created;
	@Temporal(TemporalType.TIMESTAMP)
	private Date used;

	@JoinColumn(nullable = false)
	@ManyToOne
	private Bill bill;

	@JoinColumn(nullable = false)
	@ManyToOne
	private Product product;

	@JoinColumn(nullable = true, unique = true)
	@OneToOne
	private Place place;

	@Lob
	private String description;

	public PlaceSlot(Product product, Bill bill, String description) {
		this();

		this.product = product;
		this.bill = bill;
		this.description = description;

	}

	public PlaceSlot() {
		this.created = Calendar.getInstance().getTime();
	}

	public boolean isUsed() {
		return used != null || place != null;
	}

	public boolean isLocked() {
		return place != null && place.getGroup() != null;
	}

	public Date getCreated() {
		return created;
	}

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

	public Date getUsed() {
		return used;
	}

	public void setUsed(Date used) {
		this.used = used;
	}

	public Bill getBill() {
		return bill;
	}

	public void setBill(Bill bill) {
		this.bill = bill;
	}

	public String getDescription() {
		return description;
	}

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

	public Place getPlace() {
		return place;
	}

	public void setPlace(Place place) {
		this.place = place;
	}

	public Product getProduct() {
		return product;
	}

	public void setProduct(Product product) {
		this.product = product;
	}

}