package com.k_int.aggr2.mimsy.data.hdo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GenerationType;
import javax.persistence.Table;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;

import org.hibernate.Query;
import org.hibernate.Session;


@Entity
@Table(name="MIMSY_SUBJECT_HEADING")
public class SubjectHeadingHDO //implements java.io.Serializable
{

	private static final long serialVersionUID = 1L;
	private Long id;
	private String subjectHeading;
	
	protected SubjectHeadingHDO()
	{;}
	
	public SubjectHeadingHDO(String subjectHeading)
	{
		this.subjectHeading = subjectHeading;
	}
	
	@Column(name="SUBJECT_HEADING")
	public String getSubjectHeading()
	{
		return subjectHeading;
	}
	
	public void setSubjectHeading(String subjectHeading) 
	{
		this.subjectHeading = subjectHeading;
	}
	
	@Id
	@Column(name="ID")
	@GeneratedValue(strategy=GenerationType.AUTO)
	public Long getId() 
	{
		return this.id;
	}
	
	protected void setId(Long id) 
	{
		this.id = id;
	}
	
	public boolean equals(Object o)
	{
		boolean retval=false;
		if(o instanceof SubjectHeadingHDO)
		{
			retval = (o.toString()).equals(this.toString());
		}
			  
		return retval;  
	}
	
	
	public String toString()
	{
		StringBuilder builder = new StringBuilder();
		if(subjectHeading!=null)
			builder.append(subjectHeading);
		
		return builder.toString();
	}
	
	public int hashCode()
	{
		return toString().hashCode();
	}
	
	public static SubjectHeadingHDO lookupOrCreate(Session sess,String subject)throws Exception
	{
		Query q = sess.createQuery("select x from com.k_int.aggr2.mimsy.data.hdo.SubjectHeadingHDO x.subjectHeading where x.=:subjectHeading");
		q= q.setParameter("subjectHeading", subject);
		SubjectHeadingHDO retval = (SubjectHeadingHDO) q.uniqueResult();
		if(retval==null)
		{
			retval=new SubjectHeadingHDO(subject);
			sess.save(retval);
			sess.flush();
		}
	 	return retval;	 
	}
}
