package com.fp.persistence.pbpm.gene;

import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import java.sql.Timestamp;
import javax.persistence.Column;
import javax.persistence.EntityManager;
import java.io.Serializable;
import javax.persistence.Table;
import com.fp.dto.hb.HibernateBean;
import java.lang.reflect.Field;
import javax.persistence.Transient;

/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TBPMACTIVITIES*/
@Entity(name="TbpmActivities")
@Table(name="TBPMACTIVITIES")
public class TbpmActivities 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 TbpmActivities
*/
@EmbeddedId
private TbpmActivitiesKey pk;
@Column(name="USERCODE", nullable=true)

/**
* Codigo de usuario
*/
private String usercode;

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

/**
* Codigo de grupo de usuarios de un bpm
*/
private String groupcode;

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

/**
* Codigo de compania
*/
private Integer companycode;

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

/**
* Tipo de Asignacion
*/
private String action;

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

/**
* Variables adicionales
*/
private String aditionaldata;

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

/**
* Fecha de finalizacion
*/
private Timestamp completed;

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

/**
* Fecha de creacion
*/
private Timestamp created;

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

/**
* Tiempo estimado
*/
private Long expectedtime;

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

/**
* Identificador de la transaccion de la Tarea
*/
private String taskjournalid;

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

/**
* Respuesta
*/
private String response;

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

/**
* Codigo de la Regla asociada
*/
private String rulecode;

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

/**
* Codigo de la Regla adicional
*/
private String rulecodedefault;

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

/**
* Iniciada
*/
private Timestamp started;

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

/**
* Identificador de la Tarea
*/
private Long taskid;

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

/**
* Modulo
*/
private String module;

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

/**
* Transaccion
*/
private Long transaction;

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

/**
* Version de la transacion
*/
private Long version;

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

/**
* Codigo Auxiliar
*/
private String internalcode;

