package com.k_int.aggr2.mimsy.data.hdo;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

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.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.MapKeyManyToMany;

@Entity
@Table(name="CIIM_DATA_CONTEXT_METADATA")
public class CIIMDataContextMetadataHDO implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private Long id;
	private Boolean featured;
	private Integer boost;
	private Map<SchemaElementHDO, SchemaOptionValueHDO> options = new HashMap<SchemaElementHDO, SchemaOptionValueHDO>(); 
	
	public CIIMDataContextMetadataHDO()
	{
		
	}
	
	@Id
	@Column(name="ID")
	@GeneratedValue(strategy=GenerationType.AUTO)
	public Long getId() 
	{
		return id;
	}
	
	protected void setId(Long id)
	{ 
		this.id = id;
	}
	
	public void setFeatured(Boolean featured)
	{
		this.featured=featured;
	}
	
	@Column(name="FEATURED")
	public Boolean getFeatured()
	{
		return featured;
	}
	
	public void setBoost(Integer boost)
	{
		this.boost=boost;
	}
	
	@Column(name="BOOST")
	public Integer getBoost()
	{
		return boost;
	}
	
	@ManyToMany
	@JoinTable(name = "DATA_CONTEXT_SCHEMA_VALUES_LINK")	
	@MapKeyManyToMany(targetEntity=SchemaElementHDO.class, joinColumns = @JoinColumn(name="options_KEY"))
	@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DELETE_ORPHAN})
	public Map<SchemaElementHDO, SchemaOptionValueHDO> getOptions() 
	{
	    return options;
	}
	
	public void setOptions(Map<SchemaElementHDO, SchemaOptionValueHDO> options) 
	{
	    this.options = options;
	}
}
