package com.jasamedika.medifirst2000.entities;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

import com.jasamedika.medifirst2000.base.BaseTransaction;
import com.jasamedika.medifirst2000.helper.Caption;

@Entity
@Table(name="RencanaKinerjaTahunan_T")
public class RencanaKinerjaTahunan extends BaseTransaction{

	@ManyToOne
	@JoinColumn(name = "ObjectSasaranStrategisFK")
	@NotNull(message="Sasaran Strategis tidak boleh kosong")
	@Caption(value="Sasaran Strategis")
	private SasaranStrategis sasaranStrategis;
	
	@Column(name = "ObjectSasaranStrategisFK", insertable=false,updatable=false, nullable = false)
	private Integer sasaranStrategisId;
	
	@ManyToOne
	@JoinColumn(name = "ObjectProgramKerjaStrategisFK")
	@NotNull(message="Program Kerja Strategis tidak boleh kosong")
	@Caption(value="Program Kerja Strategis")
	private MasterProgramKerjaStrategis programKerjaStrategis;
	
	@Column(name = "ObjectProgramKerjaStrategisFK", insertable=false,updatable=false, nullable = false)
	private Integer programKerjaStrategisId;
	
	@Column(name="uraian",nullable=false,length=700)
	@Caption(value="Uraian")
	private String uraian;
	
	@Column(name="periode",nullable=false)
	@Caption(value="Periode")
	private Integer periode;
	
	@Column(name="indikatorKinerja",nullable=false,length=700)
	@Caption(value="Indikator Kinerja")
	private String indikatorKinerja;
	
	@ManyToOne
	@JoinColumn(name = "ObjectSatuanIndikatorFK")
	@NotNull(message="Satuan Indikator tidak boleh kosong")
	@Caption(value="Satuan Indikator")
	private SatuanIndikator satuanIndikator;
	
	@Column(name = "ObjectSatuanIndikatorFK", insertable=false,updatable=false, nullable = false)
	private Integer satuanIndikatorId;
	
	@Column(name="RencanaKinerjaTahunan",nullable=false)
	@Caption(value="Rencana Kinerja Tahunan")
	private String rencanaKinerjaTahunan;

	@ManyToOne
	@JoinColumn(name = "ObjectPICFK")
	@NotNull(message="Person In Charge tidak boleh kosong")
	@Caption(value="Person In Charge")
	private Departemen pic;
	
	@Column(name = "ObjectPICFK", insertable=false,updatable=false, nullable = false)
	private Integer picId;
	
	@OneToMany(cascade=CascadeType.ALL,fetch = FetchType.LAZY, mappedBy = "rencanaKinerjaTahunan")
	@Caption(value = "Rencana Kinerja Operasional")
	private Set<RencanaKinerjaOperasional> rko = new HashSet<RencanaKinerjaOperasional>();
	
	
	public SasaranStrategis getSasaranStrategis() {
		return sasaranStrategis;
	}

	public void setSasaranStrategis(SasaranStrategis sasaranStrategis) {
		this.sasaranStrategis = sasaranStrategis;
	}

	public Integer getSasaranStrategisId() {
		return sasaranStrategisId;
	}

	public void setSasaranStrategisId(Integer sasaranStrategisId) {
		this.sasaranStrategisId = sasaranStrategisId;
	}

	public MasterProgramKerjaStrategis getProgramKerjaStrategis() {
		return programKerjaStrategis;
	}

	public void setProgramKerjaStrategis(MasterProgramKerjaStrategis programKerjaStrategis) {
		this.programKerjaStrategis = programKerjaStrategis;
	}

	public Integer getProgramKerjaStrategisId() {
		return programKerjaStrategisId;
	}

	public void setProgramKerjaStrategisId(Integer programKerjaStrategisId) {
		this.programKerjaStrategisId = programKerjaStrategisId;
	}

	public String getUraian() {
		return uraian;
	}

	public void setUraian(String uraian) {
		this.uraian = uraian;
	}

	public String getIndikatorKinerja() {
		return indikatorKinerja;
	}

	public void setIndikatorKinerja(String indikatorKinerja) {
		this.indikatorKinerja = indikatorKinerja;
	}

	public SatuanIndikator getSatuanIndikator() {
		return satuanIndikator;
	}

	public void setSatuanIndikator(SatuanIndikator satuanIndikator) {
		this.satuanIndikator = satuanIndikator;
	}

	public Integer getSatuanIndikatorId() {
		return satuanIndikatorId;
	}

	public void setSatuanIndikatorId(Integer satuanIndikatorId) {
		this.satuanIndikatorId = satuanIndikatorId;
	}

	public String getRencanaKinerjaTahunan() {
		return rencanaKinerjaTahunan;
	}

	public void setRencanaKinerjaTahunan(String rencanaKinerjaTahunan) {
		this.rencanaKinerjaTahunan = rencanaKinerjaTahunan;
	}

	public Departemen getPic() {
		return pic;
	}

	public void setPic(Departemen pic) {
		this.pic = pic;
	}

	public Integer getPicId() {
		return picId;
	}

	public void setPicId(Integer picId) {
		this.picId = picId;
	}

	public Integer getPeriode() {
		return periode;
	}

	public void setPeriode(Integer periode) {
		this.periode = periode;
	}

	public Set<RencanaKinerjaOperasional> getRko() {
		return rko;
	}

	public void setRko(Set<RencanaKinerjaOperasional> rko) {
		this.rko = rko;
	}
}