package br.com.centralit.citcorpore.negocio; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import br.com.centralit.citcorpore.bean.AgendaAtvPeriodicasDTO; import br.com.centralit.citcorpore.bean.AtividadePeriodicaDTO; import br.com.centralit.citcorpore.bean.OSAtividadePeriodicaDTO; import br.com.centralit.citcorpore.bean.OSDTO; import br.com.centralit.citcorpore.bean.ProgramacaoAtividadeDTO; import br.com.centralit.citcorpore.integracao.AtividadePeriodicaDao; import br.com.centralit.citcorpore.integracao.OSAtividadePeriodicaDao; import br.com.centralit.citcorpore.integracao.ProgramacaoAtividadeDao; 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; @SuppressWarnings("rawtypes") public class AtividadePeriodicaServiceEjb extends CrudServiceImpl implements AtividadePeriodicaService { private AtividadePeriodicaDao dao; @Override protected AtividadePeriodicaDao getDao() { if (dao == null) { dao = new AtividadePeriodicaDao(); } return dao; } @Override public IDto create(IDto model) throws ServiceException, LogicException { // Instancia Objeto controlador de transacao final CrudDAO crudDao = this.getDao(); final ProgramacaoAtividadeDao programacaoAtividadeDao = new ProgramacaoAtividadeDao(); final OSAtividadePeriodicaDao oSAtividadePeriodicaDao = new OSAtividadePeriodicaDao(); final TransactionControler tc = new TransactionControlerImpl(crudDao.getAliasDB()); try { // Faz validacao, caso exista. this.validaCreate(model); final AtividadePeriodicaDTO atividadePeriodicaDTO = (AtividadePeriodicaDTO) model; // Instancia ou obtem os DAOs necessarios. // Seta o TransactionController para os DAOs crudDao.setTransactionControler(tc); programacaoAtividadeDao.setTransactionControler(tc); oSAtividadePeriodicaDao.setTransactionControler(tc); // Inicia transacao tc.start(); // Executa operacoes pertinentes ao negocio. model = crudDao.create(model); if (atividadePeriodicaDTO.getColItens() != null) { for (final Iterator it = atividadePeriodicaDTO.getColItens().iterator(); it.hasNext();) { final ProgramacaoAtividadeDTO programacaoAtividadeDTO = (ProgramacaoAtividadeDTO) it.next(); programacaoAtividadeDTO.setIdAtividadePeriodica(atividadePeriodicaDTO.getIdAtividadePeriodica()); programacaoAtividadeDTO.setHoraInicio(programacaoAtividadeDTO.getHoraInicio().replaceAll(":", "")); programacaoAtividadeDTO.setHoraFim(programacaoAtividadeDTO.getHoraFim().replaceAll(":", "")); programacaoAtividadeDao.create(programacaoAtividadeDTO); } } if (atividadePeriodicaDTO.getColItensOS() != null) { for (final Iterator it = atividadePeriodicaDTO.getColItensOS().iterator(); it.hasNext();) { final OSDTO oSDTO = (OSDTO) it.next(); final OSAtividadePeriodicaDTO oSAtividadePeriodicadto = new OSAtividadePeriodicaDTO(); oSAtividadePeriodicadto.setIdAtividadePeriodica(atividadePeriodicaDTO.getIdAtividadePeriodica()); oSAtividadePeriodicadto.setIdOs(oSDTO.getIdOS()); oSAtividadePeriodicaDao.create(oSAtividadePeriodicadto); } } // 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 ProgramacaoAtividadeDao programacaoAtividadeDao = new ProgramacaoAtividadeDao(); final OSAtividadePeriodicaDao oSAtividadePeriodicaDao = new OSAtividadePeriodicaDao(); final TransactionControler tc = new TransactionControlerImpl(crudDao.getAliasDB()); try { // Faz validacao, caso exista. this.validaUpdate(model); final AtividadePeriodicaDTO atividadePeriodicaDTO = (AtividadePeriodicaDTO) model; // Seta o TransactionController para os DAOs crudDao.setTransactionControler(tc); programacaoAtividadeDao.setTransactionControler(tc); oSAtividadePeriodicaDao.setTransactionControler(tc); // Inicia transacao tc.start(); // Executa operacoes pertinentes ao negocio. crudDao.update(model); programacaoAtividadeDao.deleteByIdAtividadePeriodica(atividadePeriodicaDTO.getIdAtividadePeriodica()); if (atividadePeriodicaDTO.getColItens() != null) { for (final Iterator it = atividadePeriodicaDTO.getColItens().iterator(); it.hasNext();) { final ProgramacaoAtividadeDTO programacaoAtividadeDTO = (ProgramacaoAtividadeDTO) it.next(); programacaoAtividadeDTO.setIdAtividadePeriodica(atividadePeriodicaDTO.getIdAtividadePeriodica()); programacaoAtividadeDTO.setHoraInicio(programacaoAtividadeDTO.getHoraInicio().replaceAll(":", "")); programacaoAtividadeDTO.setHoraFim(programacaoAtividadeDTO.getHoraFim().replaceAll(":", "")); programacaoAtividadeDao.create(programacaoAtividadeDTO); } } oSAtividadePeriodicaDao.deleteByIdAtividadePeriodica(atividadePeriodicaDTO.getIdAtividadePeriodica()); if (atividadePeriodicaDTO.getColItensOS() != null) { for (final Iterator it = atividadePeriodicaDTO.getColItensOS().iterator(); it.hasNext();) { final OSDTO oSDTO = (OSDTO) it.next(); final OSAtividadePeriodicaDTO oSAtividadePeriodicadto = new OSAtividadePeriodicaDTO(); oSAtividadePeriodicadto.setIdAtividadePeriodica(atividadePeriodicaDTO.getIdAtividadePeriodica()); oSAtividadePeriodicadto.setIdOs(oSDTO.getIdOS()); oSAtividadePeriodicaDao.create(oSAtividadePeriodicadto); } } // Faz commit e fecha a transacao. tc.commit(); tc.close(); } catch (final Exception e) { this.rollbackTransaction(tc, e); } } @Override public Collection findByIdSolicitacaoServico(final Integer parm) throws Exception { try { return this.getDao().findByIdSolicitacaoServico(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public Collection findByIdContrato(final Integer parm) throws Exception { try { return this.getDao().findByIdContrato(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public void deleteByIdContrato(final Integer parm) throws Exception { try { this.getDao().deleteByIdContrato(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public Collection findByIdProcedimentoTecnico(final Integer parm) throws Exception { try { return this.getDao().findByIdProcedimentoTecnico(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public void deleteByIdProcedimentoTecnico(final Integer parm) throws Exception { try { this.getDao().deleteByIdProcedimentoTecnico(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public Collection findByIdGrupoAtvPeriodica(final AgendaAtvPeriodicasDTO agendaAtvPeriodicasDTO) throws Exception { Collection<AtividadePeriodicaDTO> colAgendamentoVinculados = new ArrayList<AtividadePeriodicaDTO>(); Collection<AtividadePeriodicaDTO> colAgendamentoSemVinculacao = new ArrayList<AtividadePeriodicaDTO>(); Collection<AtividadePeriodicaDTO> colAgendamentoMudanca = new ArrayList<AtividadePeriodicaDTO>(); final Collection<AtividadePeriodicaDTO> colRetorno = new ArrayList<AtividadePeriodicaDTO>(); try { // S� vai entrar caso tenha selecionado algum item do Grupo de Atividades. if (agendaAtvPeriodicasDTO != null && agendaAtvPeriodicasDTO.getIdGrupoAtvPeriodica() != 0 && agendaAtvPeriodicasDTO.getIdGrupoPesquisa() != null) { // S� vai entrar caso tenha selecioando a op��o Ger�ncia Mudan�a do Grupo Pesquisa. if (agendaAtvPeriodicasDTO != null && agendaAtvPeriodicasDTO.getIdGrupoPesquisa() != null && agendaAtvPeriodicasDTO.getIdGrupoPesquisa() == 2) { colAgendamentoMudanca = this.getDao().listSomenteReqMudanca(agendaAtvPeriodicasDTO); if (colAgendamentoMudanca != null) { colRetorno.addAll(colAgendamentoMudanca); } } else { if (agendaAtvPeriodicasDTO != null && agendaAtvPeriodicasDTO.getIdGrupoPesquisa() != null && agendaAtvPeriodicasDTO.getIdGrupoPesquisa() != 0) { colAgendamentoVinculados = this.getDao().listAgendamentoVinculados(agendaAtvPeriodicasDTO); if (colAgendamentoVinculados != null) { colRetorno.addAll(colAgendamentoVinculados); } } } // Caso n�o tenha selecionado nenhuma op��o do Grupo Pesquisa, ai vou trazer todos. if (agendaAtvPeriodicasDTO != null && agendaAtvPeriodicasDTO.getIdGrupoPesquisa() != null && agendaAtvPeriodicasDTO.getIdGrupoPesquisa() == 0) { colAgendamentoSemVinculacao = this.getDao().listAgendamentoSemVinculacao(agendaAtvPeriodicasDTO); colAgendamentoMudanca = this.getDao().listSomenteReqMudanca(agendaAtvPeriodicasDTO); if (colAgendamentoSemVinculacao != null) { colRetorno.addAll(colAgendamentoSemVinculacao); } if (colAgendamentoMudanca != null) { colRetorno.addAll(colAgendamentoMudanca); } } else { colAgendamentoSemVinculacao = this.getDao().listAgendamentoSemVinculacao(agendaAtvPeriodicasDTO); if (colAgendamentoSemVinculacao != null) { colRetorno.addAll(colAgendamentoSemVinculacao); } } } // return this.getDao().findByIdGrupoAtvPeriodica(agendaAtvPeriodicasDTO); } catch (final Exception e) { throw new ServiceException(e); } return colRetorno; } @Override public void deleteByIdGrupoAtvPeriodica(final Integer parm) throws Exception { try { this.getDao().deleteByIdGrupoAtvPeriodica(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public Collection findByTituloAtividade(final Integer parm) throws Exception { try { return this.getDao().findByTituloAtividade(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public void deleteByTituloAtividade(final Integer parm) throws Exception { try { this.getDao().deleteByTituloAtividade(parm); } catch (final Exception e) { throw new ServiceException(e); } } /** * Metodo que verifica se existe um registro com os mesmos dados na base de dados. * * @param nomeAtividade * - nome da atividade periodica. * @return Retorna 'true' se existir um registro igual e 'false' caso contrario. * @throws Exception */ @Override public boolean existeDuplicacao(final String tituloAtividade, final Integer idAtividade) throws Exception { return this.getDao().existeDuplicacao(tituloAtividade, idAtividade); } @Override public Collection findByIdRequisicaoMudanca(final Integer parm) throws Exception { try { return this.getDao().findByIdRequisicaoMudanca(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public Collection findByIdProblema(final Integer parm) throws Exception { try { return this.getDao().findByIdProblema(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public Collection findByIdRequisicaoLiberacao(final Integer parm) throws Exception { try { return this.getDao().findByIdRequisicaoLiberacao(parm); } catch (final Exception e) { throw new ServiceException(e); } } }