package br.com.centralit.citcorpore.negocio; import java.util.Collection; import java.util.Iterator; import br.com.centralit.citcorpore.bean.FaixaValoresRecursoDTO; import br.com.centralit.citcorpore.bean.RecursoDTO; import br.com.centralit.citcorpore.integracao.FaixaValoresRecursoDao; import br.com.centralit.citcorpore.integracao.RecursoDao; import br.com.citframework.dto.IDto; import br.com.citframework.excecao.LogicException; import br.com.citframework.excecao.ServiceException; import br.com.citframework.integracao.CrudDAO; import br.com.citframework.integracao.TransactionControler; import br.com.citframework.integracao.TransactionControlerImpl; import br.com.citframework.service.CrudServiceImpl; public class RecursoServiceEjb extends CrudServiceImpl implements RecursoService { private RecursoDao dao; @Override protected RecursoDao getDao() { if (dao == null) { dao = new RecursoDao(); } return dao; } @Override public Collection findByIdGrupoRecurso(final Integer parm) throws Exception { try { return this.getDao().findByIdGrupoRecurso(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public void deleteByIdGrupoRecurso(final Integer parm) throws Exception { try { this.getDao().deleteByIdGrupoRecurso(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public IDto create(IDto model) throws ServiceException, LogicException { // Instancia Objeto controlador de transacao final CrudDAO crudDao = this.getDao(); final FaixaValoresRecursoDao faixaDao = new FaixaValoresRecursoDao(); final TransactionControler tc = new TransactionControlerImpl(crudDao.getAliasDB()); try { // Faz validacao, caso exista. this.validaCreate(model); // Instancia ou obtem os DAOs necessarios. // Seta o TransactionController para os DAOs crudDao.setTransactionControler(tc); faixaDao.setTransactionControler(tc); // Inicia transacao tc.start(); // Executa operacoes pertinentes ao negocio. model = crudDao.create(model); final RecursoDTO objDto = (RecursoDTO) model; if (objDto.getColFaixasValores() != null) { for (final Iterator it = objDto.getColFaixasValores().iterator(); it.hasNext();) { final FaixaValoresRecursoDTO faixaDto = (FaixaValoresRecursoDTO) it.next(); faixaDto.setIdRecurso(objDto.getIdRecurso()); faixaDao.create(faixaDto); } } // Faz commit e fecha a transacao. tc.commit(); tc.close(); return model; } catch (final Exception e) { this.rollbackTransaction(tc, e); } return model; } @Override public void update(final IDto model) throws ServiceException, LogicException { // Instancia Objeto controlador de transacao final CrudDAO crudDao = this.getDao(); final FaixaValoresRecursoDao faixaDao = new FaixaValoresRecursoDao(); final TransactionControler tc = new TransactionControlerImpl(crudDao.getAliasDB()); try { // Faz validacao, caso exista. this.validaUpdate(model); // Seta o TransactionController para os DAOs crudDao.setTransactionControler(tc); faixaDao.setTransactionControler(tc); // Inicia transacao tc.start(); final RecursoDTO objDto = (RecursoDTO) model; // Executa operacoes pertinentes ao negocio. crudDao.update(model); faixaDao.deleteByIdRecurso(objDto.getIdRecurso()); if (objDto.getColFaixasValores() != null) { for (final Iterator it = objDto.getColFaixasValores().iterator(); it.hasNext();) { final FaixaValoresRecursoDTO faixaDto = (FaixaValoresRecursoDTO) it.next(); faixaDto.setIdRecurso(objDto.getIdRecurso()); faixaDao.create(faixaDto); } } // Faz commit e fecha a transacao. tc.commit(); tc.close(); } catch (final Exception e) { this.rollbackTransaction(tc, e); } } @Override public IDto restore(final IDto model) throws ServiceException, LogicException { final RecursoDTO recursoDTO = (RecursoDTO) super.restore(model); if (recursoDTO != null) { final FaixaValoresRecursoDao faixaDao = new FaixaValoresRecursoDao(); Collection col; try { col = faixaDao.findByIdRecurso(recursoDTO.getIdRecurso()); } catch (final Exception e) { e.printStackTrace(); throw new ServiceException(e); } recursoDTO.setColFaixasValores(col); } return recursoDTO; } @Override public Collection findByHostName(final String hostName) throws Exception { try { return this.getDao().findByHostName(hostName); } catch (final Exception e) { throw new ServiceException(e); } } }