Example usage for org.hibernate Session refresh

List of usage examples for org.hibernate Session refresh

Introduction

In this page you can find the example usage for org.hibernate Session refresh.

Prototype

void refresh(Object object);

Source Link

Document

Re-read the state of the given instance from the underlying database.

Usage

From source file:org.javamexico.dao.hib3.ForumDAO.java

License:Open Source License

public VotoComentForo vota(Usuario user, ComentForo coment, boolean up) throws PrivilegioInsuficienteException {
    if ((up && user.getReputacion() < minRepVotaCu) || (!up && user.getReputacion() < minRepVotaCd)) {
        throw new PrivilegioInsuficienteException(
                "El usuario no tiene privilegio suficiente para votar por un comentario");
    }//from   w w  w .jav  a  2s.c o m
    Session sess = sfact.getCurrentSession();
    VotoComentForo voto = findVoto(user, coment);
    int uprep = 0;
    if (voto == null) {
        voto = new VotoComentForo();
        voto.setFecha(new Date());
        voto.setComentario(coment);
        voto.setUp(up);
        voto.setUser(user);
        sess.save(voto);
        uprep = up ? 1 : -1;
    } else if (voto.isUp() != up) {
        voto.setUp(up);
        voto.setFecha(new Date());
        sess.update(voto);
        uprep = up ? 2 : -2;
    }
    if (uprep != 0) {
        sess.refresh(coment);
        user = (Usuario) sess.merge(coment.getAutor());
        sess.lock(user, LockMode.UPGRADE);
        sess.refresh(user);
        user.setReputacion(user.getReputacion() + uprep);
        sess.update(user);
        sess.flush();
    }
    return voto;
}

From source file:org.javamexico.dao.hib3.ForumDAO.java

License:Open Source License

public List<Foro> getForosConTag(TagForo tag) {
    Session sess = sfact.getCurrentSession();
    sess.refresh(tag);
    return new ArrayList<Foro>(tag.getForos());
}

From source file:org.javamexico.dao.hib3.ForumDAO.java

License:Open Source License

@SuppressWarnings("unchecked")
public List<Foro> getForosConTags(List<TagForo> tags) {
    Session sess = sfact.getCurrentSession();
    Set<Integer> foros = new TreeSet<Integer>();
    //Recorremos cada tag
    for (TagForo tag : tags) {
        sess.refresh(tag);
        //Obtenemos los foros del tag
        Set<Foro> sub = tag.getForos();
        //Por alguna rarisima razon mas alla de mi comprension,
        //si agrego el foro directamente a la lista, en algun momento truena esto
        //con un ClassCastException que no me da stack trace. Algun pedo muy satanico.
        //Asi que agregamos la llave de cada foro y luego hacemos un query.
        //Ineficiente, pero al menos funciona.
        for (Foro f : sub) {
            foros.add(f.getFid());//from   ww  w .  j  ava 2 s  .  c  o  m
        }
    }
    return sess.createCriteria(Foro.class).add(Restrictions.in("fid", foros)).list();
}

From source file:org.javamexico.dao.hib3.QuestionDAO.java

License:Open Source License

public List<Pregunta> getPreguntasConTag(TagPregunta tag) {
    Session sess = sfact.getCurrentSession();
    sess.refresh(tag);
    return new ArrayList<Pregunta>(tag.getPreguntas());
}

From source file:org.javamexico.dao.hib3.QuestionDAO.java

License:Open Source License

public List<Pregunta> getPreguntasConTags(Set<TagPregunta> tags) {
    Session sess = sfact.getCurrentSession();
    Set<Pregunta> qus = new TreeSet<Pregunta>();
    for (TagPregunta tag : tags) {
        sess.refresh(tag);
        qus.addAll(tag.getPreguntas());//from   ww w  .  j  a  v a  2 s .  co m
    }
    return new ArrayList<Pregunta>(qus);
}

From source file:org.javamexico.dao.hib3.QuestionDAO.java

License:Open Source License

