package br.com.centralit.citcorpore.ajaxForms;
import java.util.Collection;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.centralit.citajax.html.DocumentHTML;
import br.com.centralit.citajax.html.HTMLElement;
import br.com.centralit.citajax.html.HTMLForm;
import br.com.centralit.citcorpore.bean.BaseConhecimentoDTO;
import br.com.centralit.citcorpore.bean.PastaDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.negocio.BaseConhecimentoService;
import br.com.centralit.citcorpore.negocio.PastaService;
import br.com.centralit.citcorpore.negocio.PerfilAcessoPastaService;
import br.com.centralit.citcorpore.util.CITCorporeUtil;
import br.com.centralit.citcorpore.util.Enumerados.PermissaoAcessoPasta;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.centralit.lucene.Lucene;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.UtilI18N;
import br.com.citframework.util.UtilStrings;
@SuppressWarnings({ "rawtypes","unused" })
public class PesquisaErroConhecido extends BaseConhecimento {
public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
this.montarArvoreDePastasErroConhecido(document, request, response);
}
@Override
public Class getBeanClass() {
return BaseConhecimentoDTO.class;
}
/**
* Restaura Base de Conhecimento do tipo FAQ.
*
* @param document
* @param request
* @param response
* @throws Exception
* @author thays.araujo
*/
public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
BaseConhecimentoDTO baseConhecimentoDto = new BaseConhecimentoDTO();
baseConhecimentoDto = (BaseConhecimentoDTO) document.getBean();
PastaDTO pastaDto = new PastaDTO();
BaseConhecimentoService baseConhecimentoService = (BaseConhecimentoService) ServiceLocator.getInstance().getService(BaseConhecimentoService.class, null);
PastaService pastaService = (PastaService) ServiceLocator.getInstance().getService(PastaService.class, null);
baseConhecimentoDto = (BaseConhecimentoDTO) baseConhecimentoService.restore(baseConhecimentoDto);
if (baseConhecimentoDto.getIdPasta() != null) {
pastaDto.setId(baseConhecimentoDto.getIdPasta());
pastaDto = (PastaDTO) pastaService.restore(pastaDto);
baseConhecimentoDto.setNomePasta(pastaDto.getNome());
}
request.getSession().removeAttribute("idBaseConhecimento");
request.getSession().setAttribute("idBaseConhecimento", baseConhecimentoDto.getIdBaseConhecimento());
super.restaurarAnexos(request, baseConhecimentoDto);
HTMLForm form = CITCorporeUtil.limparFormulario(document);
form.setValues(baseConhecimentoDto);
document.getForm("form").lockForm();
document.getElementById("conteudo").setInnerHTML(baseConhecimentoDto.getConteudo());
}
public void montarArvoreDePastasErroConhecido(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
BaseConhecimentoService baseConhecimentoService = (BaseConhecimentoService) ServiceLocator.getInstance().getService(BaseConhecimentoService.class, null);
PastaService pastaService = (PastaService) ServiceLocator.getInstance().getService(PastaService.class, null);
UsuarioDTO usuarioDto = WebUtil.getUsuario(request);
Collection<PastaDTO> listPastaPaiErroConhecido = pastaService.listPastaSuperiorErroConhecidoSemPai();
StringBuilder sb = new StringBuilder();
sb.append("<div id=\"corpoInf\">");
sb.append("<br>");
sb.append("<ul id=\"browser\" class=\"filetree treeview\">");
if (listPastaPaiErroConhecido != null) {
for (PastaDTO pasta : listPastaPaiErroConhecido) {
String nomePasta = pasta.getNome();
sb.append("<li>");
sb.append("<div class=\"hitarea closed-hitarea collapsable-hitarea\">");
sb.append("</div>");
sb.append("<span class=\"folder\">");
sb.append(super.obterStatusPermissao(request, pasta, nomePasta, usuarioDto));
sb.append("</span>");
sb.append("<ul> ");
Collection<BaseConhecimentoDTO> listBaseconhecimentoErroConhecido = baseConhecimentoService.listarBaseConhecimentoErroConhecidoByPasta(pasta);
if (listBaseconhecimentoErroConhecido != null && !listBaseconhecimentoErroConhecido.isEmpty()) {
sb.append("<ul>");
for (BaseConhecimentoDTO base : listBaseconhecimentoErroConhecido) {
sb.append("<li>");
sb.append("<span class=\"file\">");
sb.append("<a href='#' onclick='verificarPermissaoDeAcesso(" + base.getIdPasta() + "," + base.getIdBaseConhecimento() + ");desabilitaDivPesquisa();' id='idTitulo" + base.getIdBaseConhecimento() + "' >");
sb.append(" " + base.getTitulo() + " ");
sb.append("</a>");
sb.append("</span>");
sb.append("</li>");
}
sb.append("</ul>");
}
Collection<PastaDTO> listSubPastaErroConhecido = pastaService.listSubPastasErroConhecido(pasta);
if (listSubPastaErroConhecido != null) {
this.gerarSubpastasErroConhecido(sb, listSubPastaErroConhecido, pasta, request);
}
sb.append("</li>");
sb.append("</ul>");
sb.append("</li>");
}
}
sb.append("</ul>");
sb.append("</div>");
HTMLElement divPrincipal = document.getElementById("principalBaseConhecimento");
divPrincipal.setInnerHTML(sb.toString());
document.executeScript("tree(\"#browser\");");
}
public void gerarSubpastasErroConhecido(StringBuilder sb, Collection<PastaDTO> listSubPastaErroConhecido, PastaDTO pasta, HttpServletRequest request) throws ServiceException, Exception {
BaseConhecimentoService baseConhecimentoService = (BaseConhecimentoService) ServiceLocator.getInstance().getService(BaseConhecimentoService.class, null);
PastaService pastaService = (PastaService) ServiceLocator.getInstance().getService(PastaService.class, null);
UsuarioDTO usuarioDto = WebUtil.getUsuario(request);
for (PastaDTO subPasta : listSubPastaErroConhecido) {
BaseConhecimentoDTO baseConhecimento = new BaseConhecimentoDTO();
Collection<PastaDTO> listSubSubPastaErroConhecido = pastaService.listSubPastasErroConhecido(subPasta);
String nomeSubPasta = subPasta.getNome();
sb.append("<li class='collapsable'>");
sb.append("<div class=\"hitarea closed-hitarea collapsable-hitarea\">");
sb.append("</div>");
if (listSubSubPastaErroConhecido != null && !listSubSubPastaErroConhecido.isEmpty()) {
sb.append("<span class=\"folder\">");
sb.append(this.obterStatusPermissao(request, subPasta, subPasta.getNome(), usuarioDto));
sb.append("</span >");
Collection<BaseConhecimentoDTO> listBaseconhecimentoErroConhecidoDaSubpasta = baseConhecimentoService.listarBaseConhecimentoErroConhecidoByPasta(subPasta);
if (listBaseconhecimentoErroConhecidoDaSubpasta != null && !listBaseconhecimentoErroConhecidoDaSubpasta.isEmpty()) {
sb.append("<ul>");
for (BaseConhecimentoDTO base : listBaseconhecimentoErroConhecidoDaSubpasta) {
sb.append("<li>");
sb.append("<span class=\"file\">");
sb.append("<a href='#' onclick='verificarPermissaoDeAcesso(" + base.getIdPasta() + "," + base.getIdBaseConhecimento() + ");desabilitaDivPesquisa();' id='idTitulo" + base.getIdBaseConhecimento() + "' >");
sb.append(" " + base.getTitulo() + " ");
sb.append("</a>");
sb.append("</span>");
sb.append("</li>");
}
sb.append("</ul>");
}
} else {
sb.append("<span class=\"folder\">");
sb.append(this.obterStatusPermissao(request, subPasta, subPasta.getNome(), usuarioDto));
sb.append("</span>");
Collection<BaseConhecimentoDTO> listBaseconhecimentoErroConhecidoDaSubpasta = baseConhecimentoService.listarBaseConhecimentoErroConhecidoByPasta(subPasta);
if (listBaseconhecimentoErroConhecidoDaSubpasta != null && !listBaseconhecimentoErroConhecidoDaSubpasta.isEmpty()) {
sb.append("<ul>");
for (BaseConhecimentoDTO base : listBaseconhecimentoErroConhecidoDaSubpasta) {
sb.append("<li>");
sb.append("<span class=\"file\">");
sb.append("<a href='#' onclick='verificarPermissaoDeAcesso(" + base.getIdPasta() + "," + base.getIdBaseConhecimento() + ");desabilitaDivPesquisa();' id='idTitulo" + base.getIdBaseConhecimento() + "' >");
sb.append(" " + base.getTitulo() + " ");
sb.append("</a>");
sb.append("</span>");
sb.append("</li>");
}
sb.append("</ul>");
}
}
if (listSubSubPastaErroConhecido != null && !listSubSubPastaErroConhecido.isEmpty()) {
sb.append("<ul id=\"subBios\"> ");
this.gerarSubpastasErroConhecido(sb, listSubSubPastaErroConhecido, pasta, request);
sb.append("</ul> ");
sb.append("</li>");
}
}
}
public void verificarPermissaoDeAcesso(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
UsuarioDTO usuarioDto = WebUtil.getUsuario(request);
BaseConhecimentoDTO baseConhecimentoDto = new BaseConhecimentoDTO();
baseConhecimentoDto = (BaseConhecimentoDTO) document.getBean();
PastaService pastaService = (PastaService) ServiceLocator.getInstance().getService(PastaService.class, null);
PerfilAcessoPastaService perfilAcessoPastaService = (PerfilAcessoPastaService) ServiceLocator.getInstance().getService(PerfilAcessoPastaService.class, null);
PastaDTO pastaDto = new PastaDTO();
pastaDto.setId(baseConhecimentoDto.getIdPasta());
pastaDto = (PastaDTO) pastaService.restore(pastaDto);
PermissaoAcessoPasta permissao = null;
permissao = perfilAcessoPastaService.verificarPermissaoDeAcessoPasta(usuarioDto, pastaDto);
if (permissao != null) {
if (PermissaoAcessoPasta.SEMPERMISSAO.equals(permissao)) {
document.alert("Usu�rio sem permiss�o de acesso.");
document.executeScript("$('#conhecimento').hide();");
document.executeScript("limpar()");
return;
} else {
if (PermissaoAcessoPasta.LEITURA.equals(permissao)) {
document.executeScript("fecharPesquisa();");
document.executeScript("corTitulo(" + baseConhecimentoDto.getIdBaseConhecimento() + ");");
document.executeScript("tituloBaseConhecimentoView(" + baseConhecimentoDto.getIdBaseConhecimento() + ")");
} else {
if (PermissaoAcessoPasta.LEITURAGRAVACAO.equals(permissao)) {
document.executeScript("fecharPesquisa();");
document.executeScript("corTitulo(" + baseConhecimentoDto.getIdBaseConhecimento() + ");");
document.executeScript("tituloBaseConhecimentoView(" + baseConhecimentoDto.getIdBaseConhecimento() + ")");
}
}
}
} else {
document.executeScript("limpar()");
document.executeScript("$('#conhecimento').hide();");
document.alert("Usu�rio sem permiss�o de acesso.");
return;
}
}
public void pesquisaBaseConhecimentoTipoErroConhecimento(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception {
BaseConhecimentoDTO baseConhecimentoDto = new BaseConhecimentoDTO();
BaseConhecimentoDTO baseConhecimentoAux = new BaseConhecimentoDTO();
baseConhecimentoDto = (BaseConhecimentoDTO) document.getBean();
BaseConhecimentoService baseConhecimentoService = (BaseConhecimentoService) ServiceLocator.getInstance().getService(BaseConhecimentoService.class, null);
List<BaseConhecimentoDTO> listaPesquisaLucene = null;
if (baseConhecimentoDto.getTermoPesquisa() == null || baseConhecimentoDto.getTermoPesquisa().trim().equalsIgnoreCase("")) {
document.alert(UtilI18N.internacionaliza(request, "baseConhecimento.validacao.informetermo"));
return;
} else {
if (baseConhecimentoDto.getTermoPesquisa() != null && !baseConhecimentoDto.getTermoPesquisa().equalsIgnoreCase("")) {
document.executeScript("$('#resultPesquisaPai').dialog('open');");
Lucene lucene = new Lucene();
listaPesquisaLucene = lucene.pesquisaBaseConhecimento(baseConhecimentoDto);
}
}
String buffer = "<table>";
if (listaPesquisaLucene != null && !listaPesquisaLucene.isEmpty()) {
for (BaseConhecimentoDTO dto : listaPesquisaLucene) {
String titulo = UtilStrings.nullToVazio(dto.getTitulo());
titulo = titulo.replaceAll("\"", "");
if (titulo.trim().equalsIgnoreCase("")) {
continue;
}
buffer += "<tr style='height: 25px !important;'>";
buffer += "<td style='FONT-WEIGHT: bold; FONT-SIZE: small; FONT-FAMILY: 'Arial'; width : 422px;'>";
buffer += "<a href='#' onclick='verificarPermissaoDeAcesso(" + dto.getIdPasta() + "," + dto.getIdBaseConhecimento() + ");contadorClicks(" + dto.getIdBaseConhecimento()
+ ");desabilitaDivPesquisa();' id='idTitulo" + dto.getIdBaseConhecimento() + "' >" + titulo + "</a>";
buffer += "</td>";
buffer += "</tr>";
}
} else {
buffer += "<tr style='height: 25px !important;'>";
buffer += "<td style='FONT-WEIGHT: bold; FONT-SIZE: small; FONT-FAMILY: 'Arial'; width : 422px;'>";
buffer += "<label>"+UtilI18N.internacionaliza(request, "citcorpore.comum.resultado")+"</label>";
buffer += "</td>";
buffer += "</tr>";
}
buffer += "<table>";
document.getElementById("resultPesquisa").setInnerHTML(buffer);
document.getElementById("resultPesquisaPai").setVisible(true);
}
}