package br.com.caelum.guj.dao;
import org.hibernate.Criteria;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import br.com.caelum.guj.model.NewsletterParticipant;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.RequestScoped;
@Component
@RequestScoped
public class GUJUserDAO {
private final Session session;
public GUJUserDAO(Session session) {
this.session = session;
}
public String emailFromUser(Integer gujUserId) {
SQLQuery query = this.session.createSQLQuery("select user_email from jforum_users where user_id = :pUserId");
query.setParameter("pUserId", gujUserId);
String email = (String) query.uniqueResult();
return email;
}
public void registerNewsletterParticipant(NewsletterParticipant p) {
this.session.save(p);
}
public boolean existParticipant(NewsletterParticipant p) {
Criteria criteria = this.session.createCriteria(NewsletterParticipant.class).add(
Restrictions.eq("gujUserId", p.getGujUserId()));
NewsletterParticipant participant = (NewsletterParticipant) criteria.uniqueResult();
return participant != null;
}
public NewsletterParticipant findParticipantByGujUserId(Integer gujUserId) {
return (NewsletterParticipant) this.session.get(NewsletterParticipant.class, gujUserId);
}
public void unregisterNewsletterParticipant(NewsletterParticipant participant) {
this.session.delete(participant);
}
}