public void excluir(String[] codigosParaExcluir) throws ECARException, HibernateException {
AcompRealFisicoDao arfDao = new AcompRealFisicoDao(null);
PesquisaDao pesquisaDao = new PesquisaDao(null);
List lista = new ArrayList();
for (int i = 0; i < codigosParaExcluir.length; i++) {
AcompReferenciaAref acompReferencia = (AcompReferenciaAref) buscar(AcompReferenciaAref.class, Long.valueOf(codigosParaExcluir[i]));
/*
* Valida��o referente ao bug 898
*/
if (acompReferencia.getAcompReferenciaItemAris() != null){
acompReferencia.getAcompReferenciaItemAris().size();
List itensAri = new ArrayList(acompReferencia.getAcompReferenciaItemAris());
for (Iterator itItensAri = itensAri.iterator(); itItensAri.hasNext();) {
AcompReferenciaItemAri acompRefItAri = (AcompReferenciaItemAri) itItensAri.next();
if(acompRefItAri.getStatusRelatorioSrl() != null
&& acompRefItAri.getStatusRelatorioSrl().getCodSrl() != null
&& acompRefItAri.getStatusRelatorioSrl().getCodSrl().intValue() == AcompReferenciaItemDao.STATUS_LIBERADO) {
throw new ECARException("periodoReferencia.exclusao.posicaoJaLiberada", null, new String[] {acompRefItAri.getItemEstruturaIett().getNomeIett()});
}
/*
C�digo anterior
---------------
if (acompRefItAri.getAcompRelatorioArels() != null){
acompRefItAri.getAcompRelatorioArels().size();
List itensArel = new ArrayList(acompRefItAri.getAcompRelatorioArels());
Iterator itItensArel = itensArel.iterator();
while(itItensArel.hasNext()){
AcompRelatorioArel aRel = (AcompRelatorioArel) itItensArel.next();
if ("S".equals(aRel.getIndLiberadoArel())){
//throw new ECARException("periodoReferencia.exclusao.posicaoJaLiberada");
throw new ECARException("periodoReferencia.exclusao.posicaoJaLiberada", null, new String[] {acompRefItAri.getItemEstruturaIett().getNomeIett()});
}
}
}
*/
//Adiciona o hist�rico de upload aos objetos a serem exclu�dos caso exista
if (acompRefItAri.getItemEstrUplCategIettuc() != null && acompRefItAri.getItemEstrUplCategIettuc().size() > 0){
List<ItemEstrUplCategIettuc> categoriasUpload = new ArrayList<ItemEstrUplCategIettuc>(acompRefItAri.getItemEstrUplCategIettuc());
List historicosCategoriaExcluir = new HistoricoItemEstrutUploadDao(request).getHistoricoPorCategoriaUpload(categoriasUpload);
lista.addAll(historicosCategoriaExcluir);
}
// Nova verifica��o devido ao Mantis 5518
// verificar o ARF correspondente ao ARI que podem ser exclu�do
StringBuilder query = new StringBuilder("select ARI from AcompReferenciaItemAri as ARI")
.append(" where ARI.itemEstruturaIett.codIett = :codIett")
.append(" and ARI.itemEstruturaIett.indAtivoIett = 'S'")
.append(" and ARI.acompReferenciaAref.diaAref = :diaAref")
.append(" and ARI.acompReferenciaAref.mesAref = :mesAref")
.append(" and ARI.acompReferenciaAref.anoAref = :anoAref")
.append(" and ARI.codAri<> :codAri");
Query q = this.getSession().createQuery(query.toString());
q.setLong("codIett", acompRefItAri.getItemEstruturaIett().getCodIett().longValue());
q.setString("diaAref", acompRefItAri.getAcompReferenciaAref().getDiaAref());
q.setString("mesAref", acompRefItAri.getAcompReferenciaAref().getMesAref());
q.setString("anoAref", acompRefItAri.getAcompReferenciaAref().getAnoAref());
q.setLong("codAri", acompRefItAri.getCodAri().longValue());
List listaARI = q.list();
if(listaARI == null || listaARI.isEmpty()) {
// o ARF correspondente pode ser removido pois n�o est� em uso
List listArf = arfDao.buscarPorIett(
acompRefItAri.getItemEstruturaIett().getCodIett(),
Long.valueOf(acompRefItAri.getAcompReferenciaAref().getMesAref()),
Long.valueOf(acompRefItAri.getAcompReferenciaAref().getAnoAref()));
if(listArf != null && !listArf.isEmpty()) {
lista.addAll(listArf);
}
}
}
}
lista.addAll(acompReferencia.getAcompRefLimitesArls());
lista.addAll(acompReferencia.getAcompReferenciaItemAris());
lista.add(acompReferencia);
}
//Percorre a lista de Pesquisas verificando
//quais pesquisas foram salvas com os aref's selecionados para exclus�o.
//Exclui o objeto da classe Pesquisa se todos os objetos PesquisaIett forem exclu�dos.