package com.fp.hbm.persistence;

import java.io.Serializable;
import java.lang.reflect.Field;

import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;

import com.fp.dto.hb.HibernateBean;

/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla THBENTITY*/
@Entity(name="TgeneEntity")
@Table(name="TGENEENTITY")
public class TgeneEntity extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{
	/**
	* HashCode asociado con la Instancia
	*/
	@Transient
	private int hashValue = 0;
	/**
	* Version de la Clase
	*/
	private static final long serialVersionUID = 1L;
	/**
	* Clave primaria de la Entidad TEntity
	*/
	@EmbeddedId
	private TgeneEntityKey pk;
	/**
	* CAMPO PAC
	*/
	@Column(name="PAC", nullable=false)
	private String pac;

	/**
	* CAMPO JAVAEXTENDS
	*/
	@Column(name="JAVAEXTENDS", nullable=true)
	private String javaextends;

	/**
	* CAMPO JAVAIMPLEMENTS
	*/
	@Column(name="JAVAIMPLEMENTS", nullable=true)
	private String javaimplements;

	/**
	* CAMPO INMANUAL
	*/
	@Column(name="INMANUAL", nullable=true)
	private String inmanual;

	/**
	* CAMPO CACHE
	*/
	@Column(name="CACHE", nullable=true)
	private String cache;

	/**
	* CAMPO LOG
	*/
	@Column(name="LOG", nullable=true)
	private String log;
	
	/**
	* CAMPO CREATEREFERENCES
	*/
	@Column(name="CREATEREFERENCES", nullable=false)
	private String createreferences;

	/**
	* CAMPO OPTIMISTICLOCKING
	*/
	@Column(name="OPTIMISTICLOCKING", nullable=false)
	private String optimisticlocking;


	/**
	* CAMPO HISTORY
	*/
	@Column(name="HISTORY", nullable=false)
	private String history;

	/**
	* CAMPO AUTOIMPORT
	*/
	@Column(name="AUTOIMPORT", nullable=true)
	private String autoimport;

	/**
	* CAMPO PROJECT
	*/
	@Column(name="PROJECT", nullable=true)
	private String project;

	/**Contructor por defecto*/
	public TgeneEntity(){
	}
	/**Contructor de TEntity
	@param pPk Clave Primaria del entity
	@param pPac CAMPO PAC
	@param pJavaextends CAMPO JAVAEXTENDS
	@param pCreatereferences CAMPO CREATEREFERENCES
	@param pOptimisticlocking CAMPO OPTIMISTICLOCKING
	@param pHistory CAMPO HISTORY
	@param pAutoimport CAMPO AUTOIMPORT
	@param pProject CAMPO PROJECT
	*/
	public TgeneEntity(TgeneEntityKey pPk,String pPac,String pJavaextends,String pCreatereferences,String pOptimisticlocking,String pHistory,String pAutoimport,String pProject){
	 this();
	 pk=pPk;
	 pac=pPac;
	 javaextends=pJavaextends;
	 createreferences=pCreatereferences;
	 optimisticlocking=pOptimisticlocking;
	 history=pHistory;
	 autoimport=pAutoimport;
	 project=pProject;
	}
	/**Entrega la Clave primaria de TEntity
	@return El objeto que referencia a la Clave primaria de TEntity
	*/
	public TgeneEntityKey getPk(){
	  return pk;
	}
	/**Fija un nuevo valor a la Clave primaria de TEntity
	@param pPk El objeto que referencia a la nueva Clave primaria de TEntity
	*/
	public void setPk(TgeneEntityKey pPk){
	  pk=pPk;
	}
	/**Obtiene el valor de pac
	@return valor de pac*/
	public String getPac(){
	  return pac;
	}
	/**Fija el valor de pac
	@param pPac nuevo Valor de pac*/
	public void setPac(String pPac){
	  pac=pPac;
	}

	/**Obtiene el valor de javaextends
	@return valor de javaextends*/
	public String getJavaextends(){
	  return javaextends;
	}
	/**Fija el valor de javaextends
	@param pJavaextends nuevo Valor de javaextends*/
	public void setJavaextends(String pJavaextends){
	  javaextends=pJavaextends;
	}

	/**Obtiene el valor de javaimplements
	@return valor de javaimplements*/
	public String getJavaimplements(){
	  return javaimplements;
	}
	/**Fija el valor de javaimplements
	@param pJavaimplements nuevo Valor de javaimplements*/
	public void setJavaimplements(String pJavaimplements){
	  javaimplements=pJavaimplements;
	}

