package com.github.windbender.dao;
import java.util.List;
import javax.ws.rs.WebApplicationException;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import com.github.windbender.domain.Camera;
import com.github.windbender.domain.Invite;
import com.github.windbender.domain.Project;
import com.yammer.dropwizard.hibernate.AbstractDAO;
public class InviteDAO extends AbstractDAO<Invite>{
public InviteDAO(SessionFactory sessionFactory) {
super(sessionFactory);
}
public Invite save(Invite i) {
if (i.getId() != null) {
// this is an update
Invite iold = this.get(i.getId());
this.currentSession().evict(iold);
}
Invite newP = this.persist(i);
return newP;
}
public Invite findByCode(String code) {
Session currentSession = this.currentSession();
Criteria crit = currentSession.createCriteria(Invite.class);
crit.add(Restrictions.eq("inviteCode", code));
Invite i = (Invite) crit.uniqueResult();
return i;
}
public List<Invite> findAllByProject(Project p) {
Session currentSession = this.currentSession();
Criteria crit = currentSession.createCriteria(Invite.class);
crit.add(Restrictions.eq("project", p));
List<Invite> list = (List<Invite>)crit.list();
return list;
}
public void delete(Invite inv) {
if (inv != null) {
Invite v = this.get(inv.getId());
this.currentSession().delete(v);
} else {
throw new WebApplicationException();
}
}
public Invite findByById(int invite_id) {
Session currentSession = this.currentSession();
Criteria crit = currentSession.createCriteria(Invite.class);
crit.add(Restrictions.eq("id", invite_id));
Invite i = (Invite) crit.uniqueResult();
return i;
}
}