Iterator itNiveis = listNiveis.iterator();
Iterator<EstruturaEtt> itEstruturas = listEstruturas.iterator();
while(itNiveis.hasNext()) {
Integer nivel = (Integer) itNiveis.next();
OrdenacaoPorNivel opn = new OrdenacaoPorNivel();
opn.setNivel(nivel);
opn.setOrdenacaoIett(new ArrayList());
itEstruturas = listEstruturas.iterator();
//varre cada estrutura dos itens da listagem
while (itEstruturas.hasNext()){
EstruturaEtt estrutura = itEstruturas.next();
itItens = listOrdenacaoIett.iterator();
//varre todos os itens da listagem e virifica se eles s�o do n�vel corrente e da estrutura corrente
while(itItens.hasNext()) {
OrdenacaoIett ord = (OrdenacaoIett)itItens.next();
if(nivel.equals(ord.getIett().getNivelIett()) && estrutura.equals(ord.getIett().getEstruturaEtt())) {
opn.getOrdenacaoIett().add(ord);
}
}
}
if (!listOrdenacaoPorNivel.contains(opn)){
listOrdenacaoPorNivel.add(opn);
}
}
// ordenar a lista de OrdenacaoPorNivel, aplicando regra de ordenamento
// itNiveis = listOrdenacaoPorNivel.iterator();
// while(itNiveis.hasNext()) {
// OrdenacaoPorNivel opn = (OrdenacaoPorNivel) itNiveis.next();
//
// //Ordena primeiro por nome da estrutura estrutura
// Collections.sort(opn.getOrdenacaoIett(),
// new Comparator() {
// public int compare(Object o1, Object o2) {
// OrdenacaoIett ord1 = (OrdenacaoIett) o1;
// OrdenacaoIett ord2 = (OrdenacaoIett) o2;
//
// return Util.retiraAcentuacao(ord1.getIett().getEstruturaEtt().getLabelEtt().toLowerCase().trim()).compareToIgnoreCase(
// Util.retiraAcentuacao(ord2.getIett().getEstruturaEtt().getLabelEtt()).toLowerCase().trim());
// }
// }
// );
// }
Iterator it = null;
//verifica se � necess�rio montar hierarquia.
if (montarHierarquia) {
// organizar os itens de acordo com a hierarquia de pai/filho/neto/bisneto/etc a partir dos itens do primeiro n�vel
List itensOrganizados = new ArrayList();
if(!listOrdenacaoPorNivel.isEmpty()) {
OrdenacaoPorNivel opn = (OrdenacaoPorNivel)listOrdenacaoPorNivel.get(0);
itNiveis = opn.getOrdenacaoIett().iterator();
while(itNiveis.hasNext()) {
OrdenacaoIett ord = (OrdenacaoIett)itNiveis.next();
List listIettAux = getItemFilhoOrdenacaoPorNivel(ord.getIett(), listOrdenacaoPorNivel);
itensOrganizados.addAll(listIettAux);
}
}
it = itensOrganizados.iterator();
} else {//Sen�o for necess�rio montar hierarquia, utiliza a lista(listOrdenacaoPorNivel) que j� est� ordenada.
/*
* Extrai do objeto bean de ordena��o os itens que ser�o exibidos.
*/
List<ItemEstruturaIett> listaItensTemp = new ArrayList<ItemEstruturaIett>();
itNiveis = listOrdenacaoPorNivel.iterator();
//itera na lista ordenada
while(itNiveis.hasNext()) {
OrdenacaoPorNivel opn = (OrdenacaoPorNivel) itNiveis.next();
//Obtem a lista beans(OrdenacaoIett) por nivel.
Iterator itInnerItens = opn.getOrdenacaoIett().iterator();
while(itInnerItens.hasNext()) {
//obtem o bean(OrdenacaoIett) que encapsula o objeto de neg�cio(ItemEstruturaIett)
OrdenacaoIett ordenacaoIett = (OrdenacaoIett) itInnerItens.next();