package com.github.windbender.dao;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.github.windbender.domain.ImageEvent;
import com.github.windbender.domain.Review;
import com.github.windbender.domain.User;
import com.yammer.dropwizard.hibernate.AbstractDAO;
public class ReviewDAO extends AbstractDAO<Review> {
Logger logger = LoggerFactory.getLogger(ReviewDAO.class);
public ReviewDAO(SessionFactory sessionFactory) {
super(sessionFactory);
}
public Integer getReviewFlagCount(ImageEvent e, User user) {
Review r = find(e, user);
if(r == null) return 0;
if(r.isFlagged()) {
return 1;
} else {
return 0;
}
}
private Review find(ImageEvent e, User user) {
Session currentSession = this.currentSession();
Criteria crit = currentSession.createCriteria(Review.class);
crit.add(Restrictions.eq("user", user));
crit.add(Restrictions.eq("imageEvent", e));
logger.info("the criteria is " + crit.toString());
Review r = (Review) crit.uniqueResult();
return r;
}
public Review saveOrUpdate(Review r) {
Review curR = find(r.getImageEvent(),r.getUser());
Review newR = null;
if(curR == null) {
newR = this.persist(r);
} else {
curR.setFlagged(r.isFlagged());
newR = curR;
}
return newR;
}
}