public Usuario authenticate(String usuarioId, String password) {
    EntityManager em = getEntityManager();
    try {
      Usuario userAuthenticated = null;
      Query q =
          em.createQuery(
              "SELECT u FROM Usuario u WHERE u.usuarioId = :usuarioId and u.password = :password");
      q.setParameter("usuarioId", usuarioId);
      q.setParameter("password", ApplicationLogic.getMD5Encrypted(password));
      userAuthenticated = (Usuario) q.getSingleResult();
      Sucursal sucursal = userAuthenticated.getSucursal();
      Collection<Almacen> almacenCollection = null;
      if (sucursal != null) {
        almacenCollection = sucursal.getAlmacenCollection();
      }
      Collection<Perfil> perfilCollection = userAuthenticated.getPerfilCollection();

      for (Perfil perfil : perfilCollection) {
        perfil.getUsuarioCollection();
        perfil.setUsuarioCollection(null);
      }

      userAuthenticated.setPedidoVentaCollection(null);
      userAuthenticated.setMovimientoHistoricoProductoCollection(null);
      // userAuthenticated.setEstadoDeCuentaCollection(null);
      userAuthenticated.setPedidoVentaEstadoCollection(null);
      userAuthenticated.setMensajesParaPortalCollection(null);

      return userAuthenticated;
    } catch (NoResultException nre) {
      return null;
    } finally {
      em.close();
    }
  }