String strRetorno="";
StringBuffer strBuffer = new StringBuffer();
try {
ObjetoEstrutura coluna;
SegurancaECAR seguranca = (SegurancaECAR) request.getSession().getAttribute("seguranca");
EstruturaDao estruturaDao = new EstruturaDao(null);
ItemEstruturaDao itemDao = new ItemEstruturaDao(null);
ConfiguracaoDao configuracaoDao = new ConfiguracaoDao(null);
ConfiguracaoCfg configuracao = new ConfiguracaoCfg();
List confg = configuracaoDao.listar(ConfiguracaoCfg.class, null);
if(confg != null && confg.size() > 0)
configuracao = (ConfiguracaoCfg) confg.iterator().next();
List lColunas = estruturaDao.getAtributosAcessoEstrutura(estruturaSelecionada);
ValidaPermissao validaPermissao = new ValidaPermissao();
List listaItensEstrutura = null;
//Gera a lista de ietts (itens estrutura)
if(lColunas != null && lColunas.size() > 0) {
listaItensEstrutura = itemDao.getItensFilho(itemEstruturaSelecionado, estruturaSelecionada, lColunas);
}
else {
listaItensEstrutura = itemDao.getItensFilho(itemEstruturaSelecionado, estruturaSelecionada, "");
}
String radConcluido = "";
if("".equals(Pagina.getParamStr(request, "radConcluido"))){
radConcluido = (String) request.getSession().getAttribute("radConcluidoSession");
} else{
radConcluido = Pagina.getParamStr(request, "radConcluido");
}
listaItensEstrutura = itemDao.getItensIndConclusao(listaItensEstrutura, radConcluido);
//parametros auxilixares
String nomeCbCtrl = "cbCtrl" + estruturaSelecionada.getCodEtt();
String nomeCbDep = "cbDep" + estruturaSelecionada.getCodEtt();
String strCheckBox = "<td class=\\\"sorttable_nosort\\\" width=\\\"1%\\\" ><input type=\\\"checkbox\\\" class=\\\"form_check_radio\\\" name=\\\"" + nomeCbCtrl + "\\\" onclick=\\\"javascript:selectAll(document.form, '" + nomeCbCtrl + "', '" + nomeCbDep + "');\\\"></td>";
String strColunaVazia = "<td class=\\\"sorttable_nosort\\\" width=\\\"1%\\\" > </td> <!-- Coluna para colocar icone para listagem -->";
strBuffer.append("<table class=\\\"sortable\\\" border=\\\"0\\\" cellpadding=\\\"0\\\" cellspacing=\\\"0\\\" width=\\\"100%\\\" id=\\\"tabelaOrdenada\\\" >");
strBuffer.append(" <thead >");
strBuffer.append(" <tr bgcolor=\\\""+estruturaSelecionada.getCodCor2Ett()+"\\\">");
/* desenha as colunas de uma estrutura */
Iterator itColunas = lColunas.iterator();
int numColuna = 2;
while (itColunas.hasNext()){
coluna = (ObjetoEstrutura) itColunas.next();
strBuffer.append(strCheckBox);
strBuffer.append(strColunaVazia);
strBuffer.append(" <td width=\\\"" + coluna.iGetLargura() + "%\\\">");
strBuffer.append( coluna.iGetLabel());
strBuffer.append(" </td>");
numColuna++;
strColunaVazia = strCheckBox = "";
}
strBuffer.append(" <td> </td>");
strBuffer.append(" </tr> <!-- linha_subtitulo -->");
strBuffer.append(" </thead>");
strBuffer.append("<tbody id=\\\"corpo1\\\">");
/* imprimir os itens da estrutura */
Iterator itItens = listaItensEstrutura.iterator();
while (itItens.hasNext()) {
ItemEstruturaIett item = (ItemEstruturaIett) itItens.next();
if ((item.getIndAtivoIett() != null || !"".equals(item.getIndAtivoIett()))
&& !"N".equals(item.getIndAtivoIett())) {
validaPermissao.permissoesItem(item, seguranca.getUsuario(), seguranca.getGruposAcesso());
boolean permissaoAcessoItem = validaPermissao.permissaoExcluirItem() || validaPermissao.permissaoConsultarItem();
boolean permissaoAcessoItensFilhos = false;
/* hint de otimiza��o. S� testa se tem permiss�o para os filhos (recursivo) se n�o tiver para si pr�prio */
if(!permissaoAcessoItem){
permissaoAcessoItensFilhos = validaPermissao.permissaoAcessoItensFilhos(item, seguranca.getUsuario(), seguranca.getGruposAcesso());
}
if(permissaoAcessoItem || permissaoAcessoItensFilhos){
/* desenha as colunas de um item */
itColunas = lColunas.iterator();
if (validaPermissao.permissaoExcluirItem() && (item.getIndBloqPlanejamentoIett() == null || item.getIndBloqPlanejamentoIett().equals(ValidaPermissao.NAO))) {
strCheckBox = "<td sorttable_customkey=\\\"0\\\" width=\\\"1%\\\"><input type=\\\"checkbox\\\" class=\\\"form_check_radio\\\" name=\\\"" + nomeCbDep + "\\\" value=\\\"" + item.getCodIett() + "\\\"></td>";
} else {
strCheckBox = "<td sorttable_customkey=\\\"0\\\" width=\\\"1%\\\"><input type=\\\"checkbox\\\" class=\\\"form_check_radio\\\" name=\\\"" + nomeCbDep + "\\\" value=\\\"" + item.getCodIett() + "\\\" disabled></td>";
}
String strHRef = "";
String strA = "";
String strHRefProx = "";
strColunaVazia = "<td sorttable_customkey=\\\"0\\\" width=\\\"1%\\\"> </td> <!-- Coluna para colocar icone para listagem -->";
if (validaPermissao.permissaoConsultarItem()) {
strHRef = "<a href=\\\"javascript:aoClicarConsultarItem(document.form, " + item.getCodIett() + ", '" + "iett" + item.getCodIett() + "_pai_ett" + item.getEstruturaEtt().getCodEtt() + "');\\\">";
strA = "</a>";
/* Igor Desenho da seta para dar acesso aas estruturas filhas */
strHRefProx = "<td sorttable_customkey=\\\"0\\\" width=\\\"1%\\\"><a href=\\\"javascript:aoClicarDetalharItem(document.form, 'iett" + item.getCodIett() + "_pai_ett" + item.getEstruturaEtt().getCodEtt() + "')\\\"> " +
"<img src=\\\"" + request.getContextPath() + "/images/collapsed_button.gif\\\" border=0> </td>";
/* /Igor */
} else{
if (permissaoAcessoItensFilhos) {
strHRef = "";
strA = "</a>";
strHRefProx = "<td sorttable_customkey=\\\"0\\\" width=\\\"1%\\\"><a href=\\\"javascript:aoClicarDetalharItem(document.form, 'iett" + item.getCodIett() + "_pai_ett" + item.getEstruturaEtt().getCodEtt() + "')\\\"> " +
"<img src=\\\"" + request.getContextPath() + "/images/collapsed_button.gif\\\" border=0> </td>";
}
}
// Linhas com os dados da Estrutura
strBuffer.append("<tr class=\\\"cor_sim\\\" onmouseover=\\\"javascript: destacaLinha(this,'over','')\\\" onmouseout=\\\"javascript: destacaLinha(this,'out','cor_sim')\\\" onClick=\\\"javascript: destacaLinha(this,'click','cor_sim')\\\" class=\\\"linha_subtitulo2_estrutura\\\" bgcolor=\\\"" + estruturaSelecionada.getCodCor3Ett() + "\\\">");
String conteudo = "";
boolean existeEstruturaFilhaPodeSerVisualizada = false;
List lEstruturasFilhas = (new EstruturaDao(this.getRequest())).getSetEstruturasItem(item);
//verifica se as estruturas filhas podem ser visualizadas
if (lEstruturasFilhas != null && lEstruturasFilhas.size() != 0)
{
Iterator itlEstruturasFilhas = lEstruturasFilhas.iterator();
while(itlEstruturasFilhas.hasNext() && !existeEstruturaFilhaPodeSerVisualizada){
EstruturaEtt estruturaFilha = (EstruturaEtt) itlEstruturasFilhas.next();
existeEstruturaFilhaPodeSerVisualizada = estruturaDao.verificarExibeEstrutura(estruturaFilha, item);
}
}
while (itColunas.hasNext()){
String strAliasIndex ="";
coluna = (ObjetoEstrutura) itColunas.next();
strBuffer.append(strCheckBox);
//verifica se as estruturas filhas podem ser visualizadas
if (lEstruturasFilhas != null && lEstruturasFilhas.size() != 0 && existeEstruturaFilhaPodeSerVisualizada)
{ strBuffer.append(strHRefProx);
strBuffer.append(strA);
}
else{
strBuffer.append(strColunaVazia);
}
strBuffer.append("<td ");
//Se houver label na estrutura utiliza como hint, sen�o utiliza o nome da estrutura.
String title = "";
String label = item.getEstruturaEtt().getLabelEtt();
if (label == null || label.equals(Dominios.STRING_VAZIA)){
title = item.getEstruturaEtt().getNomeEtt();
}
else{
title = item.getEstruturaEtt().getNomeEtt() + " (" + item.getEstruturaEtt().getLabelEtt() + ")";
}
strBuffer.append("title = \\\""+title+"\\\"");
strBuffer.append(" width=\\\""+coluna.iGetLargura()+"%\\\" aliasSortableIndex >");
strBuffer.append(strHRef);
strBuffer.append("<font color=\\\""+estruturaSelecionada.getCodCor4Ett()+"\\\">");
if("nivelPlanejamento".equals(coluna.iGetNome())){
String niveis = "";
if(item.getItemEstruturaNivelIettns() != null && !item.getItemEstruturaNivelIettns().isEmpty()){
Iterator itNiveis = item.getItemEstruturaNivelIettns().iterator();
while(itNiveis.hasNext()){
SisAtributoSatb nivel = (SisAtributoSatb) itNiveis.next();
niveis += nivel.getDescricaoSatb() + "; ";
}
niveis = niveis.substring(0, niveis.lastIndexOf(";"));
}
strBuffer.append(niveis);
}
else{
String informacaoIettSatb = "";
if (coluna.iGetGrupoAtributosLivres() != null) {
Iterator itIettSatbs = item.getItemEstruturaSisAtributoIettSatbs().iterator();
while (itIettSatbs.hasNext()) {
ItemEstruturaSisAtributoIettSatb itemEstruturaSisAtributoIettSatb = (ItemEstruturaSisAtributoIettSatb) itIettSatbs.next();
if (itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getSisGrupoAtributoSga().equals(coluna.iGetGrupoAtributosLivres())){
if (coluna.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.TEXT)) ||
coluna.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.TEXTAREA)) ||
coluna.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.MULTITEXTO)) ||
coluna.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.VALIDACAO)) ) {
informacaoIettSatb = informacaoIettSatb + itemEstruturaSisAtributoIettSatb.getInformacao() + Util.trocaBarra(configuracao.getSeparadorCampoMultivalor());
//Se for um atributo livre do tipo ID
SisAtributoSatb sisAtributo = itemEstruturaSisAtributoIettSatb.getSisAtributoSatb();
if (sisAtributo.isAtributoAutoIcremental() || sisAtributo.isAtributoContemMascara()) {
strAliasIndex = "sorttable_customkey=\\\""+itemDao.obterTipoSequencial(itemEstruturaSisAtributoIettSatb).getConteudo()+"\\\"";
}
} else if (!coluna.iGetGrupoAtributosLivres().getSisTipoExibicGrupoSteg().getCodSteg().equals(new Long(Input.IMAGEM))) {
//se for do tipo imagem n�o faz nada, deixa em branco.
// informacaoIettSatb = informacaoIettSatb + itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getDescricaoSatb() + "; ";
informacaoIettSatb = informacaoIettSatb + itemEstruturaSisAtributoIettSatb.getSisAtributoSatb().getDescricaoSatb() + Util.trocaBarra(configuracao.getSeparadorCampoMultivalor());
}
}
}
if (informacaoIettSatb.length() > 0){
informacaoIettSatb = informacaoIettSatb.substring(0, informacaoIettSatb.length() - configuracao.getSeparadorCampoMultivalor().length());
//
}
strBuffer.append(informacaoIettSatb);
} else {
// strBuffer.append(coluna.iGetValor(item).replace("\n", "").replace("\t", "").replace("\r", ""));
conteudo = coluna.iGetValor(item).replace("\n", " ").replace("\t", " ").replace("\r", " ")
.replace(Dominios.CARACTER_ESTRANHO_MARCADOR, "-")
.replace(Dominios.CARACTER_ESTRANHO_MARCADOR2, "-")
.replace(Dominios.CARACTER_ESTRANHO_ABREASPAS_SIMPLES, "'")
.replace(Dominios.CARACTER_ESTRANHO_FECHAASPAS_SIMPLES, "'");