package com.fitbank.hb.persistence.uci;

import java.io.Serializable;
import java.lang.reflect.Field;
import com.fitbank.common.TransportBean;

/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TDISPOSITIVO*/
public class Tdevice implements Serializable,TransportBean,Cloneable{
/** Nombre de la Tabla TDISPOSITIVO */
public static final String TABLE_NAME = "TDISPOSITIVO";
/** HashCode asociado con la Instancia*/
private int hashValue = 0;
/** Version de la Clase*/
private static final long serialVersionUID = 1L;
/**
* Clave primaria de la Entidad Tdevice
*/
private TdeviceKey pk;
/**
* Valido para la red de cajeros. A=ATM, E=EDC, C=Controlador
*/
private String tipodispositivo;

/**
* Valido para la red de cajeros. Identifica el codigo de unidad logica (LUNO dentro de la mensajeria PACE)
*/
private String unidadlogica;

/**
* Valido para la red de cajeros. Codigo de terminal para cuando el dispositivo es un cajero automatico
*/
private String cterminal;

/**
* Este campo indica si el dispositivo esta ocupado 1 o si esta libre 0
*/
private String enproceso;

/**
* Codigo del usuario que esta ocupando el dispositivo
*/
private String cusuario;

/**
* Parametros para el dispositivo que dependen del controlador
*/
private String parametros;

/**
* Codigo IP que identifica el Servidor
*/
private String cservidoraplicacion;

/**
* Codigo del Tipo de Controlador
*/
private String ctipocontrolador;

/**
* Indica si el control del dispositivo se instancia solamente en un servidor o no
*/
private String exclusiva;

/**
* Marca si el dispositivo esta en linea (conectado) o no
*/
private String enlinea;

/**
* Indica si el dispositivo trabajara en paralelo con otro sistema o no
*/
private String paralelo;

/**
* Indica si el dispositivo esta siendo utilizado en modo exclusivo o no
*/
private String modoexclusivo;

/**
* Criterio de agrupamiento de dispositivos
*/
private String agrupamiento;

/**
* Indicador de si el Dispositivo debe ser iniciado automaticamente cuando sube UCI
*/
private String iniciar;

/**
* Manejo de optimistic loking
*/
private Integer versioncontrol;

/**Contructor por defecto*/
public Tdevice(){}
/**Contructor de Tdevice
@param pPk Clave Primaria del entity
@param pTipodispositivo Valido para la red de cajeros. A=ATM, E=EDC, C=Controlador
*/
public Tdevice(TdeviceKey pPk,String pTipodispositivo){
 pk=pPk;
 tipodispositivo=pTipodispositivo;
}
/**Entrega la Clave primaria de Tdevice
@return El objeto que referencia a la Clave primaria de Tdevice
*/
public TdeviceKey getPk(){
  return pk;
}
/**Fija un nuevo valor a la Clave primaria de Tdevice
@param pPk El objeto que referencia a la nueva Clave primaria de Tdevice
*/
public void setPk(TdeviceKey pPk){
  pk=pPk;
}
public static final String TIPODISPOSITIVO="TIPODISPOSITIVO";
/**Obtiene el valor de tipodispositivo
@return valor de tipodispositivo*/
public String getTipodispositivo(){
  return tipodispositivo;
}
/**Fija el valor de tipodispositivo
@param pTipodispositivo nuevo Valor de tipodispositivo*/
public void setTipodispositivo(String pTipodispositivo){
  tipodispositivo=pTipodispositivo;
}

public static final String UNIDADLOGICA="UNIDADLOGICA";
/**Obtiene el valor de unidadlogica
@return valor de unidadlogica*/
public String getUnidadlogica(){
  return unidadlogica;
}
/**Fija el valor de unidadlogica
@param pUnidadlogica nuevo Valor de unidadlogica*/
public void setUnidadlogica(String pUnidadlogica){
  unidadlogica=pUnidadlogica;
}

public static final String CTERMINAL="CTERMINAL";
/**Obtiene el valor de cterminal
@return valor de cterminal*/
public String getCterminal(){
  return cterminal;
}
/**Fija el valor de cterminal
@param pCterminal nuevo Valor de cterminal*/
public void setCterminal(String pCterminal){
  cterminal=pCterminal;
}

public static final String ENPROCESO="ENPROCESO";
/**Obtiene el valor de enproceso
@return valor de enproceso*/
public String getEnproceso(){
  return enproceso;
}
/**Fija el valor de enproceso
@param pEnproceso nuevo Valor de enproceso*/
public void setEnproceso(String pEnproceso){
  enproceso=pEnproceso;
}

public static final String CUSUARIO="CUSUARIO";
/**Obtiene el valor de cusuario
@return valor de cusuario*/
public String getCusuario(){
  return cusuario;
}
/**Fija el valor de cusuario
@param pCusuario nuevo Valor de cusuario*/
public void setCusuario(String pCusuario){
  cusuario=pCusuario;
}

public static final String PARAMETROS="PARAMETROS";
/**Obtiene el valor de parametros
@return valor de parametros*/
public String getParametros(){
  return parametros;
}
/**Fija el valor de parametros
@param pParametros nuevo Valor de parametros*/
public void setParametros(String pParametros){
  parametros=pParametros;
}

public static final String CSERVIDORAPLICACION="CSERVIDORAPLICACION";
/**Obtiene el valor de cservidoraplicacion
@return valor de cservidoraplicacion*/
public String getCservidoraplicacion(){
  return cservidoraplicacion;
}
/**Fija el valor de cservidoraplicacion
@param pCservidoraplicacion nuevo Valor de cservidoraplicacion*/
public void setCservidoraplicacion(String pCservidoraplicacion){
  cservidoraplicacion=pCservidoraplicacion;
}

public static final String CTIPOCONTROLADOR="CTIPOCONTROLADOR";
/**Obtiene el valor de ctipocontrolador
@return valor de ctipocontrolador*/
public String getCtipocontrolador(){
  return ctipocontrolador;
}
/**Fija el valor de ctipocontrolador
@param pCtipocontrolador nuevo Valor de ctipocontrolador*/
public void setCtipocontrolador(String pCtipocontrolador){
  ctipocontrolador=pCtipocontrolador;
}

public static final String EXCLUSIVA="EXCLUSIVA";
/**Obtiene el valor de exclusiva
@return valor de exclusiva*/
public String getExclusiva(){
  return exclusiva;
}
/**Fija el valor de exclusiva
@param pExclusiva nuevo Valor de exclusiva*/
public void setExclusiva(String pExclusiva){
  exclusiva=pExclusiva;
}

public static final String ENLINEA="ENLINEA";
/**Obtiene el valor de enlinea
@return valor de enlinea*/
public String getEnlinea(){
  return enlinea;
}
/**Fija el valor de enlinea
@param pEnlinea nuevo Valor de enlinea*/
public void setEnlinea(String pEnlinea){
  enlinea=pEnlinea;
}

public static final String PARALELO="PARALELO";
/**Obtiene el valor de paralelo
@return valor de paralelo*/
public String getParalelo(){
  return paralelo;
}
/**Fija el valor de paralelo
@param pParalelo nuevo Valor de paralelo*/
public void setParalelo(String pParalelo){
  paralelo=pParalelo;
}

public static final String MODOEXCLUSIVO="MODOEXCLUSIVO";
/**Obtiene el valor de modoexclusivo
@return valor de modoexclusivo*/
public String getModoexclusivo(){
  return modoexclusivo;
}
/**Fija el valor de modoexclusivo
@param pModoexclusivo nuevo Valor de modoexclusivo*/
public void setModoexclusivo(String pModoexclusivo){
  modoexclusivo=pModoexclusivo;
}

public static final String AGRUPAMIENTO="AGRUPAMIENTO";
/**Obtiene el valor de agrupamiento
@return valor de agrupamiento*/
public String getAgrupamiento(){
  return agrupamiento;
}
/**Fija el valor de agrupamiento
@param pAgrupamiento nuevo Valor de agrupamiento*/
public void setAgrupamiento(String pAgrupamiento){
  agrupamiento=pAgrupamiento;
}

public static final String INICIAR="INICIAR";
/**Obtiene el valor de iniciar
@return valor de iniciar*/
public String getIniciar(){
  return iniciar;
}
/**Fija el valor de iniciar
@param pIniciar nuevo Valor de iniciar*/
public void setIniciar(String pIniciar){
  iniciar=pIniciar;
}

public static final String VERSIONCONTROL="VERSIONCONTROL";
/**Obtiene el valor de versioncontrol
@return valor de versioncontrol*/
public Integer getVersioncontrol(){
  return versioncontrol;
}
/**Fija el valor de versioncontrol
@param pVersioncontrol nuevo Valor de versioncontrol*/
public void setVersioncontrol(Integer pVersioncontrol){
  versioncontrol=pVersioncontrol;
}

/**Implementacion de la comparacion de la entidad Tdevice
@param rhs Elemento de Comparacion
@return el resultado de la comparacion
*/
public boolean equals(Object rhs){
    if (rhs == null){return false;}
    if (! (rhs instanceof Tdevice)){return false;}
    Tdevice that = (Tdevice) rhs;
    if (this.getPk() == null || that.getPk() == null){
        return false;}
    return (this.getPk().equals(that.getPk()));
}
/**Implementaci?n del metodo hashCode de la la entidad Tdevice
@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;
}
/**Implementaci?n toString
*/
public String toString() {
	Field[]fs=this.getClass().getDeclaredFields();
	String data="";
	for(Field f:fs){
	 try{	
	 String name=f.getName();
	 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;
	}
/**Implementaci?n de la creaci?n de un bean en blancoTdevice
*/
public Object createInstance() throws Exception{
 Tdevice instance=new Tdevice();	
 instance.setPk(new TdeviceKey());
 return instance;
}
public Object cloneMe() throws Exception{
  Tdevice p=(Tdevice)this.clone();
  p.setPk((TdeviceKey)this.pk.cloneMe());
  return p;
}
}
