package de.hsadmin.mods.pac;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity(name = "PacComponents")
@Table(name = "packet_component")
@IdClass(PacComponentId.class)
public class PacComponent {
	
	@Id
	@Column(name="packet_id", insertable=false, updatable=false, columnDefinition = "integer")
	private long pacId;

	@Id
	@Column(name="basepacket_id", insertable=false, updatable=false, columnDefinition = "integer")
	private long basePacId;

	@Id
	@Column(name="basecomponent_id", insertable=false, updatable=false, columnDefinition = "integer")
	private long baseComponentId;

	@ManyToOne
	@JoinColumn(name = "packet_id")
	private Pac pac;
	
	@ManyToOne
	@JoinColumn(name = "basecomponent_id")
	private BaseComponent baseComponent;

	@ManyToOne
	@JoinColumn(name = "basepacket_id")
	private BasePac basePac;

	@Column(name = "quantity", columnDefinition = "integer")
	private int quantity;

	@Column(name = "created", columnDefinition = "date", nullable = true)
	@Temporal(TemporalType.DATE)
	private Date created;

	@Column(name = "cancelled", columnDefinition = "date", nullable = true)
	@Temporal(TemporalType.DATE)
	private Date cancelled;

	public PacComponent() {
	}

	public PacComponent(BasePac basePac, BaseComponent baseComp, Pac pac,
			int quantity, Date created, Date cancelled) {
		this.basePac = basePac;
		if (basePac != null) {
			this.basePacId = basePac.id();
		}
		this.pac = pac;
		if (pac != null) {
			this.pacId = pac.id();
		}
		this.baseComponent = baseComp;
		if (baseComponent != null) {
			this.baseComponentId = baseComp.id();
		}
		this.quantity = quantity;
		this.created = created;
		this.cancelled = cancelled;
	}

	public BasePac getBasePac() {
		return basePac;
	}

	public void setbasePac(BasePac basePac) {
		this.basePac = basePac;
		if (basePac != null) {
			this.basePacId = basePac.id();
		}
	}

	public BaseComponent getBaseComponent() {
		return baseComponent;
	}

	public void setBaseComponent(BaseComponent baseComponent) {
		this.baseComponent = baseComponent;
		if (baseComponent != null) {
			this.baseComponentId = baseComponent.id();
		}
	}

	public Pac getPac() {
		return pac;
	}

	public void setPac(Pac pac) {
		this.pac = pac;
		if (pac != null) {
			this.pacId = pac.id();
		}
	}

	public int getQuantity() {
		return quantity;
	}

	public void setQuantity(int quantity) {
		this.quantity = quantity;
	}

	public Date getCreated() {
		return created;
	}

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

	public Date getCancelled() {
		return cancelled;
	}

	public void setCancelled(Date cancelled) {
		this.cancelled = cancelled;
	}

	public void setPacId(long pacId) {
		this.pacId = pacId;
	}

	public long getPacId() {
		return pacId;
	}

	public void setBaseComponentId(long baseComponentId) {
		this.baseComponentId = baseComponentId;
	}

	public long getBaseComponentId() {
		return baseComponentId;
	}

	public void setBasePacId(long basePacId) {
		this.basePacId = basePacId;
	}

	public long getBasePacId() {
		return basePacId;
	}

}
