package br.com.centralit.citcorpore.ajaxForms;
import java.text.Normalizer;
import java.util.ArrayList;
import java.util.Collection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import br.com.centralit.citajax.html.AjaxFormAction;
import br.com.centralit.citajax.html.DocumentHTML;
import br.com.centralit.citajax.html.HTMLElement;
import br.com.centralit.citcorpore.bean.MenuDTO;
import br.com.centralit.citcorpore.bean.PesquisaDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.negocio.MenuService;
import br.com.centralit.citcorpore.util.WebUtil;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.service.ServiceLocator;
import br.com.citframework.util.Constantes;
public class Pesquisa extends AjaxFormAction {
private PesquisaDTO pesquisaBean;
private final String CAMINHO_PAGINAS = Constantes.getValue("CONTEXTO_APLICACAO") + "/pages";
private final String CAMINHO_IMAGENS = "/citsmart/template_new/images/icons/small/grey/";
private UsuarioDTO usuario;
private Integer qtdSub = 0;
@Override
public Class getBeanClass() {
return PesquisaDTO.class;
}
@Override
public void load(DocumentHTML document, HttpServletRequest request,
HttpServletResponse response) throws Exception {
usuario = WebUtil.getUsuario(request);
if (usuario == null) {
document.alert("O usu�rio n�o est� logado! Favor logar no sistema!");
return;
}
PesquisaDTO pesquisaBean = (PesquisaDTO) document.getBean();
StringBuilder header = new StringBuilder();
StringBuilder html = new StringBuilder();
header.append("<h2>Resultado da busca por: '<font color='red'; >" + pesquisaBean.getPesquisa() + "</font>'</h2>");
ArrayList<MenuDTO> menus = (ArrayList<MenuDTO>) request.getSession(true).getAttribute("sessionMenu");
if(menus!= null && !menus.isEmpty())
{
gerarMenus(html, menus, usuario, pesquisaBean.getPesquisa());
}
if(html.toString().trim().equals("<ul></ul>"))
{
html. append("<font color='red'; >Sua busca n�o encontrou nenhum resultado</font>");
}
HTMLElement divmenu = document.getElementById("result");
divmenu.setInnerHTML(header.toString() + html.toString());
}
private void gerarMenus(StringBuilder sb, Collection<MenuDTO> listaDeMenus, UsuarioDTO usuario, String pesquisa) throws ServiceException, Exception {
MenuService menuService = (MenuService) ServiceLocator.getInstance().getService(MenuService.class, null);
String link;
try {
sb.append("<ul>");
for (MenuDTO menu : listaDeMenus) {
Collection<MenuDTO> novaListaSubMenus;
novaListaSubMenus = menuService.listarMenusPorPerfil(usuario, menu.getIdMenu(), false);
if (novaListaSubMenus != null && !novaListaSubMenus.isEmpty()) {
for (MenuDTO submenu : novaListaSubMenus)
{
if(removerAcentos(submenu.getNome().toLowerCase()).contains(removerAcentos(pesquisa.toLowerCase())))
{
link = submenu.getLink() == null || submenu.getLink().trim().equals("") ? "#" : CAMINHO_PAGINAS + submenu.getLink();
sb.append("<li id='" + submenu.getIdMenu() + "'>");
sb.append("<a href='" + link + "'>");
sb.append(submenu.getNome());
sb.append("</a> ");
sb.append("</li>");
//this.gerarMenus(sb, novaListaSubMenus, usuario, pesquisa);
}
}
}
}
sb.append("</ul>");
} catch (Exception e) {
e.printStackTrace();
}
}
public PesquisaDTO getPesquisaBean() {
return pesquisaBean;
}
public void setPesquisaBean(PesquisaDTO pesquisaBean) {
this.pesquisaBean = pesquisaBean;
}
public String removerAcentos(String text)
{
text = Normalizer.normalize(text, Normalizer.Form.NFD);
return text.replaceAll("[^\\p{ASCII}]", "");
}
}