if(iett.getIndAtivoIett() != null && !Dominios.SIM.equals(iett.getIndAtivoIett())){
continue;
}
OrdenacaoIett ord = new OrdenacaoIett();
ord.setIett(iett);
if(!listNiveis.contains(iett.getNivelIett())) {
listNiveis.add(iett.getNivelIett());
}
if (!listEstruturas.contains(iett.getEstruturaEtt())){
listEstruturas.add(iett.getEstruturaEtt());
}
ord.setCampoOrdenar(this.getValorAtributoEstruturaItem(estruturasAtributos, iett, tamanho, tipoAcomp));
if(ord.getCampoOrdenar() == null) {
ord.setCampoOrdenar("");
}
listOrdenacaoIett.add(ord);
}
// ordenar a lista de OrdenacaoIett, aplicando regra de ordenamento
Collections.sort(listOrdenacaoIett,
new Comparator() {
public int compare(Object o1, Object o2) {
OrdenacaoIett ord1 = (OrdenacaoIett) o1;
OrdenacaoIett ord2 = (OrdenacaoIett) o2;
return Util.retiraAcentuacao(ord1.getCampoOrdenar().toLowerCase().trim()).compareToIgnoreCase(Util.retiraAcentuacao(ord2.getCampoOrdenar()).toLowerCase().trim());
}
}
);
// ordenar a lista de n�veis: 1, 2, 3, ... n
Collections.sort(listNiveis,
new Comparator() {
public int compare(Object o1, Object o2) {
Integer ord1 = (Integer) o1;
Integer ord2 = (Integer) o2;
return ord1.compareTo(ord2);
}
}
);
// ordenar a lista de estruturas por label
Collections.sort(listEstruturas,
new Comparator() {
public int compare(Object o1, Object o2) {
EstruturaEtt ord1 = (EstruturaEtt) o1;
EstruturaEtt ord2 = (EstruturaEtt) o2;
return ord1.getNomeEtt().compareTo(ord2.getNomeEtt());
}
}
);
// Gerar uma lista de itens para cada n�vel
List listOrdenacaoPorNivel = new ArrayList();
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();
listaItensTemp.add(ordenacaoIett.getIett());
}
}
it = listaItensTemp.iterator();