package br.com.centralit.citcorpore.negocio; import java.util.Collection; import br.com.centralit.citcorpore.bean.CotacaoDTO; import br.com.centralit.citcorpore.bean.FornecedorCotacaoDTO; import br.com.centralit.citcorpore.integracao.ColetaPrecoDao; import br.com.centralit.citcorpore.integracao.CotacaoDao; import br.com.centralit.citcorpore.integracao.FornecedorCotacaoDao; import br.com.centralit.citcorpore.util.Enumerados.SituacaoCotacao; import br.com.citframework.dto.IDto; import br.com.citframework.excecao.LogicException; import br.com.citframework.excecao.ServiceException; import br.com.citframework.integracao.TransactionControler; import br.com.citframework.integracao.TransactionControlerImpl; import br.com.citframework.service.CrudServiceImpl; public class FornecedorCotacaoServiceEjb extends CrudServiceImpl implements FornecedorCotacaoService { private FornecedorCotacaoDao dao; @Override protected FornecedorCotacaoDao getDao() { if (dao == null) { dao = new FornecedorCotacaoDao(); } return dao; } @Override protected void validaDelete(final Object arg0) throws Exception { final FornecedorCotacaoDTO fornecedorCotacaoDto = (FornecedorCotacaoDTO) this.restore((FornecedorCotacaoDTO) arg0); CotacaoDTO cotacaoDto = new CotacaoDTO(); cotacaoDto.setIdCotacao(fornecedorCotacaoDto.getIdCotacao()); cotacaoDto = (CotacaoDTO) new CotacaoDao().restore(cotacaoDto); if (!cotacaoDto.getSituacao().equals(SituacaoCotacao.EmAndamento.name())) { throw new LogicException("A situa��o da cota��o n�o permite a exclus�o do fornecedor."); } final Collection colColetas = new ColetaPrecoDao().findByIdCotacaoAndIdFornecedor(fornecedorCotacaoDto.getIdCotacao(), fornecedorCotacaoDto.getIdFornecedor()); if (colColetas != null && !colColetas.isEmpty()) { throw new LogicException("Exclus�o n�o permitida. Existe pelo menos uma coleta de pre�os associada ao fornecedor."); } } @Override public Collection findByIdCotacao(final Integer parm) throws Exception { try { return this.getDao().findByIdCotacao(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public void deleteByIdCotacao(final Integer parm) throws Exception { try { this.getDao().deleteByIdCotacao(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public Collection findByIdFornecedor(final Integer parm) throws Exception { try { return this.getDao().findByIdFornecedor(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public void delete(final IDto model) throws ServiceException, LogicException { FornecedorCotacaoDTO fornecedorCotacaoDto = (FornecedorCotacaoDTO) model; fornecedorCotacaoDto = (FornecedorCotacaoDTO) this.restore(fornecedorCotacaoDto); final FornecedorCotacaoDao fornecedorCotacaoDao = new FornecedorCotacaoDao(); final TransactionControler tc = new TransactionControlerImpl(fornecedorCotacaoDao.getAliasDB()); try { this.validaDelete(model); fornecedorCotacaoDao.setTransactionControler(tc); tc.start(); fornecedorCotacaoDao.delete(fornecedorCotacaoDto); tc.commit(); tc.close(); } catch (final Exception e) { this.rollbackTransaction(tc, e); } } }