package br.com.centralit.citcorpore.negocio; import java.util.Collection; import java.util.Iterator; import br.com.centralit.citcorpore.bean.BIDashBoardDTO; import br.com.centralit.citcorpore.bean.BIItemDashBoardDTO; import br.com.centralit.citcorpore.integracao.BIDashBoardDao; import br.com.centralit.citcorpore.integracao.BIItemDashBoardDao; 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 BIDashBoardServiceEjb extends CrudServiceImpl implements BIDashBoardService { private BIDashBoardDao dao; @Override protected BIDashBoardDao getDao() { if (dao == null) { dao = new BIDashBoardDao(); } return dao; } @Override public IDto create(IDto model) throws ServiceException, LogicException { // Instancia Objeto controlador de transacao final CrudDAO crudDao = this.getDao(); final BIItemDashBoardDao biItemDashBoardDao = new BIItemDashBoardDao(); 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); biItemDashBoardDao.setTransactionControler(tc); // Inicia transacao tc.start(); // Executa operacoes pertinentes ao negocio. model = crudDao.create(model); final BIDashBoardDTO biDashBoardDTO = (BIDashBoardDTO) model; if (biDashBoardDTO != null) { final Collection col = biDashBoardDTO.getColItens(); if (col != null) { for (final Iterator it = col.iterator(); it.hasNext();) { final BIItemDashBoardDTO biItemDashBoardDTO = (BIItemDashBoardDTO) it.next(); biItemDashBoardDTO.setIdDashBoard(biDashBoardDTO.getIdDashBoard()); biItemDashBoardDao.create(biItemDashBoardDTO); } } } // Faz commit e fecha a transacao. tc.commit(); return model; } catch (final Exception e) { this.rollbackTransaction(tc, e); } finally { tc.closeQuietly(); } return model; } @Override public void update(final IDto model) throws ServiceException, LogicException { final CrudDAO crudDao = this.getDao(); final BIItemDashBoardDao biItemDashBoardDao = new BIItemDashBoardDao(); 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); biItemDashBoardDao.setTransactionControler(tc); // Inicia transacao tc.start(); // Executa operacoes pertinentes ao negocio. crudDao.update(model); final BIDashBoardDTO biDashBoardDTO = (BIDashBoardDTO) model; biItemDashBoardDao.deleteByIdDashBoard(biDashBoardDTO.getIdDashBoard()); if (biDashBoardDTO != null) { final Collection col = biDashBoardDTO.getColItens(); if (col != null) { for (final Iterator it = col.iterator(); it.hasNext();) { final BIItemDashBoardDTO biItemDashBoardDTO = (BIItemDashBoardDTO) it.next(); biItemDashBoardDTO.setIdDashBoard(biDashBoardDTO.getIdDashBoard()); biItemDashBoardDao.create(biItemDashBoardDTO); } } } // Faz commit e fecha a transacao. tc.commit(); } catch (final Exception e) { this.rollbackTransaction(tc, e); } finally { tc.closeQuietly(); } } @Override public IDto getByIdentificacao(final String ident) throws Exception { return this.getDao().getByIdentificacao(ident); } }