public void registrar(Usuario usuario) {

    Entidad eUsuario = this.usuario_a_entidad(usuario);
    eUsuario = servPersistencia.registrarEntidad(eUsuario);
    usuario.setId(eUsuario.getId());
    pool.put(eUsuario.getId(), usuario);
  }
  public List<Usuario> getUsuarios() {
    List<Entidad> entidades = servPersistencia.recuperarEntidades("usuario");
    List<Usuario> usuarios = new LinkedList<Usuario>();

    for (Entidad eUsuario : entidades) {
      usuarios.add(recuperar(eUsuario.getId()));
    }
    return usuarios;
  }
  public Usuario recuperar(int id) {
    // Recuperamos del pool
    Usuario usuario = pool.get(id);
    if (usuario == null) { // No está registrado en el pool de usuarios, hay que ir a la bd
      Entidad eUsuario = servPersistencia.recuperarEntidad(id);
      /* Se recuperan primero aquellos atributos que no dependen de recuperar otra entidad */
      String nombre = servPersistencia.recuperarPropiedadEntidad(eUsuario, "nombre");
      String apellidos = servPersistencia.recuperarPropiedadEntidad(eUsuario, "apellidos");
      String dni = servPersistencia.recuperarPropiedadEntidad(eUsuario, "dni");
      String email = servPersistencia.recuperarPropiedadEntidad(eUsuario, "email");
      String login = servPersistencia.recuperarPropiedadEntidad(eUsuario, "login");
      String password = servPersistencia.recuperarPropiedadEntidad(eUsuario, "password");
      /* Se crea el usuario con los atributos actuales */
      usuario = new Usuario(nombre, apellidos, dni, email, login, password);
      usuario.setId(id);
      /* Se introduce en el pool para evitar ciclos de llamadas recursivas */
      pool.put(id, usuario);
      /* Se recupera el resto de atributos */

      ProyectoDAO proyectoDAO = factoriaDAO.getProyectoDAO();

      String idproyectosVotados = servPersistencia.recuperarPropiedadEntidad(eUsuario, "votos");
      LinkedList<Proyecto> pVotados = new LinkedList<>();
      if (idproyectosVotados.length() > 0) {
        for (String idVotado : idproyectosVotados.split(";")) {
          pVotados.add(proyectoDAO.recuperar(Integer.parseInt(idVotado)));
        }
      }
      usuario.setVotos(pVotados);

      String idproyectosCreados =
          servPersistencia.recuperarPropiedadEntidad(eUsuario, "proyectoscreados");
      LinkedList<Proyecto> pCreados = new LinkedList<Proyecto>();
      if (idproyectosCreados.length() > 0) {
        for (String idVotado : idproyectosCreados.split(";")) {
          pCreados.add(proyectoDAO.recuperar(Integer.parseInt(idVotado)));
        }
      }
      usuario.setproyectosCreados(pCreados);

      ApoyoDAO apoyoDAO = factoriaDAO.getApoyoDAO();
      String idApoyos = servPersistencia.recuperarPropiedadEntidad(eUsuario, "apoyos");
      LinkedList<Apoyo> apoyos = new LinkedList<>();
      if (idApoyos.length() > 0) {
        for (String idVotado : idApoyos.split(";")) {
          apoyos.add(apoyoDAO.recuperar(Integer.parseInt(idVotado)));
        }
      }
      usuario.setApoyos(apoyos);

      NotificacionDAO notificacionDAO = factoriaDAO.getNotificacionDAO();
      String idNotificaciones =
          servPersistencia.recuperarPropiedadEntidad(eUsuario, "notificaciones");
      LinkedList<Notificacion> notificaciones = new LinkedList<>();
      if (idNotificaciones.length() > 0) {
        for (String idVotado : idNotificaciones.split(";")) {
          notificaciones.add(notificacionDAO.recuperar(Integer.parseInt(idVotado)));
        }
      }
      usuario.setNotificaciones(notificaciones);

      PreguntaDAO preguntaDAO = factoriaDAO.getPreguntaDAO();

      String idPreguntasEmitidas =
          servPersistencia.recuperarPropiedadEntidad(eUsuario, "preguntasemitidas");
      LinkedList<Pregunta> pEmitidas = new LinkedList<>();
      if (idPreguntasEmitidas.length() > 0) {
        for (String idVotado : idPreguntasEmitidas.split(";")) {
          pEmitidas.add(preguntaDAO.recuperar(Integer.parseInt(idVotado)));
        }
      }
      usuario.setPreguntasEmitidas(pEmitidas);

      String idPreguntasRecibidas =
          servPersistencia.recuperarPropiedadEntidad(eUsuario, "preguntasrecibidas");
      LinkedList<Pregunta> pRecibidas = new LinkedList<>();
      if (idPreguntasRecibidas.length() > 0) {
        for (String idVotado : idPreguntasRecibidas.split(";")) {
          pRecibidas.add(preguntaDAO.recuperar(Integer.parseInt(idVotado)));
        }
      }
      usuario.setPreguntasRecibidas(pRecibidas);
    }
    return usuario;
  }
 /** Actualiza la información del usuario en la BBDD */
 public void actualizarUsuario(Usuario usuario) {
   Entidad eUsuario = servPersistencia.recuperarEntidad(usuario.getId());
   Entidad newEUsuario = usuario_a_entidad(usuario);
   eUsuario.setPropiedades(newEUsuario.getPropiedades());
   servPersistencia.modificarEntidad(eUsuario);
 }
 public boolean borrar(Usuario usuario) {
   Entidad eUsuario = servPersistencia.recuperarEntidad(usuario.getId());
   return servPersistencia.borrarEntidad(eUsuario);
 }