@Override
public List<AlunoCurso> pesquisar(AlunoCurso t) throws DaoException {
Criteria criteria = this.getSession().createCriteria(AlunoCurso.class,
"AC");
Conjunction aluno = Restrictions.conjunction();
Conjunction userLogin = Restrictions.conjunction();
Conjunction curso = Restrictions.conjunction();
if (t.getAluno() != null) {
LOG.info("Adicionando Aluno à busca.");
aluno.add(Subqueries.exists(DetachedCriteria.forClass(Aluno.class)
.setProjection(Projections.id())));
criteria.createAlias("AC.aluno", "a");
// Nome
if (!"".equals(t.getAluno().getNome())
&& t.getAluno().getNome() != null) {
aluno.add(Restrictions.ilike("a.nome", "%"
+ t.getAluno().getNome() + "%"));
}
// CPF
if (t.getAluno().getCpf() != null) {
aluno.add(Restrictions.eq("a.cpf", t.getAluno().getCpf()));
}
aluno.add(Restrictions.eq("a.status", t.getAluno().getStatus()));
aluno.add(Restrictions.eqProperty("AC.aluno.id", "a.id"));
if (t.getAluno().getUserLogin() != null
&& t.getAluno().getUserLogin().getUsername() != null) {
userLogin.add(Subqueries.exists(DetachedCriteria.forClass(
UserLogin.class).setProjection(Projections.id())));
criteria.createAlias("a.userLogin", "ul");
userLogin.add(Restrictions.ilike("ul.username", "%"
+ t.getAluno().getUserLogin().getUsername() + "%"));
userLogin.add(Restrictions
.eqProperty("a.userLogin.id", "ul.id"));
aluno.add(userLogin);
}
criteria.add(aluno);
}
if (t.getCurso() != null) {
LOG.info("Adicionando Curso à busca.");
curso.add(Subqueries.exists(DetachedCriteria.forClass(Curso.class)
.setProjection(Projections.id())));
criteria.createAlias("AC.curso", "c");
curso.add(Restrictions.eq("c.id", t.getCurso().getId()));
curso.add(Restrictions.eqProperty("AC.curso.id", "c.id"));
criteria.add(curso);
}
if (t.getSituacaoAlunoCurso() != null) {