public VotoPregunta vota(Usuario user, Pregunta pregunta, boolean up) throws PrivilegioInsuficienteException {
    if ((up && user.getReputacion() < minRepVotaPu) || (!up && user.getReputacion() < minRepVotaPd)) {
        throw new PrivilegioInsuficienteException(
                "El usuario no tiene privilegio suficiente para votar por una pregunta");
    }/*from w ww.  j  a  va  2  s . c  o  m*/
    Session sess = sfact.getCurrentSession();
    VotoPregunta v = findVoto(user, pregunta);
    int updateRep = 0;
    if (v == null) {
        //Insertamos un nuevo voto
        v = new VotoPregunta();
        v.setFecha(new Date());
        v.setPregunta(pregunta);
        v.setUp(up);
        v.setUser(user);
        sess.save(v);
        updateRep = up ? 1 : -1;
    } else if (v.isUp() != up) {
        //Modificamos el voto existente
        v.setUp(up);
        v.setFecha(new Date());
        sess.update(v);
        //Al cambiar voto, debe afectarse por 2
        updateRep = up ? 2 : -2;
    }
    if (updateRep != 0) {
        //Actualizamos la reputacion del autor de la pregunta
        sess.refresh(pregunta);
        //Esto no es intuitivo pero si no lo hago asi, hib3 arroja excepcion marciana.
        user = (Usuario) sess.merge(pregunta.getAutor());
        sess.lock(user, LockMode.UPGRADE);
        sess.refresh(user);
        user.setReputacion(user.getReputacion() + updateRep);
        sess.update(user);
        sess.flush();
    }
    return v;
}

From source file:org.javamexico.dao.hib3.QuestionDAO.java

License:Open Source License

public VotoRespuesta vota(Usuario user, Respuesta resp, boolean up) throws PrivilegioInsuficienteException {
    if ((up && user.getReputacion() < minRepVotaRu) || (!up && user.getReputacion() < minRepVotaRd)) {
        throw new PrivilegioInsuficienteException(
                "El usuario no tiene privilegio suficiente para votar por una respuesta");
    }//from ww  w  .  j av a 2  s  .  co m
    Session sess = sfact.getCurrentSession();
    VotoRespuesta v = findVoto(user, resp);
    int updateRep = 0;
    if (v == null) {
        v = new VotoRespuesta();
        v.setFecha(new Date());
        v.setRespuesta(resp);
        v.setUp(up);
        v.setUser(user);
        sess.save(v);
        updateRep = up ? 1 : -1;
    } else if (v.isUp() != up) {
        v.setUp(up);
        v.setFecha(new Date());
        sess.update(v);
        updateRep = up ? 2 : -2;
    }
    if (updateRep != 0) {
        sess.refresh(resp);
        user = (Usuario) sess.merge(resp.getAutor());
        sess.lock(user, LockMode.UPGRADE);
        sess.refresh(user);
        user.setReputacion(user.getReputacion() + updateRep);
        sess.update(user);
        sess.flush();
    }
    return v;
}

From source file:org.javamexico.dao.hib3.QuestionDAO.java

License:Open Source License

public Respuesta addRespuesta(String resp, Pregunta p, Usuario autor) {
    Session sess = sfact.getCurrentSession();
    Respuesta r = new Respuesta();
    r.setFecha(new Date());
    r.setAutor(autor);/*from  ww w . j av a2s .c om*/
    r.setPregunta(p);
    r.setRespuesta(resp);
    sess.save(r);
    sess.flush();
    sess.refresh(p);
    p.getRespuestas().size();
    return r;
}

From source file:org.javamexico.dao.hib3.QuestionDAO.java

License:Open Source License

public ComentPregunta addComentario(String c, Pregunta p, Usuario autor) {
    Session sess = sfact.getCurrentSession();
    ComentPregunta cp = new ComentPregunta();
    cp.setAutor(autor);//from w  w w .  j  av  a  2  s.  c o  m
    cp.setComentario(c);
    cp.setFecha(new Date());
    cp.setPregunta(p);
    sess.save(cp);
    sess.flush();
    sess.refresh(p);
    p.getComentarios().size();
    return cp;
}

From source file:org.javamexico.dao.hib3.QuestionDAO.java

License:Open Source License

public ComentRespuesta addComentario(String c, Respuesta r, Usuario autor) {
    Session sess = sfact.getCurrentSession();
    ComentRespuesta cr = new ComentRespuesta();
    cr.setRespuesta(r);//  w  ww .  j av  a2 s. c  o m
    cr.setAutor(autor);
    cr.setComentario(c);
    cr.setFecha(new Date());
    sess.save(cr);
    sess.flush();
    sess.refresh(r);
    r.getComentarios().size();
    return cr;
}