package br.com.centralit.citcorpore.negocio; import java.math.BigDecimal; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; import org.mozilla.javascript.Context; import org.mozilla.javascript.Scriptable; import br.com.centralit.citcorpore.batch.ThreadMonitoraAtivosConfiguracao; import br.com.centralit.citcorpore.bean.AuditoriaItemConfigDTO; import br.com.centralit.citcorpore.bean.BaseConhecimentoDTO; import br.com.centralit.citcorpore.bean.CaracteristicaDTO; import br.com.centralit.citcorpore.bean.CaracteristicaTipoItemConfiguracaoDTO; import br.com.centralit.citcorpore.bean.EmpregadoDTO; import br.com.centralit.citcorpore.bean.GrupoItemConfiguracaoDTO; import br.com.centralit.citcorpore.bean.HistoricoItemConfiguracaoDTO; import br.com.centralit.citcorpore.bean.HistoricoValorDTO; import br.com.centralit.citcorpore.bean.ItemCfgSolicitacaoServDTO; import br.com.centralit.citcorpore.bean.ItemConfiguracaoDTO; import br.com.centralit.citcorpore.bean.MonitoramentoAtivosDTO; import br.com.centralit.citcorpore.bean.NotificacaoListaNegraEncontradosDTO; import br.com.centralit.citcorpore.bean.ProblemaDTO; import br.com.centralit.citcorpore.bean.ProblemaItemConfiguracaoDTO; import br.com.centralit.citcorpore.bean.RequisicaoLiberacaoDTO; import br.com.centralit.citcorpore.bean.RequisicaoLiberacaoItemConfiguracaoDTO; import br.com.centralit.citcorpore.bean.RequisicaoMudancaDTO; import br.com.centralit.citcorpore.bean.RequisicaoMudancaItemConfiguracaoDTO; import br.com.centralit.citcorpore.bean.SoftwaresListaNegraDTO; import br.com.centralit.citcorpore.bean.SoftwaresListaNegraEncontradosDTO; import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO; import br.com.centralit.citcorpore.bean.TipoItemConfiguracaoDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.bean.ValorDTO; import br.com.centralit.citcorpore.integracao.AuditoriaItemConfigDao; import br.com.centralit.citcorpore.integracao.CaracteristicaDao; import br.com.centralit.citcorpore.integracao.CaracteristicaTipoItemConfiguracaoDAO; import br.com.centralit.citcorpore.integracao.EmpregadoDao; import br.com.centralit.citcorpore.integracao.GrupoItemConfiguracaoDAO; import br.com.centralit.citcorpore.integracao.HistoricoItemConfiguracaoDAO; import br.com.centralit.citcorpore.integracao.HistoricoValorDAO; import br.com.centralit.citcorpore.integracao.ItemCfgSolicitacaoServDAO; import br.com.centralit.citcorpore.integracao.ItemConfiguracaoDao; import br.com.centralit.citcorpore.integracao.MonitoramentoAtivosDAO; import br.com.centralit.citcorpore.integracao.ProblemaDAO; import br.com.centralit.citcorpore.integracao.ProblemaItemConfiguracaoDAO; import br.com.centralit.citcorpore.integracao.RequisicaoLiberacaoItemConfiguracaoDao; import br.com.centralit.citcorpore.integracao.RequisicaoMudancaDao; import br.com.centralit.citcorpore.integracao.RequisicaoMudancaItemConfiguracaoDao; import br.com.centralit.citcorpore.integracao.SoftwaresListaNegraDao; import br.com.centralit.citcorpore.integracao.SoftwaresListaNegraEncontradosDao; import br.com.centralit.citcorpore.integracao.SolicitacaoServicoDao; import br.com.centralit.citcorpore.integracao.TipoItemConfiguracaoDAO; import br.com.centralit.citcorpore.integracao.ValorDao; import br.com.centralit.citcorpore.mail.MensagemEmail; import br.com.centralit.citcorpore.metainfo.script.ScriptRhinoJSExecute; import br.com.centralit.citcorpore.util.CITCorporeUtil; import br.com.centralit.citcorpore.util.Enumerados.CaracteristicaIdentificacao; import br.com.centralit.citcorpore.util.Enumerados.ParametroSistema; import br.com.centralit.citcorpore.util.Enumerados.TagTipoItemConfiguracaoDefault; import br.com.centralit.citcorpore.util.Enumerados.TipoDate; import br.com.centralit.citcorpore.util.ParametroUtil; import br.com.centralit.citcorpore.util.WebUtil; import br.com.citframework.dto.IDto; import br.com.citframework.excecao.LogicException; import br.com.citframework.excecao.PersistenceException; import br.com.citframework.excecao.ServiceException; import br.com.citframework.integracao.Condition; import br.com.citframework.integracao.Order; import br.com.citframework.integracao.TransactionControler; import br.com.citframework.integracao.TransactionControlerImpl; import br.com.citframework.service.CrudServiceImpl; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.Constantes; import br.com.citframework.util.Reflexao; import br.com.citframework.util.UtilDatas; /** * @author Maycon.Fernandes * */ @SuppressWarnings({ "unchecked", "rawtypes" }) public class ItemConfiguracaoServiceEjb extends CrudServiceImpl implements ItemConfiguracaoService { private final Lock lock = new ReentrantLock(); private boolean situacao = false; private TransactionControler transactionControler; /** DAOs */ private ItemConfiguracaoDao itemConfiguracaoDao; private TipoItemConfiguracaoDAO tipoItemConfiguracaoDao; private CaracteristicaTipoItemConfiguracaoDAO caracteristicaTipoItemConfiguracaoDao; private CaracteristicaDao caracteristicaDao; private ValorDao valorDao; private HistoricoItemConfiguracaoDAO historicoItemConfiguracaoDao; private HistoricoValorDAO historicoValorDao; private AuditoriaItemConfigDao auditoriaItemConfiguracaoDao; private SoftwaresListaNegraDao softwaresListaNegraDao; private SoftwaresListaNegraEncontradosDao softwaresListaNegraEncontradosDao; private ItemCfgSolicitacaoServDAO itemConfiguracaoSolicitacaoServicoDao; private ProblemaItemConfiguracaoDAO problemaItemConfiguracaoDao; private RequisicaoMudancaItemConfiguracaoDao requisicaoMudancaItemConfiguracaoDao; private RequisicaoLiberacaoItemConfiguracaoDao requisicaoLiberacaoItemConfiguracaoDao; private TransactionControler getTransactionControler() throws PersistenceException { if (transactionControler == null || !transactionControler.isStarted()) { transactionControler = new TransactionControlerImpl(Constantes.getValue("DATABASE_ALIAS")); transactionControler.start(); } return transactionControler; } protected ItemConfiguracaoDao getDao() { if (itemConfiguracaoDao == null) { itemConfiguracaoDao = new ItemConfiguracaoDao(); } return itemConfiguracaoDao; } private CaracteristicaDao getCaracteristicaDao() throws Exception { if (caracteristicaDao == null) { caracteristicaDao = new CaracteristicaDao(); caracteristicaDao.setTransactionControler(getTransactionControler()); } return caracteristicaDao; } private CaracteristicaTipoItemConfiguracaoDAO getCaracteristicaTipoItemConfiguracaoDao() throws Exception { if (caracteristicaTipoItemConfiguracaoDao == null) { caracteristicaTipoItemConfiguracaoDao = new CaracteristicaTipoItemConfiguracaoDAO(); caracteristicaTipoItemConfiguracaoDao.setTransactionControler(getTransactionControler()); } return caracteristicaTipoItemConfiguracaoDao; } private ItemCfgSolicitacaoServDAO getItemConfiguracaoSolicitacaoServicoDao() throws Exception { if (itemConfiguracaoSolicitacaoServicoDao == null) { itemConfiguracaoSolicitacaoServicoDao = new ItemCfgSolicitacaoServDAO(); itemConfiguracaoSolicitacaoServicoDao.setTransactionControler(getTransactionControler()); } return itemConfiguracaoSolicitacaoServicoDao; } private HistoricoValorDAO getHistoricoValorDao() throws Exception { if (historicoValorDao == null) { historicoValorDao = new HistoricoValorDAO(); historicoValorDao.setTransactionControler(getTransactionControler()); } return historicoValorDao; } private ProblemaItemConfiguracaoDAO getProblemaItemConfiguracaoDao() throws Exception { if (problemaItemConfiguracaoDao == null) { problemaItemConfiguracaoDao = new ProblemaItemConfiguracaoDAO(); problemaItemConfiguracaoDao.setTransactionControler(getTransactionControler()); } return problemaItemConfiguracaoDao; } private RequisicaoMudancaItemConfiguracaoDao getRequisicaoMudancaItemConfiguracaoDao() throws Exception { if (requisicaoMudancaItemConfiguracaoDao == null) { requisicaoMudancaItemConfiguracaoDao = new RequisicaoMudancaItemConfiguracaoDao(); requisicaoMudancaItemConfiguracaoDao.setTransactionControler(getTransactionControler()); } return requisicaoMudancaItemConfiguracaoDao; } private RequisicaoLiberacaoItemConfiguracaoDao getRequisicaoLiberacaoItemConfiguracaoDao() throws Exception { if (requisicaoLiberacaoItemConfiguracaoDao == null) { requisicaoLiberacaoItemConfiguracaoDao = new RequisicaoLiberacaoItemConfiguracaoDao(); requisicaoLiberacaoItemConfiguracaoDao.setTransactionControler(getTransactionControler()); } return requisicaoLiberacaoItemConfiguracaoDao; } private HistoricoItemConfiguracaoDAO getHistoricoItemConfiguracaoDao() throws Exception { if (historicoItemConfiguracaoDao == null) { historicoItemConfiguracaoDao = new HistoricoItemConfiguracaoDAO(); historicoItemConfiguracaoDao.setTransactionControler(getTransactionControler()); } return historicoItemConfiguracaoDao; } private AuditoriaItemConfigDao getAuditoriaItemConfiguracaoDao() throws Exception { if (auditoriaItemConfiguracaoDao == null) { auditoriaItemConfiguracaoDao = new AuditoriaItemConfigDao(); auditoriaItemConfiguracaoDao.setTransactionControler(getTransactionControler()); } return auditoriaItemConfiguracaoDao; } private TipoItemConfiguracaoDAO getTipoItemConfiguracaoDAO() throws Exception { if (tipoItemConfiguracaoDao == null) { tipoItemConfiguracaoDao = new TipoItemConfiguracaoDAO(); tipoItemConfiguracaoDao.setTransactionControler(getTransactionControler()); } return tipoItemConfiguracaoDao; } private SoftwaresListaNegraDao getSoftwaresListaNegraDao() throws Exception { if (softwaresListaNegraDao == null) { softwaresListaNegraDao = new SoftwaresListaNegraDao(); softwaresListaNegraDao.setTransactionControler(getTransactionControler()); } return softwaresListaNegraDao; } private SoftwaresListaNegraEncontradosDao getSoftwaresListaNegraEncontradosDao() throws Exception { if (softwaresListaNegraEncontradosDao == null) { softwaresListaNegraEncontradosDao = new SoftwaresListaNegraEncontradosDao(); softwaresListaNegraEncontradosDao.setTransactionControler(getTransactionControler()); } return softwaresListaNegraEncontradosDao; } /** * Retorna DAO de Valor. * * @return valor do atributo valorDao. * @author valdoilo.damasceno */ private ValorDao getValorDao() { if (valorDao == null) { valorDao = new ValorDao(); } return valorDao; } @Override public ItemConfiguracaoDTO createItemConfiguracao(ItemConfiguracaoDTO itemConfiguracao, UsuarioDTO user) throws Exception { /** * Inicializando os objetos DAO */ try { lock.lock(); situacao = false; /* * Inserido por Emauri - 23/11/2013 */ TransactionControler transactionControler = null; if (CITCorporeUtil.JDBC_ALIAS_INVENTORY != null && !CITCorporeUtil.JDBC_ALIAS_INVENTORY.trim().equalsIgnoreCase("")) { transactionControler = new TransactionControlerImpl(CITCorporeUtil.JDBC_ALIAS_INVENTORY); } else { transactionControler = new TransactionControlerImpl(getDao().getAliasDB()); } /* * Fim - Inserido por Emauri - 23/11/2013 */ try { this.getCaracteristicaTipoItemConfiguracaoDao().setTransactionControler(transactionControler); this.getCaracteristicaDao().setTransactionControler(transactionControler); this.getValorDao().setTransactionControler(transactionControler); this.getTipoItemConfiguracaoDAO().setTransactionControler(transactionControler); this.getHistoricoItemConfiguracaoDao().setTransactionControler(transactionControler); this.getHistoricoValorDao().setTransactionControler(transactionControler); this.getSoftwaresListaNegraDao().setTransactionControler(transactionControler); this.getAuditoriaItemConfiguracaoDao().setTransactionControler(transactionControler); transactionControler.start(); List<TipoItemConfiguracaoDTO> listaTipo = itemConfiguracao.getTipoItemConfiguracao(); Collection<SoftwaresListaNegraDTO> colsoftwareslistanegra = this.getSoftwaresListaNegraDao().recuperaCollectionSoftwaresListaNegra(); String softwareslistanegra = this.getSoftwaresListaNegraDao().recuperaStringSoftwaresListaNegra(); Pattern p = Pattern.compile(softwareslistanegra.toLowerCase()); NotificacaoListaNegraEncontradosDTO notificacaoListaNegraEncontradosDTO = new NotificacaoListaNegraEncontradosDTO(); List<NotificacaoListaNegraEncontradosDTO> colListaNegraEncontrados = new ArrayList<NotificacaoListaNegraEncontradosDTO>(); List<ItemConfiguracaoDTO> lstItemConfiguracaoFilhos = null; boolean verificaGravacaoIc = false; /** * Se existe item de configura��o com a mesma identifica��o */ ItemConfiguracaoDTO itemConfiguracaoExistente; if ((itemConfiguracaoExistente = this.getDao().findByIdentificacaoItemConfiguracao(itemConfiguracao)) != null) { /** * Atualizo os dados do item de configura��o */ HistoricoItemConfiguracaoDTO historicoIc = this.createHistoricoItem(itemConfiguracaoExistente, null); historicoIc = (HistoricoItemConfiguracaoDTO) this.getHistoricoItemConfiguracaoDao().create(historicoIc); itemConfiguracaoExistente.setDataInicio(UtilDatas.getDataAtual()); itemConfiguracaoExistente.setDtUltimaCaptura(UtilDatas.getDataHoraAtual()); if (itemConfiguracaoExistente.getNome() == null) itemConfiguracaoExistente.setNome(itemConfiguracaoExistente.getIdentificacao()); this.getDao().updateNotNull(itemConfiguracaoExistente); itemConfiguracao = itemConfiguracaoExistente; /** * SETA DATAFIM Atualizando o itens filhos relacionados. Atribui DataFim para todos os Itens de Configura��o Filhos. Em gravarItemConfiguracaoFilho esses Itens Filhos ser�o * atualizados, conforme as informa��es do novo invent�rio, removendo a DataFim caso ainda exista no novo invent�rio. Essa verifica��o � feira atrav�s de sua identifica��o. */ this.getDao().updateItemConfiguracaoFilho(itemConfiguracao.getIdItemConfiguracao(), UtilDatas.getDataAtual(), UtilDatas.getDataHoraAtual()); lstItemConfiguracaoFilhos = (List<ItemConfiguracaoDTO>) this.getDao().listItemConfiguracaoFilho(itemConfiguracao); if (lstItemConfiguracaoFilhos != null && !lstItemConfiguracaoFilhos.isEmpty()) { verificaGravacaoIc = true; } } else { /** * Cria o item de configura��o */ itemConfiguracao.setDataInicio(UtilDatas.getDataAtual()); itemConfiguracao.setDtUltimaCaptura(UtilDatas.getDataHoraAtual()); itemConfiguracao.setNome(itemConfiguracao.getIdentificacao()); itemConfiguracao = (ItemConfiguracaoDTO) getDao().create(itemConfiguracao); } Integer qtdeThreads = Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.MONITORAMENTO_ATIVOS_NUMERO_THREADS, "10")); ExecutorService executorService = Executors.newFixedThreadPool(qtdeThreads); /** Itera os tipos de item. **/ for (TipoItemConfiguracaoDTO tipoItemConfiguracaoDTO : listaTipo) { List<CaracteristicaDTO> lstCaracteristica = tipoItemConfiguracaoDTO.getCaracteristicas(); /** Grava TipoItemConfiguracao. **/ tipoItemConfiguracaoDTO = this.gravarTipoItemConfiguracao(tipoItemConfiguracaoDTO, executorService); tipoItemConfiguracaoDTO.setCaracteristicas(lstCaracteristica); /** Cria ou Atualiza o ItemConfiguracaoFilho. **/ ItemConfiguracaoDTO itemConfiguracaoFilhoGravado = this.gravarItemConfiguracaoFilho(itemConfiguracao, tipoItemConfiguracaoDTO); if (lstCaracteristica != null && !lstCaracteristica.isEmpty()) { for (CaracteristicaDTO caracteristicaBean : lstCaracteristica) { ValorDTO valorDTO = caracteristicaBean.getValor(); valorDTO.setValorStr(StringEscapeUtils.escapeJava(valorDTO.getValorStr())); caracteristicaBean = this.gravarCaracteristica(caracteristicaBean, tipoItemConfiguracaoDTO, this.getCaracteristicaDao(), this.getCaracteristicaTipoItemConfiguracaoDao()); this.gravarValor(valorDTO, caracteristicaBean, itemConfiguracaoFilhoGravado, itemConfiguracaoFilhoGravado.getHistoricoItemConfiguracaoDTO(), verificaGravacaoIc, transactionControler, executorService); // Verifica se h� Software Lista Negra Instalado if (tipoItemConfiguracaoDTO.getNome().equalsIgnoreCase("SOFTWARES") && (colsoftwareslistanegra != null && !colsoftwareslistanegra.isEmpty()) && (valorDTO.getValorStr() != null && !StringUtils.isBlank(valorDTO.getValorStr())) && (tipoItemConfiguracaoDTO.getNome() != null && !StringUtils.isBlank(tipoItemConfiguracaoDTO.getNome()))) { Matcher m = p.matcher(valorDTO.getValorStr().toLowerCase()); while (m.find()) { for (SoftwaresListaNegraDTO s : colsoftwareslistanegra) { if (s.getNomeSoftwaresListaNegra().equalsIgnoreCase(m.group())) { SoftwaresListaNegraEncontradosDTO softwaresListaNegraEncontradosDTO = new SoftwaresListaNegraEncontradosDTO(); softwaresListaNegraEncontradosDTO.setIdsoftwareslistanegra(s.getIdSoftwaresListaNegra()); softwaresListaNegraEncontradosDTO.setIditemconfiguracao(itemConfiguracaoFilhoGravado.getIdItemConfiguracao()); softwaresListaNegraEncontradosDTO.setSoftwarelistanegraencontrado(valorDTO.getValorStr()); softwaresListaNegraEncontradosDTO.setData(UtilDatas.getDataHoraAtual()); getSoftwaresListaNegraEncontradosDao().create(softwaresListaNegraEncontradosDTO); notificacaoListaNegraEncontradosDTO.setComputador(itemConfiguracaoFilhoGravado.getIdentificacao()); notificacaoListaNegraEncontradosDTO.setSoftwarelistanegra(s.getNomeSoftwaresListaNegra()); notificacaoListaNegraEncontradosDTO.setSoftwareencontrado(valorDTO.getValorStr()); notificacaoListaNegraEncontradosDTO.setDataHora(UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, UtilDatas.getDataAtual(), null)); colListaNegraEncontrados.add(notificacaoListaNegraEncontradosDTO); notificacaoListaNegraEncontradosDTO = new NotificacaoListaNegraEncontradosDTO(); break; } } } } } } } executorService.shutdown(); itemConfiguracao.setDataFim(UtilDatas.getDataAtual()); List<ItemConfiguracaoDTO> listItemConfiguracaoDto = this.retornaItemConfiguracaoFinalizadoByIdItemConfiguracao(itemConfiguracao, getDao()); if (listItemConfiguracaoDto != null && listItemConfiguracaoDto.size() > 0) { for (ItemConfiguracaoDTO itemConfiguracaoDTO : listItemConfiguracaoDto) { getAuditoriaItemConfiguracaoDao().create(this.gravarAuditoriaItemConfig(itemConfiguracaoDTO, null, null, null, "Desativado")); } } if (colListaNegraEncontrados != null && colListaNegraEncontrados.size() > 0) { notificacaoListaNegraEncontradosDTO.setTabelaListaNegra(formatarColNotifListaNegraEmail(colListaNegraEncontrados)); } if (notificacaoListaNegraEncontradosDTO.getTabelaListaNegra() != null && !StringUtils.isBlank(notificacaoListaNegraEncontradosDTO.getTabelaListaNegra())) { try { enviaEmailGrupo(Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ID_MODELO_EMAIL_SOFTWARE_LISTA_NEGRA, "").trim()), Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ID_GRUPO_PADRAO_RESPONSAVEL_SOFTWARE_LISTA_NEGRA, "").trim()), notificacaoListaNegraEncontradosDTO); } catch (NumberFormatException e) { System.out.println(i18nMessage("requisicaoLiberacao.emailNaoDefinido")); } } transactionControler.commit(); } catch (Exception e) { e.printStackTrace(); this.rollbackTransaction(transactionControler, e); } finally { try { transactionControler.close(); } catch (PersistenceException e) { e.printStackTrace(); } } } finally { lock.unlock(); } return itemConfiguracao; } /** * Formata em string a cole��o de softwares lista negra, transformando em uma tabela HTML para enviar por email * * @author ronnie.lopes * */ public String formatarColNotifListaNegraEmail(List<NotificacaoListaNegraEncontradosDTO> lista) { StringBuilder texto = new StringBuilder(); if (lista != null && lista.size() > 0) { texto.append("<table border='1' align='left' width=100%>" + " <tbody>" + " <tr>" + " <td><b>Computador</b></td>" + " <td><b>Software Lista Negra</b></td>" + " <td><b>Software Encontrado</b></td>" + " <td><b>Data Hora</b></td>" + " </tr>"); for (NotificacaoListaNegraEncontradosDTO n : lista) { texto.append(" <tr>" + " <td>" + n.getComputador() + "</td>" + " <td>" + n.getSoftwarelistanegra() + "</td>" + " <td>" + n.getSoftwareencontrado() + "</td>" + " <td>" + n.getDataHora() + "</td>" + " </tr>"); } texto.append("</tbody>" + "</table>"); return texto.toString(); } else { return null; } } /** * Notifica com relat�rio Softwares Lista Negra todos os respons�veis de um grupo * * @author ronnie.lopes * @param idModeloEmail * , idGrupoDestino, notListaNegraEncontradosDTO * @throws Exception */ public void enviaEmailGrupo(Integer idModeloEmail, Integer idGrupoDestino, NotificacaoListaNegraEncontradosDTO notListaNegraEncontradosDTO) throws Exception { MensagemEmail mensagem = null; if (idGrupoDestino == null) { return; } if (idModeloEmail == null) { return; } GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); List<String> emails = null; try { emails = (List<String>) grupoService.listarPessoasEmailPorGrupo(idGrupoDestino); } catch (Exception e) { e.printStackTrace(); return; } if (emails == null || emails.isEmpty()) { return; } String remetente = ParametroUtil.getValor(ParametroSistema.RemetenteNotificacoesSolicitacao, null, null); if (remetente == null) throw new LogicException(i18nMessage("requisicaoLiberacao.remetenteNaoDefinido")); Object[] emailsArray = new Object[(emails.size() / 2)]; int j = 0; for (int i = 0; i < emails.size(); i++) { if (emails.get(i).contains("@")) { continue; } else { emailsArray[j] = emails.get(i); j++; } } try { int i = 0; for (String email : emails) { int posArroba = email.indexOf("@"); if (posArroba > 0 && email.substring(posArroba).contains(".")) { try { if (StringUtils.isNotBlank(emailsArray[i].toString())) { String nomeContato = emailsArray[i].toString(); notListaNegraEncontradosDTO.setNomeContato(nomeContato); } mensagem = new MensagemEmail(idModeloEmail, new IDto[] { notListaNegraEncontradosDTO }); mensagem.envia(email, remetente, remetente); i++; } catch (Exception e) { } } } } catch (Exception e) { } } /** * Grava Tipo Item configuracao * * @param tipoItemConfiguracaoDTO * @param executorService * @return tipoItemConfiguracaoDTO * @throws Exception */ public synchronized TipoItemConfiguracaoDTO gravarTipoItemConfiguracao(TipoItemConfiguracaoDTO tipoItemConfiguracaoDTO, ExecutorService executorService) throws Exception { try { List listTipoItemConf = getTipoItemConfiguracaoDAO().findByNomeTipoItemConfiguracao(tipoItemConfiguracaoDTO.getNome()); if (listTipoItemConf == null || listTipoItemConf.size() == 0) { tipoItemConfiguracaoDTO.setDataInicio(UtilDatas.getDataAtual()); tipoItemConfiguracaoDTO.setIdEmpresa(1); tipoItemConfiguracaoDTO = (TipoItemConfiguracaoDTO) getTipoItemConfiguracaoDAO().create(tipoItemConfiguracaoDTO); } else { tipoItemConfiguracaoDTO = (TipoItemConfiguracaoDTO) listTipoItemConf.get(0); } tipoItemConfiguracaoDTO.setSistema("S"); this.tratarMonitoramentoAtivoDeConfiguracao(tipoItemConfiguracaoDTO, null, null, null, true, executorService); } catch (Exception e) { System.out.println("Problema ao gravar tipoItemConfiguracao: " + e); e.printStackTrace(); } return tipoItemConfiguracaoDTO; } /** * Gravar Caracteristica do Tipo Item Configuracao * * @param caracteristicaBean * @param tipoitemconfiguracao * @param caracteristicaDao * @param caracteristicaTipoItemConfiguracaoDAO * @return caracteristicaBean * @throws Exception */ private synchronized CaracteristicaDTO gravarCaracteristica(CaracteristicaDTO caracteristicaBean, TipoItemConfiguracaoDTO tipoitemconfiguracao, CaracteristicaDao caracteristicaDao, CaracteristicaTipoItemConfiguracaoDAO caracteristicaTipoItemConfiguracaoDao) throws Exception { try { List lstExisteCaract = getCaracteristicaDao().consultarCaracteristicas("", caracteristicaBean.getTag(), false); if (lstExisteCaract == null || lstExisteCaract.size() == 0) { caracteristicaBean.setIdEmpresa(1); caracteristicaBean.setTipo("A"); caracteristicaBean.setDataInicio(UtilDatas.getDataAtual()); caracteristicaBean.setSistema("S"); // caracteristicaBean.setSistema((char) 1); caracteristicaBean = (CaracteristicaDTO) getCaracteristicaDao().create(caracteristicaBean); } else { caracteristicaBean = (CaracteristicaDTO) lstExisteCaract.get(0); } List lstExisteCaractTipoItem = getCaracteristicaDao().consultarCaracteristicas(tipoitemconfiguracao.getTag(), caracteristicaBean.getTag(), false); if (lstExisteCaractTipoItem == null || lstExisteCaractTipoItem.size() == 0) { this.gravarCaracteristicaTipoItemConfiguracaoDTO(tipoitemconfiguracao, caracteristicaBean, caracteristicaTipoItemConfiguracaoDao); } } catch (Exception e) { e.printStackTrace(); System.out.println("PROBLEMA AO GRAVAR CARACTERISTICA!"); } return caracteristicaBean; } /** * Grava Valor Relacionado a caracteristica de Item configuracao do tipo item Configuracao * * @param valorDTO * @param valorDao * @param caracteristicaBean * @param itemConfiguracaoDTO * @param executorService * @return valorDTO * @throws Exception */ private ValorDTO gravarValor(ValorDTO valorDTO, CaracteristicaDTO caracteristicaBean, ItemConfiguracaoDTO itemConfiguracaoFilhoGravado, HistoricoItemConfiguracaoDTO historicoIc, boolean verificaGravacaoIc, TransactionControler tc, ExecutorService executorService) throws Exception { try { ValorDTO valorBean = getValorDao().restoreItemConfiguracao(itemConfiguracaoFilhoGravado.getIdItemConfiguracao(), caracteristicaBean.getIdCaracteristica()); if (valorBean == null) { valorDTO.setIdItemConfiguracao(itemConfiguracaoFilhoGravado.getIdItemConfiguracao()); valorDTO.setIdCaracteristica(caracteristicaBean.getIdCaracteristica()); valorDTO = (ValorDTO) getValorDao().create(valorDTO); if (verificaGravacaoIc) { // Verifica situacao para gravar log somente uma vez, como pode ser alterado somente a uma valor de uma caracteristica if (!this.situacao) { getAuditoriaItemConfiguracaoDao().create(this.gravarAuditoriaItemConfig(itemConfiguracaoFilhoGravado, null, null, null, "Cria��o")); this.situacao = true; } } } else { TipoItemConfiguracaoDTO tipoItemConfiguracaoDto = new TipoItemConfiguracaoDTO(); tipoItemConfiguracaoDto.setId(itemConfiguracaoFilhoGravado.getIdTipoItemConfiguracao()); this.tratarMonitoramentoAtivoDeConfiguracao(tipoItemConfiguracaoDto, caracteristicaBean, valorBean, valorDTO, false, executorService); ValorDTO valorByIdIC = getValorDao().restoreValorByIdItemConfiguracao(itemConfiguracaoFilhoGravado.getIdItemConfiguracao(), caracteristicaBean.getIdCaracteristica(), valorDTO.getValorStr()); valorBean.setValorStr(valorDTO.getValorStr()); if (historicoIc != null && historicoIc.getIdHistoricoIC() != null) { // Grava Historico valor item configuracao e grava auditoria this.getHistoricoValorDao().create(this.createHistoricoValor(valorBean, null, historicoIc.getIdHistoricoIC().intValue())); } if (valorByIdIC == null) { if (verificaGravacaoIc) { if (!this.situacao) { getAuditoriaItemConfiguracaoDao().create(this.gravarAuditoriaItemConfig(itemConfiguracaoFilhoGravado, null, null, null, "Altera��o")); this.situacao = true; } } } getValorDao().update(valorBean); } } catch (Exception e) { System.out.println("Problema ao gravar valor: " + e.getMessage()); e.printStackTrace(); } return valorDTO; } /** * Grava Item Configuracao Filho * * @param itemConfiguracaoPai * @param tipoItemConfiguracaoDTO * @return itemConfiguracaoDTO * @throws Exception */ private synchronized ItemConfiguracaoDTO gravarItemConfiguracaoFilho(ItemConfiguracaoDTO itemConfiguracaoPai, TipoItemConfiguracaoDTO tipoItemConfiguracaoDTO) throws Exception { ItemConfiguracaoDTO itemConfiguracaoFilho = new ItemConfiguracaoDTO(); HistoricoItemConfiguracaoDTO historioIcDto = new HistoricoItemConfiguracaoDTO(); try { itemConfiguracaoFilho.setIdItemConfiguracaoPai(itemConfiguracaoPai.getIdItemConfiguracao()); itemConfiguracaoFilho.setIdTipoItemConfiguracao(tipoItemConfiguracaoDTO.getId()); itemConfiguracaoFilho.setDataInicio(UtilDatas.getDataAtual()); String identificacao = this.obterIdentificacaoItemConfiguracaoFilho(tipoItemConfiguracaoDTO); if (identificacao.length() > 400) { identificacao = identificacao.substring(0, 399); } itemConfiguracaoFilho.setIdentificacao(StringUtils.replace(identificacao, "\0 ", "")); itemConfiguracaoFilho = this.getDao().obterICFilhoPorIdentificacaoIdPaiEIdTipo(itemConfiguracaoFilho); if (itemConfiguracaoFilho.getIdItemConfiguracao() != null) { itemConfiguracaoFilho.setDataFim(null); this.getDao().updateItemConfiguracaoFilho(itemConfiguracaoFilho.getIdItemConfiguracao(), null, null); this.getDao().update(itemConfiguracaoFilho); if (itemConfiguracaoFilho.getIdItemConfiguracao() != null) { itemConfiguracaoFilho = (ItemConfiguracaoDTO) this.getDao().restore(itemConfiguracaoFilho); historioIcDto = (HistoricoItemConfiguracaoDTO) this.getHistoricoItemConfiguracaoDao().create(this.createHistoricoItem(itemConfiguracaoFilho, null)); } if (historioIcDto != null) { itemConfiguracaoFilho.setHistoricoItemConfiguracaoDTO(historioIcDto); } } else { itemConfiguracaoFilho = (ItemConfiguracaoDTO) this.getDao().create(itemConfiguracaoFilho); } } catch (Exception e) { e.printStackTrace(); System.out.println("PROBLEMA AO GRAVAR ITEM CONFIGURACAO FILHO!"); } return itemConfiguracaoFilho; } /** * Grava Vinculo Caracteristica e Tipo Item congiguracao * * @param tipoItemConfiguracaoDTO * @param caracteristicaBean * @return caracteristicaTipoItemConfiguracaoBean */ private synchronized CaracteristicaTipoItemConfiguracaoDTO gravarCaracteristicaTipoItemConfiguracaoDTO(TipoItemConfiguracaoDTO tipoItemConfiguracaoDTO, CaracteristicaDTO caracteristicaBean, CaracteristicaTipoItemConfiguracaoDAO caracteristicaTipoItemConfiguracaoDao) { CaracteristicaTipoItemConfiguracaoDTO caracteristicaTipoItemConfiguracaoBean = new CaracteristicaTipoItemConfiguracaoDTO(); try { caracteristicaTipoItemConfiguracaoBean.setIdTipoItemConfiguracao(tipoItemConfiguracaoDTO.getId()); caracteristicaTipoItemConfiguracaoBean.setIdCaracteristica(caracteristicaBean.getIdCaracteristica()); caracteristicaTipoItemConfiguracaoBean.setDataInicio(UtilDatas.getDataAtual()); caracteristicaTipoItemConfiguracaoBean.setNameInfoAgente(caracteristicaBean.getNome()); getCaracteristicaTipoItemConfiguracaoDao().create(caracteristicaTipoItemConfiguracaoBean); } catch (Exception e) { System.out.println("PROBLEMA AO GRAVAR CARACTERISTICA TIPO ITEM CONFIGURACAO!"); } return caracteristicaTipoItemConfiguracaoBean; } @Override public ItemConfiguracaoDTO restoreByIdItemConfiguracao(Integer idItemConfiguracao) throws Exception { ArrayList<Condition> condicoes = new ArrayList<Condition>(); condicoes.add(new Condition("idItemConfiguracao", "=", idItemConfiguracao)); try { ArrayList<ItemConfiguracaoDTO> retorno = (ArrayList<ItemConfiguracaoDTO>) ((ItemConfiguracaoDao) getDao()).findByCondition(condicoes, null); if (retorno != null) { return retorno.get(0); } } catch (Exception e) { e.printStackTrace(); } return null; } @Override public ItemConfiguracaoDTO createItemConfiguracaoAplicacao(ItemConfiguracaoDTO itemConfiguracao, UsuarioDTO user) throws ServiceException, LogicException { TransactionControler transactionControler = new TransactionControlerImpl(getDao().getAliasDB()); try { HistoricoItemConfiguracaoDTO ic = new HistoricoItemConfiguracaoDTO(); this.validaCreate(itemConfiguracao); this.getDao().setTransactionControler(transactionControler); this.getHistoricoItemConfiguracaoDao().setTransactionControler(transactionControler); this.getValorDao().setTransactionControler(transactionControler); this.getAuditoriaItemConfiguracaoDao().setTransactionControler(transactionControler); transactionControler.start(); if (itemConfiguracao != null && itemConfiguracao.getIdItemConfiguracaoPai() != null) { ItemConfiguracaoDTO itemConfiguracaoPai = new ItemConfiguracaoDTO(); itemConfiguracaoPai.setIdItemConfiguracao(itemConfiguracao.getIdItemConfiguracaoPai()); itemConfiguracaoPai = (ItemConfiguracaoDTO) this.restore(itemConfiguracaoPai); } if (itemConfiguracao != null) { itemConfiguracao.setDataInicio(UtilDatas.getDataAtual()); } if (itemConfiguracao != null && itemConfiguracao.getIdGrupoItemConfiguracao() != null) { if (itemConfiguracao.getIdGrupoItemConfiguracao() == 1000) { throw new LogicException("Voc� deve criar um novo Grupo e fazer a vincula��o com ele."); } } itemConfiguracao = (ItemConfiguracaoDTO) getDao().create(itemConfiguracao); if (itemConfiguracao.getIdItemConfiguracao() != null) { ic = (HistoricoItemConfiguracaoDTO) this.getHistoricoItemConfiguracaoDao().create(this.createHistoricoItem(itemConfiguracao, user)); } relacaoMudanca(itemConfiguracao); relacaoProblema(itemConfiguracao); relacaoIncidente(itemConfiguracao); relacaoLiberacao(itemConfiguracao); enviarEmailNotificacao(itemConfiguracao, transactionControler, "CRIA_IC"); this.criarEAssociarValorDaCaracteristicaAoItemConfiguracao(itemConfiguracao, user, ic.getIdHistoricoIC()); transactionControler.commit(); } catch (Exception e) { e.printStackTrace(); this.rollbackTransaction(transactionControler, e); } finally { try { transactionControler.close(); } catch (PersistenceException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return itemConfiguracao; } /** * Retorna Service de Valor. * * @return ValorService * @throws ServiceException * @throws Exception * @author valdoilo.damasceno */ public ValorService getValorService() throws ServiceException, Exception { return (ValorService) ServiceLocator.getInstance().getService(ValorService.class, null); } /** * Retorna Service de Valor. * * @return ValorService * @throws ServiceException * @throws Exception * @author valdoilo.damasceno */ public UsuarioService getUsuarioService() throws ServiceException, Exception { return (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); } /** * Cria ou Atualiza associa��o do Valor da Caracter�stica ao �tem de Configura��o. * * @throws Exception * @author valdoilo.damasceno */ @Override public void criarEAssociarValorDaCaracteristicaAoItemConfiguracao(ItemConfiguracaoDTO itemConfiguracaoDto, UsuarioDTO user, Integer idHistoricoIC) throws Exception { if (itemConfiguracaoDto.getTipoItemConfiguracaoSerializadas() != null && itemConfiguracaoDto.getTipoItemConfiguracaoSerializadas().getCaracteristicas() != null && !itemConfiguracaoDto.getTipoItemConfiguracaoSerializadas().getCaracteristicas().isEmpty() && idHistoricoIC != null) { boolean situacao = false; for (int i = 0; i < itemConfiguracaoDto.getTipoItemConfiguracaoSerializadas().getCaracteristicas().size(); i++) { ValorDTO valor = this.getValorDao().restoreItemConfiguracao(itemConfiguracaoDto.getIdItemConfiguracao(), ((CaracteristicaDTO) itemConfiguracaoDto.getTipoItemConfiguracaoSerializadas().getCaracteristicas().get(i)).getIdCaracteristica()); if (valor != null) { valor.setValorStr(((CaracteristicaDTO) itemConfiguracaoDto.getTipoItemConfiguracaoSerializadas().getCaracteristicas().get(i)).getValorString()); valor.setValorLongo(((CaracteristicaDTO) itemConfiguracaoDto.getTipoItemConfiguracaoSerializadas().getCaracteristicas().get(i)).getValorString()); ValorDTO valorDto = this.getValorDao().restoreValorByIdItemConfiguracao(itemConfiguracaoDto.getIdItemConfiguracao(), ((CaracteristicaDTO) itemConfiguracaoDto.getTipoItemConfiguracaoSerializadas().getCaracteristicas().get(i)).getIdCaracteristica(), valor.getValorStr()); HistoricoValorDTO historicoValorbean = this.getHistoricoValorDao().restoreValorByIdValor(valor.getIdValor()); this.getValorDao().update(valor); this.getHistoricoValorDao().create(this.createHistoricoValor(valor, user, idHistoricoIC)); if (valorDto == null) { if (!situacao) { this.getAuditoriaItemConfiguracaoDao().create(this.gravarAuditoriaItemConfig(itemConfiguracaoDto, null, null, user, "Altera��o")); situacao = true; } } else if (historicoValorbean == null) { if (!situacao) { this.getAuditoriaItemConfiguracaoDao().create(this.gravarAuditoriaItemConfig(itemConfiguracaoDto, null, null, user, "Altera��o")); situacao = true; } } } else { HistoricoItemConfiguracaoDTO historioConfiguracaoDTO = new HistoricoItemConfiguracaoDTO(); valor = new ValorDTO(); valor.setIdItemConfiguracao(itemConfiguracaoDto.getIdItemConfiguracao()); valor.setIdCaracteristica(((CaracteristicaDTO) itemConfiguracaoDto.getTipoItemConfiguracaoSerializadas().getCaracteristicas().get(i)).getIdCaracteristica()); valor.setValorStr(((CaracteristicaDTO) itemConfiguracaoDto.getTipoItemConfiguracaoSerializadas().getCaracteristicas().get(i)).getValorString()); valor.setValorLongo(((CaracteristicaDTO) itemConfiguracaoDto.getTipoItemConfiguracaoSerializadas().getCaracteristicas().get(i)).getValorString()); this.getValorDao().create(valor); this.getHistoricoValorDao().create(this.createHistoricoValor(valor, user, idHistoricoIC)); historioConfiguracaoDTO.setIdHistoricoIC(idHistoricoIC); itemConfiguracaoDto.setHistoricoItemConfiguracaoDTO(historioConfiguracaoDTO); if (!situacao) { this.getAuditoriaItemConfiguracaoDao().create(this.gravarAuditoriaItemConfig(itemConfiguracaoDto, null, null, user, "Cria��o")); situacao = true; } } } } } @Override public ItemConfiguracaoDTO listIdUsuario(String obj) throws Exception { try { return getDao().listIdUsuario(obj); } catch (Exception e) { throw new ServiceException(e); } } /** * Alterado para n�o criar m�ltiplas transa��es 02/01/2015 - 14:09 * * @author rafael.soyer * @author thyen.chan */ @Override public void updateItemConfiguracao(IDto ItemConfiguracao, UsuarioDTO user) throws ServiceException, LogicException { ItemConfiguracaoDTO itemConfiguracaoDto = new ItemConfiguracaoDTO(); TransactionControler transactionControler = new TransactionControlerImpl(getDao().getAliasDB()); HistoricoItemConfiguracaoDTO ic = new HistoricoItemConfiguracaoDTO(); itemConfiguracaoDto = (ItemConfiguracaoDTO) ItemConfiguracao; try { this.getHistoricoItemConfiguracaoDao().setTransactionControler(transactionControler); this.getRequisicaoMudancaItemConfiguracaoDao().setTransactionControler(transactionControler); this.getProblemaItemConfiguracaoDao().setTransactionControler(transactionControler); this.getItemConfiguracaoSolicitacaoServicoDao().setTransactionControler(transactionControler); this.getRequisicaoLiberacaoItemConfiguracaoDao().setTransactionControler(transactionControler); this.getValorDao().setTransactionControler(transactionControler); this.getHistoricoValorDao().setTransactionControler(transactionControler); transactionControler.start(); /* Gravando o historico */ if (itemConfiguracaoDto.getIdItemConfiguracao() != null) { ic = (HistoricoItemConfiguracaoDTO) this.getHistoricoItemConfiguracaoDao().create(this.createHistoricoItem(itemConfiguracaoDto, user)); } relacaoMudanca(itemConfiguracaoDto); relacaoProblema(itemConfiguracaoDto); relacaoIncidente(itemConfiguracaoDto); relacaoLiberacao(itemConfiguracaoDto); enviarEmailNotificacao(itemConfiguracaoDto, transactionControler, "ALT_IC"); transactionControler.commit(); transactionControler.closeQuietly(); this.criarEAssociarValorDaCaracteristicaAoItemConfiguracao(itemConfiguracaoDto, user, ic.getIdHistoricoIC()); getDao().update(itemConfiguracaoDto); } catch (Exception e) { e.printStackTrace(); this.rollbackTransaction(transactionControler, e); } } public void relacaoMudanca(ItemConfiguracaoDTO item) throws ServiceException, Exception { /* Gravando o relacionamento com mudanca */ if (item.getIdMudanca() != null) { RequisicaoMudancaItemConfiguracaoDTO m = new RequisicaoMudancaItemConfiguracaoDTO(); m.setIdItemConfiguracao(item.getIdItemConfiguracao()); m.setIdRequisicaoMudanca(item.getIdMudanca()); if (!this.getRequisicaoMudancaItemConfiguracaoDao().verificaSeCadastrado(m)) this.getRequisicaoMudancaItemConfiguracaoDao().create(m); } } public void relacaoProblema(ItemConfiguracaoDTO item) throws ServiceException, Exception { /* Gravando o relacionamento com problema */ if (item.getIdProblema() != null) { ProblemaItemConfiguracaoDTO m = new ProblemaItemConfiguracaoDTO(); m.setIdItemConfiguracao(item.getIdItemConfiguracao()); m.setIdProblema(item.getIdProblema()); if (!this.getProblemaItemConfiguracaoDao().verificaSeCadastrado(m)) this.getProblemaItemConfiguracaoDao().create(m); } } public void relacaoIncidente(ItemConfiguracaoDTO item) throws ServiceException, Exception { /* Gravando o relacionamento com incidente */ if (item.getIdIncidente() != null) { ItemCfgSolicitacaoServDTO m = new ItemCfgSolicitacaoServDTO(); m.setIdItemConfiguracao(item.getIdItemConfiguracao()); m.setIdSolicitacaoServico(item.getIdIncidente()); m.setDataInicio(UtilDatas.getDataAtual()); if (!this.getItemConfiguracaoSolicitacaoServicoDao().verificaSeCadastrado(m)) this.getItemConfiguracaoSolicitacaoServicoDao().create(m); } } @Override public void restaurarBaseline(ItemConfiguracaoDTO item, UsuarioDTO user) throws Exception { ItemConfiguracaoDTO itemConfiguracaoDto = new ItemConfiguracaoDTO(); TransactionControler transactionControler = new TransactionControlerImpl(getDao().getAliasDB()); this.getValorDao().setTransactionControler(transactionControler); this.getHistoricoItemConfiguracaoDao().setTransactionControler(transactionControler); HistoricoItemConfiguracaoDTO ic = new HistoricoItemConfiguracaoDTO(); itemConfiguracaoDto = (ItemConfiguracaoDTO) item; try { /* Gravando o historico */ if (itemConfiguracaoDto.getIdItemConfiguracao() != null) { ic = (HistoricoItemConfiguracaoDTO) this.getHistoricoItemConfiguracaoDao().create(this.createHistoricoItem(itemConfiguracaoDto, user)); } transactionControler.start(); itemConfiguracaoDto.setDataInicio(UtilDatas.getDataAtual()); getDao().update(itemConfiguracaoDto); this.getValorDao().deleteByIdItemConfiguracao(itemConfiguracaoDto.getIdItemConfiguracao()); if (itemConfiguracaoDto.getValores() != null) { for (ValorDTO valorDto : itemConfiguracaoDto.getValores()) { this.getValorDao().create(valorDto); this.getHistoricoValorDao().create(this.createHistoricoValor(valorDto, user, ic.getIdHistoricoIC())); } } transactionControler.commit(); } catch (Exception e) { e.printStackTrace(); this.rollbackTransaction(transactionControler, e); } finally { try { transactionControler.close(); } catch (PersistenceException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } /* Historico de item configura��o */ @Override public HistoricoItemConfiguracaoDTO createHistoricoItem(ItemConfiguracaoDTO itemConfiguracao, UsuarioDTO user) throws Exception { HistoricoItemConfiguracaoDTO historico = new HistoricoItemConfiguracaoDTO(); Reflexao.copyPropertyValues(itemConfiguracao, historico); DecimalFormat fmt = new DecimalFormat("0.0"); HistoricoItemConfiguracaoDTO ultVersao = new HistoricoItemConfiguracaoDTO(); ultVersao = (HistoricoItemConfiguracaoDTO) this.getHistoricoItemConfiguracaoDao().maxIdHistorico(itemConfiguracao); if (ultVersao.getIdHistoricoIC() != null) { ultVersao = (HistoricoItemConfiguracaoDTO) this.getHistoricoItemConfiguracaoDao().restore(ultVersao); String sVersaoConvertida = fmt.format(ultVersao.getHistoricoVersao()); historico.setHistoricoVersao((ultVersao.getHistoricoVersao() == null ? 1d : +new BigDecimal(Double.parseDouble(sVersaoConvertida.replace(",", ".")) + 0.1f).setScale(1, BigDecimal.ROUND_DOWN).floatValue())); } else { historico.setHistoricoVersao(1d); } historico.setDataHoraAlteracao(UtilDatas.getDataHoraAtual()); if (user != null) { if (user.getIdEmpregado() == null) { historico.setIdAutorAlteracao(1); } else { historico.setIdAutorAlteracao(user.getIdEmpregado()); } } else { historico.setIdAutorAlteracao(1); } return historico; } /* Historico de valor item configura��o */ @Override public HistoricoValorDTO createHistoricoValor(ValorDTO valor, UsuarioDTO user, Integer idHistoricoIC) throws Exception { HistoricoValorDTO historico = new HistoricoValorDTO(); Reflexao.copyPropertyValues(valor, historico); historico.setBaseLine(""); historico.setIdHistoricoIC(idHistoricoIC); historico.setDataHoraAlteracao(UtilDatas.getDataHoraAtual()); if (user == null) { historico.setIdAutorAlteracao(1); } else { historico.setIdAutorAlteracao(user.getIdEmpregado()); } return historico; } @Override public void delete(IDto itemConfiguracao) throws ServiceException, LogicException { ItemConfiguracaoDTO itemConfiguracaoDto = new ItemConfiguracaoDTO(); itemConfiguracaoDto = (ItemConfiguracaoDTO) itemConfiguracao; try { if (itemConfiguracaoDto.getIdItemConfiguracaoPai() == null) { TransactionControler transactionControler = new TransactionControlerImpl(getDao().getAliasDB()); try { transactionControler.start(); Collection<ItemConfiguracaoDTO> listItemConfiguracaoFilho = getDao().listItemConfiguracaoFilho(itemConfiguracaoDto); for (ItemConfiguracaoDTO itemConfiguracaoFilho : listItemConfiguracaoFilho) { itemConfiguracaoFilho = (ItemConfiguracaoDTO) this.restore(itemConfiguracaoFilho); itemConfiguracaoFilho.setDataFim(UtilDatas.getDataAtual()); getDao().update(itemConfiguracaoFilho); } itemConfiguracaoDto.setDataFim(UtilDatas.getDataAtual()); getDao().update(itemConfiguracaoDto); transactionControler.commit(); } catch (Exception e) { e.printStackTrace(); this.rollbackTransaction(transactionControler, e); } finally { try { transactionControler.close(); } catch (PersistenceException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } else { itemConfiguracaoDto.setDataFim(UtilDatas.getDataAtual()); getDao().update(itemConfiguracaoDto); } } catch (Exception e) { e.printStackTrace(); } } @Override public boolean validaDuplicidadeItemConfiguracao(ItemConfiguracaoDTO bean) throws Exception { return getDao().validaDuplicidadeItemConfiguracao(bean); } /** * Retorna o Id da Empresa. * * @param request * @return */ public static Integer getIdEmpresa(HttpServletRequest req) { UsuarioDTO usuario = WebUtil.getUsuario(req); return usuario.getIdEmpresa(); } @Override public Collection<ItemConfiguracaoDTO> listByGrupo(GrupoItemConfiguracaoDTO grupoICDto, String criticidade, String status) throws Exception { return getDao().listByGrupo(grupoICDto, criticidade, status); } @Override public Collection<ItemConfiguracaoDTO> listByGrupo(GrupoItemConfiguracaoDTO grupoICDto, ItemConfiguracaoDTO itemConfiguracaoDTO) throws Exception { return getDao().listByGrupo(grupoICDto, itemConfiguracaoDTO); } @Override public Collection<ItemConfiguracaoDTO> listItensSemGrupo(String criticidade, String status) throws Exception { return getDao().listItensSemGrupo(criticidade, status); } @Override public Collection<ItemConfiguracaoDTO> listItensSemGrupo(String criticidade, String status, String sistemaOperacional, String grupoTrabalho, String tipoMembroDominio, String usuario, String processador, List softwares) throws Exception { return getDao().listItensSemGrupo(criticidade, status, sistemaOperacional, grupoTrabalho, tipoMembroDominio, usuario, processador, softwares); } @Override public Collection<ItemConfiguracaoDTO> listItensSemGrupo(ItemConfiguracaoDTO itemConfiguracaoDTO) throws Exception { return getDao().listItensSemGrupo(itemConfiguracaoDTO); } @Override public void atualizaGrupo(ItemConfiguracaoDTO itemConfiguracaoDTO, UsuarioDTO user) throws Exception { TransactionControler transactionControler = new TransactionControlerImpl(getDao().getAliasDB()); try { this.getHistoricoItemConfiguracaoDao().setTransactionControler(transactionControler); transactionControler.start(); getDao().atualizaGrupo(itemConfiguracaoDTO); Collection<ItemConfiguracaoDTO> listItemConfiguracaoFilho = getDao().listItemConfiguracaoFilho(itemConfiguracaoDTO); for (ItemConfiguracaoDTO itemConfiguracaoFilho : listItemConfiguracaoFilho) { itemConfiguracaoFilho = (ItemConfiguracaoDTO) this.restore(itemConfiguracaoFilho); itemConfiguracaoFilho.setIdGrupoItemConfiguracao(itemConfiguracaoDTO.getIdGrupoItemConfiguracao()); getDao().atualizaGrupo(itemConfiguracaoFilho); } itemConfiguracaoDTO = (ItemConfiguracaoDTO) this.restore(itemConfiguracaoDTO); enviarEmailNotificacao(itemConfiguracaoDTO, transactionControler, "ALT_IC_GRUPO"); transactionControler.commit(); } catch (Exception e) { e.printStackTrace(); this.rollbackTransaction(transactionControler, e); } finally { try { transactionControler.close(); } catch (PersistenceException e) { e.printStackTrace(); } } } @Override public Collection<ItemConfiguracaoDTO> listByEvento(Integer idEvento) throws Exception { try { ItemConfiguracaoDao dao = (ItemConfiguracaoDao) getDao(); return dao.listByEvento(idEvento); } catch (Exception e) { throw new ServiceException(e); } } @Override public boolean VerificaSeCadastrado(ItemConfiguracaoDTO itemDTO) throws Exception { return getDao().VerificaSeCadastrado(itemDTO); } @Override public void updateNotNull(IDto dto) { try { validaUpdate(dto); ((ItemConfiguracaoDao) getDao()).updateNotNull(dto); } catch (ServiceException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } @Override public boolean verificaItemCriticos(Integer idItemConfiguracao) throws Exception { RequisicaoMudancaDao requisicaoMudancaDao = new RequisicaoMudancaDao(); ProblemaDAO problemaDao = new ProblemaDAO(); SolicitacaoServicoDao solicitacaoServicoDao = new SolicitacaoServicoDao(); List<RequisicaoMudancaDTO> listMudanca = requisicaoMudancaDao.listMudancaByIdItemConfiguracao(idItemConfiguracao); List<ProblemaDTO> listProblema = problemaDao.listProblemaByIdItemConfiguracao(idItemConfiguracao); List<SolicitacaoServicoDTO> listSolicitacao = solicitacaoServicoDao.listSolicitacaoServicoByItemConfiguracao(idItemConfiguracao); if (listMudanca != null && listMudanca.size() > 0) { return true; } if (listSolicitacao != null && listSolicitacao.size() > 0) { return true; } if (listProblema != null && listProblema.size() > 0) { return true; } return false; } @Override public Collection<ItemConfiguracaoDTO> listByIdItemConfiguracaoPai(Integer idItemPai) throws Exception { try { ItemConfiguracaoDao dao = (ItemConfiguracaoDao) getDao(); return dao.findByIdItemConfiguracaoPai(idItemPai); } catch (Exception e) { throw new ServiceException(e); } } @Override public Collection<ItemConfiguracaoDTO> pesquisaDataExpiracao(Date data) throws Exception { return getDao().pesquisaDataExpiracao(data); } @Override public boolean verificaMidiaSoftware(Integer idMidiaSoftware) throws Exception { return getDao().verificaMidiaSoftware(idMidiaSoftware); } @Override public Collection<ItemConfiguracaoDTO> listItemConfiguracaoByIdMudanca(Integer idMudanca) throws Exception { return getDao().listItemConfiguracaoByIdMudanca(idMudanca); } @Override public Collection<ItemConfiguracaoDTO> listItemConfiguracaoByIdProblema(Integer problema) throws Exception { return getDao().listItemConfiguracaoByIdProblema(problema); } @Override public Collection<ItemConfiguracaoDTO> listItemConfiguracaoByIdIncidente(Integer idIncidente) throws Exception { return getDao().listItemConfiguracaoByIdIncidente(idIncidente); } @Override public void enviarEmailNotificacao(ItemConfiguracaoDTO itemConfiguracaoDTO, TransactionControler transactionControler, String notificacao) throws Exception { EmpregadoDao empregadoDao = new EmpregadoDao(); GrupoItemConfiguracaoDAO grupoItemConfiguracaoDAO = new GrupoItemConfiguracaoDAO(); EmpregadoDTO emp = new EmpregadoDTO(); GrupoItemConfiguracaoDTO grupoItemConfiguracaoDTO = new GrupoItemConfiguracaoDTO(); if (transactionControler != null) { empregadoDao.setTransactionControler(transactionControler); } String remetente = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.RemetenteNotificacoesSolicitacao, null); String ID_MODELO_EMAIL_AVISAR_CRIACAO_IC = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ID_MODELO_EMAIL_AVISAR_CRIACAO_IC, "16"); String ID_MODELO_EMAIL_AVISAR_ATUALIZACAO_IC = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ID_MODELO_EMAIL_AVISAR_ALTERACAO_IC, "14"); String ID_MODELO_EMAIL_AVISAR_ATUALIZACAO_IC_GRUPO = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ID_MODELO_EMAIL_AVISAR_ALTERACAO_IC_GRUPO, "15"); String ID_MODELO_EMAIL = ""; if (ID_MODELO_EMAIL_AVISAR_CRIACAO_IC == null || ID_MODELO_EMAIL_AVISAR_CRIACAO_IC.isEmpty()) { ID_MODELO_EMAIL_AVISAR_CRIACAO_IC = "16"; } if (ID_MODELO_EMAIL_AVISAR_ATUALIZACAO_IC == null || ID_MODELO_EMAIL_AVISAR_ATUALIZACAO_IC.isEmpty()) { ID_MODELO_EMAIL_AVISAR_ATUALIZACAO_IC = "14"; } if (ID_MODELO_EMAIL_AVISAR_ATUALIZACAO_IC_GRUPO == null || ID_MODELO_EMAIL_AVISAR_ATUALIZACAO_IC_GRUPO.isEmpty()) { ID_MODELO_EMAIL_AVISAR_ATUALIZACAO_IC_GRUPO = "15"; } if (notificacao.equals("CRIA_IC")) { ID_MODELO_EMAIL = ID_MODELO_EMAIL_AVISAR_CRIACAO_IC; } else if (notificacao.equals("ALT_IC")) { ID_MODELO_EMAIL = ID_MODELO_EMAIL_AVISAR_ATUALIZACAO_IC; } else if (notificacao.equals("ALT_IC_GRUPO")) { ID_MODELO_EMAIL = ID_MODELO_EMAIL_AVISAR_ATUALIZACAO_IC_GRUPO; } if (!ID_MODELO_EMAIL.isEmpty()) { String PADRAO = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ENVIO_PADRAO_EMAIL_IC, "1"); if (PADRAO == null || PADRAO.isEmpty()) { PADRAO = "1"; } if (PADRAO.equals("1")) { // Enviando email para o grupo do IC if (itemConfiguracaoDTO.getIdGrupoItemConfiguracao() != null) { grupoItemConfiguracaoDTO.setIdGrupoItemConfiguracao(itemConfiguracaoDTO.getIdGrupoItemConfiguracao()); if (grupoItemConfiguracaoDAO.VerificaSeCadastrado(grupoItemConfiguracaoDTO)) { grupoItemConfiguracaoDTO = (GrupoItemConfiguracaoDTO) grupoItemConfiguracaoDAO.restore(grupoItemConfiguracaoDTO); itemConfiguracaoDTO.setNomeGrupoItemConfiguracao(grupoItemConfiguracaoDTO.getNomeGrupoItemConfiguracao()); } else grupoItemConfiguracaoDTO = null; } if (grupoItemConfiguracaoDTO != null) { MensagemEmail mensagem = new MensagemEmail(Integer.parseInt(ID_MODELO_EMAIL.trim()), new IDto[] { itemConfiguracaoDTO }); if (grupoItemConfiguracaoDTO.getEmailGrupoItemConfiguracao() != null) { mensagem.envia(grupoItemConfiguracaoDTO.getEmailGrupoItemConfiguracao(), "", remetente); } } } else if (PADRAO.equals("2")) { // Enviando email para o propriet�rio do IC if (itemConfiguracaoDTO.getIdProprietario() != null) { emp.setIdEmpregado(itemConfiguracaoDTO.getIdProprietario()); emp = (EmpregadoDTO) empregadoDao.restore(emp); } if (emp != null) { MensagemEmail mensagem = new MensagemEmail(Integer.parseInt(ID_MODELO_EMAIL), new IDto[] { itemConfiguracaoDTO }); if (emp.getEmail() != null) { mensagem.envia(emp.getEmail(), "", remetente); } } } else if (PADRAO.equals("3")) { // Enviando email para o grupo do IC if (itemConfiguracaoDTO.getIdGrupoItemConfiguracao() != null) { grupoItemConfiguracaoDTO.setIdGrupoItemConfiguracao(itemConfiguracaoDTO.getIdGrupoItemConfiguracao()); if (grupoItemConfiguracaoDAO.VerificaSeCadastrado(grupoItemConfiguracaoDTO)) { grupoItemConfiguracaoDTO = (GrupoItemConfiguracaoDTO) grupoItemConfiguracaoDAO.restore(grupoItemConfiguracaoDTO); itemConfiguracaoDTO.setNomeGrupoItemConfiguracao(grupoItemConfiguracaoDTO.getNomeGrupoItemConfiguracao()); } else grupoItemConfiguracaoDTO = null; } if (grupoItemConfiguracaoDTO != null) { MensagemEmail mensagem = new MensagemEmail(Integer.parseInt(ID_MODELO_EMAIL), new IDto[] { itemConfiguracaoDTO }); if (grupoItemConfiguracaoDTO.getEmailGrupoItemConfiguracao() != null) { mensagem.envia(grupoItemConfiguracaoDTO.getEmailGrupoItemConfiguracao(), "", remetente); } } // Enviando email para o propriet�rio do IC if (itemConfiguracaoDTO.getIdProprietario() != null) { emp.setIdEmpregado(itemConfiguracaoDTO.getIdProprietario()); emp = (EmpregadoDTO) empregadoDao.restore(emp); } if (emp != null) { MensagemEmail mensagem = new MensagemEmail(Integer.parseInt(ID_MODELO_EMAIL), new IDto[] { itemConfiguracaoDTO }); if (emp.getEmail() != null) { mensagem.envia(emp.getEmail(), "", remetente); } } } } } @Override public Collection<ItemConfiguracaoDTO> listaItemConfiguracaoPorBaseConhecimento(ItemConfiguracaoDTO itemConfiguracao) throws Exception { return getDao().listaItemConfiguracaoPorBaseConhecimento(itemConfiguracao); } @Override public Collection<ItemConfiguracaoDTO> quantidadeItemConfiguracaoPorBaseConhecimento(ItemConfiguracaoDTO itemConfiguracao) throws Exception { return getDao().quantidadeItemConfiguracaoPorBaseConhecimento(itemConfiguracao); } @Override public Collection findByConhecimento(BaseConhecimentoDTO baseConhecimentoDto) throws ServiceException, LogicException { try { return getDao().findByConhecimento(baseConhecimentoDto); } catch (Exception e) { e.printStackTrace(); } return null; } @Override public Collection findByIdItemConfiguracaoPai(Integer parm) throws Exception { return getDao().findByIdItemConfiguracaoPai(parm); } @Override public Integer quantidadeMidiaSoftware(ItemConfiguracaoDTO itemDTO) throws Exception { return getDao().quantidadeMidiaSoftware(itemDTO); } @Override public List<ItemConfiguracaoDTO> listaItemConfiguracaoOfficePak(ItemConfiguracaoDTO itemConfiguracaoDTO) throws Exception { return getDao().listaItemConfiguracaoOfficePak(itemConfiguracaoDTO); } @Override public List<ItemConfiguracaoDTO> listaItemConfiguracaoOfficePak(ItemConfiguracaoDTO itemConfiguracaoDTO, String chave) throws Exception { return getDao().listaItemConfiguracaoOfficePak(itemConfiguracaoDTO, chave); } @Override public void atualizaParaGrupoProducao(int idItem) throws ServiceException, Exception { Integer ID_CICLO_PRODUCAO_PADRAO = Integer.parseInt((ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ID_GRUPO_PADRAO_IC_PRODUCAO_PADRAO, "1003").isEmpty() ? "1003" : ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ID_GRUPO_PADRAO_IC_PRODUCAO_PADRAO, "1003"))); Integer ID_CICLO_PRODUCAO = Integer.parseInt((ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ID_GRUPO_PADRAO_IC_PRODUCAO, "998").isEmpty() ? "998" : ParametroUtil .getValorParametroCitSmartHashMap(ParametroSistema.ID_GRUPO_PADRAO_IC_PRODUCAO, "998"))); ItemConfiguracaoDTO itemDto = new ItemConfiguracaoDTO(); itemDto.setIdItemConfiguracao(idItem); itemDto = (ItemConfiguracaoDTO) getDao().restore(itemDto); GrupoItemConfiguracaoDAO grupoDao = new GrupoItemConfiguracaoDAO(); GrupoItemConfiguracaoDTO grupo = new GrupoItemConfiguracaoDTO(); if (grupo != null && itemDto != null) { grupo.setIdGrupoItemConfiguracao(itemDto.getIdGrupoItemConfiguracao()); } if (grupo != null && grupo.getIdGrupoItemConfiguracao() != null) { grupo = (GrupoItemConfiguracaoDTO) grupoDao.restore(grupo); } if (grupo != null) { if (grupo.getIdGrupoItemConfiguracaoPai() != null && grupo.getIdGrupoItemConfiguracaoPai().intValue() > 0) if (grupo.getIdGrupoItemConfiguracaoPai().equals(ID_CICLO_PRODUCAO) || grupo.getIdGrupoItemConfiguracaoPai().equals(ID_CICLO_PRODUCAO_PADRAO)) return; } if (itemDto != null) { if (!itemDto.getIdGrupoItemConfiguracao().equals(ID_CICLO_PRODUCAO_PADRAO)) { getDao().atualizaIdGrupoPadrao(itemDto, ID_CICLO_PRODUCAO_PADRAO); } } } @Override public Collection<ItemConfiguracaoDTO> listItemConfiguracaoByIdLiberacao(Integer idLiberacao) throws Exception { return getDao().listItemConfiguracaoByIdLiberacao(idLiberacao); } public void relacaoLiberacao(ItemConfiguracaoDTO item) throws ServiceException, Exception { /* Gravando o relacionamento com libera��o */ if (item.getIdLiberacao() != null) { RequisicaoLiberacaoItemConfiguracaoDTO liberacao = new RequisicaoLiberacaoItemConfiguracaoDTO(); liberacao.setIdItemConfiguracao(item.getIdItemConfiguracao()); liberacao.setIdRequisicaoLiberacao(item.getIdLiberacao()); if (!this.getRequisicaoLiberacaoItemConfiguracaoDao().verificaSeCadastrado(liberacao)) this.getRequisicaoLiberacaoItemConfiguracaoDao().create(liberacao); } } /* Historico de item configura��o para ser chamado pelos modulo de liberacao, mudanca e problema para setar a origem da modifica��o */ @Override public void createHistoricoItemComOrigem(ItemConfiguracaoDTO itemConfiguracao, RequisicaoLiberacaoDTO liberacao, String origem) throws Exception { HistoricoItemConfiguracaoDTO historico = new HistoricoItemConfiguracaoDTO(); UsuarioDTO user = new UsuarioDTO(); Reflexao.copyPropertyValues(itemConfiguracao, historico); HistoricoItemConfiguracaoDAO dao = new HistoricoItemConfiguracaoDAO(); user = liberacao.getUsuarioDto(); historico.setOrigem(origem); historico.setIdOrigemModificacao(liberacao.getIdRequisicaoLiberacao()); HistoricoItemConfiguracaoDTO ultVersao = new HistoricoItemConfiguracaoDTO(); ultVersao = (HistoricoItemConfiguracaoDTO) this.getHistoricoItemConfiguracaoDao().maxIdHistorico(itemConfiguracao); if (ultVersao.getIdHistoricoIC() != null) { ultVersao = (HistoricoItemConfiguracaoDTO) this.getHistoricoItemConfiguracaoDao().restore(ultVersao); historico.setHistoricoVersao((ultVersao.getHistoricoVersao() == null ? 1d : +new BigDecimal(ultVersao.getHistoricoVersao() + 0.1f).setScale(1, BigDecimal.ROUND_DOWN).floatValue())); } else { historico.setHistoricoVersao(1d); } historico.setDataHoraAlteracao(UtilDatas.getDataHoraAtual()); if (user != null) { if (user.getIdEmpregado() == null) { historico.setIdAutorAlteracao(1); } else { historico.setIdAutorAlteracao(user.getIdEmpregado()); } } else { historico.setIdAutorAlteracao(1); } dao.create(historico); } public AuditoriaItemConfigDTO gravarAuditoriaItemConfig(ItemConfiguracaoDTO itemConfiguracaoDTO, HistoricoValorDTO historicoValorDTO, ValorDTO valorDto, UsuarioDTO usr, String tipoAlteracao) { AuditoriaItemConfigDTO auditoriaItemConfigDTO = new AuditoriaItemConfigDTO(); try { if (itemConfiguracaoDTO != null && itemConfiguracaoDTO.getIdItemConfiguracao() != null) { if (itemConfiguracaoDTO.getHistoricoItemConfiguracaoDTO() != null) { auditoriaItemConfigDTO.setIdHistoricoIC(itemConfiguracaoDTO.getHistoricoItemConfiguracaoDTO().getIdHistoricoIC()); } auditoriaItemConfigDTO.setIdItemConfiguracao(itemConfiguracaoDTO.getIdItemConfiguracao()); auditoriaItemConfigDTO.setIdItemConfiguracaoPai(itemConfiguracaoDTO.getIdItemConfiguracaoPai()); if (auditoriaItemConfigDTO.getIdHistoricoValor() != null) { auditoriaItemConfigDTO.setIdHistoricoValor(auditoriaItemConfigDTO.getIdHistoricoValor()); } } if (usr != null && usr.getIdUsuario() != null) { auditoriaItemConfigDTO.setIdUsuario(usr.getIdUsuario()); } if (tipoAlteracao != null) { auditoriaItemConfigDTO.setTipoAlteracao(tipoAlteracao); } if (historicoValorDTO != null && historicoValorDTO.getIdHistoricoValor() != null) { auditoriaItemConfigDTO.setIdHistoricoValor(historicoValorDTO.getIdHistoricoValor()); auditoriaItemConfigDTO.setIdHistoricoIC(historicoValorDTO.getIdHistoricoIC()); } else if (valorDto != null && valorDto.getIdValor() != null) { auditoriaItemConfigDTO.setIdHistoricoValor(valorDto.getIdValor()); } auditoriaItemConfigDTO.setDataHoraAlteracao(UtilDatas.getDataHoraAtual()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return auditoriaItemConfigDTO; } public void finalizarItemConfiguracao(ItemConfiguracaoDTO itemConfiguracaoDto, TransactionControler tc) { try { if (itemConfiguracaoDto != null && itemConfiguracaoDto.getIdItemConfiguracao() != null) { getDao().setTransactionControler(tc); itemConfiguracaoDto.setDataExpiracao(UtilDatas.getDataAtual()); itemConfiguracaoDto.setDataFim(UtilDatas.getDataAtual()); getDao().finalizarItemConfiguracao(itemConfiguracaoDto); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public List<AuditoriaItemConfigDTO> historicoAlteracaoItemConfiguracaoByIdItemConfiguracao(ItemConfiguracaoDTO itemConfiguracaoDTO) throws Exception { /** Comentado por n�o est� sendo usado. valdoilo.damasceno */ // ItemConfiguracaoDTO itemConfiguracaoRetornoDTO = (ItemConfiguracaoDTO) restore(itemConfiguracaoDTO); return getAuditoriaItemConfiguracaoDao().historicoAlteracaoItemConfiguracaoByIdItemConfiguracao(itemConfiguracaoDTO); } /** * * necessario passa data de finaliza��o * * @param itemConfiguracaoDTO * @return lista de item configura��o finalizados "Desistalando" * @throws Exception */ public List<ItemConfiguracaoDTO> retornaItemConfiguracaoFinalizadoByIdItemConfiguracao(ItemConfiguracaoDTO itemConfiguracaoDTO, ItemConfiguracaoDao itemConfiguracaoDao) throws Exception { return getDao().listItemConfiguracaoFinalizadosByIdItemconfiguracao(itemConfiguracaoDTO); } @Override public boolean atualizaStatus(Integer item, Integer status) { return getDao().atualizaStatus(item, status); } @Override public ItemConfiguracaoDTO obterICFilhoPorIdentificacaoIdPaiEIdTipo(ItemConfiguracaoDTO itemConfiguracaoDTO) throws Exception { try { return this.getDao().obterICFilhoPorIdentificacaoIdPaiEIdTipo(itemConfiguracaoDTO); } catch (Exception e) { throw new ServiceException(e); } } @Override public ItemConfiguracaoDTO findByIdentificacaoItemConfiguracao(ItemConfiguracaoDTO itemConfiguracaoDTO) throws Exception { try { ItemConfiguracaoDao dao = (ItemConfiguracaoDao) getDao(); return dao.findByIdentificacaoItemConfiguracao(itemConfiguracaoDTO); } catch (Exception e) { throw new ServiceException(e); } } @Override public Collection<ItemConfiguracaoDTO> listByIdGrupoAndTipoItemAndIdItemPaiAtivos(Integer idGrupo, Integer idTipo, Integer idPai) throws Exception { try { ItemConfiguracaoDao dao = (ItemConfiguracaoDao) getDao(); return dao.listByIdGrupoAndTipoItemAndIdItemPaiAtivos(idGrupo, idTipo, idPai); } catch (Exception e) { throw new ServiceException(e); } } @Override public Collection<ItemConfiguracaoDTO> listByIdItemPaiAndTagTipoItemCfg(Integer idItemConfiguracaoPai, String tagTipoCfg) throws Exception { return getDao().listByIdItemPaiAndTagTipoItemCfg(idItemConfiguracaoPai, tagTipoCfg); } @Override public Collection<ItemConfiguracaoDTO> listAtivos() throws Exception { return getDao().listAtivos(); } @Override public Collection<ItemConfiguracaoDTO> listByIdentificacao(String identif) throws Exception { List condicao = new ArrayList(); List ordenacao = new ArrayList(); condicao.add(new Condition("identificacao", "like", "%" + identif + "%")); condicao.add(new Condition("idItemConfiguracaoPai", "IS", null)); ordenacao.add(new Order("idItemConfiguracaoPai")); List<ItemConfiguracaoDTO> lstItemCongConfiguracaoPai = (List) getDao().findByCondition(condicao, ordenacao); return lstItemCongConfiguracaoPai; } /** * @param itemConfiguracaoDTO * @param caracteristicaBean * @param valorAntigo * @param valorNovo * @since 16.05.2014 * @author valdoilo.damasceno * @param executorService */ private void tratarMonitoramentoAtivoDeConfiguracao(TipoItemConfiguracaoDTO tipoItemConfiguracaoDto, CaracteristicaDTO caracteristicaBean, ValorDTO valorAntigo, ValorDTO valorNovo, boolean isScript, ExecutorService executorService) { if (CITCorporeUtil.START_MONITORING_ASSETS) { MonitoramentoAtivosDAO monitoramentoAtivosDao = new MonitoramentoAtivosDAO(); MonitoramentoAtivosDTO monitoramentoAtivosDto = null; if (tipoItemConfiguracaoDto != null && tipoItemConfiguracaoDto.getId() != null && caracteristicaBean != null && caracteristicaBean.getIdCaracteristica() != null && !isScript) { monitoramentoAtivosDto = monitoramentoAtivosDao.obterMonitorametoAtivoDaCaracteristica(tipoItemConfiguracaoDto.getId(), caracteristicaBean.getIdCaracteristica()); if (monitoramentoAtivosDto != null && monitoramentoAtivosDto.getIdMonitoramentoAtivos() != null) { TipoItemConfiguracaoDTO tipoItemConfiguracaoMonitorado = new TipoItemConfiguracaoDTO(); CaracteristicaDTO caracteristicaMonitorada = new CaracteristicaDTO(); tipoItemConfiguracaoMonitorado.setId(tipoItemConfiguracaoDto.getId()); caracteristicaMonitorada.setIdCaracteristica(caracteristicaBean.getIdCaracteristica()); if (monitoramentoAtivosDto.getTipoRegra() != null && monitoramentoAtivosDto.getTipoRegra().equalsIgnoreCase("c")) { // Verifica se o valor foi alterado. if (valorAntigo != null && valorNovo != null && !valorAntigo.getValorStr().equalsIgnoreCase(valorNovo.getValorStr())) { ThreadMonitoraAtivosConfiguracao threadMonitoraAtivosConfiguracao = new ThreadMonitoraAtivosConfiguracao(monitoramentoAtivosDto, tipoItemConfiguracaoMonitorado, caracteristicaMonitorada, valorAntigo, valorNovo); executorService.execute(threadMonitoraAtivosConfiguracao); } } } } else { if (tipoItemConfiguracaoDto != null && tipoItemConfiguracaoDto.getId() != null && isScript) { monitoramentoAtivosDto = monitoramentoAtivosDao.obterMonitorametoAtivoDoTipoItemConfiguracao(tipoItemConfiguracaoDto.getId()); if (monitoramentoAtivosDto != null && monitoramentoAtivosDto.getIdMonitoramentoAtivos() != null && monitoramentoAtivosDto.getTitulo() != null && StringUtils.isNotBlank(monitoramentoAtivosDto.getTitulo()) && monitoramentoAtivosDto.getScript() != null && StringUtils.isNotBlank(monitoramentoAtivosDto.getScript())) { ScriptRhinoJSExecute scriptExecute = new ScriptRhinoJSExecute(); Context cx = Context.enter(); Scriptable scope = cx.initStandardObjects(); scope.put("tipoItemConfiguracaoDto", scope, tipoItemConfiguracaoDto); scope.put("monitoramentoAtivosDto", scope, monitoramentoAtivosDto); scope.put("out", scope, System.out); try { scriptExecute.processScript(cx, scope, monitoramentoAtivosDto.getScript(), monitoramentoAtivosDto.getTitulo()); if (monitoramentoAtivosDto.getScriptSuccess()) { ThreadMonitoraAtivosConfiguracao threadMonitoraAtivosConfiguracao = new ThreadMonitoraAtivosConfiguracao(monitoramentoAtivosDto, null, null, valorAntigo, valorNovo); executorService.execute(threadMonitoraAtivosConfiguracao); } } catch (Exception e) { e.printStackTrace(); } } } } } } /** * Obtem a Identifica��o do Item de Configura��o de acordo com os valores das caracter�sticas que o identifica como �nico. * * @param tipoItemConfiguracaoDTO * - Tipo do Item de Configura��o com suas devidas caracter�sticas e valores. * @return String - Identifica��o do Item de Configura��o. * @author valdoilo.damasceno * @since 19.01.2015 */ public String obterIdentificacaoItemConfiguracaoFilho(TipoItemConfiguracaoDTO tipoItemConfiguracaoDTO) { TagTipoItemConfiguracaoDefault tagTipoItemConfiguracaoDefault = TagTipoItemConfiguracaoDefault.valueOf(tipoItemConfiguracaoDTO.getTag()); try { switch (tagTipoItemConfiguracaoDefault) { case HARDWARE: return this.obterIdentificacao(tipoItemConfiguracaoDTO.getCaracteristicas(), CaracteristicaIdentificacao.NAME.name(), CaracteristicaIdentificacao.IPADDR.name()); case BIOS: return this.obterIdentificacao(tipoItemConfiguracaoDTO.getCaracteristicas(), CaracteristicaIdentificacao.SMANUFACTURER.name(), CaracteristicaIdentificacao.SSN.name()); case MEMORIES: return this.obterIdentificacao(tipoItemConfiguracaoDTO.getCaracteristicas(), CaracteristicaIdentificacao.CAPTION.name(), CaracteristicaIdentificacao.SERIALNUMBER.name(), CaracteristicaIdentificacao.CAPACITY.name()); case INPUTS: return this.obterIdentificacao(tipoItemConfiguracaoDTO.getCaracteristicas(), CaracteristicaIdentificacao.TYPE.name(), CaracteristicaIdentificacao.DEVICEID.name()); case ACCOUNTS: return this.obterIdentificacao(tipoItemConfiguracaoDTO.getCaracteristicas(), CaracteristicaIdentificacao.DOMAIN.name(), CaracteristicaIdentificacao.NAME.name()); case ENVIRONMENTS: return this.obterIdentificacao(tipoItemConfiguracaoDTO.getCaracteristicas(), CaracteristicaIdentificacao.USERNAME.name(), CaracteristicaIdentificacao.NAME.name()); case SERVICES: return this.obterIdentificacao(tipoItemConfiguracaoDTO.getCaracteristicas(), CaracteristicaIdentificacao.CAPTION.name(), CaracteristicaIdentificacao.STARTMODE.name()); case STORAGES: return this.obterIdentificacao(tipoItemConfiguracaoDTO.getCaracteristicas(), CaracteristicaIdentificacao.NAME.name(), CaracteristicaIdentificacao.TYPE.name(), CaracteristicaIdentificacao.DISKSIZE.name()); case NETWORKS: return this.obterIdentificacao(tipoItemConfiguracaoDTO.getCaracteristicas(), CaracteristicaIdentificacao.DESCRIPTION.name(), CaracteristicaIdentificacao.MACADDR.name()); case SOFTWARES: return this.obterIdentificacao(tipoItemConfiguracaoDTO.getCaracteristicas(), CaracteristicaIdentificacao.NAME.name(), CaracteristicaIdentificacao.VERSION.name()); case OFFICEPACK: return this.obterIdentificacao(tipoItemConfiguracaoDTO.getCaracteristicas(), CaracteristicaIdentificacao.PRODUCT.name(), CaracteristicaIdentificacao.PRODUCTID.name()); case CAPTION: return this.obterIdentificacao(tipoItemConfiguracaoDTO.getCaracteristicas(), CaracteristicaIdentificacao.SMANUFACTURER.name(), CaracteristicaIdentificacao.SSN.name()); default: return ((CaracteristicaDTO) tipoItemConfiguracaoDTO.getCaracteristicas().get(0)).getValorString(); } } catch (Exception e) { return "N�o identificado"; } } /** * Obt�m a Identifica��o do Item de Configura��o identificacao = valorCaracter�stica1 + valorCaracter�stica2. * * @param listCaracteristicaDto * - Lista de caracter�sticas. * @param tagCaracteristica1 * - TAG da Caracter�stica 1 de Identifica��o. * @param tagCaracteristica2 * - TAG da Caracter�stica 2 de Identifica��o. * @return String - Identifica��o do Item de Configura��o de acordo com as TAGs informadas. * @author valdoilo.damasceno * @since 19.01.2015 */ private String obterIdentificacao(List<CaracteristicaDTO> listCaracteristicaDto, final String tagCaracteristica1, final String tagCaracteristica2) { StringBuilder nome1 = new StringBuilder(); StringBuilder nome2 = new StringBuilder(); if (listCaracteristicaDto != null && !listCaracteristicaDto.isEmpty()) { for (CaracteristicaDTO caracteristicaDto : listCaracteristicaDto) { try { CaracteristicaIdentificacao caracteristicaIdentificacao = CaracteristicaIdentificacao.valueOf(caracteristicaDto.getTag()); if (caracteristicaIdentificacao != null && (nome1.toString().isEmpty() || nome2.toString().isEmpty()) && (caracteristicaIdentificacao.getNomeCaracteristica().equals(tagCaracteristica1))) { nome1.append(caracteristicaDto.getValor().getValorStr() + " - "); } else { if (caracteristicaIdentificacao != null && (nome1.toString().isEmpty() || nome2.toString().isEmpty()) && (caracteristicaIdentificacao.getNomeCaracteristica().equals(tagCaracteristica2))) { nome2.append(caracteristicaDto.getValor().getValorStr()); } } } catch (Exception e) { /** Tag do Item de Configura��o n�o � chave, prosseguir **/ } } return nome1.toString() + nome2.toString(); } return "N�o Identificado "; } /** * Obt�m a Identifica��o do Item de Configura��o identificacao = valorCaracter�stica1 + valorCaracter�stica2 + valorCaracter�stica3. * * @param listCaracteristicaDto * - Lista de caracter�sticas. * @param tagCaracteristica1 * - TAG da Caracter�stica 1 de Identifica��o. * @param tagCaracteristica2 * - TAG da Caracter�stica 2 de Identifica��o. * @param tagCaracteristica3 * - TAG da Caracter�stica 3 de Identifica��o. * @return String - Identifica��o do Item de Configura��o de acordo com as TAGs informadas. * @author valdoilo.damasceno * @since 19.01.2015 */ private String obterIdentificacao(List<CaracteristicaDTO> listCaracteristicaDto, final String tagCaracteristica1, final String tagCaracteristica2, final String tagCaracteristica3) { StringBuilder nome1 = new StringBuilder(); StringBuilder nome2 = new StringBuilder(); StringBuilder nome3 = new StringBuilder(); if (listCaracteristicaDto != null && !listCaracteristicaDto.isEmpty()) { for (CaracteristicaDTO caracteristicaDto : listCaracteristicaDto) { try { CaracteristicaIdentificacao caracteristicaIdentificacao = CaracteristicaIdentificacao.valueOf(caracteristicaDto.getTag()); if (caracteristicaIdentificacao != null && (nome1.toString().isEmpty() || nome2.toString().isEmpty() || nome2.toString().isEmpty())) { if (caracteristicaIdentificacao.getNomeCaracteristica().equals(tagCaracteristica1)) { nome1.append(caracteristicaDto.getValor().getValorStr() + " - "); } else if (caracteristicaIdentificacao.getNomeCaracteristica().equals(tagCaracteristica2)) { nome2.append(caracteristicaDto.getValor().getValorStr() + " - "); } else if (caracteristicaIdentificacao.getNomeCaracteristica().equals(tagCaracteristica3)) { if (caracteristicaIdentificacao.getNomeCaracteristica().equals("DISKSIZE") || caracteristicaIdentificacao.getNomeCaracteristica().equals("CAPACITY")) { try { Double tamanho = Double.parseDouble(caracteristicaDto.getValor().getValorStr()); tamanho /= Math.pow(1024, 3); nome3.append(new DecimalFormat(".00").format(tamanho).toString() + " GB"); } catch (NumberFormatException e) { /** Valor n�o-num�rico no campo de capacidade ou tamanho de disco. Retornar valor deste. **/ nome3.append(caracteristicaDto.getValor().getValorStr()); } } else { nome3.append("SIZE UNKNOWN"); } } else { if (!nome1.toString().isEmpty() && !nome2.toString().isEmpty() && !nome3.toString().isEmpty()) { return nome1.toString() + nome2.toString() + nome3.toString(); } } } } catch (Exception e) { } } } if (!nome1.toString().isEmpty() && !nome2.toString().isEmpty() && !nome3.toString().isEmpty()) { return nome1.toString() + nome2.toString() + nome3.toString(); } else { return "N�o Identificado "; } } }