EstruturaEtt estruturaSelecionada = null;
EstruturaEtt estruturaPai = null;
String codEtt = "";
String codIett = "";
String codEttPai = "";
ItemEstruturaDao itemDao = new ItemEstruturaDao(request);
EstruturaDao estruturaDao= new EstruturaDao(request);
ValidaPermissao validaPermissao = new ValidaPermissao();
SegurancaECAR seguranca = (SegurancaECAR) request.getSession().getAttribute("seguranca");
String ultimoIdLinhaExpandido = request.getParameter("ultimoIdLinhaExpandido");
String radConcluido = "";
if("".equals(Pagina.getParamStr(request, "radConcluido"))){
radConcluido = (String) request.getSession().getAttribute("radConcluidoSession");
} else{
radConcluido = Pagina.getParamStr(request, "radConcluido");
}
ehTelaListagem = ehTelaListagemParam;
if(idLinha.startsWith("iett")){
tipoItemClicado = "itemEstrutura";
codIett = idLinha.substring(4, idLinha.indexOf("_pai_"));
itemEstruturaSelecionado = (ItemEstruturaIett) itemDao.buscar(ItemEstruturaIett.class, new Long(codIett));
if(!idLinha.contains("_avo_")) {
codEtt = idLinha.substring(idLinha.indexOf("_pai_ett")+8, idLinha.length());
} else {
// se for um item associado a uma estrutura virtual
codEtt = idLinha.substring(idLinha.indexOf("_pai_ett")+8, idLinha.indexOf("_avo"));
}
estruturaSelecionada = (EstruturaEtt) estruturaDao.buscar(EstruturaEtt.class, new Long(codEtt));
}
else if(idLinha.startsWith("ett")){
tipoItemClicado = "estrutura";
codEtt = idLinha.substring(3, idLinha.indexOf("_pai_"));
estruturaSelecionada = (EstruturaEtt) estruturaDao.buscar(EstruturaEtt.class, new Long(codEtt));
// se a estrutura partir de um item
if(idLinha.contains("iett")) {
codIett = idLinha.substring(idLinha.indexOf("_pai_iett")+9, idLinha.length());
} else {
// se a estrutura partir de uma outra estrutra (estrutura "filha" da estrutura virtual)
codEttPai = idLinha.substring(idLinha.indexOf("_pai_ett") + 8, idLinha.indexOf("_avo_"));
codIett = idLinha.substring(idLinha.indexOf("_avo_") + 5, idLinha.length());
if(codEttPai != null && !codEttPai.equals("")) {
estruturaPai = (EstruturaEtt) estruturaDao.buscar(EstruturaEtt.class, new Long(codEttPai));
}
}
if(!codIett.equals("")){
itemEstruturaSelecionado = (ItemEstruturaIett) itemDao.buscar(ItemEstruturaIett.class, new Long(codIett));
}
}
/**************************************************************
* Imprime o item e chama, se for o caso, o imprimir dos filhos
**************************************************************/
//Seta os filhos que o n� pai pode exibir no formato: "idLinhaFilho1:idLinhaFilho2:idLinhaFilho3"
String filhosInputHidden = "";
boolean ehCaminho = false;
// no caso de um item associado ou uma estrutura "filha" de uma estrutura virtual
if(isEstruturaItemFilhaEstruturaVirtual != null && isEstruturaItemFilhaEstruturaVirtual.equals("S")) {
//se for uma estrutura virtual expandida, o caminho da arvores vai conter o nome da estrutura real + "v" no final para fazer a distin��o
// com as estruturas reais presentes na �rvore
ehCaminho = caminhoArvore.contains(idLinha.substring(0, idLinha.indexOf("_pai_")) + "v");
if(idLinha.contains("_avo")) {
filhosHtml = imprimeItemEstruturaVirtual(itemEstruturaSelecionado, estruturaSelecionada, estruturaPai,
tipoItemClicado, request, caminhoArvore, ultimoIdLinhaDetalhado,
idLinha);
} else if(ultimoIdLinhaExpandido != null && ultimoIdLinhaExpandido.contains("_avo")){
filhosHtml = imprimeItemEstruturaVirtual(itemEstruturaSelecionado, estruturaSelecionada, estruturaPai,
tipoItemClicado, request, caminhoArvore, ultimoIdLinhaDetalhado,
ultimoIdLinhaExpandido);
}
} else {
ehCaminho = caminhoArvore.contains(idLinha.substring(0, idLinha.indexOf("_pai_")));
filhosHtml = imprimeItem(itemEstruturaSelecionado, estruturaSelecionada, tipoItemClicado, request, caminhoArvore, ultimoIdLinhaDetalhado);
}
if(ehCaminho){
if(tipoItemClicado.equals("itemEstrutura")){
// se nao for um item associado a uma estrutura virtual
if(isEstruturaItemFilhaEstruturaVirtual == null || !isEstruturaItemFilhaEstruturaVirtual.equals("S")){
List lEstruturas = estruturaDao.getSetEstruturasItem(itemEstruturaSelecionado);
if(lEstruturas != null && !lEstruturas.isEmpty()) {
Iterator itEstrutura = lEstruturas.iterator();
boolean exibirEstrutura = true;
while(itEstrutura.hasNext()){
EstruturaEtt estrutura = (EstruturaEtt) itEstrutura.next();
exibirEstrutura = estruturaDao.verificarExibeEstrutura(estrutura, itemEstruturaSelecionado);
if(exibirEstrutura) {
String idLinhaFilho = "ett" + estrutura.getCodEtt() + "_pai_iett" + itemEstruturaSelecionado.getCodIett();
if(!filhosInputHidden.equals("")){
filhosInputHidden += ":" + idLinhaFilho;
}else{
filhosInputHidden = idLinhaFilho;
}
//chama a fun��o para os filhos
filhosHtml += geraFilhosHtml(idLinhaFilho, caminhoArvore, request, ultimoIdLinhaDetalhado, ehTelaListagem,
isEstruturaItemFilhaEstruturaVirtual);
}
}
} else {
// se o item nao tiver nenhuma estrutura filha
filhosInputHidden = "0";
}
}
}
else if(tipoItemClicado.equals("estrutura")){
//ESTRUTURA VIRTUAL
if(estruturaSelecionada.isVirtual()) {
String codAvo = "";
//salva o codigo dos itens aos quais a estrutura pertence
Map mapItensEstruturaVirtual = null;
ActionEstrutura action = new ActionEstrutura();
mapItensEstruturaVirtual = action.montarMapItensEstruturaVirtualComPermissao(estruturaSelecionada, seguranca);
Iterator itEstruturas = mapItensEstruturaVirtual.keySet().iterator();
if(ultimoIdLinhaExpandido != null && ultimoIdLinhaExpandido.contains("_avo")) {
codAvo = ultimoIdLinhaExpandido.substring(ultimoIdLinhaExpandido.indexOf("_avo_") + 5, ultimoIdLinhaExpandido.length());
} else if(itemEstruturaSelecionado != null){
codAvo = itemEstruturaSelecionado.getCodIett().toString();
}
//chama as estruturas filhas
while(itEstruturas.hasNext()){
String filhosItensVirtuaisHidden = "";
EstruturaEtt estruturaFilha = (EstruturaEtt) itEstruturas.next();
String idLinhaFilho = "ett" + estruturaFilha.getCodEtt() + "_pai_ett" + estruturaSelecionada.getCodEtt() + "_avo_" + codAvo;
if(!filhosInputHidden.equals("")){
filhosInputHidden += ":" + idLinhaFilho;
}else{
filhosInputHidden = idLinhaFilho;
}
//chama a fun��o para os filhos
filhosHtml += geraFilhosHtml(idLinhaFilho, caminhoArvore, request, ultimoIdLinhaDetalhado, ehTelaListagem, "S");
//chama os itens de cada estrutura "filha"
if(caminhoArvore.contains(idLinhaFilho.substring(0, idLinhaFilho.indexOf("_pai_")) + "v")) {
List listaItensEstrutura = (List) mapItensEstruturaVirtual.get(estruturaFilha);
Iterator itLisItensEstrutura = listaItensEstrutura.iterator();
while(itLisItensEstrutura.hasNext()) {
ItemEstruturaIett item = (ItemEstruturaIett) itLisItensEstrutura.next();
String idLinhaNeto = "iett" + item.getCodIett() + "_pai_ett" + estruturaSelecionada.getCodEtt() + "_avo_" + codAvo;
//adiciona o avo
if(!filhosItensVirtuaisHidden.equals("")){
filhosItensVirtuaisHidden += ":" + idLinhaNeto;
}else{
filhosItensVirtuaisHidden = idLinhaNeto;
}
filhosHtml += geraFilhosHtml(idLinhaNeto, caminhoArvore, request, ultimoIdLinhaDetalhado, ehTelaListagem, "S");
//cria um hidden que guarda o valor zero para os filhos dos itens associados j� que os itens associados n�o possui nenhum filho
filhosHtml += "<input type=\"hidden\" id=\"inputHiddenFilhos_" + idLinhaNeto + "\" value=\"0\">";
}
//cria um hidden com os filhos das estruturas "filhas"
filhosHtml += "<input type=\"hidden\" id=\"inputHiddenFilhos_" + idLinhaFilho + "\" value=\"" + filhosItensVirtuaisHidden + "\">";
} else {
//cria um hidden que guarda o valor zero para as estruturas "filhas" que n�o foram expandidas
filhosHtml += "<input type=\"hidden\" id=\"inputHiddenFilhos_" + idLinhaFilho + "\" value=\"0\">";
}
}
// se for uma estrutura normal
} else if(isEstruturaItemFilhaEstruturaVirtual == null || !isEstruturaItemFilhaEstruturaVirtual.equals("S")){
List listaItensEstrutura = null; //Lista de ItemEstruturas filhas
List lColunas = null;
lColunas = estruturaDao.getAtributosAcessoEstruturaArvore(estruturaSelecionada);
if(lColunas != null && lColunas.size() > 0) {
listaItensEstrutura = itemDao.getItensFilho(itemEstruturaSelecionado, estruturaSelecionada, lColunas);
}
else {
listaItensEstrutura = itemDao.getItensFilho(itemEstruturaSelecionado, estruturaSelecionada, "");
}
listaItensEstrutura = itemDao.getItensIndConclusao(listaItensEstrutura, radConcluido);
if(listaItensEstrutura != null && !listaItensEstrutura.isEmpty()) {
//Percorre todos os itens filhos
Iterator itItens = listaItensEstrutura.iterator();