package com.k_int.aggr2.mimsy.data.hdo;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

@Entity
@Table(name="MIMSY_DATE")
public class MimsyDateHDO // implements java.io.Serializable
{
	private static final long serialVersionUID = 1L;
	private Long id;
	private String date_text; 
	private Boolean prior; 
	private String earliest;
	private String latest; 
	private String era;
	private String rel ;
	private String method; 
	private AttributionHDO attrib;
     
	protected MimsyDateHDO()
	{
		super();
	}
	
	public MimsyDateHDO(String date_text,boolean prior)
	{
		this.date_text=date_text;
		this.prior=prior;
	}

	@Id
	@Column(name="ID")
	@GeneratedValue(strategy=GenerationType.AUTO)
	public Long getId()
	{
		return id;
	}
	
	protected void setId(Long id)
	{
		this.id = id;
	}
	
	@Column(name="DATE_TEXT")
	public String getDateText() 
	{
		return date_text;
	}

	public void setDateText(String date_text)
	{
		this.date_text = date_text;
	}

	@Column(name="PRIOR")
	public Boolean getPrior()
	{
		return prior;
	}

	public void setPrior(Boolean prior)
	{
		this.prior = prior;
	}

	@Column(name="EARLIEST")
	public String getEarliest() 
	{
		return earliest;
	}

	public void setEarliest(String earliest) 
	{
		this.earliest = earliest;
	}

	@Column(name="LATEST")
	public String getLatest() 
	{
		return latest;
	}

	public void setLatest(String latest) 
	{
		this.latest = latest;
	}

	@Column(name="ERA")
	public String getEra() 
	{
		return era;
	}

	public void setEra(String era) 
	{
		this.era = era;
	}

	@Column(name="RELATION")
	public String getRelation() {
		return rel;
	}

	public void setRelation(String rel) 
	{
		this.rel = rel;
	}

	@Column(name="METHOD")
	public String getMethod() {
		return method;
	}

	public void setMethod(String method) {
		this.method = method;
	}

	@OneToOne(cascade=CascadeType.ALL)
	@JoinColumn(name="MIMSY_DATE_ATTRIBUTION_FK")
	public AttributionHDO getAttribution() {
		return attrib;
	}

	public void setAttribution(AttributionHDO attrib) {
		this.attrib = attrib;
	}
	
	@Transient
	public int hashCode()
	{
		return toString().hashCode();
	}
	
	@Transient
	 public boolean equals(Object o)
	  {
		  boolean retval=false;
		  if(o instanceof MimsyDateHDO)
		  {
			  retval = (o.toString()).equals(this.toString());
		  }
			  
		  return retval;  
	  }
	
	@Transient
	public String toString()
	{
		StringBuilder builder = new StringBuilder();
		
		if(date_text!=null)
			builder.append(date_text);
		
		if(earliest!=null)
			builder.append(earliest);
		
		if(latest!=null)
			builder.append(latest);
		
		if ( prior != null )
			builder.append(prior);
		
		return builder.toString();
	}
     

}
