package br.usp.ime.academicdevoir.dao; import java.util.List; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.criterion.Restrictions; import br.com.caelum.vraptor.ioc.Component; import br.usp.ime.academicdevoir.entidade.Aluno; import br.usp.ime.academicdevoir.entidade.ListaDeExercicios; import br.usp.ime.academicdevoir.entidade.ListaDeRespostas; @Component public class ListaDeRespostasDao { private final Session session; public ListaDeRespostasDao(Session session) { this.session = session; } @SuppressWarnings("unchecked") /** * Devolve uma lista com todas as listas de respostas da lista de exercícios fornecida. * @return List<ListaDeRespostas> */ public List<ListaDeRespostas> listaRespostasDaLista(ListaDeExercicios lista) { return this.session.createCriteria(ListaDeRespostas.class) .add(Restrictions.eq("listaDeExercicios", lista)).list(); } /** * Devolve a lista de respostas de um aluno referente a lista de exercícios * com o id fornecido. */ public ListaDeRespostas getRespostasDoAluno(Long idDaLista, Aluno aluno) { return (ListaDeRespostas) this.session .createCriteria(ListaDeRespostas.class) .add(Restrictions.eq("listaDeExercicios.id", idDaLista)) .add(Restrictions.eq("aluno.id", aluno.getId())).uniqueResult(); } /** * Cadastra a lista fornecida no banco de dados. * * @param lista */ public void salva(ListaDeRespostas lista) { Transaction tx = session.beginTransaction(); session.save(lista); tx.commit(); } /** * Devolve uma lista de respostas com o id fornecido. * * @param id * @return ListaDeRespostas */ public ListaDeRespostas carrega(Long id) { return (ListaDeRespostas) this.session.load(ListaDeRespostas.class, id); } /** * Devolve uma ListaDeRespostas com o id fornecido, se existir. Caso * contrário, devolve null. * * @param id * @return ListaDeRespostas */ public ListaDeRespostas buscaPorId(Long id) { return (ListaDeRespostas) session .createCriteria(ListaDeRespostas.class) .add(Restrictions.idEq(id)).uniqueResult(); } /** * Atualiza a lista fornecida no banco de dados. * * @param lista */ public void atualiza(ListaDeRespostas lista) { Transaction tx = session.beginTransaction(); this.session.update(lista); tx.commit(); } /** * Remove a lista fornecida do banco de dados. * * @param lista */ public void remove(ListaDeRespostas lista) { Transaction tx = session.beginTransaction(); this.session.delete(lista); tx.commit(); } public void recarrega(ListaDeRespostas lista) { session.refresh(lista); } }