/**Contructor por defecto*/
public TbpmActivities(){
}
/**Contructor de TbpmActivities
@param pPk Clave Primaria del entity
*/
public TbpmActivities(TbpmActivitiesKey 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 TbpmActivities
*/
public static TbpmActivities find(EntityManager pEntityManager,TbpmActivitiesKey pKey) throws Exception{
    TbpmActivities obj = pEntityManager.find(TbpmActivities.class,pKey);
    return obj;
}
/**Entrega la Clave primaria de TbpmActivities
@return El objeto que referencia a la Clave primaria de TbpmActivities
*/
public TbpmActivitiesKey getPk(){
  return pk;
}
/**Fija un nuevo valor a la Clave primaria de TbpmActivities
@param pPk El objeto que referencia a la nueva Clave primaria de TbpmActivities
*/
public void setPk(TbpmActivitiesKey pPk){
  pk=pPk;
}
/**Obtiene el valor de usercode
@return valor de usercode*/
public String getUsercode(){
  return usercode;
}
/**Fija el valor de usercode
@param pUsercode nuevo Valor de usercode*/
public void setUsercode(String pUsercode){
  usercode=pUsercode;
}

/**Obtiene el valor de groupcode
@return valor de groupcode*/
public String getGroupcode(){
  return groupcode;
}
/**Fija el valor de groupcode
@param pGroupcode nuevo Valor de groupcode*/
public void setGroupcode(String pGroupcode){
  groupcode=pGroupcode;
}

/**Obtiene el valor de companycode
@return valor de companycode*/
public Integer getCompanycode(){
  return companycode;
}
/**Fija el valor de companycode
@param pCompanycode nuevo Valor de companycode*/
public void setCompanycode(Integer pCompanycode){
  companycode=pCompanycode;
}

/**Obtiene el valor de action
@return valor de action*/
public String getAction(){
  return action;
}
/**Fija el valor de action
@param pAction nuevo Valor de action*/
public void setAction(String pAction){
  action=pAction;
}

/**Obtiene el valor de aditionaldata
@return valor de aditionaldata*/
public String getAditionaldata(){
  return aditionaldata;
}
/**Fija el valor de aditionaldata
@param pAditionaldata nuevo Valor de aditionaldata*/
public void setAditionaldata(String pAditionaldata){
  aditionaldata=pAditionaldata;
}

/**Obtiene el valor de completed
@return valor de completed*/
public Timestamp getCompleted(){
  return completed;
}
/**Fija el valor de completed
@param pCompleted nuevo Valor de completed*/
public void setCompleted(Timestamp pCompleted){
  completed=pCompleted;
}

/**Obtiene el valor de created
@return valor de created*/
public Timestamp getCreated(){
  return created;
}
/**Fija el valor de created
@param pCreated nuevo Valor de created*/
public void setCreated(Timestamp pCreated){
  created=pCreated;
}

/**Obtiene el valor de expectedtime
@return valor de expectedtime*/
public Long getExpectedtime(){
  return expectedtime;
}
/**Fija el valor de expectedtime
@param pExpectedtime nuevo Valor de expectedtime*/
public void setExpectedtime(Long pExpectedtime){
  expectedtime=pExpectedtime;
}

/**Obtiene el valor de taskjournalid
@return valor de taskjournalid*/
public String getTaskjournalid(){
  return taskjournalid;
}
/**Fija el valor de taskjournalid
@param pTaskjournalid nuevo Valor de taskjournalid*/
public void setTaskjournalid(String pTaskjournalid){
  taskjournalid=pTaskjournalid;
}

/**Obtiene el valor de response
@return valor de response*/
public String getResponse(){
  return response;
}
/**Fija el valor de response
@param pResponse nuevo Valor de response*/
public void setResponse(String pResponse){
  response=pResponse;
}

/**Obtiene el valor de rulecode
@return valor de rulecode*/
public String getRulecode(){
  return rulecode;
}
/**Fija el valor de rulecode
@param pRulecode nuevo Valor de rulecode*/
public void setRulecode(String pRulecode){
  rulecode=pRulecode;
}

/**Obtiene el valor de rulecodedefault
@return valor de rulecodedefault*/
public String getRulecodedefault(){
  return rulecodedefault;
}
/**Fija el valor de rulecodedefault
@param pRulecodedefault nuevo Valor de rulecodedefault*/
public void setRulecodedefault(String pRulecodedefault){
  rulecodedefault=pRulecodedefault;
}

/**Obtiene el valor de started
@return valor de started*/
public Timestamp getStarted(){
  return started;
}
/**Fija el valor de started
@param pStarted nuevo Valor de started*/
public void setStarted(Timestamp pStarted){
  started=pStarted;
}

/**Obtiene el valor de taskid
@return valor de taskid*/
public Long getTaskid(){
  return taskid;
}
/**Fija el valor de taskid
@param pTaskid nuevo Valor de taskid*/
public void setTaskid(Long pTaskid){
  taskid=pTaskid;
}

/**Obtiene el valor de module
@return valor de module*/
public String getModule(){
  return module;
}
/**Fija el valor de module
@param pModule nuevo Valor de module*/
public void setModule(String pModule){
  module=pModule;
}

/**Obtiene el valor de transaction
@return valor de transaction*/
public Long getTransaction(){
  return transaction;
}
/**Fija el valor de transaction
@param pTransaction nuevo Valor de transaction*/
public void setTransaction(Long pTransaction){
  transaction=pTransaction;
}

/**Obtiene el valor de version
@return valor de version*/
public Long getVersion(){
  return version;
}
/**Fija el valor de version
@param pVersion nuevo Valor de version*/
public void setVersion(Long pVersion){
  version=pVersion;
}

/**Obtiene el valor de internalcode
@return valor de internalcode*/
public String getInternalcode(){
  return internalcode;
}
/**Fija el valor de internalcode
@param pInternalcode nuevo Valor de internalcode*/
public void setInternalcode(String pInternalcode){
  internalcode=pInternalcode;
}

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