}
int retornarAteNivel = -1;
List<ItemEstruturaIettMin> iettFilhos = new ArrayList<ItemEstruturaIettMin>();
if(codIettPai != null){
ItemEstruturaIettMin iettPai = (ItemEstruturaIettMin) itemDao.buscar(ItemEstruturaIettMin.class, codIettPai);
if(iettPai != null){
retornarAteNivel = iettPai.getNivelIett().intValue() + 1;
iettFilhos.addAll(itemDao.getDescendentesMin(iettPai, false));
}
}
//quando estiver selecionado os itens sem informa��o
if(itensSemInformacaoNivelPlanejamento.booleanValue()) {
if(niveisPlanejamento != null && niveisPlanejamento.size() > 0) {
where.append(" and (niveis.codSatb in (:listaNiveis) or niveis is null)");
} else {
where.append(" and niveis is null");
}
} else {
//quando n�o estiver selecionado os itens sem informa��o
if(niveisPlanejamento != null && niveisPlanejamento.size() > 0) {
where.append(" and (niveis.codSatb in (:listaNiveis)) ");
}
}
Query queryItens = this.getSession().createQuery(query.toString() + where.toString());
List<Long> listaCodigosAref = new ArrayList<Long>();
for (Iterator iter = periodosConsiderados.iterator(); iter.hasNext();) {
AcompReferenciaAref aReferencia = (AcompReferenciaAref) iter.next();
listaCodigosAref.add(aReferencia.getCodAref());
}
queryItens.setParameterList("listaAcompanhamentos", listaCodigosAref);
if(orgaoResponsavel != null && orgaoResponsavel.getCodOrg() != null){
queryItens.setLong("orgaoResp", orgaoResponsavel.getCodOrg().longValue());
}
if(niveisPlanejamento != null && niveisPlanejamento.size() > 0) {
List<Long> listaCodigosNiveis = new ArrayList<Long>();
for (Iterator itNiveis = niveisPlanejamento.iterator(); itNiveis.hasNext();) {
SisAtributoSatb nivel = (SisAtributoSatb) itNiveis.next();
listaCodigosNiveis.add(nivel.getCodSatb());
}
queryItens.setParameterList("listaNiveis", listaCodigosNiveis);
}
if(pesquisaIetts != null && pesquisaIetts.size() > 0) {
List<Long> listaCodigosItensSalvos = new ArrayList<Long>();
for (Iterator itItensSalvos = pesquisaIetts.iterator(); itItensSalvos.hasNext();) {
PesquisaIett pesquisaIett = (PesquisaIett) itItensSalvos.next();
listaCodigosItensSalvos.add(pesquisaIett.getItemEstruturaIett().getCodIett());
}
queryItens.setParameterList("itensSalvos", listaCodigosItensSalvos);
}
if(codTipoAcompanhamento != null) {
// listar ARIs conforme o tipo de acompanhamento passado como par�metro
queryItens.setLong("codTa", codTipoAcompanhamento.longValue());
}
if (secretaria != null && secretaria.getCodOrg() != null){
queryItens.setLong("codSecretaria", secretaria.getCodOrg().longValue());
}
List<ItemEstruturaIett> listaItens = new ArrayList<ItemEstruturaIett>();
List listaAris = queryItens.list();
Iterator itListaAris = listaAris.iterator();
if(usuarioUsu == null) { //utilizado para o grafico.jsp - teste de performance
while(itListaAris.hasNext()) {
AcompReferenciaItemAri ari = (AcompReferenciaItemAri)itListaAris.next();
listaItens.add(ari.getItemEstruturaIett());
}
} else {
while(itListaAris.hasNext()) {
AcompReferenciaItemAri ari = (AcompReferenciaItemAri)itListaAris.next();
if(validaPermissao.permissaoLeituraAcompanhamento(ari, usuarioUsu, gruposUsuario)) {
listaItens.add(ari.getItemEstruturaIett());
}
}
}
List<ItemEstruturaIett> itensGeralComArvore = itemDao.getArvoreItens(listaItens, null);
List<ItemEstruturaIett> arvoreItens = new ArrayList<ItemEstruturaIett>(itensGeralComArvore);
if(retornarAteNivel != -1){
for (Iterator itArvore = arvoreItens.iterator(); itArvore.hasNext();) {
ItemEstruturaIett iett = (ItemEstruturaIett) itArvore.next();
ItemEstruturaIettMin iettMin = new ItemEstruturaIettMin();
iettMin.setCodIett(iett.getCodIett());
if(iett.getNivelIett().intValue() > retornarAteNivel){
itArvore.remove();
} else if(!iettFilhos.contains(iettMin)){
itArvore.remove();
}