package br.com.centralit.citcorpore.quartz.job; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import br.com.centralit.citcorpore.bean.BICitsmartResultRotinaDTO; import br.com.centralit.citcorpore.bean.ConexaoBIDTO; import br.com.centralit.citcorpore.bean.ProcessamentoBatchDTO; import br.com.centralit.citcorpore.bi.operation.BICitsmartOperation; import br.com.centralit.citcorpore.bi.utils.BICitsmartEmailNotificacao; import br.com.centralit.citcorpore.negocio.ConexaoBIService; import br.com.centralit.citcorpore.negocio.ProcessamentoBatchService; import br.com.centralit.citcorpore.util.Enumerados; import br.com.centralit.citcorpore.util.ParametroUtil; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.UtilStrings; /** * @author euler.ramos * Job que ir� executar a importa��o autom�tica do banco de dados dos clientes Citsmart */ public class ImportacaoAutoBiCitsmart implements Job { @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { BICitsmartEmailNotificacao bICitsmartEmailNotificacao = new BICitsmartEmailNotificacao(); Map<String, String> map; try { BICitsmartResultRotinaDTO bICitsmartResultRotinaDTO; Integer idProcessamentoBatch = new Integer(UtilStrings.apenasNumeros(jobExecutionContext.getJobDetail().getName())); ProcessamentoBatchService processamentoBatchService = (ProcessamentoBatchService) ServiceLocator.getInstance().getService(ProcessamentoBatchService.class, null); ProcessamentoBatchDTO processamentoBatchDTO = processamentoBatchService.findById(idProcessamentoBatch); ConexaoBIService conexaoBIService = (ConexaoBIService) ServiceLocator.getInstance().getService(ConexaoBIService.class, null); //Tem que estar ativo o Processamento if ((processamentoBatchDTO!=null)&&(processamentoBatchDTO.getSituacao()!=null)&&(processamentoBatchDTO.getSituacao().equalsIgnoreCase("A"))){ if (ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.BICITSMART_EXECUTAR_ROTINA_AUTOMATICA, "N").equalsIgnoreCase("S")) { ConexaoBIDTO conexaoBIDTO = conexaoBIService.findByIdProcessBatch(processamentoBatchDTO.getIdProcessamentoBatch()); //Agendamento Espec�fico ou de Exce��o if((conexaoBIDTO!=null)&&(conexaoBIDTO.getIdConexaoBI()!=null)&&(conexaoBIDTO.getIdConexaoBI()>0)){ //Verificando se a conex�o est� ativa: status=Null significa conex�o ativa, "S" significa sucesso, "F" significa falha, "I" significa Inativa! if ((conexaoBIDTO.getStatus()==null)||((conexaoBIDTO.getStatus()!=null)&&(!conexaoBIDTO.getStatus().equalsIgnoreCase("I")))){ //Filtrando somente as Conex�es Autom�ticas! if ((conexaoBIDTO.getTipoImportacao()!=null)&&(conexaoBIDTO.getTipoImportacao().equalsIgnoreCase("A"))){ BICitsmartOperation biCitsmartOperation = new BICitsmartOperation(); bICitsmartResultRotinaDTO = biCitsmartOperation.execucaoRotinaAutomatica(conexaoBIDTO, processamentoBatchDTO.getIdProcessamentoBatch()); //Se for agendamento de exce��o deve-se Inativ�-lo! (Executa-se apenas uma vez!) if((conexaoBIDTO.getIdProcessamentoBatchExcecao()!=null)&&(conexaoBIDTO.getIdProcessamentoBatchExcecao().equals(processamentoBatchDTO.getIdProcessamentoBatch()))){ processamentoBatchDTO.setSituacao("I"); processamentoBatchService.update(processamentoBatchDTO); //Se a rotina de importa��o retornou erro! if (!bICitsmartResultRotinaDTO.isResultado()){ //Notifica��o erro rotina de Exce��o bICitsmartEmailNotificacao.setEmailConexao(conexaoBIDTO.getEmailNotificacao()); bICitsmartEmailNotificacao.setModeloEmail("Exce��o"); map = new HashMap<String, String>(); map.put("idConexao", conexaoBIDTO.getIdConexaoBI().toString()); map.put("nomeConexao", conexaoBIDTO.getNome()); map.put("linkConexao", conexaoBIDTO.getLink()); map.put("idProcessamento",processamentoBatchDTO.getIdProcessamentoBatch().toString()); map.put("descrProcessamento",processamentoBatchDTO.getDescricao().toString()); bICitsmartEmailNotificacao.setMap(map); bICitsmartEmailNotificacao.envia(); } } else { //Se a rotina de importa��o retornou erro! if (!bICitsmartResultRotinaDTO.isResultado()){ //Notifica��o erro rotina agendamento espec�fico bICitsmartEmailNotificacao.setEmailConexao(conexaoBIDTO.getEmailNotificacao()); bICitsmartEmailNotificacao.setModeloEmail("Espec�fico"); map = new HashMap<String, String>(); map.put("idConexao", conexaoBIDTO.getIdConexaoBI().toString()); map.put("nomeConexao", conexaoBIDTO.getNome()); map.put("linkConexao", conexaoBIDTO.getLink()); map.put("idProcessamento",processamentoBatchDTO.getIdProcessamentoBatch().toString()); map.put("descrProcessamento",processamentoBatchDTO.getDescricao().toString()); bICitsmartEmailNotificacao.setMap(map); bICitsmartEmailNotificacao.envia(); } } } } } else { //Se n�o encontrou agendamento correspondente a conex�o, ent�o, este � um Agendamento Padr�o! O sistema deve executar a atualiza��o de todas as conex�es: //Autom�ticas, Ativas e Sem Agendamento Espec�fico ou de Exce��o! BICitsmartOperation biCitsmartOperation = new BICitsmartOperation(); ArrayList<ConexaoBIDTO> listaCnxsAgPadrao = (ArrayList<ConexaoBIDTO>) conexaoBIService.listarConexoesAutomaticasSemAgendEspOuExcecao(); for (ConexaoBIDTO conexaoBI : listaCnxsAgPadrao) { bICitsmartResultRotinaDTO = biCitsmartOperation.execucaoRotinaAutomatica(conexaoBI, processamentoBatchDTO.getIdProcessamentoBatch()); //Se a rotina de importa��o retornou erro! if (!bICitsmartResultRotinaDTO.isResultado()){ //Notifica��o erro rotina agendamento padr�o bICitsmartEmailNotificacao.setEmailConexao(conexaoBI.getEmailNotificacao()); bICitsmartEmailNotificacao.setModeloEmail("Padr�o"); map = new HashMap<String, String>(); map.put("idConexao", conexaoBI.getIdConexaoBI().toString()); map.put("nomeConexao", conexaoBI.getNome()); map.put("linkConexao", conexaoBI.getLink()); map.put("idProcessamento",processamentoBatchDTO.getIdProcessamentoBatch().toString()); map.put("descrProcessamento",processamentoBatchDTO.getDescricao().toString()); //map.put("loginConexao", conexaoBI.getLogin()); bICitsmartEmailNotificacao.setMap(map); bICitsmartEmailNotificacao.envia(); } } } } else { System.out.println("Importa��o autom�tica n�o executada. Par�metro BICITSMART_EXECUTAR_ROTINA_AUTOMATICA inativado!"); //Notifica��o erro par�metro n�o ativado bICitsmartEmailNotificacao.setEmailConexao(null); bICitsmartEmailNotificacao.setModeloEmail("Par�metro"); map = new HashMap<String, String>(); map.put("parametro", Enumerados.ParametroSistema.BICITSMART_EXECUTAR_ROTINA_AUTOMATICA.toString()); bICitsmartEmailNotificacao.setMap(map); bICitsmartEmailNotificacao.envia(); } } } catch (Exception e) { e.printStackTrace(); System.out.println("Problema na importa��o autom�tica BICitsmart!"); //Notifica��o erro rotina bICitsmartEmailNotificacao.setEmailConexao(null); bICitsmartEmailNotificacao.setModeloEmail("Problema"); map = new HashMap<String, String>(); bICitsmartEmailNotificacao.setMap(map); bICitsmartEmailNotificacao.envia(); } } }