package com.k_int.aggr2.mimsy.data.hdo;

import javax.persistence.Column;
import javax.persistence.Entity;
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_IMG_MEDIA_DESCRIPTION")
@PrimaryKeyJoinColumn(name="MEDIA_DESCRIPTION_FK")
public class CIIMImgMediaDescriptionHDO extends CIIMMediaDescriptionHDO
{
	private static final long 		serialVersionUID = 1L;
	
	private Long height;
	private Long width;
	
	protected CIIMImgMediaDescriptionHDO(){;}
	
	protected CIIMImgMediaDescriptionHDO(Long height, Long width)
	{
		this.height = height;
		this.width = width;
	}
	
		
	@Column(name="HEIGHT")
	public Long getHeight() 
	{
		return height;
	}
	
	public void setHeight(Long height) 
	{
		this.height = height;
	}
	
	@Column(name="WIDTH")
	public Long getWidth() 
	{
		return width;
	}
	
	public void setWidth(Long width) 
	{
		this.width = width;
	}
	
	public static CIIMImgMediaDescriptionHDO lookupOrCreate(Session session, String name, String location, Long id, Long height, Long width)throws DataException
	{
		CIIMImgMediaDescriptionHDO result = null;
		
		if(id != null)
		{
			result = (CIIMImgMediaDescriptionHDO) CIIMMediaDescriptionHDO.lookupById(session, id);
		}
		if(result == null && name != null)
		{
			result = (CIIMImgMediaDescriptionHDO) CIIMMediaDescriptionHDO.lookupByName(session, name);
		}
		
		if(result == null)
		{
			try
			{
				result = new CIIMImgMediaDescriptionHDO(height, width); 
				result.setName(name);
				result.setLocation(location);
				result.setMediaType(MediaRecordTypeEnum.IMAGE);
				
				session.save(result);
				session.flush();				 
			}
			catch(Exception e)
			{
				throw new DataException(e);
			}			 
		}
		return result;
	}
}
