package com.github.windbender.dao;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import com.github.windbender.domain.Good;
import com.github.windbender.domain.ImageRecord;
import com.github.windbender.domain.User;
import com.yammer.dropwizard.hibernate.AbstractDAO;
public class GoodDAO extends AbstractDAO<Good> {
public GoodDAO(SessionFactory sessionFactory) {
super(sessionFactory);
}
public Integer getGoodFlagCount(ImageRecord ir, User user) {
Good g= find(ir,user);
if(g == null) return 0;
if(g.isFlagged()) return 1;
return 0;
}
private Good find(ImageRecord ir, User user) {
Session currentSession = this.currentSession();
Criteria crit = currentSession.createCriteria(Good.class);
crit.add(Restrictions.eq("user", user));
crit.add(Restrictions.eq("image", ir));
Good g = (Good) crit.uniqueResult();
return g;
}
public Good saveOrUpdate(Good g) {
Good curGood = find(g.getImage(), g.getUser());
Good newGood = null;
if (curGood == null) {
newGood = this.persist(g);
} else {
curGood.setFlagged(g.isFlagged());
newGood = curGood;
}
return newGood;
}
}