if(cfg.getSisGrupoAtributoSgaByCodSgaGrAtrMetasFisicas() != null) {
ArrayList listSatb = new ArrayList(ta.getSisAtributoSatbs());
if( listSatb != null ) {
for (Iterator itSatbs = listSatb.iterator(); itSatbs.hasNext();) {
SisAtributoSatb sisAtributoSatb = (SisAtributoSatb) itSatbs.next();
if( sisAtributoSatb.getSisGrupoAtributoSga().equals(cfg.getSisGrupoAtributoSgaByCodSgaGrAtrMetasFisicas()) ) {
listAtribMetasFisicasCfg.add(sisAtributoSatb);
}
}
}
}
////
/*
* itensSelecionados em Tela ser�o os checkboxes marcados em selecaoItem.jsp
*/
List<ItemEstruturaIett> itensSelecionadosEmTela = new ArrayList<ItemEstruturaIett>();
String[] itemSelecao = request.getParameterValues("iett");
if(itemSelecao != null){
for(int i = 0; i < itemSelecao.length; i++){
ItemEstruturaIett item = (ItemEstruturaIett) buscar(ItemEstruturaIett.class, Long.valueOf(itemSelecao[i]));
// se for separado por orgao e o item selecionado tiver o mesmo orgao da referencia OU
if((acompanhamento.getTipoAcompanhamentoTa().getIndSepararOrgaoTa() != null &&
acompanhamento.getTipoAcompanhamentoTa().getIndSepararOrgaoTa().equals(Dominios.SIM) &&
(item.getOrgaoOrgByCodOrgaoResponsavel1Iett() == null && acompanhamento.getOrgaoOrg() == null) ||
(item.getOrgaoOrgByCodOrgaoResponsavel1Iett() != null && acompanhamento.getOrgaoOrg() != null &&
item.getOrgaoOrgByCodOrgaoResponsavel1Iett().getCodOrg().equals(acompanhamento.getOrgaoOrg().getCodOrg()))) ||
//se nao for separado por orgao OU
(acompanhamento.getTipoAcompanhamentoTa().getIndSepararOrgaoTa() == null || acompanhamento.getTipoAcompanhamentoTa().getIndSepararOrgaoTa().equals(Dominios.NAO)) ||
//se for altera��o, mesmo que n�o seja do mesmo �rg�o e estiver marcado vai continuar sendo acompanhado.
(acompanhamento.getCodAref() != null)) {
itensSelecionadosEmTela.add(item);
}
}
}
List listaCompletaItens = adicionaDescendentesQuantidadePrevista(itensSelecionadosEmTela, acompanhamento);
for (Iterator itAref = listAcompReferenciaAref.iterator(); itAref.hasNext();) {
acompanhamento = (AcompReferenciaAref) itAref.next();
/*
* Cria uma vari�vel acompAuxiliar para receber o objeto acompanhamento com os dados que estavam ne session do
* servidor e foram setados a partir de dados do Formul�rio.
* Faz buscar do acompanhamento que esta sendo alterado e seta as valores que estavam em acompAuxiliar para
* acompanhamento
*/
if(acompanhamento.getCodAref() != null && acompanhamento.getCodAref().longValue() > 0){
AcompReferenciaAref acompAuxiliar = acompanhamento;
acompanhamento = (AcompReferenciaAref) this.buscar(AcompReferenciaAref.class, acompAuxiliar.getCodAref());
acompanhamento.setDataInicioAref(acompAuxiliar.getDataInicioAref());
acompanhamento.setDataLimiteAcompFisicoAref(acompAuxiliar.getDataLimiteAcompFisicoAref());
acompanhamento.setNomeAref(acompAuxiliar.getNomeAref());
acompanhamento.setAcompRefLimitesArls(acompAuxiliar.getAcompRefLimitesArls());
session.update(acompanhamento);
}
else {
session.save(acompanhamento);
}
objetos.add(acompanhamento);
/* lista com os itens monitorados pelo acompanhamento (no caso de inclus�o de acompanhamento essa ser� um lista
* vazia
*/
List itensMonitoradosBancoDeDados = getListaItensAcompanhamento(acompanhamento);
Collection objetosParaSalvar = Util.diferenca(listaCompletaItens, itensMonitoradosBancoDeDados);
Collection objetosParaAlterar = Util.intersecao(listaCompletaItens, itensMonitoradosBancoDeDados);
Collection objetosParaExcluir = Util.diferenca(itensMonitoradosBancoDeDados, listaCompletaItens);
/*
* Itera e salva ( ou altera ) os limites do acompanhamento
*/
for (Iterator itLimites = acompanhamento.getAcompRefLimitesArls().iterator(); itLimites
.hasNext();) {
AcompRefLimitesArl acompLimites = (AcompRefLimitesArl) itLimites.next();
if(acompLimites.getComp_id() != null){
session.update(acompLimites);
} else{
AcompRefLimitesArlPK pk = new AcompRefLimitesArlPK();
pk.setCodAref(acompLimites.getAcompReferenciaAref().getCodAref());
pk.setCodTpfa(acompLimites.getTipoFuncAcompTpfa().getCodTpfa());
acompLimites.setComp_id(pk);
session.save(acompLimites);
}
objetos.add(acompLimites);
}
/*cria os novos acompanhamento de item */
for (Iterator itObjetosIncluidos = objetosParaSalvar.iterator(); itObjetosIncluidos
.hasNext();) {
ItemEstruturaIett iett = (ItemEstruturaIett) itObjetosIncluidos.next();
AcompReferenciaItemAri acompReferenciaItem = criaNovoAcompReferenciaItemAri(acompanhamento, iett, request, itensSelecionadosEmTela, usuario);
session.save(acompReferenciaItem);
objetos.add(acompReferenciaItem);
for (Iterator itAcompReferenciaItemLimites = acompReferenciaItem.getAcompRefItemLimitesArlis().iterator(); itAcompReferenciaItemLimites
.hasNext();) {
AcompRefItemLimitesArli limite = (AcompRefItemLimitesArli) itAcompReferenciaItemLimites.next();
setPKAcompReferenciaItemLimite(limite);
session.save(limite);
objetos.add(limite);
}
/* salva os realizados fisicos conforme regra*/
if(iett.getItemEstrtIndResulIettrs() != null && !iett.getItemEstrtIndResulIettrs().isEmpty()){
boolean gravaARF = false;
if(listNiveis != null && listNiveis.size() > 0) {
if(iett.getItemEstruturaNivelIettns() != null && iett.getItemEstruturaNivelIettns().size() > 0) {
Iterator itNiveis = iett.getItemEstruturaNivelIettns().iterator();
while(itNiveis.hasNext() && !gravaARF) {
SisAtributoSatb nivel = (SisAtributoSatb) itNiveis.next();
if(listNiveis.contains(nivel)) {
gravaARF = true;
}