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();
filhos.addAll(atributosEstrutura);
filhos.addAll(funcoesEstrutura);
filhos.addAll(funcoesAcompanhamentoEstrutura);
Iterator it = filhos.iterator();
while(it.hasNext()){
PaiFilho object = (PaiFilho) it.next();
object.atribuirPKPai();
session.saveOrUpdate(object);
objetos.add(object);
}
tx.commit();
if(super.logBean != null) {
super.logBean.setCodigoTransacao(Data.getHoraAtual(false));
super.logBean.setOperacao("INC_ALT_EXC");
Iterator itObj = objetos.iterator();
while(itObj.hasNext()) {
super.logBean.setObj(itObj.next());
super.loggerAuditoria.info(logBean.toString());
}
}
} catch(HibernateException e){
if (tx != null)
try {
tx.rollback();
} catch (HibernateException r) {
this.logger.error(r);
throw new ECARException("erro.hibernateException");
}
this.logger.error(e);
throw new ECARException("erro.hibernateException");
}
catch(ECARException e){
if (tx != null)
try {
tx.rollback();
} catch (HibernateException r) {
this.logger.error(r);
throw new ECARException("erro.hibernateException");
}
this.logger.error(e);
throw e;
}
}