/** * */ package br.com.centralit.citcorpore.integracao; import java.sql.Date; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; 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.PastaDTO; import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO; import br.com.centralit.citcorpore.util.CITCorporeUtil; import br.com.citframework.dto.IDto; import br.com.citframework.excecao.PersistenceException; import br.com.citframework.integracao.Condition; import br.com.citframework.integracao.CrudDaoDefaultImpl; import br.com.citframework.integracao.Field; import br.com.citframework.integracao.Order; import br.com.citframework.integracao.core.DataBase; import br.com.citframework.integracao.core.Page; import br.com.citframework.integracao.core.PageImpl; import br.com.citframework.integracao.core.Pageable; import br.com.citframework.integracao.core.PagingQueryUtil; import br.com.citframework.util.Constantes; import br.com.citframework.util.SQLConfig; import br.com.citframework.util.UtilDatas; /** * @author valdoilo.damasceno * */ @SuppressWarnings({ "rawtypes", "unchecked" }) public class BaseConhecimentoDAO extends CrudDaoDefaultImpl { @Override public Collection<Field> getFields() { Collection<Field> listFields = new ArrayList<>(); listFields.add(new Field("IDBASECONHECIMENTO", "idBaseConhecimento", true, true, false, false)); listFields.add(new Field("IDPASTA", "idPasta", false, false, false, false)); listFields.add(new Field("DATAINICIO", "dataInicio", false, false, false, false)); listFields.add(new Field("DATAFIM", "dataFim", false, false, false, false)); listFields.add(new Field("TITULO", "titulo", false, false, false, false)); listFields.add(new Field("CONTEUDO", "conteudo", false, false, false, false)); listFields.add(new Field("STATUS", "status", false, false, false, false)); listFields.add(new Field("IDBASECONHECIMENTOPAI", "idBaseConhecimentoPai", false, false, false, false)); listFields.add(new Field("DATAEXPIRACAO", "dataExpiracao", false, false, false, false)); listFields.add(new Field("VERSAO", "versao", false, false, false, false)); listFields.add(new Field("IDUSUARIOAUTOR", "idUsuarioAutor", false, false, false, false)); listFields.add(new Field("IDUSUARIOAPROVADOR", "idUsuarioAprovador", false, false, false, false)); listFields.add(new Field("FONTEREFERENCIA", "fonteReferencia", false, false, false, false)); listFields.add(new Field("DATAPUBLICACAO", "dataPublicacao", false, false, false, false)); listFields.add(new Field("IDNOTIFICACAO", "idNotificacao", false, false, false, false)); listFields.add(new Field("JUSTIFICATIVAOBSERVACAO", "justificativaObservacao", false, false, false, false)); listFields.add(new Field("FAQ", "faq", false, false, false, false)); listFields.add(new Field("ORIGEM", "origem", false, false, false, false)); listFields.add(new Field("ARQUIVADO", "arquivado", false, false, false, false)); listFields.add(new Field("IDHISTORICOBASECONHECIMENTO", "idHistoricoBaseConhecimento", false, false, false, false)); listFields.add(new Field("PRIVACIDADE", "privacidade", false, false, false, false)); listFields.add(new Field("SITUACAO", "situacao", false, false, false, false)); listFields.add(new Field("gerenciamentoDisponibilidade", "gerenciamentoDisponibilidade", false, false, false, false)); listFields.add(new Field("direitoAutoral", "direitoAutoral", false, false, false, false)); listFields.add(new Field("legislacao", "legislacao", false, false, false, false)); listFields.add(new Field("CONTEUDOSEMFORMATACAO", "conteudoSemFormatacao", false, false, false, false)); listFields.add(new Field("ERROCONHECIDO", "erroConhecido", false, false, false, false)); listFields.add(new Field("idSolicitacaoServico", "idSolicitacaoServico", false, false, false, false)); return listFields; } @Override public String getTableName() { return "BASECONHECIMENTO"; } @Override public Collection list() throws PersistenceException { List ordenacao = new ArrayList(); ordenacao.add(new Order("idBaseConhecimento")); return super.list(ordenacao); } @Override public Class getBean() { return BaseConhecimentoDTO.class; } public BaseConhecimentoDAO() { super(Constantes.getValue("DATABASE_ALIAS"), null); } @Override public Collection find(IDto arg0) throws PersistenceException { return null; } /** * Buscar lista de Bases de Conhecimento por Servi�o * * @param baseConhecimentoDto * @return * @throws Exception */ public List<BaseConhecimentoDTO> findByServico(SolicitacaoServicoDTO solicitacaoServicoDto) throws PersistenceException { List parametro = new ArrayList(); List listRetorno = new ArrayList(); List list = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select baseconhecimento.idbaseconhecimento, baseconhecimento.titulo "); sql.append("from baseconhecimento inner join conhecimentosolicitacaoservico on baseconhecimento.idbaseconhecimento = conhecimentosolicitacaoservico.idbaseconhecimento "); sql.append("where conhecimentosolicitacaoservico.idsolicitacaoservico = ? "); parametro.add(solicitacaoServicoDto.getIdSolicitacaoServico()); list = this.execSQL(sql.toString(), parametro.toArray()); listRetorno.add("idbaseconhecimento"); listRetorno.add("titulo"); if (list != null && !list.isEmpty()) { return (List<BaseConhecimentoDTO>) this.listConvertion(getBean(), list, listRetorno); } else { return null; } } public BaseConhecimentoDTO findByIdSolicitacaoServico(SolicitacaoServicoDTO solicitacaoServicoDto) throws PersistenceException { List parametro = new ArrayList(); List listRetorno = new ArrayList(); List list = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select idbaseconhecimento, titulo "); sql.append("from baseconhecimento "); sql.append("where idsolicitacaoservico = ? "); parametro.add(solicitacaoServicoDto.getIdSolicitacaoServico()); list = this.execSQL(sql.toString(), parametro.toArray()); listRetorno.add("idBaseConhecimento"); listRetorno.add("titulo"); if (list != null && !list.isEmpty()) { return (BaseConhecimentoDTO) this.listConvertion(getBean(), list, listRetorno).get(0); } else { return null; } } /** * Lista Base de Conhecimento por Pasta. * * @param pasta * @return Collection<BaseConhecimentoDTO> * @throws Exception */ public Collection<BaseConhecimentoDTO> listarBaseConhecimentoByPasta(PastaDTO pasta) throws PersistenceException { List parametro = new ArrayList(); StringBuilder sql = new StringBuilder(); Date dataAtual = UtilDatas.getDataAtual(); sql.append("select baseconhecimento.idbaseconhecimento,baseconhecimento.idpasta,baseconhecimento.titulo, baseConhecimento.privacidade FROM pasta pasta "); sql.append("INNER JOIN baseconhecimento baseconhecimento ON pasta.idpasta = baseconhecimento.idpasta "); sql.append("where pasta.idpasta = ? AND baseconhecimento.dataFim is null and baseconhecimento.status = ? AND (baseconhecimento.arquivado IS NULL OR baseconhecimento.arquivado = ?) "); sql.append(" and dataexpiracao >= ? "); parametro.add(pasta.getId()); parametro.add("S"); parametro.add("N"); parametro.add(dataAtual); List lista = new ArrayList(); lista = this.execSQL(sql.toString(), parametro.toArray()); List listRetorno = new ArrayList(); listRetorno.add("idBaseConhecimento"); listRetorno.add("idPasta"); listRetorno.add("titulo"); listRetorno.add("privacidade"); List result = this.engine.listConvertion(getBean(), lista, listRetorno); return result; } public Collection<BaseConhecimentoDTO> listarBaseConhecimentoByIds(Integer[] ids) throws PersistenceException { List parametro = new ArrayList(); String sql = ""; Date dataAtual = UtilDatas.getDataAtual(); sql = "select baseconhecimento.idbaseconhecimento,baseconhecimento.idpasta,baseconhecimento.titulo, baseConhecimento.privacidade FROM pasta pasta "; sql += "INNER JOIN baseconhecimento baseconhecimento ON pasta.idpasta = baseconhecimento.idpasta "; sql += "where baseconhecimento.idbaseconhecimento in (#ID#) AND baseconhecimento.dataFim is null and baseconhecimento.status = ? AND (baseconhecimento.arquivado IS NULL OR baseconhecimento.arquivado = ?) "; sql += " and dataexpiracao >= ? "; String idsStr = "-9999"; if (ids != null) { for (int i = 0; i < ids.length; i++) { idsStr = idsStr + ","; idsStr = idsStr + ids[i]; } } sql = sql.replaceAll("#ID#", idsStr); parametro.add("S"); parametro.add("N"); parametro.add(dataAtual); List lista = new ArrayList(); lista = this.execSQL(sql, parametro.toArray()); List listRetorno = new ArrayList(); listRetorno.add("idBaseConhecimento"); listRetorno.add("idPasta"); listRetorno.add("titulo"); listRetorno.add("privacidade"); List result = this.engine.listConvertion(getBean(), lista, listRetorno); return result; } /** * Lista Base de Conhecimento por Pasta para relat�rio. * * @param pasta * @return Collection<BaseConhecimentoDTO> * @throws Exception */ public Collection<BaseConhecimentoDTO> listarBaseConhecimentoByPastaRelatorio(PastaDTO pasta) throws PersistenceException { List parametro = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("SELECT baseConhecimento.idBaseConhecimento,baseConhecimento.idpasta,baseConhecimento.titulo FROM pasta pasta "); sql.append("INNER JOIN baseConhecimento baseConhecimento ON pasta.idpasta = baseConhecimento.idpasta "); sql.append("where pasta.idpasta = ? AND baseconhecimento.dataFim is null "); parametro.add(pasta.getId()); List lista = new ArrayList(); lista = this.execSQL(sql.toString(), parametro.toArray()); List listRetorno = new ArrayList(); listRetorno.add("idBaseConhecimento"); listRetorno.add("idPasta"); listRetorno.add("titulo"); List result = this.engine.listConvertion(getBean(), lista, listRetorno); return result; } /** * Verifica se base conhecimento informada possui nova vers�o. * * @param baseConhecimento * @return * @throws Exception */ public boolean verificarSeBaseConhecimentoJaPossuiNovaVersao(BaseConhecimentoDTO baseConhecimento) throws PersistenceException { List condicao = new ArrayList(); List ordenacao = new ArrayList(); condicao.add(new Condition("titulo", "like", StringUtils.remove(baseConhecimento.getTitulo(), " - v" + baseConhecimento.getVersao()) + " - %")); ordenacao.add(new Order("titulo")); Collection<BaseConhecimentoDTO> list = this.findByCondition(condicao, ordenacao); if (list != null && !list.isEmpty()) { for (BaseConhecimentoDTO base : list) { if (base.getDataFim() == null) { if (baseConhecimento.getVersao() == null || baseConhecimento.getVersao().trim().equalsIgnoreCase("")) { baseConhecimento.setVersao("1.0"); } if (base.getVersao() == null || base.getVersao().trim().equalsIgnoreCase("")) { base.setVersao("1.0"); } if (Double.parseDouble(baseConhecimento.getVersao()) < Double.parseDouble(base.getVersao())) { return true; } } } } return false; } /** * M�todo para verificar se j� existe uma base de conhecimento com o mesmo nome * * @author rodrigo.oliveira * @param BaseConhecimentoDTO * @return se caso existir retorna true */ public boolean verificaSeBaseConhecimentoExiste(BaseConhecimentoDTO baseConhecimentoDTO) throws PersistenceException { List parametro = new ArrayList(); List list = new ArrayList(); String sql = "SELECT idbaseconhecimento FROM " + getTableName() + " WHERE titulo = ? AND dataFim IS NULL "; if (baseConhecimentoDTO.getIdBaseConhecimento() != null) { sql += " AND idbaseconhecimento <> " + baseConhecimentoDTO.getIdBaseConhecimento(); } parametro.add(baseConhecimentoDTO.getTitulo()); list = this.execSQL(sql, parametro.toArray()); if (list != null && !list.isEmpty()) { return true; } else { return false; } } /** * Busca comentarios por nota maior... Funcionalidade #368 * * @param baseconhecimento * @param * @return * @throws Exception */ public List<BaseConhecimentoDTO> validaNota(BaseConhecimentoDTO baseconhecimento) throws PersistenceException { StringBuilder sql = new StringBuilder(); List parametros = new ArrayList(); List fields = new ArrayList(); fields.add("termoPesquisaNota"); sql.append("SELECT coment.nota AS termoPesquisaNota FROM " + getTableName() + " baseConhec "); sql.append("JOIN comentarios coment ON coment.idbaseconhecimento = baseConhec.idbaseconhecimento WHERE nota >= ? AND coment.idbaseconhecimento = ? "); parametros.add(baseconhecimento.getTermoPesquisaNota()); parametros.add(baseconhecimento.getIdBaseConhecimento()); return this.engine.listConvertion(this.getBean(), execSQL(sql.toString(), parametros.toArray()), fields); } public Collection<BaseConhecimentoDTO> listaBaseConhecimento(BaseConhecimentoDTO baseConhecimento) throws PersistenceException { StringBuilder sql = new StringBuilder(); List parametro = new ArrayList(); List listaRetornor = new ArrayList(); List list = new ArrayList(); sql.append("select distinct baseconhecimento.idbaseconhecimento,baseconhecimento.titulo,baseconhecimento.versao,baseconhecimento.datainicio, "); if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) { sql.append(" cast(baseconhecimento.conteudo as varchar(4000)) conteudo, "); } else if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) { sql.append(" cast(baseconhecimento.conteudo as varchar2(4000)) conteudo, "); } else { sql.append(" baseconhecimento.conteudo, "); } sql.append("baseconhecimento.nome,baseconhecimento.dataexpiracao,baseconhecimento.status,baseconhecimento.datapublicacao, "); if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.SQLSERVER)) { sql.append(" cast(baseconhecimento.conteudosemformatacao as varchar(4000)) conteudosemformatacao "); } else if (CITCorporeUtil.SGBD_PRINCIPAL.toUpperCase().equals(SQLConfig.ORACLE)) { sql.append(" cast(baseconhecimento.conteudosemformatacao as varchar2(4000)) conteudosemformatacao "); } else { sql.append(" baseconhecimento.conteudosemformatacao "); } if (baseConhecimento.getUltimoAcesso() != null && baseConhecimento.getUltimoAcesso().equals("S")) { sql.append(",ultimoacesso.datahoraacesso"); } sql.append(" from (select baseconhecimento.idbaseconhecimento,baseconhecimento.titulo,baseconhecimento.versao,baseconhecimento.datainicio,baseconhecimento.conteudo, pasta.nome, pasta.idpasta, "); sql.append(" baseconhecimento.dataexpiracao,baseconhecimento.status,baseconhecimento.datapublicacao,baseconhecimento.conteudosemformatacao, baseconhecimento.datafim "); sql.append("from baseconhecimento,pasta where pasta.idpasta = baseconhecimento.idpasta) baseconhecimento "); if (baseConhecimento.getUltimoAcesso() != null && baseConhecimento.getUltimoAcesso().equals("S")) { sql.append("inner join (select idbaseconhecimento, max(datahoraacesso) as datahoraacesso from contadoracesso "); sql.append("group by idbaseconhecimento) ultimoacesso on baseconhecimento.idbaseconhecimento = ultimoacesso.idbaseconhecimento "); } sql.append(" left join (select distinct idbaseconhecimento from comentarios) comentarios on baseconhecimento.idbaseconhecimento = comentarios.idbaseconhecimento "); sql.append(" left join contadoracesso contadoracesso ON contadoracesso.idbaseconhecimento = baseconhecimento.idbaseconhecimento "); sql.append("where baseconhecimento.datafim is null "); if (baseConhecimento.getIdPasta() != null) { sql.append(" and baseconhecimento.idpasta = ? "); parametro.add(baseConhecimento.getIdPasta()); } if (baseConhecimento.getIdBaseConhecimento() != null) { sql.append(" and baseconhecimento.idbaseconhecimento = ? "); parametro.add(baseConhecimento.getIdBaseConhecimento()); } if (baseConhecimento.getTermoPesquisaNota() != null && baseConhecimento.getTermoPesquisaNota().equalsIgnoreCase("S")) { sql.append(" and comentarios.idbaseconhecimento is null "); } if (baseConhecimento.getStatus() != null && !baseConhecimento.getStatus().equalsIgnoreCase("")) { sql.append(" and UPPER(baseconhecimento.status) = UPPER(?)"); parametro.add(baseConhecimento.getStatus()); } if (baseConhecimento.getDataInicio() != null && baseConhecimento.getDataFim() != null) { sql.append(" and datainicio BETWEEN ? and ? "); parametro.add(baseConhecimento.getDataInicio()); parametro.add(baseConhecimento.getDataFim()); } if (baseConhecimento.getDataInicioPublicacao() != null && baseConhecimento.getDataFimPublicacao() != null) { sql.append(" and baseconhecimento.datapublicacao BETWEEN ? and ? "); parametro.add(baseConhecimento.getDataInicioPublicacao()); parametro.add(baseConhecimento.getDataFimPublicacao()); } if (baseConhecimento.getDataInicioExpiracao() != null && baseConhecimento.getDataFimExpiracao() != null) { sql.append(" and baseconhecimento.dataexpiracao BETWEEN ? and ? "); parametro.add(baseConhecimento.getDataInicioExpiracao()); parametro.add(baseConhecimento.getDataFimExpiracao()); } if (baseConhecimento.getDataInicioAcesso() != null && baseConhecimento.getDataFimAcesso() != null) { sql.append(" and contadoracesso.datahoraacesso BETWEEN ? and ? "); parametro.add(baseConhecimento.getDataInicioAcesso()); parametro.add(baseConhecimento.getDataFimAcesso()); } if (baseConhecimento.getUltimoAcesso() != null && baseConhecimento.getUltimoAcesso().equals("S")) { sql.append("order by ultimoacesso.datahoraacesso desc"); } list = this.execSQL(sql.toString(), parametro.toArray()); listaRetornor.add("idBaseConhecimento"); listaRetornor.add("titulo"); listaRetornor.add("versao"); listaRetornor.add("dataInicio"); listaRetornor.add("conteudo"); listaRetornor.add("nomePasta"); listaRetornor.add("dataExpiracao"); listaRetornor.add("status"); listaRetornor.add("dataPublicacao"); listaRetornor.add("conteudoSemFormatacao"); if (baseConhecimento.getUltimoAcesso() != null && baseConhecimento.getUltimoAcesso().equals("S")) { listaRetornor.add("dataHoraAcesso"); } if (list != null && !list.isEmpty()) { Collection<BaseConhecimentoDTO> listaBaseConhecimento = this.listConvertion(BaseConhecimentoDTO.class, list, listaRetornor); return listaBaseConhecimento; } return null; } /** * Verifica se base conhecimento informada possui nova vers�o. * * @param baseConhecimento * @return * @throws Exception */ public Collection<BaseConhecimentoDTO> listaBaseConhecimentoUltimasVersoes(BaseConhecimentoDTO baseConhecimento) throws PersistenceException { StringBuilder sql = new StringBuilder(); List parametro = new ArrayList(); List listaRetornor = new ArrayList(); List list = new ArrayList(); sql.append("select baseconhecimento.conteudosemformatacao,baseconhecimento.idbaseconhecimento,baseconhecimento.titulo,baseconhecimento.versao,baseconhecimento.datainicio,baseconhecimento.conteudo,"); sql.append("pasta.nome,baseconhecimento.dataexpiracao,CASE WHEN baseconhecimento.status ='S' THEN 'Publicado' WHEN baseconhecimento.status ='N' THEN 'N�o Publicado' ELSE baseconhecimento.status END as status, baseconhecimento.idusuarioautor, baseconhecimento.idusuarioaprovador,baseconhecimento.datapublicacao "); if (baseConhecimento.getUltimoAcesso() != null && baseConhecimento.getUltimoAcesso().equals("S")) { sql.append(",contadoracesso.datahoraacesso "); } sql.append(" from baseconhecimento "); sql.append("inner join "); sql.append("(select max(idbaseconhecimento) as idbaseconhecimento, max(versao) as ver, (case when versao = '1.0' "); if (CITCorporeUtil.SGBD_PRINCIPAL.trim().equalsIgnoreCase(SQLConfig.ORACLE)) { sql.append("then titulo else substr(titulo,1, length(titulo) - 7) end) as cas from baseconhecimento where datafim is null and status = 'S' "); sql.append("group by case when versao = '1.0' then titulo else substr(titulo,1, length(titulo) - 7) end) as aux "); } else if (CITCorporeUtil.SGBD_PRINCIPAL.trim().equalsIgnoreCase(SQLConfig.SQLSERVER)) { sql.append("then titulo else substring(titulo,1, len(titulo) - 7) end) as cas from baseconhecimento where datafim is null and status = 'S' "); sql.append("group by case when versao = '1.0' then titulo else substring(titulo,1, len(titulo) - 7) end) as aux "); } else { sql.append("then titulo else substring(titulo,1, length(titulo) - 7) end) as cas from baseconhecimento where datafim is null and status = 'S' "); sql.append("group by case when versao = '1.0' then titulo else substring(titulo,1, length(titulo) - 7) end) as aux "); } sql.append("on baseconhecimento.idbaseconhecimento = aux.idbaseconhecimento "); if (baseConhecimento.getUltimoAcesso() != null && baseConhecimento.getUltimoAcesso().equals("S")) { sql.append("inner join (select idbaseconhecimento, max(datahoraacesso) as datahoraacesso from contadoracesso "); sql.append("group by idbaseconhecimento) contadoracesso on baseconhecimento.idbaseconhecimento = contadoracesso.idbaseconhecimento "); } sql.append("inner join pasta on pasta.idpasta = baseconhecimento.idpasta "); sql.append("left join comentarios on comentarios.idbaseconhecimento = baseconhecimento.idbaseconhecimento "); sql.append("where baseconhecimento.datafim is null "); if (baseConhecimento.getIdPasta() != null) { sql.append(" and baseconhecimento.idpasta = ? "); parametro.add(baseConhecimento.getIdPasta()); } if (baseConhecimento.getIdBaseConhecimento() != null) { sql.append(" and baseconhecimento.idbaseconhecimento = ? "); parametro.add(baseConhecimento.getIdBaseConhecimento()); } if (baseConhecimento.getTermoPesquisaNota() != null && baseConhecimento.getTermoPesquisaNota().equalsIgnoreCase("S")) { sql.append(" and idcomentario is null "); } if (baseConhecimento.getStatus() != null && !baseConhecimento.getStatus().equalsIgnoreCase("")) { sql.append(" and baseconhecimento.status = ?"); parametro.add(baseConhecimento.getStatus()); } if (baseConhecimento.getDataExpiracao() != null) { sql.append(" and baseconhecimento.dataexpiracao = ?"); parametro.add(baseConhecimento.getDataExpiracao()); } if (baseConhecimento.getDataInicio() != null && baseConhecimento.getDataFim() != null) { sql.append(" and baseconhecimento.datainicio BETWEEN ? and ? "); parametro.add(baseConhecimento.getDataInicio()); parametro.add(baseConhecimento.getDataFim()); } if (baseConhecimento.getDataInicioPublicacao() != null && baseConhecimento.getDataFimPublicacao() != null) { sql.append(" and baseconhecimento.datapublicacao BETWEEN ? and ? "); parametro.add(baseConhecimento.getDataInicioPublicacao()); parametro.add(baseConhecimento.getDataFimPublicacao()); } if (baseConhecimento.getDataInicioExpiracao() != null && baseConhecimento.getDataFimExpiracao() != null) { sql.append(" and baseconhecimento.dataexpiracao BETWEEN ? and ? "); parametro.add(baseConhecimento.getDataInicioExpiracao()); parametro.add(baseConhecimento.getDataFimExpiracao()); } if (baseConhecimento.getUltimoAcesso() != null && baseConhecimento.getUltimoAcesso().equals("S")) { sql.append("order by contadoracesso.datahoraacesso desc"); } list = this.execSQL(sql.toString(), parametro.toArray()); listaRetornor.add("conteudoSemFormatacao"); listaRetornor.add("idBaseConhecimento"); listaRetornor.add("titulo"); listaRetornor.add("versao"); listaRetornor.add("dataInicio"); listaRetornor.add("conteudo"); listaRetornor.add("nomePasta"); listaRetornor.add("dataExpiracao"); listaRetornor.add("status"); listaRetornor.add("idUsuarioAutor"); listaRetornor.add("idUsuarioAprovador"); listaRetornor.add("dataPublicacao"); if (baseConhecimento.getUltimoAcesso() != null && baseConhecimento.getUltimoAcesso().equals("S")) { listaRetornor.add("dataHoraAcesso"); } if (list != null && !list.isEmpty()) { Collection<BaseConhecimentoDTO> listaBaseConhecimentoUltimaVersao = this.listConvertion(BaseConhecimentoDTO.class, list, listaRetornor); return listaBaseConhecimentoUltimaVersao; } return null; } /** * Lista Base de Conhecimento do Tipo FAQ da pasta informada. * * @param pasta * @return Collection<BaseConhecimentoDTO> * @throws Exception * @author Thays */ public Collection<BaseConhecimentoDTO> listarBaseConhecimentoFAQByPasta(PastaDTO pasta) throws PersistenceException { List parametro = new ArrayList(); StringBuilder sql = new StringBuilder(); Date dataAtual = UtilDatas.getDataAtual(); sql.append("SELECT baseConhecimento.idBaseConhecimento,baseConhecimento.idpasta,baseConhecimento.titulo, baseConhecimento.conteudo FROM PASTA pasta "); sql.append("INNER JOIN BASECONHECIMENTO baseConhecimento ON pasta.idpasta = baseConhecimento.idpasta "); sql.append("where pasta.idpasta = ? AND baseconhecimento.dataFim is null and baseconhecimento.status = ? AND baseconhecimento.faq = ? AND (baseconhecimento.arquivado IS NULL OR baseconhecimento.arquivado = ?) "); sql.append(" and dataexpiracao >= ? "); parametro.add(pasta.getId()); parametro.add("S"); parametro.add("S"); parametro.add("N"); parametro.add(dataAtual); List lista = new ArrayList(); lista = this.execSQL(sql.toString(), parametro.toArray()); List listRetorno = new ArrayList(); listRetorno.add("idBaseConhecimento"); listRetorno.add("idPasta"); listRetorno.add("titulo"); listRetorno.add("conteudo"); List result = this.engine.listConvertion(getBean(), lista, listRetorno); return result; } /** * Lista Base de Conhecimento do Tipo Erro Conhecido da pasta informada. * * @param pasta * @return Collection<BaseConhecimentoDTO> * @throws Exception * @author Thays */ public Collection<BaseConhecimentoDTO> listarBaseConhecimentoErroConhecidoByPasta(PastaDTO pasta) throws PersistenceException { List parametro = new ArrayList(); StringBuilder sql = new StringBuilder(); Date dataAtual = UtilDatas.getDataAtual(); sql.append("SELECT baseConhecimento.idBaseConhecimento,baseConhecimento.idpasta,baseConhecimento.titulo, baseConhecimento.conteudo FROM PASTA pasta "); sql.append("INNER JOIN BASECONHECIMENTO baseConhecimento ON pasta.idpasta = baseConhecimento.idpasta "); sql.append("where pasta.idpasta = ? AND baseconhecimento.dataFim is null and baseconhecimento.status = ? AND baseconhecimento.erroconhecido = ? AND (baseconhecimento.arquivado IS NULL OR baseconhecimento.arquivado = ?) "); sql.append(" and dataexpiracao >= ? "); parametro.add(pasta.getId()); parametro.add("S"); parametro.add("S"); parametro.add("N"); parametro.add(dataAtual); List lista = new ArrayList(); lista = this.execSQL(sql.toString(), parametro.toArray()); List listRetorno = new ArrayList(); listRetorno.add("idBaseConhecimento"); listRetorno.add("idPasta"); listRetorno.add("titulo"); listRetorno.add("conteudo"); List result = this.engine.listConvertion(getBean(), lista, listRetorno); return result; } /** * Retorna uma base conhecimento de acordo com os parametros passado. * * @param baseConhecimento * @return BaseConhecimentoDTO * @throws Exception * @author Thays.araujo */ public BaseConhecimentoDTO getBaseConhecimento(BaseConhecimentoDTO baseConhecimento) throws PersistenceException { BaseConhecimentoDTO baseConhecimentoDto = new BaseConhecimentoDTO(); List parametro = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select idbaseconhecimento,idpasta,titulo from baseconhecimento where datafim is null AND baseconhecimento.status = ? AND (baseconhecimento.arquivado IS NULL OR baseconhecimento.arquivado = ?) "); parametro.add("S"); parametro.add("N"); if (baseConhecimento.getIdBaseConhecimento() != null) { sql.append("AND baseconhecimento.idbaseconhecimento = ? "); parametro.add(baseConhecimento.getIdBaseConhecimento()); } if (baseConhecimento.getIdUsuarioAutorPesquisa() != null) { sql.append("AND baseconhecimento.idusuarioautor = ? "); parametro.add(baseConhecimento.getIdUsuarioAutorPesquisa()); } if (baseConhecimento.getIdUsuarioAprovadorPesquisa() != null) { sql.append("AND baseconhecimento.idusuarioaprovador = ? "); parametro.add(baseConhecimento.getIdUsuarioAprovadorPesquisa()); } if (baseConhecimento.getDataInicioPesquisa() != null) { sql.append("AND baseconhecimento.datainicio = ? "); parametro.add(baseConhecimento.getDataInicioPesquisa()); } if (baseConhecimento.getDataPublicacaoPesquisa() != null) { sql.append("AND baseconhecimento.datapublicacao = ? "); parametro.add(baseConhecimento.getDataPublicacaoPesquisa()); } List lista = new ArrayList(); lista = this.execSQL(sql.toString(), parametro.toArray()); List listRetorno = new ArrayList(); listRetorno.add("idBaseConhecimento"); listRetorno.add("idPasta"); listRetorno.add("titulo"); if (lista != null && !lista.isEmpty()) { List<BaseConhecimentoDTO> listaBaseConhecimento = this.listConvertion(BaseConhecimentoDTO.class, lista, listRetorno); return listaBaseConhecimento.get(0); } return baseConhecimentoDto; } /** * Retorna uma lista base conhecimento de acordo com os parametros passado. * * @param baseConhecimento * @return BaseConhecimentoDTO * @throws Exception * @author Thays.araujo */ public Collection<BaseConhecimentoDTO> listPesquisaBaseConhecimento(BaseConhecimentoDTO baseConhecimento) throws PersistenceException { List parametro = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select idbaseconhecimento,idpasta,titulo from baseconhecimento where datafim is null AND baseconhecimento.status = ? AND (baseconhecimento.arquivado IS NULL OR baseconhecimento.arquivado = ?) "); parametro.add("S"); parametro.add("N"); if (baseConhecimento.getIdUsuarioAutorPesquisa() != null) { sql.append("AND baseconhecimento.idusuarioautor = ? "); parametro.add(baseConhecimento.getIdUsuarioAutorPesquisa()); } if (baseConhecimento.getIdUsuarioAprovadorPesquisa() != null) { sql.append("AND baseconhecimento.idusuarioaprovador = ? "); parametro.add(baseConhecimento.getIdUsuarioAprovadorPesquisa()); } if (baseConhecimento.getDataInicioPesquisa() != null) { sql.append("AND baseconhecimento.datainicio = ? "); parametro.add(baseConhecimento.getDataInicioPesquisa()); } if (baseConhecimento.getDataPublicacaoPesquisa() != null) { sql.append("AND baseconhecimento.datapublicacao = ? "); parametro.add(baseConhecimento.getDataPublicacaoPesquisa()); } List lista = new ArrayList(); lista = this.execSQL(sql.toString(), parametro.toArray()); List listRetorno = new ArrayList(); listRetorno.add("idBaseConhecimento"); listRetorno.add("idPasta"); listRetorno.add("titulo"); if (lista != null && !lista.isEmpty()) { List<BaseConhecimentoDTO> listaBaseConhecimento = this.listConvertion(BaseConhecimentoDTO.class, lista, listRetorno); return listaBaseConhecimento; } return null; } @Override public void updateNotNull(IDto obj) throws PersistenceException { super.updateNotNull(obj); } /** * Arquiva Conhecimento da Base de Conhecimentos. * * @param baseConhecimentoDto * @author Vadoilo Damasceno * @throws Exception */ public void arquivarConhecimento(BaseConhecimentoDTO baseConhecimentoDto) throws PersistenceException { this.updateNotNull(baseConhecimentoDto); } /** * Restaura Conhecimento Arquivado da Base de Conhecimentos. * * @param baseConhecimentoDto * @author Vadoilo Damasceno * @throws Exception */ public void restaurarConhecimento(BaseConhecimentoDTO baseConhecimentoDto) throws PersistenceException { this.updateNotNull(baseConhecimentoDto); } /** * Retorna lista de vers�es anteriores da Base de Conhecimento informada. * * @param baseConhecimento * @return Collection<BaseConhecimentoDTO> * @throws Exception */ public Collection<BaseConhecimentoDTO> obterHistoricoDeVersoes(BaseConhecimentoDTO baseConhecimento) throws PersistenceException { List parametro = new ArrayList(); List lista = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select idbaseConhecimento,titulo,versao from baseconhecimento "); if (CITCorporeUtil.SGBD_PRINCIPAL.trim().equalsIgnoreCase("ORACLE")) { sql.append(" where (case when versao = '1.0' then titulo else substr(titulo,1, length(titulo) - 7) end ) "); sql.append(" in "); sql.append(" (select case when versao = '1.0' then titulo else substr(titulo,1, length(titulo) - 7) end from baseconhecimento where datafim is null and status = ? "); // geber.costa // verifica se a base do banco � sqlserver, pois no caso dele ao inves de usar o length usa-se len } else if (CITCorporeUtil.SGBD_PRINCIPAL.trim().equalsIgnoreCase("SQLSERVER")) { { sql.append(" where status = 'S' and (case when versao = '1.0' then titulo else substring(titulo,1, len(titulo) - 7) end ) "); sql.append(" in "); sql.append(" (select case when versao = '1.0' then titulo else substring(titulo,1, len(titulo) - 7) end from baseconhecimento where datafim is null and status = ? "); } } else { sql.append(" where status = 'S' and (case when versao = '1.0' then titulo else substring(titulo,1, length(titulo) - 7) end ) "); sql.append(" in "); sql.append(" (select case when versao = '1.0' then titulo else substring(titulo,1, length(titulo) - 7) end from baseconhecimento where datafim is null and status = ? "); } sql.append(" and titulo = ?) and idbaseconhecimento <> ?"); parametro.add("S"); parametro.add(baseConhecimento.getTitulo()); parametro.add(baseConhecimento.getIdBaseConhecimento()); lista = this.execSQL(sql.toString(), parametro.toArray()); List listRetorno = new ArrayList(); listRetorno.add("idBaseConhecimento"); listRetorno.add("titulo"); listRetorno.add("versao"); if (lista != null && !lista.isEmpty()) { List<BaseConhecimentoDTO> listBaseConhecimentoVersoesAnteriores = this.listConvertion(BaseConhecimentoDTO.class, lista, listRetorno); return listBaseConhecimentoVersoesAnteriores; } return null; } public Collection<BaseConhecimentoDTO> listaBaseConhecimentoTotal(BaseConhecimentoDTO baseConhecimentoDTO) throws PersistenceException { List ordenacao = new ArrayList(); ordenacao.add(new Order("idBaseConhecimento")); return super.list(ordenacao); } public Collection<BaseConhecimentoDTO> consultaConhecimentoPorAutor(BaseConhecimentoDTO baseConhecimentoDTO) throws PersistenceException { List parametro = new ArrayList(); List list = new ArrayList(); List listRetornor = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select u.nome, count(b.titulo) ").append("from usuario u ").append("inner join baseconhecimento b on u.idusuario = b.idusuarioautor ") .append("where b.datainicio between ? and ? and b.datafim is null and b.arquivado = ? ").append("group by u.nome ").append("order by u.nome "); parametro.add(baseConhecimentoDTO.getDataInicio()); parametro.add(baseConhecimentoDTO.getDataFim()); parametro.add("N"); list = this.execSQL(sql.toString(), parametro.toArray()); listRetornor.add("nomeUsuario"); listRetornor.add("qtdConhecimentoPorUsuario"); if (list != null) { return this.listConvertion(BaseConhecimentoDTO.class, list, listRetornor); } else { return new ArrayList(); } } public Collection<BaseConhecimentoDTO> consultaConhecimentoPorAprovador(BaseConhecimentoDTO baseConhecimentoDTO) throws PersistenceException { List parametro = new ArrayList(); List list = new ArrayList(); List listRetornor = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select u.nome, count(b.titulo) ").append("from usuario u ").append("inner join baseconhecimento b on u.idusuario = b.idusuarioaprovador ") .append("where b.datainicio between ? and ? and b.datafim is null and b.arquivado = ? ").append("group by u.nome ").append("order by u.nome "); parametro.add(baseConhecimentoDTO.getDataInicio()); parametro.add(baseConhecimentoDTO.getDataFim()); parametro.add("N"); list = this.execSQL(sql.toString(), parametro.toArray()); listRetornor.add("nomeAprovador"); listRetornor.add("qtdConhecimentoPorAprovador"); if (list != null) { return this.listConvertion(BaseConhecimentoDTO.class, list, listRetornor); } else { return new ArrayList(); } } public Collection<BaseConhecimentoDTO> consultaConhecimentosPublicadosPorOrigem(BaseConhecimentoDTO baseConhecimentoDTO) throws PersistenceException { List parametro = new ArrayList(); List list = new ArrayList(); List listRetornor = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select origem, count(*) ").append("from " + this.getTableName() + " ").append("where datapublicacao between ? and ? and datafim is null and arquivado = ? ") .append("group by origem ").append("order by origem "); parametro.add(baseConhecimentoDTO.getDataInicio()); parametro.add(baseConhecimentoDTO.getDataFim()); parametro.add("N"); list = this.execSQL(sql.toString(), parametro.toArray()); listRetornor.add("origem"); listRetornor.add("qtdConhecimentoPublicadoPorOrigem"); if (list != null) { return this.listConvertion(BaseConhecimentoDTO.class, list, listRetornor); } else { return new ArrayList(); } } public Collection<BaseConhecimentoDTO> consultaConhecimentosNaoPublicadosPorOrigem(BaseConhecimentoDTO baseConhecimentoDTO) throws PersistenceException { List parametro = new ArrayList(); List list = new ArrayList(); List listRetornor = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select origem, count(*) ").append("from " + this.getTableName() + " ").append("where datainicio between ? and ? and datafim is null and arquivado = ? and datapublicacao is null ") .append("group by origem ").append("order by origem "); parametro.add(baseConhecimentoDTO.getDataInicio()); parametro.add(baseConhecimentoDTO.getDataFim()); parametro.add("N"); list = this.execSQL(sql.toString(), parametro.toArray()); listRetornor.add("origem"); listRetornor.add("qtdConhecimentoNaoPublicadoPorOrigem"); if (list != null) { return this.listConvertion(BaseConhecimentoDTO.class, list, listRetornor); } else { return new ArrayList(); } } public Collection<BaseConhecimentoDTO> consultaConhecimentoQuantitativoEmLista(BaseConhecimentoDTO baseConhecimentoDTO) throws PersistenceException { List parametro = new ArrayList(); List list = new ArrayList(); List listRetornor = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select b.idbaseconhecimento, b.titulo ").append("from " + this.getTableName() + " b ").append("where b.datainicio between ? and ? and b.datafim is null and b.arquivado = ? ") .append("order by b.titulo "); parametro.add(baseConhecimentoDTO.getDataInicio()); parametro.add(baseConhecimentoDTO.getDataFim()); parametro.add("N"); list = this.execSQL(sql.toString(), parametro.toArray()); listRetornor.add("idBaseConhecimento"); listRetornor.add("titulo"); if (list != null) { return this.listConvertion(BaseConhecimentoDTO.class, list, listRetornor); } else { return new ArrayList(); } } public Collection<BaseConhecimentoDTO> consultaIncidenteLista(BaseConhecimentoDTO baseConhecimentoDTO) throws PersistenceException { List parametro = new ArrayList(); List list = new ArrayList(); List listRetornor = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select b.idbaseconhecimento, b.titulo, ss.idsolicitacaoservico ").append("from " + this.getTableName() + " b ").append("inner join conhecimentosolicitacaoservico css ") .append("on css.idbaseconhecimento = b.idbaseconhecimento ").append("INNER JOIN solicitacaoservico ss ").append("ON ss.idsolicitacaoservico = css.idsolicitacaoservico ") .append("INNER JOIN tipodemandaservico tds ").append("ON tds.idtipodemandaservico = ss.idtipodemandaservico ").append("AND tds.classificacao = 'I' ") .append("where b.idbaseconhecimento = ? ").append("order by b.idbaseconhecimento "); parametro.add(baseConhecimentoDTO.getIdBaseConhecimento()); list = this.execSQL(sql.toString(), parametro.toArray()); listRetornor.add("idBaseConhecimento"); listRetornor.add("titulo"); listRetornor.add("idSolicitacaoServicoIncidente"); if (list != null) { return this.listConvertion(BaseConhecimentoDTO.class, list, listRetornor); } else { return new ArrayList(); } } public Collection<BaseConhecimentoDTO> consultaRequisicaoLista(BaseConhecimentoDTO baseConhecimentoDTO) throws PersistenceException { List parametro = new ArrayList(); List list = new ArrayList(); List listRetornor = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select b.idbaseconhecimento, b.titulo, ss.idsolicitacaoservico ").append("from " + this.getTableName() + " b ").append("inner join conhecimentosolicitacaoservico css ") .append("on css.idbaseconhecimento = b.idbaseconhecimento ").append("INNER JOIN solicitacaoservico ss ").append("ON ss.idsolicitacaoservico = css.idsolicitacaoservico ") .append("INNER JOIN tipodemandaservico tds ").append("ON tds.idtipodemandaservico = ss.idtipodemandaservico ").append("AND tds.classificacao = 'R' ") .append("where b.idbaseconhecimento = ? ").append("order by b.idbaseconhecimento; "); parametro.add(baseConhecimentoDTO.getIdBaseConhecimento()); list = this.execSQL(sql.toString(), parametro.toArray()); listRetornor.add("idBaseConhecimento"); listRetornor.add("titulo"); listRetornor.add("idSolicitacaoServicoIncidente"); if (list != null) { return this.listConvertion(BaseConhecimentoDTO.class, list, listRetornor); } else { return new ArrayList(); } } public Collection<BaseConhecimentoDTO> consultaProblemaLista(BaseConhecimentoDTO baseConhecimentoDTO) throws PersistenceException { List parametro = new ArrayList(); List list = new ArrayList(); List listRetornor = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select b.idbaseconhecimento, b.titulo, p.idproblema ").append("from " + this.getTableName() + " b ").append("inner join conhecimentoproblema cp ") .append("on cp.idbaseconhecimento = b.idbaseconhecimento ").append("inner join problema p ").append("on p.idproblema = cp.idproblema ").append("where b.idbaseconhecimento = ? ") .append("order by b.idbaseconhecimento; "); parametro.add(baseConhecimentoDTO.getIdBaseConhecimento()); list = this.execSQL(sql.toString(), parametro.toArray()); listRetornor.add("idBaseConhecimento"); listRetornor.add("titulo"); listRetornor.add("idProblema"); if (list != null) { return this.listConvertion(BaseConhecimentoDTO.class, list, listRetornor); } else { return new ArrayList(); } } public Collection<BaseConhecimentoDTO> consultaMudancaLista(BaseConhecimentoDTO baseConhecimentoDTO) throws PersistenceException { List parametro = new ArrayList(); List list = new ArrayList(); List listRetornor = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select b.idbaseconhecimento, b.titulo, rm.idrequisicaomudanca ").append("from " + this.getTableName() + " b ").append("inner join conhecimentomudanca cm ") .append("on cm.idbaseconhecimento = b.idbaseconhecimento ").append("inner join requisicaomudanca rm ").append("on rm.idrequisicaomudanca = cm.idbaseconhecimento ") .append("where b.idbaseconhecimento = ? ").append("order by b.idbaseconhecimento; "); parametro.add(baseConhecimentoDTO.getIdBaseConhecimento()); list = this.execSQL(sql.toString(), parametro.toArray()); listRetornor.add("idBaseConhecimento"); listRetornor.add("titulo"); listRetornor.add("idRequisicaoMudanca"); if (list != null) { return this.listConvertion(BaseConhecimentoDTO.class, list, listRetornor); } else { return new ArrayList(); } } public Collection<BaseConhecimentoDTO> consultaItemConfiguracaoLista(BaseConhecimentoDTO baseConhecimentoDTO) throws PersistenceException { List parametro = new ArrayList(); List list = new ArrayList(); List listRetornor = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select b.idbaseconhecimento, b.titulo, ic.identificacao ").append("from " + this.getTableName() + " b ").append("inner join conhecimentoic cic ") .append("on cic.idbaseconhecimento = b.idbaseconhecimento ").append("inner join itemconfiguracao ic ").append("on ic.iditemconfiguracao = cic.iditemconfiguracao ") .append("where b.idbaseconhecimento = ? ").append("order by b.idbaseconhecimento; "); parametro.add(baseConhecimentoDTO.getIdBaseConhecimento()); list = this.execSQL(sql.toString(), parametro.toArray()); listRetornor.add("idBaseConhecimento"); listRetornor.add("titulo"); listRetornor.add("identificacao"); if (list != null) { return this.listConvertion(BaseConhecimentoDTO.class, list, listRetornor); } else { return new ArrayList(); } } public Collection<BaseConhecimentoDTO> consultaServicoLista(BaseConhecimentoDTO baseConhecimentoDTO) throws PersistenceException { List parametro = new ArrayList(); List list = new ArrayList(); List listRetornor = new ArrayList(); StringBuilder sql = new StringBuilder(); sql.append("select b.idbaseconhecimento, b.titulo, ").append("case ").append("when s.idbaseconhecimento is null ").append("then 'n' ").append("else ").append("'s' ").append("end ") .append("from " + this.getTableName() + " b ").append("inner join servico s ").append("on b.idbaseconhecimento = s.idbaseconhecimento ").append("where b.idbaseconhecimento = ? ") .append("order by b.idbaseconhecimento; "); parametro.add(baseConhecimentoDTO.getIdBaseConhecimento()); list = this.execSQL(sql.toString(), parametro.toArray()); listRetornor.add("idBaseConhecimento"); listRetornor.add("titulo"); listRetornor.add("vinculaConhecimentoServico"); if (list != null) { return this.listConvertion(BaseConhecimentoDTO.class, list, listRetornor); } else { return new ArrayList(); } } public Collection<BaseConhecimentoDTO> listarBaseConhecimentoFAQ() throws PersistenceException { List fields = new ArrayList(); List list = new ArrayList(); String sql = " select idBaseConhecimento, titulo, conteudo, idpasta from baseconhecimento where faq = 'S' and datafim is null and status = 'S' and (arquivado is null or arquivado = 'N') "; list = this.execSQL(sql, null); fields.add("idBaseConhecimento"); fields.add("titulo"); fields.add("conteudo"); fields.add("idPasta"); if (list != null && !list.isEmpty()) { return (Collection<BaseConhecimentoDTO>) this.listConvertion(getBean(), list, fields); } else { return null; } } /** * Retorna lista todas as bases de conhecimento n�o exclu�das, publicadas e n�o arquivadas! * * @author euler.ramos * @return Collection<BaseConhecimentoDTO> * @throws Exception */ public Collection<BaseConhecimentoDTO> listarBasesConhecimentoPublicadas() throws PersistenceException { String sql = "select idbaseconhecimento,idpasta,datainicio,datafim,titulo,conteudo,status,idbaseconhecimentopai,dataexpiracao,versao,idnotificacao,justificativaobservacao,datapublicacao,fontereferencia," + "faq,arquivado,idusuarioautor,idusuarioaprovador,idhistoricobaseconhecimento,origem,privacidade,situacao,gerenciamentoDisponibilidade,direitoAutoral,legislacao,conteudosemformatacao,erroconhecido " + "FROM baseconhecimento where (baseconhecimento.dataFim is null) and baseconhecimento.status = 'S' AND (baseconhecimento.arquivado IS NULL OR baseconhecimento.arquivado = 'N') "; List lista = new ArrayList(); lista = this.execSQL(sql, null); List listRetorno = new ArrayList(); listRetorno.add("idBaseConhecimento"); listRetorno.add("idPasta"); listRetorno.add("dataInicio"); listRetorno.add("dataFim"); listRetorno.add("titulo"); listRetorno.add("conteudo"); listRetorno.add("status"); listRetorno.add("idBaseConhecimentoPai"); listRetorno.add("dataExpiracao"); listRetorno.add("versao"); listRetorno.add("idNotificacao"); listRetorno.add("justificativaObservacao"); listRetorno.add("dataPublicacao"); listRetorno.add("fonteReferencia"); listRetorno.add("faq"); listRetorno.add("arquivado"); listRetorno.add("idUsuarioAutor"); listRetorno.add("idUsuarioAprovador"); listRetorno.add("idHistoricoBaseConhecimento"); listRetorno.add("origem"); listRetorno.add("privacidade"); listRetorno.add("situacao"); listRetorno.add("gerenciamentoDisponibilidade"); listRetorno.add("direitoAutoral"); listRetorno.add("legislacao"); listRetorno.add("conteudoSemFormatacao"); listRetorno.add("erroConhecido"); List result = this.engine.listConvertion(getBean(), lista, listRetorno); return (result == null ? new ArrayList<AnexoBaseConhecimentoDTO>() : result); } /** * Encontra BaseConhecimento pelo ID * * @author thiago.oliveira * @throws Exception */ public List<BaseConhecimentoDTO> findByIdBaseConhecimento(Integer id) throws PersistenceException { List resp = new ArrayList(); Collection fields = getFields(); List parametro = new ArrayList(); List listRetorno = new ArrayList(); String campos = ""; for (Iterator it = fields.iterator(); it.hasNext();) { Field field = (Field) it.next(); if (!campos.trim().equalsIgnoreCase("")) { campos = campos + ","; } campos = campos + field.getFieldDB(); listRetorno.add(field.getFieldClass()); } String sql = "SELECT " + campos + " FROM " + getTableName() + " WHERE idbaseconhecimento = ? ORDER BY idbaseconhecimento"; parametro.add(id); resp = this.execSQL(sql, parametro.toArray()); List result = this.engine.listConvertion(getBean(), resp, listRetorno); return (result == null ? new ArrayList<BaseConhecimentoDTO>() : result); } /** * Encontra a BaseConhecimento pelo nome * * @author thiago.oliveira * @throws Exception */ public List<BaseConhecimentoDTO> findByBaseConhecimento(String titulo) throws PersistenceException { List resp = new ArrayList(); Collection fields = getFields(); List parametro = new ArrayList(); List listRetorno = new ArrayList(); String campos = ""; for (Iterator it = fields.iterator(); it.hasNext();) { Field field = (Field) it.next(); if (!campos.trim().equalsIgnoreCase("")) { campos = campos + ","; } campos = campos + field.getFieldDB(); listRetorno.add(field.getFieldClass()); } String sql = "SELECT " + campos + " FROM " + getTableName() + " WHERE titulo = ? ORDER BY titulo"; parametro.add(titulo); resp = this.execSQL(sql, parametro.toArray()); List result = this.engine.listConvertion(getBean(), resp, listRetorno); return (result == null ? new ArrayList<BaseConhecimentoDTO>() : result); } /** * Retorna a lista de base de conhecimento do portal paginada * * @author thyen.chang * @since 06/02/2015 - OPERA��O USAIN BOLT * @param pageable * - Objeto que cont�m qual p�gina e n�mero de elementos a serem pesquisados * @param isTotalizacao * - Se a busca � para buscar o n�mero total de elementos da consulta * @param titulo - T�tulo da base de conhecimento a ser pesquisado * @return * @throws PersistenceException */ public Page<BaseConhecimentoDTO> listarBaseConhecimentoPortal(final Pageable pageable, final boolean isTotalizacao, String titulo) throws PersistenceException { Page<BaseConhecimentoDTO> taskPage; StringBuilder selectQueryPiece = new StringBuilder("SELECT idbaseconhecimento,idpasta,datainicio,datafim,titulo,conteudo,status,idbaseconhecimentopai,dataexpiracao,versao," + "idnotificacao,justificativaobservacao,datapublicacao,fontereferencia," + "faq,arquivado,idusuarioautor,idusuarioaprovador,idhistoricobaseconhecimento," + "origem,privacidade,situacao,gerenciamentoDisponibilidade,direitoAutoral,legislacao,conteudosemformatacao,erroconhecido "); StringBuilder ordenarPor = new StringBuilder(" ORDER BY idbaseconhecimento "); StringBuilder fromWhereQueryPiece = new StringBuilder("FROM baseconhecimento " + "WHERE (baseconhecimento.dataFim is null) " + "AND baseconhecimento.status = 'S' " + "AND (baseconhecimento.arquivado IS NULL OR baseconhecimento.arquivado = 'N') "); if(titulo != null && !titulo.isEmpty()){ fromWhereQueryPiece.append(" AND baseconhecimento.titulo LIKE '%" + titulo + "%' "); } List lista = new ArrayList(); String sql = ""; if (!isTotalizacao) { if (MAIN_SGBD.equals(DataBase.MSSQLSERVER)) { sql = PagingQueryUtil.constructsSQLServerPagingPiece(pageable, selectQueryPiece.toString(), ordenarPor.toString(), fromWhereQueryPiece.toString()); } else { selectQueryPiece.append(fromWhereQueryPiece); selectQueryPiece.append(ordenarPor); sql = PagingQueryUtil.concatPagingPieceOnQuery(pageable, selectQueryPiece.toString(), MAIN_SGBD); } lista = this.execSQL(sql, null); List listRetorno = new ArrayList(); listRetorno.add("idBaseConhecimento"); listRetorno.add("idPasta"); listRetorno.add("dataInicio"); listRetorno.add("dataFim"); listRetorno.add("titulo"); listRetorno.add("conteudo"); listRetorno.add("status"); listRetorno.add("idBaseConhecimentoPai"); listRetorno.add("dataExpiracao"); listRetorno.add("versao"); listRetorno.add("idNotificacao"); listRetorno.add("justificativaObservacao"); listRetorno.add("dataPublicacao"); listRetorno.add("fonteReferencia"); listRetorno.add("faq"); listRetorno.add("arquivado"); listRetorno.add("idUsuarioAutor"); listRetorno.add("idUsuarioAprovador"); listRetorno.add("idHistoricoBaseConhecimento"); listRetorno.add("origem"); listRetorno.add("privacidade"); listRetorno.add("situacao"); listRetorno.add("gerenciamentoDisponibilidade"); listRetorno.add("direitoAutoral"); listRetorno.add("legislacao"); listRetorno.add("conteudoSemFormatacao"); listRetorno.add("erroConhecido"); List<BaseConhecimentoDTO> result = this.engine.listConvertion(getBean(), lista, listRetorno); taskPage = new PageImpl<BaseConhecimentoDTO>(result, pageable, 1L); } else { final StringBuilder sqlCount = this.countQueryPiece(fromWhereQueryPiece); final Long totalElements = this.countElements(sqlCount.toString(), null); final List<BaseConhecimentoDTO> result = new ArrayList<BaseConhecimentoDTO>(); taskPage = this.makePage(result, pageable, totalElements); } return taskPage; } /** * Retorna a lista de FAQ do portal paginada * * @author thyen.chang * @since 06/02/2015 - OPERA��O USAIN BOLT * @param pageable * - Objeto que cont�m qual p�gina e n�mero de elementos a serem pesquisados * @param isTotalizacao * - Se a busca � para buscar o n�mero total de elementos da consulta * @param titulo - T�tulo da base de conhecimento a ser pesquisado * @return * @throws PersistenceException */ public Page<BaseConhecimentoDTO> listarBaseConhecimentoFAQPortal(final Pageable pageable, final boolean isTotalizacao, String titulo) throws PersistenceException { Page<BaseConhecimentoDTO> taskPage; StringBuilder selectQueryPiece = new StringBuilder("select idBaseConhecimento, titulo, conteudo, idpasta "); StringBuilder ordenarPor = new StringBuilder(" ORDER BY idbaseconhecimento "); StringBuilder fromWhereQueryPiece = new StringBuilder("from baseconhecimento where faq = 'S' and datafim is null and status = 'S' and (arquivado is null or arquivado = 'N')"); if(titulo != null && !titulo.isEmpty()){ fromWhereQueryPiece.append(" AND baseconhecimento.titulo LIKE '%" + titulo +"%' "); } List list = new ArrayList(); String sql = ""; if (!isTotalizacao) { if (MAIN_SGBD.equals(DataBase.MSSQLSERVER)) { sql = PagingQueryUtil.constructsSQLServerPagingPiece(pageable, selectQueryPiece.toString(), ordenarPor.toString(), fromWhereQueryPiece.toString()); } else { selectQueryPiece.append(fromWhereQueryPiece); selectQueryPiece.append(ordenarPor); sql = PagingQueryUtil.concatPagingPieceOnQuery(pageable, selectQueryPiece.toString(), MAIN_SGBD); } list = this.execSQL(sql, null); List fields = new ArrayList(); fields.add("idBaseConhecimento"); fields.add("titulo"); fields.add("conteudo"); fields.add("idPasta"); List<BaseConhecimentoDTO> result = this.engine.listConvertion(getBean(), list, fields); taskPage = new PageImpl<BaseConhecimentoDTO>(result, pageable, 1L); } else { final StringBuilder sqlCount = this.countQueryPiece(fromWhereQueryPiece); final Long totalElements = this.countElements(sqlCount.toString(), null); final List<BaseConhecimentoDTO> result = new ArrayList<BaseConhecimentoDTO>(); taskPage = this.makePage(result, pageable, totalElements); } return taskPage; } }