package com.jasamedika.medifirst2000.vo;

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

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

import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO;
import com.jasamedika.medifirst2000.helper.Caption;

public class RencanaKinerjaTahunanVO extends BaseTransactionVO{

	@ManyToOne
	@JoinColumn(name = "ObjectSasaranStrategisFK")
	@NotNull(message="Sasaran Strategis tidak boleh kosong")
	@Caption(value="Sasaran Strategis")
	private SasaranStrategisVO sasaranStrategis;
	
	@ManyToOne
	@JoinColumn(name = "ObjectProgramKerjaStrategisFK")
	@NotNull(message="Program Kerja Strategis tidak boleh kosong")
	@Caption(value="Program Kerja Strategis")
	private MasterProgramKerjaStrategisVO programKerjaStrategis;
	
	@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 SatuanIndikatorVO satuanIndikator;
	
	@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 DepartemenVO pic;
	
	@OneToMany(cascade=CascadeType.ALL,fetch = FetchType.LAZY, mappedBy = "rencanaKinerjaTahunan")
	@Caption(value = "Rencana Kinerja Operasional")
	private Set<RencanaKinerjaOperasionalVO> rko = new HashSet<RencanaKinerjaOperasionalVO>();
	
	public SasaranStrategisVO getSasaranStrategis() {
		return sasaranStrategis;
	}

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

	public MasterProgramKerjaStrategisVO getProgramKerjaStrategis() {
		return programKerjaStrategis;
	}

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

	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 SatuanIndikatorVO getSatuanIndikator() {
		return satuanIndikator;
	}

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

	public String getRencanaKinerjaTahunan() {
		return rencanaKinerjaTahunan;
	}

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

	public DepartemenVO getPic() {
		return pic;
	}

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

	public Integer getPeriode() {
		return periode;
	}

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

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

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