package com.fp.persistence.pviaticos.solicitud;

import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.Column;
import javax.persistence.EntityManager;
import javax.persistence.GeneratedValue;

import java.io.Serializable;

import javax.persistence.Table;

import com.fp.dto.hb.HibernateBean;

import javax.persistence.Version;

import java.lang.reflect.Field;

import javax.persistence.Transient;

import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;

import java.sql.Date;

/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla VIA_SOL_COMENTARIOS*/
@Entity(name="ViaSolicitudComentarios")
@Table(name="VIA_SOL_COMENTARIOS")
public class ViaSolicitudComentarios 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 ViaSolicitudComentarios
*/
@EmbeddedId
@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = {
        @Parameter(name = "sql", value = "select coalesce(max(COD_SECUENCIA),0)+1 from VIA_SOL_COMENTARIOS "
                + "where COD_SOLICITUD=:cod_solicitud "), @Parameter(name = "type", value = "java.lang.Integer"),
        @Parameter(name = "param", value = "cod_solicitud,pk.cod_solicitud"), @Parameter(name = "field", value = "cod_secuencia") })
@GeneratedValue(generator = "seq_id")
private ViaSolicitudComentariosKey pk;
@Column(name="COD_ESTADO", nullable=true)

/**
* Codigo de estatus de la solicitud de viaticos
*/
private String cod_estado;

@Column(name="COD_USUARIO", nullable=true)

/**
* Campo para el codigo del funcionario que ingresa el comentario
*/
private String cod_usuario;

@Column(name="TXT_ACTIVIDAD", nullable=true)

/**
* Campo para el ingreso del nombre de la actividad
*/
private String txt_actividad;

@Column(name="FEC_COMENTARIO", nullable=true)

/**
* Campo para registrar la fecha del comentario
*/
private Date fec_comentario;

@Column(name="FEC_HORA", nullable=true)

/**
* Campo para el registro de la hora del comentario
*/
private String fec_hora;

@Column(name="TXT_COMENTARIO", nullable=true)

/**
* Campo para el registro de los comentarios
*/
private String txt_comentario;

/**Contructor por defecto*/
public ViaSolicitudComentarios(){
}
/**Contructor de ViaSolicitudComentarios
@param pPk Clave Primaria del entity
*/
public ViaSolicitudComentarios(ViaSolicitudComentariosKey pPk){
 this();
 pk=pPk;
}
/**
* Metodo que entrega datos de la tabla dada la clave primaria.
* @param pEntityManager referencia de la session a obtener datos del bean.
* @param pKey Caleve primaria del bean.
* @return ViaSolicitudComentarios
*/
public static ViaSolicitudComentarios find(EntityManager pEntityManager,ViaSolicitudComentariosKey pKey) throws Exception{
    ViaSolicitudComentarios obj = pEntityManager.find(ViaSolicitudComentarios.class,pKey);
    return obj;
}
/**Entrega la Clave primaria de ViaSolicitudComentarios
@return El objeto que referencia a la Clave primaria de ViaSolicitudComentarios
*/
public ViaSolicitudComentariosKey getPk(){
  return pk;
}
/**Fija un nuevo valor a la Clave primaria de ViaSolicitudComentarios
@param pPk El objeto que referencia a la nueva Clave primaria de ViaSolicitudComentarios
*/
public void setPk(ViaSolicitudComentariosKey pPk){
  pk=pPk;
}
/**Obtiene el valor de cod_estado
@return valor de cod_estado*/
public String getCod_estado(){
  return cod_estado;
}
/**Fija el valor de cod_estado
@param pCod_estado nuevo Valor de cod_estado*/
public void setCod_estado(String pCod_estado){
  cod_estado=pCod_estado;
}

/**Obtiene el valor de cod_usuario
@return valor de cod_usuario*/
public String getCod_usuario(){
  return cod_usuario;
}
/**Fija el valor de cod_empleado
@param pCod_usuario nuevo Valor de cod_usuario*/
public void setCod_usuario(String pCod_usuario){
  cod_usuario=pCod_usuario;
}

/**Obtiene el valor de txt_actividad
@return valor de txt_actividad*/
public String getTxt_actividad(){
  return txt_actividad;
}
/**Fija el valor de txt_actividad
@param pTxt_actividad nuevo Valor de txt_actividad*/
public void setTxt_actividad(String pTxt_actividad){
  txt_actividad=pTxt_actividad;
}

/**Obtiene el valor de fec_comentario
@return valor de fec_comentario*/
public Date getFec_comentario(){
  return fec_comentario;
}
/**Fija el valor de fec_comentario
@param pFec_comentario nuevo Valor de fec_comentario*/
public void setFec_comentario(Date pFec_comentario){
  fec_comentario=pFec_comentario;
}

/**Obtiene el valor de fec_hora
@return valor de fec_hora*/
public String getFec_hora(){
  return fec_hora;
}
/**Fija el valor de fec_hora
@param pFec_hora nuevo Valor de fec_hora*/
public void setFec_hora(String pFec_hora){
  fec_hora=pFec_hora;
}

/**Obtiene el valor de txt_comentario
@return valor de txt_comentario*/
public String getTxt_comentario(){
  return txt_comentario;
}
/**Fija el valor de txt_comentario
@param pTxt_comentario nuevo Valor de txt_comentario*/
public void setTxt_comentario(String pTxt_comentario){
  txt_comentario=pTxt_comentario;
}

public boolean equals(Object rhs){
    if (rhs == null)return false;
    if (! (rhs instanceof ViaSolicitudComentarios))return false;
    ViaSolicitudComentarios that = (ViaSolicitudComentarios) rhs;
    if (this.getPk() == null || that.getPk() == null)
        return false;
    return (this.getPk().equals(that.getPk()));
}
/**Implementacion del metodo hashCode de la la entidad ViaSolicitudComentarios
@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 creacion de un bean en blanco ViaSolicitudComentarios
*/
public Object createInstance(){
 ViaSolicitudComentarios instance=new ViaSolicitudComentarios();	
 instance.setPk(new ViaSolicitudComentariosKey());
 return instance;
}
/**Clona la entidad ViaSolicitudComentarios
@see com.fp.dto.hb.HibernateBean#cloneMe()
*/
public Object cloneMe() throws CloneNotSupportedException{
  ViaSolicitudComentarios p=(ViaSolicitudComentarios)this.clone();
  p.setPk((ViaSolicitudComentariosKey)this.pk.cloneMe());
  return p;
}
}
