try{
ArrayList objetos = new ArrayList();
super.inicializarLogBean();
EstruturaEtt estrutura = (EstruturaEtt) this.buscar(EstruturaEtt.class,
Long.valueOf(Pagina.getParamLong(request, "codigo")));
//valida��o de estruturas duplicadas com base no nome e sigla
this.validarEstruturaDuplicada(Pagina.getParamLong(request, "codigo"),Pagina.getParam(request, "nomeEtt"),Pagina.getParam(request, "siglaEtt"));
this.verificarAtributoUtilizadoRestringirVisualizacao(estrutura, request.getParameterValues("atributosAtb"));
tx = session.beginTransaction();
estrutura.setNomeEtt(Pagina.getParam(request, "nomeEtt"));
estrutura.setSiglaEtt(Pagina.getParam(request, "siglaEtt"));
estrutura.setSeqApresentacaoEtt(Integer.valueOf(Pagina.getParam(request, "seqApresentacaoEtt")));
Set atributosEstruturaAnteriores = estrutura.getEstruturaAtributoEttats();
Set funcoesEstruturaAnteriores = estrutura.getEstruturaFuncaoEttfs();
Set funcoesAcompanhamentoAnteriores = estrutura.getEstrutTpFuncAcmpEtttfas();
/* Cria a nova Collection de Atributos da Estrutura, baseado no request e nos dados j� existentes. Deve fazer isso antes de
apagar a Collection */
String[] atributosSelecionados = request.getParameterValues("atributosAtb");
Set funcoesEstrutura = this.getSetFuncoesEstrutura(estrutura, request.getParameterValues("funcaoFun"), true);
Set<EstruturaAtributoEttat> atributosEstrutura = this.getSetAtributosEstrutura(estrutura, atributosSelecionados, true);
Set funcoesAcompanhamentoEstrutura = this.getSetFuncoesAcompEstrutura(estrutura, request.getParameterValues("tipoFuncAcompTpfa"));
//Verifica se pode adicionar um atributo
if (!permiteIncluirAtributoLivreID(request, estrutura, atributosSelecionados, atributosEstruturaAnteriores)) {
throw new ECARException("estruturaAtributo.validacao.estrutura.possuiItens.campoID");
}
Iterator itAtbAnt = atributosEstruturaAnteriores.iterator();
while (itAtbAnt.hasNext()) {
EstruturaAtributoEttat estruturaAtributoAnt = (EstruturaAtributoEttat) itAtbAnt.next();
boolean achou = false;
Iterator itAtb = atributosEstrutura.iterator();
while (itAtb.hasNext()) {
EstruturaAtributoEttat estruturaAtributo = (EstruturaAtributoEttat) itAtb.next();
if(estruturaAtributo.getAtributosAtb().equals(estruturaAtributoAnt.getAtributosAtb())) {
achou = true;
break;
}
}
if(!achou) {
session.delete(estruturaAtributoAnt);
}
}
Iterator itFunAnt = funcoesEstruturaAnteriores.iterator();
while (itFunAnt.hasNext()) {
EstruturaFuncaoEttf estruturaFuncaoAnt = (EstruturaFuncaoEttf) itFunAnt.next();
boolean achou = false;
Iterator itFun = funcoesEstrutura.iterator();
while (itFun.hasNext()) {
EstruturaFuncaoEttf estruturaFuncao = (EstruturaFuncaoEttf) itFun.next();
if(estruturaFuncao.getFuncaoFun().equals(estruturaFuncaoAnt.getFuncaoFun())) {
achou = true;
break;
}
}
if(!achou) {
session.delete(estruturaFuncaoAnt);
}
}
Iterator itTpFunAnt = funcoesAcompanhamentoAnteriores.iterator();
while (itTpFunAnt.hasNext()) {
EstrutTpFuncAcmpEtttfa estruturaTpFuncaoAnt = (EstrutTpFuncAcmpEtttfa) itTpFunAnt.next();
boolean achou = false;
Iterator itTpFun = funcoesAcompanhamentoEstrutura.iterator();
while (itTpFun.hasNext()) {
EstrutTpFuncAcmpEtttfa estruturaTpFuncao = (EstrutTpFuncAcmpEtttfa) itTpFun.next();
if(estruturaTpFuncao.getTipoFuncAcompTpfa().equals(estruturaTpFuncaoAnt.getTipoFuncAcompTpfa())) {
achou = true;
break;
}
}
if(!achou) {
session.delete(estruturaTpFuncaoAnt);
}
}
/* recupera os novos dados da Estrutura */
this.setEstrutura(request, estrutura, true, true, false);
Set<SisAtributoSatb> listaSisAtributoSatb = new HashSet<SisAtributoSatb>();
//adiciona todos os editaveis
if( request.getParameterValues("sisAtributoSatbEttSuperiorEditaveis") != null) {
String[] atributoEttSuperiorSelecionadosEditaveis = request.getParameterValues("sisAtributoSatbEttSuperiorEditaveis");
listaSisAtributoSatb = this.getSetSisAtributoSatbEttSuperior(estrutura, atributoEttSuperiorSelecionadosEditaveis);
}
//verifica agora os que nao sao editaveis e ja pertenciam a lista
if (estrutura.getSisAtributoSatbEttSuperior() != null) {
Iterator itListaSisAtributoSatb = estrutura.getSisAtributoSatbEttSuperior().iterator();
while (itListaSisAtributoSatb.hasNext()){
SisAtributoSatb sisAtributoSatbSelecionado = (SisAtributoSatb) itListaSisAtributoSatb.next();
if(this.existeSisAtributoSatbUsadoEstruturaSuperior(sisAtributoSatbSelecionado,estrutura)) {
//vai adicionar todos os atributos nao editaveis
listaSisAtributoSatb.add(sisAtributoSatbSelecionado);
}
}
}
//quando alterar os atributos editaveis, tb vai ser setado os campos
if (Pagina.getParamStr(request, "indAlterarCamposRestritivos").equals(Dominios.SIM)){
if(Pagina.getParam(request, "indExibirEstruturaEtt") != null) {
estrutura.setIndExibirEstruturaEtt(Pagina.getParam(request, "indExibirEstruturaEtt"));
} else {
estrutura.setIndExibirEstruturaEtt(Dominios.NAO);
}
estrutura.setAtributoAtbExibirEstruturaEtt(this.getAtributoAtbExibirEstruturaEtt((Pagina.getParam(request, "codAtbExibirEstruturaEtt"))));
estrutura.setSisAtributoSatbEttSuperior(listaSisAtributoSatb);
} else if(!listaSisAtributoSatb.isEmpty()) {
estrutura.setSisAtributoSatbEttSuperior(listaSisAtributoSatb);
}
estrutura.setEstruturaAtributoEttats(atributosEstrutura);
estrutura.setEstrutTpFuncAcmpEtttfas(funcoesAcompanhamentoEstrutura);
estrutura.setEstruturaFuncaoEttfs(funcoesEstrutura);
estrutura.setDataUltManutEtt(Data.getDataAtual());
session.update(estrutura);
objetos.add(estrutura);
List filhos = new ArrayList();