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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.github.windbender.domain.Camera;
import com.github.windbender.domain.Project;
import com.yammer.dropwizard.hibernate.AbstractDAO;
public class CameraDAO extends AbstractDAO<Camera> {
Logger logger = LoggerFactory.getLogger(CameraDAO.class);
public CameraDAO(SessionFactory sessionFactory) {
super(sessionFactory);
}
public List<Camera> findAllInProject(Project currentProject) {
Session currentSession = this.currentSession();
Criteria crit = currentSession.createCriteria(Camera.class);
crit.add(Restrictions.eq("project", currentProject));
logger.info("the criteria is " + crit.toString());
List<Camera> findList = (List<Camera>) crit.list();
return findList;
}
public Camera findById(Long cameraId) {
Session currentSession = this.currentSession();
Criteria crit = currentSession.createCriteria(Camera.class);
crit.add(Restrictions.eq("id", cameraId));
return (Camera) crit.uniqueResult();
}
public Camera save(Camera camera) {
if (camera.getId() != null) {
// this is an update
Camera c = this.get(camera.getId());
this.currentSession().evict(c);
}
Camera newC = this.persist(camera);
return newC;
}
public void delete(Long id) {
if (id != null) {
Camera v = this.get(id);
this.currentSession().delete(v);
} else {
throw new WebApplicationException();
}
}
}