package com.fp.persistence.parmas.soli;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Column;
import javax.persistence.EntityManager;

import java.io.Serializable;

import javax.persistence.Table;

import com.fp.dto.hb.HibernateBean;
import com.fp.dto.hb.Log;

import java.lang.reflect.Field;

import javax.persistence.Transient;

import java.sql.Date;

/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMDETREPDESTRUIRARMAS*/
@Entity(name="TarmDetRepDestruirArmas")
@Table(name="TARMDETREPDESTRUIRARMAS")
public class TarmDetRepDestruirArmas extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log {
/**
* 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 TarmDetRepDestruirArmas
*/
@Id
@Column(name="CDETREPDESTRUIRARMAS" ,nullable=false, updatable=false)
private Integer pk;
@Column(name="CREPORTE", nullable=false)

/**
* Codigo del reporte
*/
private Integer creporte;

@Column(name="CDECOMISOARMA", nullable=false)

/**
* Codigo de decomiso arma
*/
private String cdecomisoarma;

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

/**
* Clase de arma o explosivo
*/
private String clase;

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

/**
* Tipo de arma o explosivo
*/
private String tipo;

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

/**
* Calibre del arma
*/
private String calibre;

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

/**
* Marca del arma o explosivo
*/
private String marca;

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

/**
* Serie del arma o explosivo
*/
private String serie;

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

/**
* Cantidad de unidades del arma o explosivo
*/
private String cantidad;

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

/**
* Unidad de medida del arma o explosivo
*/
private String unidad;

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

/**
* Fecha de decomiso del arma o explosivo
*/
private Date fdecomiso;

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

/**
* Propietario del arma o explosivo
*/
private String propietario;

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

/**
* Numero de recibo con el que se incauto el arma o explosivo
*/
private String nrecibo;

/**Contructor por defecto*/
public TarmDetRepDestruirArmas(){
}
/**Contructor de TarmDetRepDestruirArmas
@param pPk Clave Primaria del entity
@param pCreporte Codigo del reporte
@param pCdecomisoarma Codigo de decomiso arma
*/
public TarmDetRepDestruirArmas(Integer pPk,Integer pCreporte,String pCdecomisoarma){
 this();
 pk=pPk;
 creporte=pCreporte;
 cdecomisoarma=pCdecomisoarma;
}
/**
* 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 TarmDetRepDestruirArmas
*/
public static TarmDetRepDestruirArmas find(EntityManager pEntityManager,Object pKey) throws Exception{
    TarmDetRepDestruirArmas obj = pEntityManager.find(TarmDetRepDestruirArmas.class,pKey);
    return obj;
}
/**Entrega la Clave primaria de TarmDetRepDestruirArmas
@return El objeto que referencia a la Clave primaria de TarmDetRepDestruirArmas
*/
public Integer getPk(){
  return pk;
}
/**Fija un nuevo valor a la Clave primaria de TarmDetRepDestruirArmas
@param pPk El objeto que referencia a la nueva Clave primaria de TarmDetRepDestruirArmas
*/
public void setPk(Integer pPk){
  pk=pPk;
}
/**Obtiene el valor de creporte
@return valor de creporte*/
public Integer getCreporte(){
  return creporte;
}
/**Fija el valor de creporte
@param pCreporte nuevo Valor de creporte*/
public void setCreporte(Integer pCreporte){
  creporte=pCreporte;
}

/**Obtiene el valor de cdecomisoarma
@return valor de cdecomisoarma*/
public String getCdecomisoarma(){
  return cdecomisoarma;
}
/**Fija el valor de cdecomisoarma
@param pCdecomisoarma nuevo Valor de cdecomisoarma*/
public void setCdecomisoarma(String pCdecomisoarma){
  cdecomisoarma=pCdecomisoarma;
}

/**Obtiene el valor de clase
@return valor de clase*/
public String getClase(){
  return clase;
}
/**Fija el valor de clase
@param pClase nuevo Valor de clase*/
public void setClase(String pClase){
  clase=pClase;
}

/**Obtiene el valor de tipo
@return valor de tipo*/
public String getTipo(){
  return tipo;
}
/**Fija el valor de tipo
@param pTipo nuevo Valor de tipo*/
public void setTipo(String pTipo){
  tipo=pTipo;
}

/**Obtiene el valor de calibre
@return valor de calibre*/
public String getCalibre(){
  return calibre;
}
/**Fija el valor de calibre
@param pCalibre nuevo Valor de calibre*/
public void setCalibre(String pCalibre){
  calibre=pCalibre;
}

/**Obtiene el valor de marca
@return valor de marca*/
public String getMarca(){
  return marca;
}
/**Fija el valor de marca
@param pMarca nuevo Valor de marca*/
public void setMarca(String pMarca){
  marca=pMarca;
}

/**Obtiene el valor de serie
@return valor de serie*/
public String getSerie(){
  return serie;
}
/**Fija el valor de serie
@param pSerie nuevo Valor de serie*/
public void setSerie(String pSerie){
  serie=pSerie;
}

/**Obtiene el valor de cantidad
@return valor de cantidad*/
public String getCantidad(){
  return cantidad;
}
/**Fija el valor de cantidad
@param pCantidad nuevo Valor de cantidad*/
public void setCantidad(String pCantidad){
  cantidad=pCantidad;
}

/**Obtiene el valor de unidad
@return valor de unidad*/
public String getUnidad(){
  return unidad;
}
/**Fija el valor de unidad
@param pUnidad nuevo Valor de unidad*/
public void setUnidad(String pUnidad){
  unidad=pUnidad;
}

/**Obtiene el valor de fdecomiso
@return valor de fdecomiso*/
public Date getFdecomiso(){
  return fdecomiso;
}
/**Fija el valor de fdecomiso
@param pFdecomiso nuevo Valor de fdecomiso*/
public void setFdecomiso(Date pFdecomiso){
  fdecomiso=pFdecomiso;
}

/**Obtiene el valor de propietario
@return valor de propietario*/
public String getPropietario(){
  return propietario;
}
/**Fija el valor de propietario
@param pPropietario nuevo Valor de propietario*/
public void setPropietario(String pPropietario){
  propietario=pPropietario;
}

/**Obtiene el valor de nrecibo
@return valor de nrecibo*/
public String getNrecibo(){
  return nrecibo;
}
/**Fija el valor de nrecibo
@param pNrecibo nuevo Valor de nrecibo*/
public void setNrecibo(String pNrecibo){
  nrecibo=pNrecibo;
}

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