package com.k_int.aggr2.mimsy.data.hdo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Lob;
import javax.persistence.PrimaryKeyJoinColumn;
import javax.persistence.Table;

import org.hibernate.Session;

import com.k_int.mimsy.ref.DataException;
import com.k_int.mimsy.ref.MediaRecordTypeEnum;

@Entity
@Table(name="CIIM_DOC_MEDIA_DESCRIPTION")
@PrimaryKeyJoinColumn(name="MEDIA_DESCRIPTION_FK")
public class CIIMDocMediaDescriptionHDO extends CIIMMediaDescriptionHDO
{
	private static final long 		serialVersionUID = 1L;
	private Byte[] loadedText;
	
	protected CIIMDocMediaDescriptionHDO(){;}
	
	@Lob
	@Column(name="MEDIA_LOADED_TEXT", length = Integer.MAX_VALUE - 1)
	public Byte[] getLoadedText()
	{
		return loadedText;
	}
	
	public void setLoadedText(Byte[] loadedText)
	{
		this.loadedText = loadedText;
	}
	
	public static CIIMDocMediaDescriptionHDO lookupOrCreate(Session session, String name, String location, Long id)throws DataException
	{
		CIIMDocMediaDescriptionHDO result = null;
		
		if(id != null)
		{
			result = (CIIMDocMediaDescriptionHDO) CIIMMediaDescriptionHDO.lookupById(session, id);
		}
		if(result == null && name != null)
		{
			result = (CIIMDocMediaDescriptionHDO) CIIMMediaDescriptionHDO.lookupByName(session, name);
		}
		
		if (result == null) 
		{
			try
			{
				result = new CIIMDocMediaDescriptionHDO(); 
				result.setName(name);
				result.setLocation(location);
				result.setMediaType(MediaRecordTypeEnum.DOCUMENT);
				
				session.save(result);
				session.flush();				 
			}
			catch(Exception e)
			{
				throw new DataException(e);
			}			 
		}
		return result;
	}
}
