/** * CentralIT - CITSmart */ package br.com.centralit.citcorpore.negocio; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.List; import org.apache.commons.lang.StringUtils; import br.com.centralit.citcorpore.bean.AnexoBaseConhecimentoDTO; import br.com.centralit.citcorpore.bean.BaseConhecimentoDTO; import br.com.centralit.citcorpore.bean.BaseConhecimentoRelacionadoDTO; import br.com.centralit.citcorpore.bean.ComentariosDTO; import br.com.centralit.citcorpore.bean.ConhecimentoICDTO; import br.com.centralit.citcorpore.bean.ConhecimentoLiberacaoDTO; import br.com.centralit.citcorpore.bean.ConhecimentoMudancaDTO; import br.com.centralit.citcorpore.bean.ConhecimentoProblemaDTO; import br.com.centralit.citcorpore.bean.ConhecimentoSolicitacaoDTO; import br.com.centralit.citcorpore.bean.EmpregadoDTO; import br.com.centralit.citcorpore.bean.EventoMonitConhecimentoDTO; import br.com.centralit.citcorpore.bean.GrupoEmpregadoDTO; import br.com.centralit.citcorpore.bean.HistoricoBaseConhecimentoDTO; import br.com.centralit.citcorpore.bean.ImportanciaConhecimentoGrupoDTO; import br.com.centralit.citcorpore.bean.ImportanciaConhecimentoUsuarioDTO; import br.com.centralit.citcorpore.bean.ItemConfiguracaoDTO; import br.com.centralit.citcorpore.bean.NotificacaoDTO; import br.com.centralit.citcorpore.bean.PastaDTO; import br.com.centralit.citcorpore.bean.ProblemaDTO; import br.com.centralit.citcorpore.bean.RequisicaoLiberacaoDTO; import br.com.centralit.citcorpore.bean.RequisicaoMudancaDTO; import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO; import br.com.centralit.citcorpore.bean.UploadDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.integracao.AnexoBaseConhecimentoDAO; import br.com.centralit.citcorpore.integracao.BaseConhecimentoDAO; import br.com.centralit.citcorpore.integracao.ComentariosDAO; import br.com.centralit.citcorpore.integracao.ConhecimentoICDao; import br.com.centralit.citcorpore.integracao.ConhecimentoLiberacaoDao; import br.com.centralit.citcorpore.integracao.ConhecimentoMudancaDao; import br.com.centralit.citcorpore.integracao.ConhecimentoProblemaDao; import br.com.centralit.citcorpore.integracao.ConhecimentoSolicitacaoDao; import br.com.centralit.citcorpore.integracao.EmpregadoDao; import br.com.centralit.citcorpore.integracao.HistoricoBaseConhecimentoDAO; import br.com.centralit.citcorpore.integracao.NotificacaoDao; import br.com.centralit.citcorpore.integracao.SolicitacaoServicoDao; import br.com.centralit.citcorpore.mail.MensagemEmail; import br.com.centralit.citcorpore.util.Arquivo; import br.com.centralit.citcorpore.util.CriptoUtils; import br.com.centralit.citcorpore.util.Enumerados; import br.com.centralit.citcorpore.util.Enumerados.ParametroSistema; import br.com.centralit.citcorpore.util.ParametroUtil; import br.com.centralit.citcorpore.util.Util; import br.com.centralit.citged.bean.ControleGEDDTO; import br.com.centralit.citged.integracao.ControleGEDDao; import br.com.centralit.citged.negocio.ControleGEDService; import br.com.centralit.lucene.Lucene; 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.TransactionControler; import br.com.citframework.integracao.TransactionControlerImpl; import br.com.citframework.integracao.core.Page; import br.com.citframework.integracao.core.Pageable; 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; import br.com.citframework.util.UtilStrings; /** * ServiceEJB de BaseConhecimento. * * @author valdoilo.damasceno */ @SuppressWarnings({"unchecked", "rawtypes"}) public class BaseConhecimentoServiceEjb extends CrudServiceImpl implements BaseConhecimentoService { private File pastaDaBaseConhecimento; private BaseConhecimentoDAO dao; private ComentariosDAO comentariosDAO; @Override protected BaseConhecimentoDAO getDao() { if (dao == null) { dao = new BaseConhecimentoDAO(); } return dao; } private ComentariosDAO geComentariosDAO() { if (comentariosDAO == null) { comentariosDAO = new ComentariosDAO(); } return comentariosDAO; } private Integer idBaseConhecimento; @Override public Integer getIdBaseConhecimento() { return idBaseConhecimento; } @Override public BaseConhecimentoDTO create(BaseConhecimentoDTO baseConhecimentoDto, final Collection<UploadDTO> arquivosUpados, final Integer idEmpresa, final UsuarioDTO usuarioDto) throws Exception { NotificacaoDTO notificacaoDto = new NotificacaoDTO(); final ConhecimentoProblemaDTO conhecimentoProblemaDTO = new ConhecimentoProblemaDTO(); final ControleGEDService controleGEDService = (ControleGEDService) ServiceLocator.getInstance().getService(ControleGEDService.class, null); String prontuarioGedInternoBancoDados = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.GedInternoBD, "N"); if (!UtilStrings.isNotVazio(prontuarioGedInternoBancoDados)) { prontuarioGedInternoBancoDados = "N"; } final String PRONTUARIO_GED_DIRETORIO = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.GedDiretorio, "/usr/local/gedCitsmart/"); final String PRONTUARIO_GED_INTERNO = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.GedInterno, "S"); final TransactionControler transactionControler = new TransactionControlerImpl(this.getDao().getAliasDB()); final AnexoBaseConhecimentoDAO anexoBaseConhecimentoDao = new AnexoBaseConhecimentoDAO(); final ControleGEDDao controleGEDDao = new ControleGEDDao(); final HistoricoBaseConhecimentoDAO historicoBaseConhecimentoDao = new HistoricoBaseConhecimentoDAO(); final ConhecimentoProblemaDao conhecimentoProblemaDao = new ConhecimentoProblemaDao(); try { this.getDao().setTransactionControler(transactionControler); anexoBaseConhecimentoDao.setTransactionControler(transactionControler); controleGEDDao.setTransactionControler(transactionControler); historicoBaseConhecimentoDao.setTransactionControler(transactionControler); conhecimentoProblemaDao.setTransactionControler(transactionControler); transactionControler.start(); this.validaCreate(baseConhecimentoDto); baseConhecimentoDto.setDataInicio(UtilDatas.getDataAtual()); baseConhecimentoDto.setIdUsuarioAutor(usuarioDto.getIdUsuario()); baseConhecimentoDto.setArquivado("N"); if (baseConhecimentoDto.getErroConhecido() == null || baseConhecimentoDto.getErroConhecido().equalsIgnoreCase("")) { baseConhecimentoDto.setErroConhecido("N"); } final boolean isAprovaBaseConhecimento = this.usuarioAprovaBaseConhecimento(usuarioDto, baseConhecimentoDto.getIdPasta()); if (!isAprovaBaseConhecimento) { baseConhecimentoDto.setStatus("N"); } else { if (baseConhecimentoDto.getStatus().equalsIgnoreCase("S")) { baseConhecimentoDto.setVersao("1.0"); baseConhecimentoDto.setIdUsuarioAprovador(usuarioDto.getIdUsuario()); baseConhecimentoDto.setDataPublicacao(UtilDatas.getDataAtual()); } } notificacaoDto = this.criarNotificacao(baseConhecimentoDto, transactionControler); if (notificacaoDto.getIdNotificacao() != null) { baseConhecimentoDto.setIdNotificacao(notificacaoDto.getIdNotificacao()); } // TODO CREATE baseConhecimentoDto = (BaseConhecimentoDTO) this.getDao().create(baseConhecimentoDto); HistoricoBaseConhecimentoDTO historicoBaseConhecimentoDto = new HistoricoBaseConhecimentoDTO(); Reflexao.copyPropertyValues(baseConhecimentoDto, historicoBaseConhecimentoDto); historicoBaseConhecimentoDto.setIdUsuarioAlteracao(usuarioDto.getIdUsuario()); historicoBaseConhecimentoDto.setDataHoraAlteracao(UtilDatas.getDataHoraAtual()); historicoBaseConhecimentoDto = (HistoricoBaseConhecimentoDTO) historicoBaseConhecimentoDao.create(historicoBaseConhecimentoDto); baseConhecimentoDto.setIdHistoricoBaseConhecimento(historicoBaseConhecimentoDto.getIdHistoricoBaseConhecimento()); this.getDao().updateNotNull(baseConhecimentoDto); this.enviarEmailNotificacaoConhecimento(baseConhecimentoDto, transactionControler, "C"); // TODO ENVIAR NOTIFICA��O PARA O RESPONS�VEL PELO GERENCIAMENTO DE CONHECIMENTO. this.criarImportanciaConhecimentoUsuario(baseConhecimentoDto, transactionControler); this.criarImportanciaConhecimentoGrupo(baseConhecimentoDto, transactionControler); this.criarRelacionamentoEntreConhecimentos(baseConhecimentoDto, transactionControler); this.criarComentarios(baseConhecimentoDto, transactionControler); this.criarRelacionamentoEntreEventoMonitConhecimento(baseConhecimentoDto, transactionControler); // TODO CRIAR RELACIONAMENTO ENTRE UMA BASE DE CONHECIMENTO COM UM PROBLEMA. if (baseConhecimentoDto.getIdProblema() != null && baseConhecimentoDto.getIdBaseConhecimento() != null) { conhecimentoProblemaDao.deleteByIdBaseConhecimento(baseConhecimentoDto.getIdBaseConhecimento()); conhecimentoProblemaDao.deleteByIdProblema(baseConhecimentoDto.getIdProblema()); conhecimentoProblemaDTO.setIdProblema(baseConhecimentoDto.getIdProblema()); conhecimentoProblemaDTO.setIdBaseConhecimento(baseConhecimentoDto.getIdBaseConhecimento()); conhecimentoProblemaDao.create(conhecimentoProblemaDTO); } String pasta = ""; if (PRONTUARIO_GED_INTERNO.equalsIgnoreCase("S")) { pasta = controleGEDService.getProximaPastaArmazenar(); File fileDir = new File(PRONTUARIO_GED_DIRETORIO); if (!fileDir.exists()) { fileDir.mkdirs(); } fileDir = new File(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa); if (!fileDir.exists()) { fileDir.mkdirs(); } fileDir = new File(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta); if (!fileDir.exists()) { fileDir.mkdirs(); } } final ArrayList<AnexoBaseConhecimentoDTO> listaAnexoBaseConhecimento = new ArrayList<AnexoBaseConhecimentoDTO>(); if (arquivosUpados != null && !arquivosUpados.isEmpty()) { for (final UploadDTO uploadDto : arquivosUpados) { ControleGEDDTO controleGEDDTO = new ControleGEDDTO(); AnexoBaseConhecimentoDTO anexoBaseConhecimento = new AnexoBaseConhecimentoDTO(); controleGEDDTO.setIdTabela(ControleGEDDTO.TABELA_BASECONHECIMENTO); controleGEDDTO.setId(baseConhecimentoDto.getIdBaseConhecimento()); controleGEDDTO.setDataHora(UtilDatas.getDataAtual()); controleGEDDTO.setDescricaoArquivo(uploadDto.getDescricao()); controleGEDDTO.setExtensaoArquivo(Util.getFileExtension(uploadDto.getNameFile())); controleGEDDTO.setPasta(pasta); controleGEDDTO.setNomeArquivo(uploadDto.getNameFile()); if (PRONTUARIO_GED_INTERNO.equalsIgnoreCase("S") && "S".equalsIgnoreCase(prontuarioGedInternoBancoDados)) { controleGEDDTO.setPathArquivo(uploadDto.getPath()); } else { controleGEDDTO.setPathArquivo(null); } controleGEDDTO = (ControleGEDDTO) controleGEDDao.create(controleGEDDTO); if (PRONTUARIO_GED_INTERNO.equalsIgnoreCase("S") && !"S".equalsIgnoreCase(prontuarioGedInternoBancoDados)) { if (controleGEDDTO != null) { final File arquivo = new File(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + "." + Util.getFileExtension(uploadDto.getNameFile())); CriptoUtils.encryptFile(uploadDto.getPath(), PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + ".ged", System.getProperties().get("user.dir") + Constantes.getValue("CAMINHO_CHAVE_PUBLICA")); anexoBaseConhecimento.setLink(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + ".ged"); arquivo.delete(); } } anexoBaseConhecimento.setDataInicio(UtilDatas.getDataAtual()); if (controleGEDDTO != null) { anexoBaseConhecimento.setNomeAnexo(controleGEDDTO.getNomeArquivo()); anexoBaseConhecimento.setExtensao(controleGEDDTO.getExtensaoArquivo()); } anexoBaseConhecimento.setIdBaseConhecimento(baseConhecimentoDto.getIdBaseConhecimento()); anexoBaseConhecimento.setDescricao(uploadDto.getDescricao()); // Obtendo o conte�do do arquivo armazenado em disco! O Service n�o traz este campo preenchido no list try { final Arquivo arquivo = new Arquivo(controleGEDDTO); anexoBaseConhecimento.setTextoDocumento(arquivo.getConteudo()); } catch (final Exception e) { e.printStackTrace(); } anexoBaseConhecimento = (AnexoBaseConhecimentoDTO) anexoBaseConhecimentoDao.create(anexoBaseConhecimento); listaAnexoBaseConhecimento.add(anexoBaseConhecimento); } } else { System.out.println("BaseConhecimento - A arquivosUpados esta vazia!"); } // @Author euler.ramos // Poderia tratar a exclus�o quando a base se tona arquivada ou n�o publicada, mas por enquanto prefiro deix�-la indexada! // INDEXA��O LUCENE // Indexando Base de Conhecimento final Lucene lucene = new Lucene(); // Publicada, N�o arquivada e N�o exclu�da! lucene.indexarBaseConhecimento(baseConhecimentoDto, listaAnexoBaseConhecimento); transactionControler.commit(); } catch (final Exception e) { e.printStackTrace(); System.err.println("GED BaseConhecimento - Erro ao gravar Arquivo ged e gravar o ged no banco de dados: " + e); this.rollbackTransaction(transactionControler, e); } finally { try { transactionControler.close(); } catch (final PersistenceException e) { e.printStackTrace(); } } return baseConhecimentoDto; } @Override public void update(final BaseConhecimentoDTO baseConhecimentoDto, final Collection<UploadDTO> arquivosUpados, final Integer idEmpresa, final UsuarioDTO usuarioDto) throws ServiceException, Exception { // @Author euler.ramos final Lucene lucene = new Lucene(); final ControleGEDService controleGEDService = (ControleGEDService) ServiceLocator.getInstance().getService(ControleGEDService.class, null); final ImportanciaConhecimentoUsuarioService importanciaConhecimentoUsuarioService = (ImportanciaConhecimentoUsuarioService) ServiceLocator.getInstance().getService( ImportanciaConhecimentoUsuarioService.class, null); final ImportanciaConhecimentoGrupoService importanciaConhecimentoGrupoService = (ImportanciaConhecimentoGrupoService) ServiceLocator.getInstance().getService( ImportanciaConhecimentoGrupoService.class, null); final BaseConhecimentoRelacionadoService baseConhecimentoRelacionadoService = (BaseConhecimentoRelacionadoService) ServiceLocator.getInstance().getService( BaseConhecimentoRelacionadoService.class, null); NotificacaoDTO notificacaoDto = new NotificacaoDTO(); HistoricoBaseConhecimentoDTO historicoBaseConhecimentoDto = new HistoricoBaseConhecimentoDTO(); final ConhecimentoProblemaDTO conhecimentoProblemaDTO = new ConhecimentoProblemaDTO(); String prontuarioGedInternoBancoDados = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.GedInternoBD, "N"); if (!UtilStrings.isNotVazio(prontuarioGedInternoBancoDados)) { prontuarioGedInternoBancoDados = "N"; } final String PRONTUARIO_GED_DIRETORIO = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.GedDiretorio, "/usr/local/gedCitsmart/"); final String PRONTUARIO_GED_INTERNO = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.GedInterno, "S"); final AnexoBaseConhecimentoDAO anexoBaseConhecimentoDao = new AnexoBaseConhecimentoDAO(); final ControleGEDDao controleGEDDao = new ControleGEDDao(); final HistoricoBaseConhecimentoDAO historicoBaseConhecimentoDao = new HistoricoBaseConhecimentoDAO(); final ConhecimentoProblemaDao conhecimentoProblemaDao = new ConhecimentoProblemaDao(); final TransactionControler transactionControler = new TransactionControlerImpl(this.getDao().getAliasDB()); try { this.getDao().setTransactionControler(transactionControler); anexoBaseConhecimentoDao.setTransactionControler(transactionControler); controleGEDDao.setTransactionControler(transactionControler); historicoBaseConhecimentoDao.setTransactionControler(transactionControler); conhecimentoProblemaDao.setTransactionControler(transactionControler); transactionControler.start(); BaseConhecimentoDTO novaBaseConhecimento = this.atribuirValoresNovaBaseConhecimento(baseConhecimentoDto); final String status = ((BaseConhecimentoDTO) this.getDao().restore(baseConhecimentoDto)).getStatus(); String pasta = ""; if (PRONTUARIO_GED_INTERNO.equalsIgnoreCase("S")) { pasta = controleGEDService.getProximaPastaArmazenar(); File fileDir = new File(PRONTUARIO_GED_DIRETORIO); if (!fileDir.exists()) { fileDir.mkdirs(); } fileDir = new File(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa); if (!fileDir.exists()) { fileDir.mkdirs(); } fileDir = new File(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta); if (!fileDir.exists()) { fileDir.mkdirs(); } } final boolean isAprovaBaseConhecimento = this.usuarioAprovaBaseConhecimento(usuarioDto, baseConhecimentoDto.getIdPasta()); // A BASE IR� SER APROVADA if (novaBaseConhecimento.getStatus() != null && isAprovaBaseConhecimento && novaBaseConhecimento.getStatus().equalsIgnoreCase("S")) { if (novaBaseConhecimento.getVersao() != null && !novaBaseConhecimento.getVersao().equals("")) { final Double novaVersao = Double.parseDouble(novaBaseConhecimento.getVersao()) + 0.1; novaBaseConhecimento.setVersao(novaVersao.toString().substring(0, 3)); novaBaseConhecimento.setTitulo(baseConhecimentoDto.getTitulo().split(" - v")[0] + " - v" + novaBaseConhecimento.getVersao()); } else { novaBaseConhecimento.setVersao("1.0"); } // BASE N�O APROVADA - VAI SER APROVADA if (baseConhecimentoDto.getIdBaseConhecimentoPai() != null || status.equalsIgnoreCase("N")) { try { novaBaseConhecimento.setStatus("S"); novaBaseConhecimento.setIdBaseConhecimentoPai(null); novaBaseConhecimento.setIdUsuarioAprovador(usuarioDto.getIdUsuario()); novaBaseConhecimento.setDataPublicacao(UtilDatas.getDataAtual()); if (novaBaseConhecimento.getErroConhecido() == null || novaBaseConhecimento.getErroConhecido().equalsIgnoreCase("")) { novaBaseConhecimento.setErroConhecido("N"); } notificacaoDto = this.criarNotificacao(novaBaseConhecimento, transactionControler); if (notificacaoDto.getIdNotificacao() != null) { novaBaseConhecimento.setIdNotificacao(notificacaoDto.getIdNotificacao()); } // TODO CREATE novaBaseConhecimento = (BaseConhecimentoDTO) this.getDao().create(novaBaseConhecimento); if (baseConhecimentoDto.getIdBaseConhecimentoPai() != null) { final BaseConhecimentoDTO baseConhecimentoPai = new BaseConhecimentoDTO(); baseConhecimentoPai.setIdBaseConhecimento(baseConhecimentoDto.getIdBaseConhecimentoPai()); baseConhecimentoPai.setStatus("S"); this.getDao().updateNotNull(baseConhecimentoPai); } Reflexao.copyPropertyValues(novaBaseConhecimento, historicoBaseConhecimentoDto); historicoBaseConhecimentoDto.setIdUsuarioAlteracao(usuarioDto.getIdUsuario()); historicoBaseConhecimentoDto.setDataHoraAlteracao(UtilDatas.getDataHoraAtual()); if (historicoBaseConhecimentoDto.getIdHistoricoBaseConhecimento() == null) { historicoBaseConhecimentoDto = (HistoricoBaseConhecimentoDTO) historicoBaseConhecimentoDao.create(historicoBaseConhecimentoDto); } else { historicoBaseConhecimentoDto = (HistoricoBaseConhecimentoDTO) historicoBaseConhecimentoDao.createWithID(historicoBaseConhecimentoDto); } if (novaBaseConhecimento.getIdHistoricoBaseConhecimento() == null) { novaBaseConhecimento.setIdHistoricoBaseConhecimento(historicoBaseConhecimentoDto.getIdHistoricoBaseConhecimento()); this.getDao().updateNotNull(novaBaseConhecimento); } // TODO ENVIAR NOTIFICA��O PARA O RESPONS�VEL PELO GERENCIAMENTO DE CONHECIMENTO. this.enviarEmailNotificacaoConhecimento(baseConhecimentoDto, transactionControler, "U"); idBaseConhecimento = novaBaseConhecimento.getIdBaseConhecimento(); this.criarImportanciaConhecimentoUsuario(novaBaseConhecimento, transactionControler); this.criarImportanciaConhecimentoGrupo(novaBaseConhecimento, transactionControler); this.criarRelacionamentoEntreConhecimentos(novaBaseConhecimento, transactionControler); this.criarComentarios(novaBaseConhecimento, transactionControler); this.criarRelacionamentoEntreEventoMonitConhecimento(novaBaseConhecimento, transactionControler); // TODO CRIAR RELACIONAMENTO ENTRE UMA BASE DE CONHECIMENTO COM UM PROBLEMA. if (novaBaseConhecimento.getIdProblema() != null && novaBaseConhecimento.getIdBaseConhecimento() != null) { conhecimentoProblemaDao.deleteByIdBaseConhecimento(baseConhecimentoDto.getIdBaseConhecimento()); conhecimentoProblemaDao.deleteByIdProblema(novaBaseConhecimento.getIdProblema()); conhecimentoProblemaDTO.setIdProblema(novaBaseConhecimento.getIdProblema()); conhecimentoProblemaDTO.setIdBaseConhecimento(novaBaseConhecimento.getIdBaseConhecimento()); conhecimentoProblemaDao.create(conhecimentoProblemaDTO); } final ArrayList<AnexoBaseConhecimentoDTO> listaAnexoBaseConhecimento = new ArrayList<AnexoBaseConhecimentoDTO>(); if (arquivosUpados != null && !arquivosUpados.isEmpty()) { for (final UploadDTO uploadDto : arquivosUpados) { if (uploadDto.getTemporario().equalsIgnoreCase("S")) { ControleGEDDTO controleGEDDTO = new ControleGEDDTO(); AnexoBaseConhecimentoDTO anexoBaseConhecimento = new AnexoBaseConhecimentoDTO(); controleGEDDTO.setIdTabela(ControleGEDDTO.TABELA_BASECONHECIMENTO); controleGEDDTO.setId(novaBaseConhecimento.getIdBaseConhecimento()); controleGEDDTO.setDataHora(UtilDatas.getDataAtual()); controleGEDDTO.setDescricaoArquivo(uploadDto.getDescricao()); controleGEDDTO.setExtensaoArquivo(Util.getFileExtension(uploadDto.getNameFile())); controleGEDDTO.setPasta(pasta); controleGEDDTO.setNomeArquivo(uploadDto.getNameFile()); if (PRONTUARIO_GED_INTERNO.equalsIgnoreCase("S") && "S".equalsIgnoreCase(prontuarioGedInternoBancoDados)) { controleGEDDTO.setPathArquivo(uploadDto.getPath()); } else { controleGEDDTO.setPathArquivo(null); } controleGEDDTO = (ControleGEDDTO) controleGEDDao.create(controleGEDDTO); if (PRONTUARIO_GED_INTERNO.equalsIgnoreCase("S") && !"S".equalsIgnoreCase(prontuarioGedInternoBancoDados)) { if (controleGEDDTO != null) { final File arquivo = new File(PRONTUARIO_GED_DIRETORIO + "/" + 1 + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + "." + Util.getFileExtension(uploadDto.getNameFile())); CriptoUtils.encryptFile(uploadDto.getPath(), PRONTUARIO_GED_DIRETORIO + "/" + 1 + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + ".ged", System.getProperties().get("user.dir") + Constantes.getValue("CAMINHO_CHAVE_PUBLICA")); anexoBaseConhecimento.setLink(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + ".ged"); arquivo.delete(); } } anexoBaseConhecimento.setDataInicio(UtilDatas.getDataAtual()); if (controleGEDDTO != null) { anexoBaseConhecimento.setNomeAnexo(controleGEDDTO.getNomeArquivo()); anexoBaseConhecimento.setExtensao(controleGEDDTO.getExtensaoArquivo()); } anexoBaseConhecimento.setIdBaseConhecimento(novaBaseConhecimento.getIdBaseConhecimento()); anexoBaseConhecimento.setDescricao(uploadDto.getDescricao()); // Obtendo o conte�do do arquivo armazenado em disco! O Service n�o traz este campo preenchido no list try { final Arquivo arquivo = new Arquivo(controleGEDDTO); anexoBaseConhecimento.setTextoDocumento(arquivo.getConteudo()); } catch (final Exception e) { e.printStackTrace(); } anexoBaseConhecimento = (AnexoBaseConhecimentoDTO) anexoBaseConhecimentoDao.create(anexoBaseConhecimento); listaAnexoBaseConhecimento.add(anexoBaseConhecimento); } else { ControleGEDDTO controleGEDDTO = new ControleGEDDTO(); AnexoBaseConhecimentoDTO anexoBaseConhecimento = new AnexoBaseConhecimentoDTO(); controleGEDDTO.setIdTabela(ControleGEDDTO.TABELA_BASECONHECIMENTO); controleGEDDTO.setId(novaBaseConhecimento.getIdBaseConhecimento()); controleGEDDTO.setDataHora(UtilDatas.getDataAtual()); controleGEDDTO.setDescricaoArquivo(uploadDto.getDescricao()); controleGEDDTO.setExtensaoArquivo(Util.getFileExtension(uploadDto.getNameFile())); controleGEDDTO.setPasta(pasta); controleGEDDTO.setNomeArquivo(uploadDto.getNameFile()); controleGEDDTO = (ControleGEDDTO) controleGEDDao.create(controleGEDDTO); final File arquivoAntigo = new File(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + uploadDto.getPath().substring(3) + ".ged"); this.copiarArquivo(arquivoAntigo, PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + ".ged"); anexoBaseConhecimento.setLink(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + ".ged"); anexoBaseConhecimento.setDataInicio(UtilDatas.getDataAtual()); anexoBaseConhecimento.setNomeAnexo(controleGEDDTO.getNomeArquivo()); anexoBaseConhecimento.setExtensao(controleGEDDTO.getExtensaoArquivo()); anexoBaseConhecimento.setIdBaseConhecimento(novaBaseConhecimento.getIdBaseConhecimento()); anexoBaseConhecimento.setDescricao(uploadDto.getDescricao()); // Obtendo o conte�do do arquivo armazenado em disco! O Service n�o traz este campo preenchido no list try { final Arquivo arquivo = new Arquivo(controleGEDDTO); anexoBaseConhecimento.setTextoDocumento(arquivo.getConteudo()); } catch (final Exception e) { e.printStackTrace(); } anexoBaseConhecimento = (AnexoBaseConhecimentoDTO) anexoBaseConhecimentoDao.create(anexoBaseConhecimento); listaAnexoBaseConhecimento.add(anexoBaseConhecimento); } } } // @Author euler.ramos lucene.indexarBaseConhecimento(novaBaseConhecimento, listaAnexoBaseConhecimento); baseConhecimentoRelacionadoService.deleteByIdConhecimento(baseConhecimentoDto.getIdBaseConhecimento(), transactionControler); importanciaConhecimentoUsuarioService.deleteByIdConhecimento(baseConhecimentoDto.getIdBaseConhecimento(), transactionControler); importanciaConhecimentoGrupoService.deleteByIdConhecimento(baseConhecimentoDto.getIdBaseConhecimento(), transactionControler); conhecimentoProblemaDao.deleteByIdBaseConhecimento(baseConhecimentoDto.getIdBaseConhecimento()); conhecimentoProblemaDao.deleteByIdProblema(baseConhecimentoDto.getIdProblema()); final SolicitacaoServicoDao solicitacaoServicoDao = new SolicitacaoServicoDao(); final ConhecimentoSolicitacaoDao conhecimentoSolicitacaoDao = new ConhecimentoSolicitacaoDao(); solicitacaoServicoDao.setTransactionControler(transactionControler); conhecimentoSolicitacaoDao.setTransactionControler(transactionControler); final List<SolicitacaoServicoDTO> listaSolicitacoes = solicitacaoServicoDao.listaSolicitacoesRelacionadasBaseconhecimento(baseConhecimentoDto .getIdBaseConhecimento()); conhecimentoSolicitacaoDao.deleteByIdBaseConhecimento(baseConhecimentoDto.getIdBaseConhecimento()); if (listaSolicitacoes != null) { for (final SolicitacaoServicoDTO solicitacaoServicoDTO : listaSolicitacoes) { final ConhecimentoSolicitacaoDTO obj = new ConhecimentoSolicitacaoDTO(); obj.setIdBaseConhecimento(novaBaseConhecimento.getIdBaseConhecimento()); obj.setIdSolicitacaoServico(solicitacaoServicoDTO.getIdSolicitacaoServico()); conhecimentoSolicitacaoDao.create(obj); } } this.getDao().delete(baseConhecimentoDto); // Excluir Base de Conhecimento Antiga do �ndice, atendendo solicita��o: 111236 nessa exclus�o os anexos s�o excluidos juntamente. lucene.excluirBaseConhecimento(baseConhecimentoDto, true); // TODO EXCLUIR COMENT�RIOS // TODO EXCLUIR NOTIFICA��ES // TODO EXCLUIR IMPORT�NCIA CONHECIMENTO // TODO EXCLUIR COMENT�RIOS // TODO EXCLUIR CONHECIMENTOPROBLEMA // EXCLUO OS ANEXOS DA BASE DE CONHECIMENTO ANTIGA. final Collection<AnexoBaseConhecimentoDTO> anexosBaseConhecimento = anexoBaseConhecimentoDao.consultarAnexosDaBaseConhecimento(baseConhecimentoDto); if (anexosBaseConhecimento != null && !anexosBaseConhecimento.isEmpty()) { for (final AnexoBaseConhecimentoDTO anexo : anexosBaseConhecimento) { anexoBaseConhecimentoDao.delete(anexo); this.deleteDir(new File(anexo.getLink())); } } // EXCLUO OS GEDS DA BASE DE CONHECIMENTO ANTIGA. final Collection<ControleGEDDTO> gedsBaseConhecimento = controleGEDDao.listByIdTabelaAndIdBaseConhecimento(ControleGEDDTO.TABELA_BASECONHECIMENTO, baseConhecimentoDto.getIdBaseConhecimento()); if (gedsBaseConhecimento != null && !gedsBaseConhecimento.isEmpty()) { for (final ControleGEDDTO ged : gedsBaseConhecimento) { controleGEDDao.delete(ged); } } transactionControler.commit(); } catch (final Exception e) { throw e; } } else { // BASE PUBLICADA, ALTERADA VAI SER PUBLICADA NOVAMENTE COM OUTRA VERS�O try { novaBaseConhecimento.setIdUsuarioAprovador(usuarioDto.getIdUsuario()); novaBaseConhecimento.setDataPublicacao(UtilDatas.getDataAtual()); notificacaoDto = this.criarNotificacao(novaBaseConhecimento, transactionControler); if (notificacaoDto.getIdNotificacao() != null) { novaBaseConhecimento.setIdNotificacao(notificacaoDto.getIdNotificacao()); } // TODO CREATE novaBaseConhecimento = (BaseConhecimentoDTO) this.getDao().create(novaBaseConhecimento); Reflexao.copyPropertyValues(novaBaseConhecimento, historicoBaseConhecimentoDto); historicoBaseConhecimentoDto.setIdUsuarioAlteracao(usuarioDto.getIdUsuario()); historicoBaseConhecimentoDto.setDataHoraAlteracao(UtilDatas.getDataHoraAtual()); if (historicoBaseConhecimentoDto.getIdHistoricoBaseConhecimento() == null) { historicoBaseConhecimentoDto = (HistoricoBaseConhecimentoDTO) historicoBaseConhecimentoDao.create(historicoBaseConhecimentoDto); } else { historicoBaseConhecimentoDto = (HistoricoBaseConhecimentoDTO) historicoBaseConhecimentoDao.createWithID(historicoBaseConhecimentoDto); } if (novaBaseConhecimento.getIdHistoricoBaseConhecimento() == null) { novaBaseConhecimento.setIdHistoricoBaseConhecimento(historicoBaseConhecimentoDto.getIdHistoricoBaseConhecimento()); this.getDao().updateNotNull(novaBaseConhecimento); } this.getDao().restore(baseConhecimentoDto); baseConhecimentoDto.setArquivado("S"); this.getDao().updateNotNull(baseConhecimentoDto); lucene.excluirBaseConhecimento(baseConhecimentoDto, true); // TODO ENVIAR NOTIFICA��O PARA O RESPONS�VEL PELO GERENCIAMENTO DE CONHECIMENTO. this.enviarEmailNotificacaoConhecimento(baseConhecimentoDto, transactionControler, "U"); idBaseConhecimento = novaBaseConhecimento.getIdBaseConhecimento(); this.criarImportanciaConhecimentoUsuario(novaBaseConhecimento, transactionControler); this.criarImportanciaConhecimentoGrupo(novaBaseConhecimento, transactionControler); this.criarRelacionamentoEntreConhecimentos(novaBaseConhecimento, transactionControler); this.criarComentarios(novaBaseConhecimento, transactionControler); this.criarRelacionamentoEntreEventoMonitConhecimento(novaBaseConhecimento, transactionControler); // TODO CRIAR RELACIONAMENTO ENTRE UMA BASE DE CONHECIMENTO COM UM PROBLEMA. if (novaBaseConhecimento.getIdProblema() != null && novaBaseConhecimento.getIdBaseConhecimento() != null) { conhecimentoProblemaDao.deleteByIdBaseConhecimento(novaBaseConhecimento.getIdBaseConhecimento()); conhecimentoProblemaDao.deleteByIdProblema(novaBaseConhecimento.getIdProblema()); conhecimentoProblemaDTO.setIdProblema(novaBaseConhecimento.getIdProblema()); conhecimentoProblemaDTO.setIdBaseConhecimento(novaBaseConhecimento.getIdBaseConhecimento()); conhecimentoProblemaDao.create(conhecimentoProblemaDTO); } final ArrayList<AnexoBaseConhecimentoDTO> listaAnexoBaseConhecimento = new ArrayList<AnexoBaseConhecimentoDTO>(); if (arquivosUpados != null && !arquivosUpados.isEmpty()) { for (final UploadDTO uploadDto : arquivosUpados) { if (uploadDto.getTemporario().equalsIgnoreCase("S")) { ControleGEDDTO controleGEDDTO = new ControleGEDDTO(); AnexoBaseConhecimentoDTO anexoBaseConhecimento = new AnexoBaseConhecimentoDTO(); controleGEDDTO.setIdTabela(ControleGEDDTO.TABELA_BASECONHECIMENTO); controleGEDDTO.setId(novaBaseConhecimento.getIdBaseConhecimento()); controleGEDDTO.setDataHora(UtilDatas.getDataAtual()); controleGEDDTO.setDescricaoArquivo(uploadDto.getDescricao()); controleGEDDTO.setExtensaoArquivo(Util.getFileExtension(uploadDto.getNameFile())); controleGEDDTO.setPasta(pasta); controleGEDDTO.setNomeArquivo(uploadDto.getNameFile()); if (PRONTUARIO_GED_INTERNO.equalsIgnoreCase("S") && "S".equalsIgnoreCase(prontuarioGedInternoBancoDados)) { controleGEDDTO.setPathArquivo(uploadDto.getPath()); } else { controleGEDDTO.setPathArquivo(null); } controleGEDDTO = (ControleGEDDTO) controleGEDDao.create(controleGEDDTO); if (PRONTUARIO_GED_INTERNO.equalsIgnoreCase("S") && !"S".equalsIgnoreCase(prontuarioGedInternoBancoDados)) { if (controleGEDDTO != null) { final File arquivo = new File(PRONTUARIO_GED_DIRETORIO + "/" + 1 + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + "." + Util.getFileExtension(uploadDto.getNameFile())); CriptoUtils.encryptFile(uploadDto.getPath(), PRONTUARIO_GED_DIRETORIO + "/" + 1 + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + ".ged", System.getProperties().get("user.dir") + Constantes.getValue("CAMINHO_CHAVE_PUBLICA")); anexoBaseConhecimento.setLink(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + ".ged"); arquivo.delete(); } } anexoBaseConhecimento.setDataInicio(UtilDatas.getDataAtual()); if (controleGEDDTO != null) { anexoBaseConhecimento.setNomeAnexo(controleGEDDTO.getNomeArquivo()); anexoBaseConhecimento.setExtensao(controleGEDDTO.getExtensaoArquivo()); } anexoBaseConhecimento.setIdBaseConhecimento(novaBaseConhecimento.getIdBaseConhecimento()); anexoBaseConhecimento.setDescricao(uploadDto.getDescricao()); // Obtendo o conte�do do arquivo armazenado em disco! O Service n�o traz este campo preenchido no list // Obtendo o conte�do do arquivo armazenado em disco! O Service n�o traz este campo preenchido no list try { final Arquivo arquivo = new Arquivo(controleGEDDTO); anexoBaseConhecimento.setTextoDocumento(arquivo.getConteudo()); } catch (final Exception e) { e.printStackTrace(); } anexoBaseConhecimento = (AnexoBaseConhecimentoDTO) anexoBaseConhecimentoDao.create(anexoBaseConhecimento); listaAnexoBaseConhecimento.add(anexoBaseConhecimento); } else { ControleGEDDTO controleGEDDTO = new ControleGEDDTO(); AnexoBaseConhecimentoDTO anexoBaseConhecimento = new AnexoBaseConhecimentoDTO(); controleGEDDTO.setIdTabela(ControleGEDDTO.TABELA_BASECONHECIMENTO); controleGEDDTO.setId(novaBaseConhecimento.getIdBaseConhecimento()); controleGEDDTO.setDataHora(UtilDatas.getDataAtual()); controleGEDDTO.setDescricaoArquivo(uploadDto.getDescricao()); controleGEDDTO.setExtensaoArquivo(Util.getFileExtension(uploadDto.getNameFile())); controleGEDDTO.setPasta(pasta); controleGEDDTO.setNomeArquivo(uploadDto.getNameFile()); controleGEDDTO = (ControleGEDDTO) controleGEDDao.create(controleGEDDTO); final File arquivoAntigo = new File(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + uploadDto.getPath().substring(3) + ".ged"); this.copiarArquivo(arquivoAntigo, PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + ".ged"); anexoBaseConhecimento.setLink(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + ".ged"); anexoBaseConhecimento.setDataInicio(UtilDatas.getDataAtual()); anexoBaseConhecimento.setNomeAnexo(controleGEDDTO.getNomeArquivo()); anexoBaseConhecimento.setExtensao(controleGEDDTO.getExtensaoArquivo()); anexoBaseConhecimento.setIdBaseConhecimento(novaBaseConhecimento.getIdBaseConhecimento()); anexoBaseConhecimento.setDescricao(uploadDto.getDescricao()); // Obtendo o conte�do do arquivo armazenado em disco! O Service n�o traz este campo preenchido no list try { final Arquivo arquivo = new Arquivo(controleGEDDTO); anexoBaseConhecimento.setTextoDocumento(arquivo.getConteudo()); } catch (final Exception e) { e.printStackTrace(); } anexoBaseConhecimento = (AnexoBaseConhecimentoDTO) anexoBaseConhecimentoDao.create(anexoBaseConhecimento); listaAnexoBaseConhecimento.add(anexoBaseConhecimento); } } } // Publicada, N�o arquivada e N�o exclu�da! lucene.indexarBaseConhecimento(novaBaseConhecimento, listaAnexoBaseConhecimento); transactionControler.commit(); } catch (final Exception e) { throw e; } } // A BASE N�O SER� PUBLICADA } else { // BASE N�O APROVADA E QUE CONTINUAR� N�O APROVADA if (status.equalsIgnoreCase("N")) { try { notificacaoDto = this.criarNotificacao(novaBaseConhecimento, transactionControler); if (notificacaoDto.getIdNotificacao() != null) { novaBaseConhecimento.setIdNotificacao(notificacaoDto.getIdNotificacao()); } // TODO CREATE novaBaseConhecimento = (BaseConhecimentoDTO) this.getDao().create(novaBaseConhecimento); Reflexao.copyPropertyValues(novaBaseConhecimento, historicoBaseConhecimentoDto); historicoBaseConhecimentoDto.setIdUsuarioAlteracao(usuarioDto.getIdUsuario()); historicoBaseConhecimentoDto.setDataHoraAlteracao(UtilDatas.getDataHoraAtual()); if (historicoBaseConhecimentoDto.getIdHistoricoBaseConhecimento() == null) { historicoBaseConhecimentoDto = (HistoricoBaseConhecimentoDTO) historicoBaseConhecimentoDao.create(historicoBaseConhecimentoDto); } else { historicoBaseConhecimentoDto = (HistoricoBaseConhecimentoDTO) historicoBaseConhecimentoDao.createWithID(historicoBaseConhecimentoDto); } if (novaBaseConhecimento.getIdHistoricoBaseConhecimento() == null) { novaBaseConhecimento.setIdHistoricoBaseConhecimento(historicoBaseConhecimentoDto.getIdHistoricoBaseConhecimento()); this.getDao().updateNotNull(novaBaseConhecimento); } // TODO ENVIAR NOTIFICA��O PARA O RESPONS�VEL PELO GERENCIAMENTO DE CONHECIMENTO. this.enviarEmailNotificacaoConhecimento(baseConhecimentoDto, transactionControler, "U"); // TODO CRIAR RELACIONAMENTO ENTRE UMA BASE DE CONHECIMENTO COM UM PROBLEMA. if (novaBaseConhecimento.getIdProblema() != null && novaBaseConhecimento.getIdBaseConhecimento() != null) { conhecimentoProblemaDao.deleteByIdBaseConhecimento(novaBaseConhecimento.getIdBaseConhecimento()); conhecimentoProblemaDao.deleteByIdProblema(novaBaseConhecimento.getIdProblema()); conhecimentoProblemaDTO.setIdProblema(novaBaseConhecimento.getIdProblema()); conhecimentoProblemaDTO.setIdBaseConhecimento(novaBaseConhecimento.getIdBaseConhecimento()); conhecimentoProblemaDao.create(conhecimentoProblemaDTO); } if (arquivosUpados != null && !arquivosUpados.isEmpty()) { for (final UploadDTO uploadDto : arquivosUpados) { if (uploadDto.getTemporario().equalsIgnoreCase("S")) { ControleGEDDTO controleGEDDTO = new ControleGEDDTO(); AnexoBaseConhecimentoDTO anexoBaseConhecimento = new AnexoBaseConhecimentoDTO(); controleGEDDTO.setIdTabela(ControleGEDDTO.TABELA_BASECONHECIMENTO); controleGEDDTO.setId(novaBaseConhecimento.getIdBaseConhecimento()); controleGEDDTO.setDataHora(UtilDatas.getDataAtual()); controleGEDDTO.setDescricaoArquivo(uploadDto.getDescricao()); controleGEDDTO.setExtensaoArquivo(Util.getFileExtension(uploadDto.getNameFile())); controleGEDDTO.setPasta(pasta); controleGEDDTO.setNomeArquivo(uploadDto.getNameFile()); if (PRONTUARIO_GED_INTERNO.equalsIgnoreCase("S") && "S".equalsIgnoreCase(prontuarioGedInternoBancoDados)) { controleGEDDTO.setPathArquivo(uploadDto.getPath()); } else { controleGEDDTO.setPathArquivo(null); } controleGEDDTO = (ControleGEDDTO) controleGEDDao.create(controleGEDDTO); if (PRONTUARIO_GED_INTERNO.equalsIgnoreCase("S") && !"S".equalsIgnoreCase(prontuarioGedInternoBancoDados)) { if (controleGEDDTO != null) { final File arquivo = new File(PRONTUARIO_GED_DIRETORIO + "/" + 1 + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + "." + Util.getFileExtension(uploadDto.getNameFile())); CriptoUtils.encryptFile(uploadDto.getPath(), PRONTUARIO_GED_DIRETORIO + "/" + 1 + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + ".ged", System.getProperties().get("user.dir") + Constantes.getValue("CAMINHO_CHAVE_PUBLICA")); anexoBaseConhecimento.setLink(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + ".ged"); arquivo.delete(); } } anexoBaseConhecimento.setDataInicio(UtilDatas.getDataAtual()); if (controleGEDDTO != null) { anexoBaseConhecimento.setNomeAnexo(controleGEDDTO.getNomeArquivo()); anexoBaseConhecimento.setExtensao(controleGEDDTO.getExtensaoArquivo()); } anexoBaseConhecimento.setIdBaseConhecimento(novaBaseConhecimento.getIdBaseConhecimento()); anexoBaseConhecimento.setDescricao(uploadDto.getDescricao()); // Obtendo o conte�do do arquivo armazenado em disco! O Service n�o traz este campo preenchido no list try { final Arquivo arquivo = new Arquivo(controleGEDDTO); anexoBaseConhecimento.setTextoDocumento(arquivo.getConteudo()); } catch (final Exception e) { e.printStackTrace(); } anexoBaseConhecimento = (AnexoBaseConhecimentoDTO) anexoBaseConhecimentoDao.create(anexoBaseConhecimento); } else { ControleGEDDTO controleGEDDTO = new ControleGEDDTO(); AnexoBaseConhecimentoDTO anexoBaseConhecimento = new AnexoBaseConhecimentoDTO(); controleGEDDTO.setIdTabela(ControleGEDDTO.TABELA_BASECONHECIMENTO); controleGEDDTO.setId(novaBaseConhecimento.getIdBaseConhecimento()); controleGEDDTO.setDataHora(UtilDatas.getDataAtual()); controleGEDDTO.setDescricaoArquivo(uploadDto.getDescricao()); controleGEDDTO.setExtensaoArquivo(Util.getFileExtension(uploadDto.getNameFile())); controleGEDDTO.setPasta(pasta); controleGEDDTO.setNomeArquivo(uploadDto.getNameFile()); controleGEDDTO = (ControleGEDDTO) controleGEDDao.create(controleGEDDTO); final File arquivoAntigo = new File(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + uploadDto.getPath().substring(3) + ".ged"); this.copiarArquivo(arquivoAntigo, PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + ".ged"); anexoBaseConhecimento.setLink(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + ".ged"); anexoBaseConhecimento.setDataInicio(UtilDatas.getDataAtual()); anexoBaseConhecimento.setNomeAnexo(controleGEDDTO.getNomeArquivo()); anexoBaseConhecimento.setExtensao(controleGEDDTO.getExtensaoArquivo()); anexoBaseConhecimento.setIdBaseConhecimento(novaBaseConhecimento.getIdBaseConhecimento()); anexoBaseConhecimento.setDescricao(uploadDto.getDescricao()); // Obtendo o conte�do do arquivo armazenado em disco! O Service n�o traz este campo preenchido no list try { final Arquivo arquivo = new Arquivo(controleGEDDTO); anexoBaseConhecimento.setTextoDocumento(arquivo.getConteudo()); } catch (final Exception e) { e.printStackTrace(); } anexoBaseConhecimento = (AnexoBaseConhecimentoDTO) anexoBaseConhecimentoDao.create(anexoBaseConhecimento); } } } // EXCLUO BASE DE CONHECIMENTO ANTIGA baseConhecimentoRelacionadoService.deleteByIdConhecimento(baseConhecimentoDto.getIdBaseConhecimento(), transactionControler); importanciaConhecimentoUsuarioService.deleteByIdConhecimento(baseConhecimentoDto.getIdBaseConhecimento(), transactionControler); importanciaConhecimentoGrupoService.deleteByIdConhecimento(baseConhecimentoDto.getIdBaseConhecimento(), transactionControler); conhecimentoProblemaDao.deleteByIdBaseConhecimento(baseConhecimentoDto.getIdBaseConhecimento()); final SolicitacaoServicoDao solicitacaoServicoDao = new SolicitacaoServicoDao(); final ConhecimentoSolicitacaoDao conhecimentoSolicitacaoDao = new ConhecimentoSolicitacaoDao(); solicitacaoServicoDao.setTransactionControler(transactionControler); conhecimentoSolicitacaoDao.setTransactionControler(transactionControler); final List<SolicitacaoServicoDTO> listaSolicitacoes = solicitacaoServicoDao.listaSolicitacoesRelacionadasBaseconhecimento(baseConhecimentoDto .getIdBaseConhecimento()); conhecimentoSolicitacaoDao.deleteByIdBaseConhecimento(baseConhecimentoDto.getIdBaseConhecimento()); if (listaSolicitacoes != null) { for (final SolicitacaoServicoDTO solicitacaoServicoDTO : listaSolicitacoes) { final ConhecimentoSolicitacaoDTO obj = new ConhecimentoSolicitacaoDTO(); obj.setIdBaseConhecimento(novaBaseConhecimento.getIdBaseConhecimento()); obj.setIdSolicitacaoServico(solicitacaoServicoDTO.getIdSolicitacaoServico()); conhecimentoSolicitacaoDao.create(obj); } } this.getDao().delete(baseConhecimentoDto); lucene.excluirBaseConhecimento(baseConhecimentoDto, true); // EXCLUO OS ANEXOS DA BASE DE CONHECIMENTO ANTIGA. final Collection<AnexoBaseConhecimentoDTO> anexosBaseConhecimento = anexoBaseConhecimentoDao.consultarAnexosDaBaseConhecimento(baseConhecimentoDto); if (anexosBaseConhecimento != null && !anexosBaseConhecimento.isEmpty()) { for (final AnexoBaseConhecimentoDTO anexo : anexosBaseConhecimento) { anexoBaseConhecimentoDao.delete(anexo); this.deleteDir(new File(anexo.getLink())); } } // EXCLUO OS GEDS DA BASE DE CONHECIMENTO ANTIGA. final Collection<ControleGEDDTO> gedsBaseConhecimento = controleGEDDao.listByIdTabelaAndIdBaseConhecimento(ControleGEDDTO.TABELA_BASECONHECIMENTO, baseConhecimentoDto.getIdBaseConhecimento()); if (gedsBaseConhecimento != null && !gedsBaseConhecimento.isEmpty()) { for (final ControleGEDDTO ged : gedsBaseConhecimento) { controleGEDDao.delete(ged); } } idBaseConhecimento = novaBaseConhecimento.getIdBaseConhecimento(); transactionControler.commit(); } catch (final Exception e) { throw e; } } else { // BASE APROVADA, ALTERADA N�O SER� PUBLICADA novaBaseConhecimento.setStatus("N"); novaBaseConhecimento.setIdBaseConhecimento(null); novaBaseConhecimento.setIdBaseConhecimentoPai(baseConhecimentoDto.getIdBaseConhecimento()); try { // TODO CREATE novaBaseConhecimento = (BaseConhecimentoDTO) this.getDao().create(novaBaseConhecimento); notificacaoDto = this.criarNotificacao(novaBaseConhecimento, transactionControler); if (notificacaoDto.getIdNotificacao() != null) { novaBaseConhecimento.setIdNotificacao(notificacaoDto.getIdNotificacao()); } Reflexao.copyPropertyValues(novaBaseConhecimento, historicoBaseConhecimentoDto); historicoBaseConhecimentoDto.setIdUsuarioAlteracao(usuarioDto.getIdUsuario()); historicoBaseConhecimentoDto.setDataHoraAlteracao(UtilDatas.getDataHoraAtual()); if (historicoBaseConhecimentoDto.getIdHistoricoBaseConhecimento() == null) { historicoBaseConhecimentoDto = (HistoricoBaseConhecimentoDTO) historicoBaseConhecimentoDao.create(historicoBaseConhecimentoDto); } else { historicoBaseConhecimentoDto = (HistoricoBaseConhecimentoDTO) historicoBaseConhecimentoDao.createWithID(historicoBaseConhecimentoDto); } if (novaBaseConhecimento.getIdHistoricoBaseConhecimento() == null) { novaBaseConhecimento.setIdHistoricoBaseConhecimento(historicoBaseConhecimentoDto.getIdHistoricoBaseConhecimento()); } this.getDao().updateNotNull(novaBaseConhecimento); this.getDao().restore(baseConhecimentoDto); baseConhecimentoDto.setArquivado("S"); this.getDao().updateNotNull(baseConhecimentoDto); lucene.excluirBaseConhecimento(baseConhecimentoDto, true); this.enviarEmailNotificacaoConhecimento(baseConhecimentoDto, transactionControler, "U"); // TODO CRIAR RELACIONAMENTO ENTRE UMA BASE DE CONHECIMENTO COM UM PROBLEMA. if (novaBaseConhecimento.getIdProblema() != null && novaBaseConhecimento.getIdBaseConhecimento() != null) { conhecimentoProblemaDao.deleteByIdBaseConhecimento(novaBaseConhecimento.getIdBaseConhecimento()); conhecimentoProblemaDao.deleteByIdProblema(novaBaseConhecimento.getIdProblema()); conhecimentoProblemaDTO.setIdProblema(novaBaseConhecimento.getIdProblema()); conhecimentoProblemaDTO.setIdBaseConhecimento(novaBaseConhecimento.getIdBaseConhecimento()); conhecimentoProblemaDao.create(conhecimentoProblemaDTO); } idBaseConhecimento = novaBaseConhecimento.getIdBaseConhecimento(); if (arquivosUpados != null && !arquivosUpados.isEmpty()) { for (final UploadDTO uploadDto : arquivosUpados) { if (uploadDto.getTemporario().equalsIgnoreCase("S")) { ControleGEDDTO controleGEDDTO = new ControleGEDDTO(); final AnexoBaseConhecimentoDTO anexoBaseConhecimento = new AnexoBaseConhecimentoDTO(); controleGEDDTO.setIdTabela(ControleGEDDTO.TABELA_BASECONHECIMENTO); controleGEDDTO.setId(novaBaseConhecimento.getIdBaseConhecimento()); controleGEDDTO.setDataHora(UtilDatas.getDataAtual()); controleGEDDTO.setDescricaoArquivo(uploadDto.getDescricao()); controleGEDDTO.setExtensaoArquivo(Util.getFileExtension(uploadDto.getNameFile())); controleGEDDTO.setPasta(pasta); controleGEDDTO.setNomeArquivo(uploadDto.getNameFile()); if (PRONTUARIO_GED_INTERNO.equalsIgnoreCase("S") && "S".equalsIgnoreCase(prontuarioGedInternoBancoDados)) { controleGEDDTO.setPathArquivo(uploadDto.getPath()); } else { controleGEDDTO.setPathArquivo(null); } controleGEDDTO = (ControleGEDDTO) controleGEDDao.create(controleGEDDTO); if (PRONTUARIO_GED_INTERNO.equalsIgnoreCase("S") && !"S".equalsIgnoreCase(prontuarioGedInternoBancoDados)) { if (controleGEDDTO != null) { final File arquivo = new File(PRONTUARIO_GED_DIRETORIO + "/" + 1 + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + "." + Util.getFileExtension(uploadDto.getNameFile())); CriptoUtils.encryptFile(uploadDto.getPath(), PRONTUARIO_GED_DIRETORIO + "/" + 1 + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + ".ged", System.getProperties().get("user.dir") + Constantes.getValue("CAMINHO_CHAVE_PUBLICA")); anexoBaseConhecimento.setLink(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + ".ged"); arquivo.delete(); } } anexoBaseConhecimento.setDataInicio(UtilDatas.getDataAtual()); if (controleGEDDTO != null) { anexoBaseConhecimento.setNomeAnexo(controleGEDDTO.getNomeArquivo()); anexoBaseConhecimento.setExtensao(controleGEDDTO.getExtensaoArquivo()); } anexoBaseConhecimento.setIdBaseConhecimento(novaBaseConhecimento.getIdBaseConhecimento()); anexoBaseConhecimento.setDescricao(uploadDto.getDescricao()); anexoBaseConhecimentoDao.create(anexoBaseConhecimento); } else { ControleGEDDTO controleGEDDTO = new ControleGEDDTO(); final AnexoBaseConhecimentoDTO anexoBaseConhecimento = new AnexoBaseConhecimentoDTO(); controleGEDDTO.setIdTabela(ControleGEDDTO.TABELA_BASECONHECIMENTO); controleGEDDTO.setId(novaBaseConhecimento.getIdBaseConhecimento()); controleGEDDTO.setDataHora(UtilDatas.getDataAtual()); controleGEDDTO.setDescricaoArquivo(uploadDto.getDescricao()); controleGEDDTO.setExtensaoArquivo(Util.getFileExtension(uploadDto.getNameFile())); controleGEDDTO.setPasta(pasta); controleGEDDTO.setNomeArquivo(uploadDto.getNameFile()); controleGEDDTO = (ControleGEDDTO) controleGEDDao.create(controleGEDDTO); final File arquivoAntigo = new File(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + uploadDto.getPath().substring(3) + ".ged"); this.copiarArquivo(arquivoAntigo, PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + ".ged"); anexoBaseConhecimento.setLink(PRONTUARIO_GED_DIRETORIO + "/" + idEmpresa + "/" + pasta + "/" + controleGEDDTO.getIdControleGED() + ".ged"); anexoBaseConhecimento.setDataInicio(UtilDatas.getDataAtual()); anexoBaseConhecimento.setNomeAnexo(controleGEDDTO.getNomeArquivo()); anexoBaseConhecimento.setExtensao(controleGEDDTO.getExtensaoArquivo()); anexoBaseConhecimento.setIdBaseConhecimento(novaBaseConhecimento.getIdBaseConhecimento()); anexoBaseConhecimento.setDescricao(uploadDto.getDescricao()); anexoBaseConhecimentoDao.create(anexoBaseConhecimento); } } } transactionControler.commit(); } catch (final Exception e) { throw e; } } } } catch (final Exception e) { this.rollbackTransaction(transactionControler, e); e.printStackTrace(); } finally { try { transactionControler.close(); } catch (final PersistenceException e) { e.printStackTrace(); } } } @Override public void excluir(final BaseConhecimentoDTO baseConhecimentoBean, final boolean isAprovaBaseConhecimento) throws Exception { if (isAprovaBaseConhecimento) { final Lucene lucene = new Lucene(); lucene.excluirBaseConhecimento(baseConhecimentoBean, true); this.excluirBaseConhecimentoComentarios(baseConhecimentoBean); this.excluirBaseConhecimento(baseConhecimentoBean); this.enviarEmailNotificacaoConhecimento(baseConhecimentoBean, null, "D"); } } /** * Atribui os valores dos atributos da nova Base de Conhecimento a ser cadastrada. * * @return BaseConhecimentoDTO * @author breno.guimaraes * @throws Exception * @throws ServiceException * @author valdoilo.damasceno */ private BaseConhecimentoDTO atribuirValoresNovaBaseConhecimento(final BaseConhecimentoDTO baseConhecimento) throws ServiceException, Exception { final BaseConhecimentoDTO novaBaseConhecimentoBean = new BaseConhecimentoDTO(); novaBaseConhecimentoBean.setIdBaseConhecimento(baseConhecimento.getIdBaseConhecimento()); novaBaseConhecimentoBean.setTitulo(baseConhecimento.getTitulo()); novaBaseConhecimentoBean.setConteudo(baseConhecimento.getConteudo()); novaBaseConhecimentoBean.setDataExpiracao(baseConhecimento.getDataExpiracao()); novaBaseConhecimentoBean.setDataInicio(UtilDatas.getDataAtual()); novaBaseConhecimentoBean.setIdPasta(baseConhecimento.getIdPasta()); novaBaseConhecimentoBean.setStatus(baseConhecimento.getStatus()); novaBaseConhecimentoBean.setIdUsuarioAutor(baseConhecimento.getIdUsuarioAutor()); novaBaseConhecimentoBean.setComentarios(baseConhecimento.getComentarios()); novaBaseConhecimentoBean.setListImportanciaConhecimentoUsuario(baseConhecimento.getListImportanciaConhecimentoUsuario()); novaBaseConhecimentoBean.setListImportanciaConhecimentoGrupo(baseConhecimento.getListImportanciaConhecimentoGrupo()); novaBaseConhecimentoBean.setJustificativaObservacao(baseConhecimento.getJustificativaObservacao()); novaBaseConhecimentoBean.setFonteReferencia(baseConhecimento.getFonteReferencia()); novaBaseConhecimentoBean.setIdNotificacao(baseConhecimento.getIdNotificacao()); novaBaseConhecimentoBean.setListaDeUsuarioNotificacao(baseConhecimento.getListaDeUsuarioNotificacao()); novaBaseConhecimentoBean.setListaDeGrupoNotificacao(baseConhecimento.getListaDeGrupoNotificacao()); novaBaseConhecimentoBean.setTituloNotificacao(baseConhecimento.getTituloNotificacao()); novaBaseConhecimentoBean.setTipoNotificacao(baseConhecimento.getTipoNotificacao()); novaBaseConhecimentoBean.setListBaseConhecimentoRelacionado(baseConhecimento.getListBaseConhecimentoRelacionado()); novaBaseConhecimentoBean.setFaq(baseConhecimento.getFaq()); novaBaseConhecimentoBean.setOrigem(baseConhecimento.getOrigem()); novaBaseConhecimentoBean.setIdHistoricoBaseConhecimento(baseConhecimento.getIdHistoricoBaseConhecimento()); novaBaseConhecimentoBean.setArquivado(baseConhecimento.getArquivado()); novaBaseConhecimentoBean.setIdBaseConhecimentoPai(baseConhecimento.getIdBaseConhecimentoPai()); novaBaseConhecimentoBean.setPrivacidade(baseConhecimento.getPrivacidade()); novaBaseConhecimentoBean.setSituacao(baseConhecimento.getSituacao()); novaBaseConhecimentoBean.setListEventoMonitoramento(baseConhecimento.getListEventoMonitoramento()); novaBaseConhecimentoBean.setGerenciamentoDisponibilidade(baseConhecimento.getGerenciamentoDisponibilidade()); novaBaseConhecimentoBean.setDireitoAutoral(baseConhecimento.getDireitoAutoral()); novaBaseConhecimentoBean.setLegislacao(baseConhecimento.getLegislacao()); novaBaseConhecimentoBean.setErroConhecido(baseConhecimento.getErroConhecido()); novaBaseConhecimentoBean.setIdProblema(baseConhecimento.getIdProblema()); novaBaseConhecimentoBean.setIdHistoricoBaseConhecimento(null); final String versao = ((BaseConhecimentoDTO) this.getDao().restore(baseConhecimento)).getVersao(); novaBaseConhecimentoBean.setVersao(versao); return novaBaseConhecimentoBean; } /** * Exclui diret�rio e arquivos. * * @param dir * @author valdoilo.damasceno */ public boolean deleteDir(final File dir) { if (dir.isDirectory()) { final String[] children = dir.list(); for (final String element : children) { final boolean success = this.deleteDir(new File(dir, element)); if (!success) { return false; } } } return dir.delete(); } /** * Copia Arquivo do diretório temporário para Diretório definitivo. * * @param fonte * @param destino * @throws IOException * @author valdoilo.damasceno */ public void copiarArquivo(final File fonte, final String destino) throws IOException { InputStream in; try { in = new FileInputStream(fonte); final OutputStream out = new FileOutputStream(new File(destino)); final byte[] buf = new byte[1024]; int len; try { while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); } } catch (final IOException e) { e.printStackTrace(); } in.close(); out.close(); } catch (final FileNotFoundException e) { e.printStackTrace(); } } /** * Seta dataFim � Base de Conhecimento. * * @param base * @throws Exception */ private void excluirBaseConhecimento(final BaseConhecimentoDTO base) throws Exception { this.excluirAnexosBaseConhecimento(base); base.setDataFim(UtilDatas.getDataAtual()); final Lucene lucene = new Lucene(); lucene.excluirBaseConhecimento(base, true); this.getDao().update(base); } /** * Seta dataFim � Comentarios. * * @param base * @throws Exception */ private void excluirBaseConhecimentoComentarios(final BaseConhecimentoDTO base) throws Exception { final Collection<ComentariosDTO> comentarios = this.geComentariosDAO().consultarComentarios(base); if (comentarios != null) { for (final ComentariosDTO comentarioDto : comentarios) { comentarioDto.setDataFim(UtilDatas.getDataAtual()); this.geComentariosDAO().update(comentarioDto); } } } /** * Excluir Anexos da Base Conhecimento atribuindo sua dataFim. * * @throws Exception * @author valdoilo.damasceno */ private void excluirAnexosBaseConhecimento(final BaseConhecimentoDTO base) throws Exception { final AnexoBaseConhecimentoDAO anexoBaseConhecimentoDao = new AnexoBaseConhecimentoDAO(); final Collection<AnexoBaseConhecimentoDTO> anexosBaseConhecimento = anexoBaseConhecimentoDao.consultarAnexosDaBaseConhecimento(base); if (anexosBaseConhecimento != null && !anexosBaseConhecimento.isEmpty()) { for (final AnexoBaseConhecimentoDTO anexo : anexosBaseConhecimento) { anexoBaseConhecimentoDao.delete(anexo); this.deleteDir(new File(anexo.getLink())); } } final Lucene lucene = new Lucene(); lucene.excluiAnexosDaBaseConhecimento(Long.parseLong(String.valueOf(base.getIdBaseConhecimento()))); } /** * @return valor do atributo subDiretorio. */ public File getPastaDaBaseConhecimento() { return pastaDaBaseConhecimento; } /** * Define valor do atributo subDiretorio. * * @param pastaDaBaseConhecimento */ public void setPastaDaBaseConhecimento(final File pastaDaBaseConhecimento) { this.pastaDaBaseConhecimento = pastaDaBaseConhecimento; } @Override public Collection<BaseConhecimentoDTO> listarBaseConhecimentoByPasta(final PastaDTO pasta) throws Exception { return this.getDao().listarBaseConhecimentoByPasta(pasta); } @Override public Double calcularNota(final Integer idBaseConhecimento) throws Exception { final ComentariosDAO comentarioDao = new ComentariosDAO(); return comentarioDao.calcularNota(idBaseConhecimento); } @Override public Long contarVotos(final Integer idBaseConhecimento) throws Exception { return this.geComentariosDAO().contarVotos(idBaseConhecimento); } @Override public boolean verificarSeBaseConhecimentoJaPossuiNovaVersao(final BaseConhecimentoDTO baseConhecimento) throws Exception { return this.getDao().verificarSeBaseConhecimentoJaPossuiNovaVersao(baseConhecimento); } @Override public boolean verificarSeBaseConhecimentoPossuiVersaoAnterior(final BaseConhecimentoDTO baseConhecimento) throws Exception { final String versao = StringUtils.remove(baseConhecimento.getTitulo(), baseConhecimento.getVersao()); if (StringUtils.isBlank(versao)) { return false; } return true; } @Override public boolean verificaBaseConhecimentoExistente(final BaseConhecimentoDTO baseConhecimentoDTO) throws Exception { return this.getDao().verificaSeBaseConhecimentoExiste(baseConhecimentoDTO); } @Override public List<BaseConhecimentoDTO> validaNota(final BaseConhecimentoDTO baseconhecimento) throws Exception { return this.getDao().validaNota(baseconhecimento); } @Override public Collection<BaseConhecimentoDTO> listaBaseConhecimento(final BaseConhecimentoDTO baseConhecimento) throws Exception { return this.getDao().listaBaseConhecimento(baseConhecimento); } @Override public Collection<BaseConhecimentoDTO> listaBaseConhecimentoUltimasVersoes(final BaseConhecimentoDTO baseConhecimento) throws Exception { return this.getDao().listaBaseConhecimentoUltimasVersoes(baseConhecimento); } /** * Verifica se usu�rio aprova Base Conhecimento na pasta selecionada. * * @param usuarioDto * @param idPasta * @return true = aprova; false = n�o aprova. * @throws ServiceException * @throws Exception */ private boolean usuarioAprovaBaseConhecimento(final UsuarioDTO usuarioDto, final Integer idPasta) throws ServiceException, Exception { boolean aprovaBaseConhecimento = false; final PerfilAcessoPastaService perfilAcessoPastaService = (PerfilAcessoPastaService) ServiceLocator.getInstance().getService(PerfilAcessoPastaService.class, null); aprovaBaseConhecimento = perfilAcessoPastaService.verificarSeUsuarioAprovaBaseConhecimentoParaPastaSelecionada(usuarioDto, idPasta); return aprovaBaseConhecimento; } /** * Cria coment�rios da Base de Conhecimento. * * @param baseConhecimentoDto * @param transactionControler * @throws Exception * @author Vadoilo Damasceno */ private void criarComentarios(final BaseConhecimentoDTO baseConhecimentoDto, final TransactionControler transactionControler) throws Exception { final Collection<ComentariosDTO> comentarios = baseConhecimentoDto.getComentarios(); final ComentariosDAO comentariosDao = new ComentariosDAO(); comentariosDao.setTransactionControler(transactionControler); if (comentarios != null && !comentarios.isEmpty()) { for (final ComentariosDTO comentario : comentarios) { comentario.setDataInicio(UtilDatas.getDataAtual()); comentariosDao.create(comentario); } } } @Override public void criarImportanciaConhecimentoUsuario(final BaseConhecimentoDTO baseConhecimentoDto, TransactionControler transactionControler) throws ServiceException, Exception { if (baseConhecimentoDto.getIdBaseConhecimento() != null) { final ImportanciaConhecimentoUsuarioService importanciaConhecimentoUsuarioService = (ImportanciaConhecimentoUsuarioService) ServiceLocator.getInstance().getService( ImportanciaConhecimentoUsuarioService.class, null); if (transactionControler == null) { transactionControler = new TransactionControlerImpl(this.getDao().getAliasDB()); } importanciaConhecimentoUsuarioService.deleteByIdConhecimento(baseConhecimentoDto.getIdBaseConhecimento(), transactionControler); final Collection<ImportanciaConhecimentoUsuarioDTO> listImportanciaConhecimentoUsuario = baseConhecimentoDto.getListImportanciaConhecimentoUsuario(); if (listImportanciaConhecimentoUsuario != null && !listImportanciaConhecimentoUsuario.isEmpty()) { for (final ImportanciaConhecimentoUsuarioDTO importanciaConhecimentoUsuario : listImportanciaConhecimentoUsuario) { if (importanciaConhecimentoUsuario.getIdBaseConhecimento() == null) { importanciaConhecimentoUsuario.setIdBaseConhecimento(baseConhecimentoDto.getIdBaseConhecimento()); importanciaConhecimentoUsuarioService.create(importanciaConhecimentoUsuario, transactionControler); } else { importanciaConhecimentoUsuario.setIdBaseConhecimento(baseConhecimentoDto.getIdBaseConhecimento()); importanciaConhecimentoUsuarioService.create(importanciaConhecimentoUsuario, transactionControler); } } } } } @Override public void criarImportanciaConhecimentoGrupo(final BaseConhecimentoDTO baseConhecimentoDto, TransactionControler transactionControler) throws Exception { if (baseConhecimentoDto.getIdBaseConhecimento() != null) { final ImportanciaConhecimentoGrupoService importanciaConhecimentoGrupoService = (ImportanciaConhecimentoGrupoService) ServiceLocator.getInstance().getService( ImportanciaConhecimentoGrupoService.class, null); if (transactionControler == null) { transactionControler = new TransactionControlerImpl(this.getDao().getAliasDB()); } importanciaConhecimentoGrupoService.deleteByIdConhecimento(baseConhecimentoDto.getIdBaseConhecimento(), transactionControler); final Collection<ImportanciaConhecimentoGrupoDTO> listImportanciaConhecimentoGrupo = baseConhecimentoDto.getListImportanciaConhecimentoGrupo(); if (listImportanciaConhecimentoGrupo != null && !listImportanciaConhecimentoGrupo.isEmpty()) { for (final ImportanciaConhecimentoGrupoDTO importanciaConhecimentoGrupo : listImportanciaConhecimentoGrupo) { if (importanciaConhecimentoGrupo.getIdBaseConhecimento() == null) { importanciaConhecimentoGrupo.setIdBaseConhecimento(baseConhecimentoDto.getIdBaseConhecimento()); importanciaConhecimentoGrupoService.create(importanciaConhecimentoGrupo, transactionControler); } else { importanciaConhecimentoGrupo.setIdBaseConhecimento(baseConhecimentoDto.getIdBaseConhecimento()); importanciaConhecimentoGrupoService.create(importanciaConhecimentoGrupo, transactionControler); } } } } } @Override public void criarRelacionamentoEntreConhecimentos(final BaseConhecimentoDTO baseConhecimentoDto, TransactionControler transactionControler) throws Exception { if (baseConhecimentoDto.getIdBaseConhecimento() != null) { final BaseConhecimentoRelacionadoService baseConhecimentoRelacionadoService = (BaseConhecimentoRelacionadoService) ServiceLocator.getInstance().getService( BaseConhecimentoRelacionadoService.class, null); if (transactionControler == null) { transactionControler = new TransactionControlerImpl(this.getDao().getAliasDB()); } baseConhecimentoRelacionadoService.deleteByIdConhecimento(baseConhecimentoDto.getIdBaseConhecimento(), transactionControler); final Collection<BaseConhecimentoRelacionadoDTO> listBaseConhecimentoRelacionado = baseConhecimentoDto.getListBaseConhecimentoRelacionado(); if (listBaseConhecimentoRelacionado != null && !listBaseConhecimentoRelacionado.isEmpty()) { for (final BaseConhecimentoRelacionadoDTO baseConhecimentoRelacionado : listBaseConhecimentoRelacionado) { if (baseConhecimentoRelacionado.getIdBaseConhecimento() == null) { baseConhecimentoRelacionado.setIdBaseConhecimento(baseConhecimentoDto.getIdBaseConhecimento()); baseConhecimentoRelacionadoService.create(baseConhecimentoRelacionado, transactionControler); } else { baseConhecimentoRelacionado.setIdBaseConhecimento(baseConhecimentoDto.getIdBaseConhecimento()); baseConhecimentoRelacionadoService.create(baseConhecimentoRelacionado, transactionControler); } } } } } /** * Cria relacionamento entre Evento Monitoramento e Conhecimento. * * @param baseConhecimentoDto * @param transactionControler * @throws ServiceException * @throws Exception * @author Thays */ @Override public void criarRelacionamentoEntreEventoMonitConhecimento(final BaseConhecimentoDTO baseConhecimentoDto, TransactionControler transactionControler) throws ServiceException, Exception { if (baseConhecimentoDto.getIdBaseConhecimento() != null) { final EventoMonitConhecimentoService eventoMonitConhecimentoService = (EventoMonitConhecimentoService) ServiceLocator.getInstance().getService( EventoMonitConhecimentoService.class, null); if (transactionControler == null) { transactionControler = new TransactionControlerImpl(this.getDao().getAliasDB()); } eventoMonitConhecimentoService.deleteByIdConhecimento(baseConhecimentoDto.getIdBaseConhecimento(), transactionControler); final Collection<EventoMonitConhecimentoDTO> listEventoMonitConhecimento = baseConhecimentoDto.getListEventoMonitoramento(); if (listEventoMonitConhecimento != null && !listEventoMonitConhecimento.isEmpty()) { for (final EventoMonitConhecimentoDTO eventoMonitConhecimento : listEventoMonitConhecimento) { eventoMonitConhecimento.setIdBaseConhecimento(baseConhecimentoDto.getIdBaseConhecimento()); eventoMonitConhecimentoService.create(eventoMonitConhecimento, transactionControler); } } } } @Override public NotificacaoDTO criarNotificacao(final BaseConhecimentoDTO baseConhecimentoDto, TransactionControler transactionControler) throws ServiceException, Exception { final NotificacaoDTO notificacaoDto = new NotificacaoDTO(); final NotificacaoService notificacaoService = (NotificacaoService) ServiceLocator.getInstance().getService(NotificacaoService.class, null); if (baseConhecimentoDto.getTituloNotificacao() != null && !StringUtils.isEmpty(baseConhecimentoDto.getTituloNotificacao().trim()) && baseConhecimentoDto.getTipoNotificacao() != null && !StringUtils.isEmpty(baseConhecimentoDto.getTipoNotificacao().trim())) { if (transactionControler == null) { transactionControler = new TransactionControlerImpl(this.getDao().getAliasDB()); } if (baseConhecimentoDto.getIdNotificacao() != null) { notificacaoDto.setIdNotificacao(baseConhecimentoDto.getIdNotificacao()); notificacaoDto.setListaDeUsuario(baseConhecimentoDto.getListaDeUsuarioNotificacao()); notificacaoDto.setListaDeGrupo(baseConhecimentoDto.getListaDeGrupoNotificacao()); notificacaoDto.setTitulo(baseConhecimentoDto.getTituloNotificacao()); notificacaoDto.setTipoNotificacao(baseConhecimentoDto.getTipoNotificacao()); notificacaoDto.setOrigemNotificacao(Enumerados.OrigemNotificacao.B.name()); notificacaoService.update(notificacaoDto, transactionControler); return notificacaoDto; } else { notificacaoDto.setListaDeUsuario(baseConhecimentoDto.getListaDeUsuarioNotificacao()); notificacaoDto.setListaDeGrupo(baseConhecimentoDto.getListaDeGrupoNotificacao()); notificacaoDto.setTitulo(baseConhecimentoDto.getTituloNotificacao()); notificacaoDto.setTipoNotificacao(baseConhecimentoDto.getTipoNotificacao()); notificacaoDto.setOrigemNotificacao(Enumerados.OrigemNotificacao.B.name()); return notificacaoService.create(notificacaoDto, transactionControler); } } else { return notificacaoDto; } } @Override public Collection<BaseConhecimentoDTO> listarBaseConhecimentoFAQByPasta(final PastaDTO pasta) throws Exception { return this.getDao().listarBaseConhecimentoFAQByPasta(pasta); } private void enviarEmailNotificacaoConhecimento(final BaseConhecimentoDTO baseConhecimentoDTO, final TransactionControler transactionControler, final String crud) throws Exception { final EmpregadoDao empregadoDao = new EmpregadoDao(); final NotificacaoDao notificacaoDao = new NotificacaoDao(); Collection<EmpregadoDTO> colEmpregados = new ArrayList(); if (transactionControler != null) { empregadoDao.setTransactionControler(transactionControler); notificacaoDao.setTransactionControler(transactionControler); } if (baseConhecimentoDTO.getIdNotificacao() != null && baseConhecimentoDTO.getIdNotificacao() != 0) { final String remetente = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.RemetenteNotificacoesSolicitacao, null); String ID_MODELO_EMAIL_AVISAR_CRIACAO_CONHECIMENTO = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ID_MODELO_EMAIL_AVISAR_CRIACAO_CONHECIMENTO, "8"); String ID_MODELO_EMAIL_AVISAR_ATUALIZACAO_CONHECIMENTO = ParametroUtil.getValorParametroCitSmartHashMap( ParametroSistema.ID_MODELO_EMAIL_AVISAR_ATUALIZACAO_CONHECIMENTO, "9"); String ID_MODELO_EMAIL_AVISAR_EXCLUSAO_CONHECIMENTO = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ID_MODELO_EMAIL_AVISAR_EXCLUSAO_CONHECIMENTO, "10"); String ID_MODELO_EMAIL = ""; if (ID_MODELO_EMAIL_AVISAR_CRIACAO_CONHECIMENTO == null || ID_MODELO_EMAIL_AVISAR_CRIACAO_CONHECIMENTO.isEmpty()) { ID_MODELO_EMAIL_AVISAR_CRIACAO_CONHECIMENTO = "11"; } if (ID_MODELO_EMAIL_AVISAR_ATUALIZACAO_CONHECIMENTO == null || ID_MODELO_EMAIL_AVISAR_ATUALIZACAO_CONHECIMENTO.isEmpty()) { ID_MODELO_EMAIL_AVISAR_ATUALIZACAO_CONHECIMENTO = "12"; } if (ID_MODELO_EMAIL_AVISAR_EXCLUSAO_CONHECIMENTO == null || ID_MODELO_EMAIL_AVISAR_EXCLUSAO_CONHECIMENTO.isEmpty()) { ID_MODELO_EMAIL_AVISAR_EXCLUSAO_CONHECIMENTO = "13"; } if (crud.equals("C")) { if (baseConhecimentoDTO.getTipoNotificacao().equals("T") || baseConhecimentoDTO.getTipoNotificacao().equals("C")) { ID_MODELO_EMAIL = ID_MODELO_EMAIL_AVISAR_CRIACAO_CONHECIMENTO; } } else if (crud.equals("U")) { if (baseConhecimentoDTO.getTipoNotificacao().equals("T") || baseConhecimentoDTO.getTipoNotificacao().equals("A")) { ID_MODELO_EMAIL = ID_MODELO_EMAIL_AVISAR_ATUALIZACAO_CONHECIMENTO; } } else { if (baseConhecimentoDTO.getTipoNotificacao().equals("T") || baseConhecimentoDTO.getTipoNotificacao().equals("E")) { ID_MODELO_EMAIL = ID_MODELO_EMAIL_AVISAR_EXCLUSAO_CONHECIMENTO; } } if (!ID_MODELO_EMAIL.isEmpty()) { colEmpregados = empregadoDao.listarEmailsNotificacoesConhecimento(baseConhecimentoDTO.getIdBaseConhecimento()); if (colEmpregados != null) { for (final EmpregadoDTO empregados : colEmpregados) { final MensagemEmail mensagem = new MensagemEmail(Integer.parseInt(ID_MODELO_EMAIL.trim()), new IDto[] {baseConhecimentoDTO}); if (empregados.getEmail() != null) { mensagem.envia(empregados.getEmail(), "", remetente); } } } } } } @Override public BaseConhecimentoDTO getBaseConhecimento(final BaseConhecimentoDTO baseConhecimento) throws Exception { return this.getDao().getBaseConhecimento(baseConhecimento); } @Override public Collection<BaseConhecimentoDTO> listPesquisaBaseConhecimento(final BaseConhecimentoDTO baseConhecimento) throws Exception { return this.getDao().listPesquisaBaseConhecimento(baseConhecimento); } @Override public void arquivarConhecimento(final BaseConhecimentoDTO baseConhecimentoDto) throws Exception { baseConhecimentoDto.setArquivado("S"); this.getDao().arquivarConhecimento(baseConhecimentoDto); } @Override public Integer obterGrauDeImportanciaParaUsuario(final BaseConhecimentoDTO baseConhecimentoDto, final UsuarioDTO usuarioDto) throws Exception { final ImportanciaConhecimentoGrupoService importanciaConhecimentoGrupoService = (ImportanciaConhecimentoGrupoService) ServiceLocator.getInstance().getService( ImportanciaConhecimentoGrupoService.class, null); final GrupoEmpregadoService grupoEmpregadoService = (GrupoEmpregadoService) ServiceLocator.getInstance().getService(GrupoEmpregadoService.class, null); final Collection<GrupoEmpregadoDTO> listGrupoEmpregadoDto = grupoEmpregadoService.findByIdEmpregado(usuarioDto.getIdEmpregado()); final ImportanciaConhecimentoGrupoDTO importanciaConhecimento = importanciaConhecimentoGrupoService.obterGrauDeImportancia(baseConhecimentoDto, listGrupoEmpregadoDto, usuarioDto); if (importanciaConhecimento != null) { return Integer.parseInt(importanciaConhecimento.getGrauImportancia()); } return 0; } @Override public void restaurarConhecimento(final BaseConhecimentoDTO baseConhecimentoDto) throws Exception { baseConhecimentoDto.setArquivado("N"); this.getDao().restaurarConhecimento(baseConhecimentoDto); } @Override public Collection<BaseConhecimentoDTO> listarBaseConhecimentoByPastaRelatorio(final PastaDTO pasta) throws Exception { return this.getDao().listarBaseConhecimentoByPastaRelatorio(pasta); } @Override public Collection<BaseConhecimentoDTO> obterHistoricoDeVersoes(final BaseConhecimentoDTO baseConhecimento) throws Exception { return this.getDao().obterHistoricoDeVersoes(baseConhecimento); } @Override public void gravarSolicitacoesConhecimento(final BaseConhecimentoDTO baseConhecimento) throws Exception { if (baseConhecimento.getIdBaseConhecimento() != null) { final ConhecimentoSolicitacaoDao conhecimentoSolicitacaoDao = new ConhecimentoSolicitacaoDao(); conhecimentoSolicitacaoDao.deleteByIdBaseConhecimento(baseConhecimento.getIdBaseConhecimento()); try { if (baseConhecimento.getColItensIncidentes() != null) { for (final Object element : baseConhecimento.getColItensIncidentes()) { final SolicitacaoServicoDTO solicitacaoServicoDto = (SolicitacaoServicoDTO) element; final ConhecimentoSolicitacaoDTO conhecimentoSolicitacaoDto = new ConhecimentoSolicitacaoDTO(); conhecimentoSolicitacaoDto.setIdSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico()); conhecimentoSolicitacaoDto.setIdBaseConhecimento(baseConhecimento.getIdBaseConhecimento()); conhecimentoSolicitacaoDao.create(conhecimentoSolicitacaoDto); } } } catch (final Exception e) { System.err.println(e); } } } @Override public void gravarProblemasConhecimento(final BaseConhecimentoDTO baseConhecimento) throws Exception { if (baseConhecimento.getIdBaseConhecimento() != null) { final ConhecimentoProblemaDao conhecimentoProblemaDAO = new ConhecimentoProblemaDao(); conhecimentoProblemaDAO.deleteByIdBaseConhecimento(baseConhecimento.getIdBaseConhecimento()); try { if (baseConhecimento.getColItensProblema() != null) { for (final Object element : baseConhecimento.getColItensProblema()) { final ProblemaDTO problemaDTO = (ProblemaDTO) element; final ConhecimentoProblemaDTO conhecimentoProblemaDTO = new ConhecimentoProblemaDTO(); conhecimentoProblemaDAO.deleteByIdProblema(problemaDTO.getIdProblema()); conhecimentoProblemaDTO.setIdProblema(problemaDTO.getIdProblema()); conhecimentoProblemaDTO.setIdBaseConhecimento(baseConhecimento.getIdBaseConhecimento()); conhecimentoProblemaDAO.create(conhecimentoProblemaDTO); } } } catch (final Exception e) { System.err.println(e); } } } @Override public void gravarMudancaConhecimento(final BaseConhecimentoDTO baseConhecimento) throws Exception { if (baseConhecimento.getIdBaseConhecimento() != null) { final ConhecimentoMudancaDao conhecimentoMudancaDao = new ConhecimentoMudancaDao(); conhecimentoMudancaDao.deleteByIdBaseConhecimento(baseConhecimento.getIdBaseConhecimento()); try { if (baseConhecimento.getColItensMudanca() != null) { for (final Object element : baseConhecimento.getColItensMudanca()) { final RequisicaoMudancaDTO requisicaoMudancaDTO = (RequisicaoMudancaDTO) element; final ConhecimentoMudancaDTO conhecimentoMudancaDTO = new ConhecimentoMudancaDTO(); conhecimentoMudancaDTO.setIdRequisicaoMudanca(requisicaoMudancaDTO.getIdRequisicaoMudanca()); conhecimentoMudancaDTO.setIdBaseConhecimento(baseConhecimento.getIdBaseConhecimento()); conhecimentoMudancaDao.create(conhecimentoMudancaDTO); } } } catch (final Exception e) { System.err.println(e); } } } @Override public void gravarLiberacaoConhecimento(final BaseConhecimentoDTO baseConhecimento) throws Exception { if (baseConhecimento.getIdBaseConhecimento() != null) { final ConhecimentoLiberacaoDao conhecimentoLiberacaoDao = new ConhecimentoLiberacaoDao(); conhecimentoLiberacaoDao.deleteByIdBaseConhecimento(baseConhecimento.getIdBaseConhecimento()); try { if (baseConhecimento.getColItensLiberacao() != null) { for (final Object element : baseConhecimento.getColItensLiberacao()) { final RequisicaoLiberacaoDTO requisicaoLiberacaoDTO = (RequisicaoLiberacaoDTO) element; final ConhecimentoLiberacaoDTO conhecimentoLiberacaoDTO = new ConhecimentoLiberacaoDTO(); conhecimentoLiberacaoDTO.setIdRequisicaoLiberacao(requisicaoLiberacaoDTO.getIdRequisicaoLiberacao()); conhecimentoLiberacaoDTO.setIdBaseConhecimento(baseConhecimento.getIdBaseConhecimento()); conhecimentoLiberacaoDao.create(conhecimentoLiberacaoDTO); } } } catch (final Exception e) { System.err.println(e); } } } @Override public void gravarICConhecimento(final BaseConhecimentoDTO baseConhecimento) throws Exception { if (baseConhecimento.getIdBaseConhecimento() != null) { final ConhecimentoICDao conhecimentoICDao = new ConhecimentoICDao(); conhecimentoICDao.deleteByIdBaseConhecimento(baseConhecimento.getIdBaseConhecimento()); try { if (baseConhecimento.getColItensICSerialize() != null) { for (final Object element : baseConhecimento.getColItensICSerialize()) { final ItemConfiguracaoDTO itemConfiguracaoDto = (ItemConfiguracaoDTO) element; final ConhecimentoICDTO conhecimentoICDTO = new ConhecimentoICDTO(); conhecimentoICDTO.setIdItemConfiguracao(itemConfiguracaoDto.getIdItemConfiguracao()); conhecimentoICDTO.setIdBaseConhecimento(baseConhecimento.getIdBaseConhecimento()); conhecimentoICDao.create(conhecimentoICDTO); } } } catch (final Exception e) { System.err.println(e); } } } @Override public Collection<BaseConhecimentoDTO> listarBaseConhecimentoByIds(final Integer[] ids) throws Exception { return this.getDao().listarBaseConhecimentoByIds(ids); } @Override public void updateNotNull(final IDto obj) throws Exception { this.getDao().updateNotNull(obj); } @Override public Collection<BaseConhecimentoDTO> quantidadeBaseConhecimentoPorPeriodo(final BaseConhecimentoDTO baseConhecimentoDTO) throws Exception { Collection<BaseConhecimentoDTO> listaBaseConhecimento = null; final Collection<BaseConhecimentoDTO> listaQuantitativoBaseConhecimentoDTOs = new ArrayList<BaseConhecimentoDTO>(); final BaseConhecimentoDTO relatorioBaseConhecimentoDTO = new BaseConhecimentoDTO(); Integer qtdPublicados = 0, qtdNaoPublicados = 0, qtdAcessados = 0, qtdAvaliados = 0, qtdExcluidos = 0, qtdArquivados = 0, qtdAtualizados = 0, tipoFaq = 0, qtdErroConhecido = 0, qtdDocumentos = 0; try { listaBaseConhecimento = this.getDao().listaBaseConhecimentoTotal(baseConhecimentoDTO); if (listaBaseConhecimento != null) { for (final BaseConhecimentoDTO baseConhecimentoDTO2 : listaBaseConhecimento) { // Conta publicados e criados (n�o publicados) no per�odo if (baseConhecimentoDTO2.getStatus().trim().equalsIgnoreCase("S")) { final boolean resp = UtilDatas.dataEntreIntervalo(baseConhecimentoDTO2.getDataPublicacao(), baseConhecimentoDTO.getDataInicio(), baseConhecimentoDTO.getDataFim()); if (resp) { qtdPublicados++; } } else { final boolean resp = UtilDatas.dataEntreIntervalo(baseConhecimentoDTO2.getDataInicio(), baseConhecimentoDTO.getDataInicio(), baseConhecimentoDTO.getDataFim()); if (resp) { qtdNaoPublicados++; } } // Conta exclu�dos if (baseConhecimentoDTO2.getDataFim() != null) { final boolean resp = UtilDatas.dataEntreIntervalo(baseConhecimentoDTO2.getDataFim(), baseConhecimentoDTO.getDataInicio(), baseConhecimentoDTO.getDataFim()); if (resp) { qtdExcluidos++; } } // Conta arquivados if (baseConhecimentoDTO2.getArquivado() != null && baseConhecimentoDTO2.getArquivado().trim().equalsIgnoreCase("S")) { final boolean resp = UtilDatas.dataEntreIntervalo(baseConhecimentoDTO2.getDataInicio(), baseConhecimentoDTO.getDataInicio(), baseConhecimentoDTO.getDataFim()); if (resp) { qtdArquivados++; } } // Conta tipo FAQ if (baseConhecimentoDTO2.getFaq() != null && baseConhecimentoDTO2.getFaq().trim().equalsIgnoreCase("S")) { final boolean resp = UtilDatas.dataEntreIntervalo(baseConhecimentoDTO2.getDataInicio(), baseConhecimentoDTO.getDataInicio(), baseConhecimentoDTO.getDataFim()); if (resp) { tipoFaq++; } } // Conta tipo erro conhecidos if (baseConhecimentoDTO2.getErroConhecido() != null && baseConhecimentoDTO2.getErroConhecido().trim().equalsIgnoreCase("S")) { final boolean resp = UtilDatas.dataEntreIntervalo(baseConhecimentoDTO2.getDataInicio(), baseConhecimentoDTO.getDataInicio(), baseConhecimentoDTO.getDataFim()); if (resp) { qtdErroConhecido++; } } // Conta Bases de Conhecimento que s�o qualificadas como Documento if ((baseConhecimentoDTO2.getFaq() == null || !baseConhecimentoDTO2.getFaq().trim().equalsIgnoreCase("S")) && (baseConhecimentoDTO2.getErroConhecido() == null || !baseConhecimentoDTO2.getErroConhecido().trim().equalsIgnoreCase("S"))) { final boolean resp = UtilDatas.dataEntreIntervalo(baseConhecimentoDTO2.getDataInicio(), baseConhecimentoDTO.getDataInicio(), baseConhecimentoDTO.getDataFim()); if (resp) { qtdDocumentos++; } } } } // Conta acessados no per�odo final ContadorAcessoService contadorAcessoService = (ContadorAcessoService) ServiceLocator.getInstance().getService(ContadorAcessoService.class, null); final Integer contadorAcesso = contadorAcessoService.quantidadesDeAcessoPorPeriodo(baseConhecimentoDTO); if (contadorAcesso != null) { qtdAcessados = contadorAcesso; } // Conta avaliados no per�odo final ComentariosService comentariosService = (ComentariosService) ServiceLocator.getInstance().getService(ComentariosService.class, null); final Integer contadorComentarios = comentariosService.consultarComentariosPorPeriodo(baseConhecimentoDTO); if (contadorComentarios != null) { qtdAvaliados++; } // Conta atualizados no per�odo final HistoricoBaseConhecimentoService historicoBaseConhecimentoService = (HistoricoBaseConhecimentoService) ServiceLocator.getInstance().getService( HistoricoBaseConhecimentoService.class, null); final Collection<HistoricoBaseConhecimentoDTO> listHistoricoAlteracao = historicoBaseConhecimentoService.list(); if (listHistoricoAlteracao != null) { for (final HistoricoBaseConhecimentoDTO historicoBaseConhecimentoDTO : listHistoricoAlteracao) { final Timestamp alteracao = historicoBaseConhecimentoDTO.getDataHoraAlteracao(); if (alteracao != null) { final Date dataAlteracao = new Date(alteracao.getTime()); final boolean resp = UtilDatas.dataEntreIntervalo(dataAlteracao, baseConhecimentoDTO.getDataInicio(), baseConhecimentoDTO.getDataFim()); if (resp) { qtdAtualizados++; } } } } relatorioBaseConhecimentoDTO.setQtdPublicados(qtdPublicados); relatorioBaseConhecimentoDTO.setQtdNaoPublicados(qtdNaoPublicados); relatorioBaseConhecimentoDTO.setQtdAcessados(qtdAcessados); relatorioBaseConhecimentoDTO.setQtdAvaliados(qtdAvaliados); relatorioBaseConhecimentoDTO.setQtdExcluidos(qtdExcluidos); relatorioBaseConhecimentoDTO.setQtdArquivados(qtdArquivados); relatorioBaseConhecimentoDTO.setQtdAtualizados(qtdAtualizados); relatorioBaseConhecimentoDTO.setTipoFaq(tipoFaq); relatorioBaseConhecimentoDTO.setQtdErroConhecido(qtdErroConhecido); relatorioBaseConhecimentoDTO.setQtdDocumentos(qtdDocumentos); listaQuantitativoBaseConhecimentoDTOs.add(relatorioBaseConhecimentoDTO); } catch (final ServiceException e) { e.printStackTrace(); } catch (final Exception e) { e.printStackTrace(); } return listaQuantitativoBaseConhecimentoDTOs; } @Override public Collection<ComentariosDTO> consultaConhecimentosAvaliados(final BaseConhecimentoDTO baseConhecimentoDTO) throws Exception { final ComentariosDAO dao = new ComentariosDAO(); Collection<ComentariosDTO> listaComentarios = new ArrayList<ComentariosDTO>(); try { listaComentarios = dao.consultarComentariosPorPeriodo(baseConhecimentoDTO); } catch (final Exception e) { e.printStackTrace(); } return listaComentarios; } @Override public Collection<BaseConhecimentoDTO> consultaConhecimentosPorAutores(final BaseConhecimentoDTO baseConhecimentoDTO) throws Exception { List<BaseConhecimentoDTO> listaConhecimentoPorAutor = new ArrayList<BaseConhecimentoDTO>(); try { listaConhecimentoPorAutor = (List<BaseConhecimentoDTO>) this.getDao().consultaConhecimentoPorAutor(baseConhecimentoDTO); } catch (final Exception e) { e.printStackTrace(); } return listaConhecimentoPorAutor; } @Override public Collection<BaseConhecimentoDTO> consultaConhecimentosPorAprovadores(final BaseConhecimentoDTO baseConhecimentoDTO) throws Exception { List<BaseConhecimentoDTO> listaConhecimentoPorAprovador = new ArrayList<BaseConhecimentoDTO>(); try { listaConhecimentoPorAprovador = (List<BaseConhecimentoDTO>) this.getDao().consultaConhecimentoPorAprovador(baseConhecimentoDTO); } catch (final Exception e) { e.printStackTrace(); } return listaConhecimentoPorAprovador; } @Override public Collection<BaseConhecimentoDTO> consultaConhecimentosPublicadosPorOrigem(final BaseConhecimentoDTO baseConhecimentoDTO) throws Exception { List<BaseConhecimentoDTO> listaConsultaConhecimentoPublicadosPorOrigem = new ArrayList<BaseConhecimentoDTO>(); try { listaConsultaConhecimentoPublicadosPorOrigem = (List<BaseConhecimentoDTO>) this.getDao().consultaConhecimentosPublicadosPorOrigem(baseConhecimentoDTO); } catch (final Exception e) { e.printStackTrace(); } return listaConsultaConhecimentoPublicadosPorOrigem; } @Override public Collection<BaseConhecimentoDTO> consultaConhecimentosNaoPublicadosPorOrigem(final BaseConhecimentoDTO baseConhecimentoDTO) throws Exception { List<BaseConhecimentoDTO> listaConsultaConhecimentoNaoPublicadosPorOrigem = new ArrayList<BaseConhecimentoDTO>(); try { listaConsultaConhecimentoNaoPublicadosPorOrigem = (List<BaseConhecimentoDTO>) this.getDao().consultaConhecimentosNaoPublicadosPorOrigem(baseConhecimentoDTO); } catch (final Exception e) { e.printStackTrace(); } return listaConsultaConhecimentoNaoPublicadosPorOrigem; } @Override public Collection<BaseConhecimentoDTO> consultaConhecimentoQuantitativoEmLista(final BaseConhecimentoDTO baseConhecimentoDTO) throws Exception { List<BaseConhecimentoDTO> listaConsultaConhecimentoQuantitativoEmLista = new ArrayList<BaseConhecimentoDTO>(); List<BaseConhecimentoDTO> listaIncidente = new ArrayList<BaseConhecimentoDTO>(); List<BaseConhecimentoDTO> listaRequisitos = new ArrayList<BaseConhecimentoDTO>(); List<BaseConhecimentoDTO> listaProblema = new ArrayList<BaseConhecimentoDTO>(); List<BaseConhecimentoDTO> listaMudanca = new ArrayList<BaseConhecimentoDTO>(); List<BaseConhecimentoDTO> listaIC = new ArrayList<BaseConhecimentoDTO>(); List<BaseConhecimentoDTO> listaServico = new ArrayList<BaseConhecimentoDTO>(); try { listaConsultaConhecimentoQuantitativoEmLista = (List<BaseConhecimentoDTO>) this.getDao().consultaConhecimentoQuantitativoEmLista(baseConhecimentoDTO); for (final BaseConhecimentoDTO baseConhecimentoDTO2 : listaConsultaConhecimentoQuantitativoEmLista) { listaIncidente = (List<BaseConhecimentoDTO>) this.getDao().consultaIncidenteLista(baseConhecimentoDTO2); baseConhecimentoDTO2.setListaIncidente(listaIncidente); listaRequisitos = (List<BaseConhecimentoDTO>) this.getDao().consultaRequisicaoLista(baseConhecimentoDTO2); baseConhecimentoDTO2.setListaRequisitos(listaRequisitos); listaProblema = (List<BaseConhecimentoDTO>) this.getDao().consultaProblemaLista(baseConhecimentoDTO2); baseConhecimentoDTO2.setListaProblema(listaProblema); listaMudanca = (List<BaseConhecimentoDTO>) this.getDao().consultaMudancaLista(baseConhecimentoDTO2); baseConhecimentoDTO2.setListaMudanca(listaMudanca); listaIC = (List<BaseConhecimentoDTO>) this.getDao().consultaItemConfiguracaoLista(baseConhecimentoDTO2); baseConhecimentoDTO2.setListaIC(listaIC); listaServico = (List<BaseConhecimentoDTO>) this.getDao().consultaServicoLista(baseConhecimentoDTO2); baseConhecimentoDTO2.setListaServico(listaServico); } } catch (final Exception e) { e.printStackTrace(); } return listaConsultaConhecimentoQuantitativoEmLista; } @Override public Collection findByServico(final SolicitacaoServicoDTO solicitacaoServicoDto) throws ServiceException, LogicException { try { return this.getDao().findByServico(solicitacaoServicoDto); } catch (final Exception e) { e.printStackTrace(); } return null; } @Override public Collection<BaseConhecimentoDTO> listarBaseConhecimentoErroConhecidoByPasta(final PastaDTO pasta) throws Exception { return this.getDao().listarBaseConhecimentoErroConhecidoByPasta(pasta); } @Override public Collection<BaseConhecimentoDTO> listarBaseConhecimentoFAQ() throws Exception { return this.getDao().listarBaseConhecimentoFAQ(); } @Override public Collection<BaseConhecimentoDTO> listarBasesConhecimentoPublicadas() throws Exception { return this.getDao().listarBasesConhecimentoPublicadas(); } @Override public String verificaIdScriptOrientacao(final HashMap mapFields) throws Exception { List<BaseConhecimentoDTO> listaBaseConhecimento = null; String id = mapFields.get("IDBASECONHECIMENTO").toString().trim(); if (id == null || id.equals("")) { // Campo SCRIPT de Orienta��o (Base de Conhecimento) n�o � obrigatorio, por isso passei um valor qualquer para n�o validar mais. id = "campoVazio"; return id; } if (UtilStrings.soContemNumeros(id)) { final Integer idBaseConhecimento = Integer.parseInt(id); listaBaseConhecimento = this.getDao().findByIdBaseConhecimento(idBaseConhecimento); } else { listaBaseConhecimento = this.getDao().findByBaseConhecimento(id); } if (listaBaseConhecimento != null && listaBaseConhecimento.size() > 0) { return String.valueOf(listaBaseConhecimento.get(0).getIdBaseConhecimento()); } else { return "0"; } } @Override public Page<BaseConhecimentoDTO> listarBaseConhecimentoPortal(final Pageable pageable, final boolean isTotalizacao) throws PersistenceException{ return this.getDao().listarBaseConhecimentoPortal(pageable, isTotalizacao, null); } @Override public Page<BaseConhecimentoDTO> listarBaseConhecimentoFAQPortal(final Pageable pageable, final boolean isTotalizacao) throws PersistenceException{ return this.getDao().listarBaseConhecimentoFAQPortal(pageable, isTotalizacao, null); } @Override public Page<BaseConhecimentoDTO> pesquisaBaseConhecimentoPortal(Pageable pageable, boolean isTotalizacao, String titulo) throws PersistenceException { return this.getDao().listarBaseConhecimentoPortal(pageable, isTotalizacao, titulo); } @Override public Page<BaseConhecimentoDTO> pesquisaBaseConhecimentoFAQPortal(Pageable pageable, boolean isTotalizacao, String titulo) throws PersistenceException { return this.getDao().listarBaseConhecimentoFAQPortal(pageable, isTotalizacao, titulo); } }