package br.usp.ime.academicdevoir.dao; import java.math.BigInteger; 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.ListaDeExercicios; import br.usp.ime.academicdevoir.entidade.Turma; @Component public class ListaDeExerciciosDao { /** * @uml.property name="session" * @uml.associationEnd multiplicity="(1 1)" */ private final Session session; public ListaDeExerciciosDao(Session session) { this.session = session; } @SuppressWarnings("unchecked") /** * Devolve uma lista com todas as listas de exercícios cadastradas no banco * de dados. * * @return List<ListaDeExercicios> */ public List<ListaDeExercicios> listaTudo() { return this.session.createCriteria(ListaDeExercicios.class).list(); } @SuppressWarnings("unchecked") /** * Devolve uma lista com todas as listas de exercícios de uma determinada turma. * * @return List<ListaDeExercicios> */ public List<ListaDeExercicios> listasDeTurma(Turma turma) { List<ListaDeExercicios> listaDeExercicios = this.session .createCriteria(ListaDeExercicios.class) .add(Restrictions.eq("turma", turma)).list(); return listaDeExercicios; } /** * Cadastra a lista fornecida no banco de dados. * * @param lista */ public void salva(ListaDeExercicios lista) { Transaction tx = session.beginTransaction(); session.saveOrUpdate(lista); tx.commit(); } /** * Devolve uma lista de exercícios com o id fornecido. * * @param id * @return ListaDeExercicios */ public ListaDeExercicios carrega(Long id) { return (ListaDeExercicios) this.session.load(ListaDeExercicios.class, id); } /** * Atualiza a lista fornecida no banco de dados. * * @param lista */ public void atualiza(ListaDeExercicios lista) { Transaction tx = session.beginTransaction(); this.session.update(lista); tx.commit(); } /** * Remove a lista fornecida do banco de dados. * * @param lista */ public void remove(ListaDeExercicios lista) { Transaction tx = session.beginTransaction(); this.session.delete(lista); tx.commit(); } public void recarrega(ListaDeExercicios lista) { session.refresh(lista); } @SuppressWarnings("unchecked") public List<BigInteger> buscaListasQueContemQuestao(Long idDaQuestao) { return session.createSQLQuery( "select ListaDeExercicios_id from questoesDaLista where questao_id=" + idDaQuestao).list(); } }