/* (non-Javadoc)
  * @see mx.com.bbva.bancomer.commons.business.BbvaIBusinessObject#createCommand(mx.com.bbva.bancomer.commons.model.dto.BbvaAbstractDataTransferObject)
  */
 @Override
 public <T extends BbvaAbstractDataTransferObject> T createCommand(
     T bbvaAbstractDataTransferObject) {
   logger.debug("Entrada createCommand          -- OK");
   logger.debug("Datos de Entrada createCommand -- " + bbvaAbstractDataTransferObject.toString());
   UsuarioVO usuarioVO = ((UsuarioDTO) bbvaAbstractDataTransferObject).getUsuarioVO();
   String userName = usuarioVO.getNombreUsuario();
   int idPerfil = usuarioVO.getIdPerfil();
   int idEstatus = usuarioVO.getEstatusUsuario();
   usuarioVO = readCommand(usuarioVO);
   ((UsuarioDTO) bbvaAbstractDataTransferObject).getUsuarioVO().setIdPerfil(idPerfil);
   ((UsuarioDTO) bbvaAbstractDataTransferObject).getUsuarioVO().setNombreUsuario(userName);
   ((UsuarioDTO) bbvaAbstractDataTransferObject).getUsuarioVO().setEstatusUsuario(idEstatus);
   if (usuarioVO == null) {
     SqlSession session = MapeadorSessionFactory.getSqlSessionFactory().openSession();
     MapUsuario mapUsuario = session.getMapper(MapUsuario.class);
     try {
       mapUsuario.crearUsuario(((UsuarioDTO) bbvaAbstractDataTransferObject).getUsuarioVO());
       session.commit();
     } catch (Exception ex) {
       session.rollback();
       ex.printStackTrace();
       bbvaAbstractDataTransferObject.setErrorCode("SQL-001");
       bbvaAbstractDataTransferObject.setErrorDescription(ex.getMessage());
     } finally {
       session.close();
     }
     logger.debug("Datos de Salida invoke -- " + bbvaAbstractDataTransferObject.toString());
     logger.debug("Salida invoke          -- OK");
   } else {
     bbvaAbstractDataTransferObject.setErrorCode("0001");
     bbvaAbstractDataTransferObject.setErrorDescription("El usuario ya existe");
   }
   return bbvaAbstractDataTransferObject;
 }
  /**
   * Read command.
   *
   * @param usuarioVO the usuario vo
   * @return the usuario vo
   */
  private UsuarioVO readCommand(UsuarioVO usuarioVO) {
    logger.debug("Entrada createCommand          -- OK");
    usuarioVO.setIdPerfil(null);
    usuarioVO.setNombreUsuario(null);
    usuarioVO.setEstatusUsuario(null);
    logger.debug("Datos de Entrada createCommand -- " + usuarioVO.toString());
    UsuarioVO result = null;
    try {
      SqlSession session = MapeadorSessionFactory.getSqlSessionFactory().openSession();
      MapUsuario mapUsuario = session.getMapper(MapUsuario.class);
      if (usuarioVO != null && usuarioVO.getIdCveUsuario() != null) {
        logger.debug(":::::::::::::::::::::" + usuarioVO.getIdCveUsuario());
      }
      try {
        result = mapUsuario.obtenerUsuarios(usuarioVO).get(0);
      } catch (Exception ex) {
        result = null;

      } finally {
        session.close();
      }

      logger.debug("result: " + result + " -- **fin**");
      logger.debug("Salida invoke          -- OK");
      return result;
    } catch (Exception ex) {
      ex.printStackTrace();
      return result;
    }
  }
  /**
   * Read command.
   *
   * @return the list
   */
  public List<UsuarioVO> readCommand() {
    logger.debug("Entrada createCommand          -- OK");
    List<UsuarioVO> result = null;
    try {
      SqlSession session = MapeadorSessionFactory.getSqlSessionFactory().openSession();
      MapUsuario mapUsuario = session.getMapper(MapUsuario.class);
      try {
        result = mapUsuario.obtenerUsuariosBitacora();
      } catch (Exception ex) {
        ex.printStackTrace();
      } finally {
        session.close();
      }

      logger.debug("result: " + result + " -- **fin**");
      logger.debug("Datos de Salida invoke -- " + result.toString());
      logger.debug("Salida invoke          -- OK");
      return result;
    } catch (Exception ex) {
      ex.printStackTrace();
      return result;
    }
  }
  /* (non-Javadoc)
   * @see mx.com.bbva.bancomer.commons.business.BbvaIBusinessObject#readCommand(mx.com.bbva.bancomer.commons.model.dto.BbvaAbstractDataTransferObject)
   */
  @Override
  public <T extends BbvaAbstractDataTransferObject> T readCommand(
      T bbvaAbstractDataTransferObject) {
    logger.debug("Entrada createCommand          -- OK");
    logger.debug("Datos de Entrada createCommand -- " + bbvaAbstractDataTransferObject.toString());
    try {
      List<UsuarioVO> result = null;
      UsuarioVO usuarioVO = ((UsuarioDTO) bbvaAbstractDataTransferObject).getUsuarioVO();
      SqlSession session = MapeadorSessionFactory.getSqlSessionFactory().openSession();
      MapUsuario mapUsuario = session.getMapper(MapUsuario.class);
      if (usuarioVO != null && usuarioVO.getIdCveUsuario() != null) {
        logger.debug(":::::::::::::::::::::" + usuarioVO.getIdCveUsuario());
      }
      try {
        result = mapUsuario.obtenerUsuarios(usuarioVO);

        session.commit();
      } catch (Exception ex) {
        session.rollback();
        ex.printStackTrace();
        bbvaAbstractDataTransferObject.setErrorCode("SQL-001");
        bbvaAbstractDataTransferObject.setErrorDescription(ex.getMessage());
      } finally {
        session.close();
      }
      ((UsuarioDTO) bbvaAbstractDataTransferObject).setUsuarioVOs(result);
      logger.debug("result: " + result + " -- **fin**");
      logger.debug("Datos de Salida invoke -- " + bbvaAbstractDataTransferObject.toString());
      logger.debug("Salida invoke          -- OK");
      return bbvaAbstractDataTransferObject;
    } catch (Exception ex) {
      ex.printStackTrace();
      bbvaAbstractDataTransferObject.setErrorCode("SQL-001");
      bbvaAbstractDataTransferObject.setErrorDescription(ex.getMessage());
      return bbvaAbstractDataTransferObject;
    }
  }