package org.ironbrain.dao; import org.hibernate.criterion.Restrictions; import org.ironbrain.IB; import org.ironbrain.SessionData; import org.ironbrain.core.Exam; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Repository @SuppressWarnings("unchecked") @Transactional public class ExamDao extends BaseDao { @Autowired protected SessionData data; public Exam create(int count) { Exam exam = new Exam(); exam.setStartMs(IB.getNowMs()); exam.setUser(data.getUser().getId()); exam.setDone(false); exam.setCount(count); int id = (int) getSess().save(exam); exam.setId(id); return exam; } public Exam getLastUndoneExam() { List<Exam> exams; exams = getSess().createCriteria(Exam.class) .add(Restrictions.eq("user", data.getUser().getId())) .add(Restrictions.eq("done", false)) .setMaxResults(1) .list(); if (exams.isEmpty()) { return null; } else { return exams.get(0); } } public List<Exam> getDoneExams() { List<Exam> exams; exams = getSess().createCriteria(Exam.class) .add(Restrictions.eq("user", data.getUser().getId())) .add(Restrictions.eq("done", true)) .list(); return exams; } public Exam get(int id) { Exam someExam = (Exam) getSess().get(Exam.class, id); return someExam; } public void update(Exam exam) { getSess().update(exam); } }