	/**Obtiene el valor de inmanual
	@return valor de insertdml*/
	public String getInmanual(){
	  return inmanual;
	}
	/**Fija el valor de insertdml
	@param pInsertdml nuevo Valor de inmanual*/
	public void setInmanual(String pInmanual){
	  inmanual=pInmanual;
	}

	/**Obtiene el valor de cache
	@return valor de cache*/
	public String getCache(){
	  return cache;
	}
	/**Fija el valor de cache
	@param pInsertdml nuevo Valor de cache*/
	public void setCache(String pCache){
		cache=pCache;
	}
	
	/**Obtiene el valor de log
	@return valor de log*/
	public String getLog(){
	  return log;
	}
	/**Fija el valor de log
	@param pInsertdml nuevo Valor de log*/
	public void setLog(String pLog){
		log=pLog;
	}
		
	/**Obtiene el valor de createreferences
	@return valor de createreferences*/
	public String getCreatereferences(){
	  return createreferences;
	}
	/**Fija el valor de createreferences
	@param pCreatereferences nuevo Valor de createreferences*/
	public void setCreatereferences(String pCreatereferences){
	  createreferences=pCreatereferences;
	}

	/**Obtiene el valor de optimisticlocking
	@return valor de optimisticlocking*/
	public String getOptimisticlocking(){
	  return optimisticlocking;
	}
	/**Fija el valor de optimisticlocking
	@param pOptimisticlocking nuevo Valor de optimisticlocking*/
	public void setOptimisticlocking(String pOptimisticlocking){
	  optimisticlocking=pOptimisticlocking;
	}


	/**Obtiene el valor de history
	@return valor de history*/
	public String getHistory(){
	  return history;
	}
	/**Fija el valor de history
	@param pHistory nuevo Valor de history*/
	public void setHistory(String pHistory){
	  history=pHistory;
	}

	/**Obtiene el valor de autoimport
	@return valor de autoimport*/
	public String getAutoimport(){
	  return autoimport;
	}
	/**Fija el valor de autoimport
	@param pAutoimport nuevo Valor de autoimport*/
	public void setAutoimport(String pAutoimport){	  
	  autoimport=pAutoimport;
	}

	/**Obtiene el valor de project
	@return valor de project*/
	public String getProject(){
	  return project;
	}
	/**Fija el valor de project
	@param pProject nuevo Valor de project*/
	public void setProject(String pProject){
	  project=pProject;
	}

	/**Implementacion de la comparaci�n de la entidad TEntity
	@param rhs Elemento de Comparaci�n
	@return el resultado de la comparaci�n
	*/
	public boolean equals(Object rhs){
	    if (rhs == null)return false;
	    if (! (rhs instanceof TgeneEntity))return false;
	    TgeneEntity that = (TgeneEntity) rhs;
	    if (this.getPk() == null || that.getPk() == null)
	        return false;
	    return (this.getPk().equals(that.getPk()));
	}
	/**Implementacion del metodo hashCode de la la entidad TEntity
	@return el hashCode la instancia
	*/
	public int hashCode()    {
	    if (this.hashValue == 0){
	        int result = 17;
	        if (this.getPk() == null){
	            result = super.hashCode();
	        }else{
	            result = this.getPk().hashCode();
	        }
	        this.hashValue = result;
	    }
	    return this.hashValue;
	}
	/**Implementacion toString
	*/
	public String toString() {
		Field[]fs=this.getClass().getDeclaredFields();
		String data="";
		for(Field f:fs){
		 try{	
		 String name=f.getName();
	   if(f.getType().getName().compareTo("java.util.Set")==0)continue;
		 if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue;
			data+=name+"="+f.get(this)+";";
		 }catch(Exception e){
			 continue;
		 }
			}
			if(data.compareTo("")==0){
			data=super.toString();
			}
		return data;
		}
	/**Implementacion de la creaci�n de un bean en blancoTEntity
	*/
	public Object createInstance(){
	 TgeneEntity instance=new TgeneEntity();	
	 instance.setPk(new TgeneEntityKey());
	 return instance;
	}
	public Object cloneMe() throws CloneNotSupportedException{
	  TgeneEntity p=(TgeneEntity)this.clone();
	  p.setPk((TgeneEntityKey)this.pk.cloneMe());
	  return p;
	}
}
