pe.gob.mef.gescon.web.ui.ConsultaMB.java Source code

Java tutorial

Introduction

Here is the source code for pe.gob.mef.gescon.web.ui.ConsultaMB.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.gob.mef.gescon.web.ui;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.ResourceBundle;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.AjaxBehaviorEvent;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.util.JRLoader;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.primefaces.context.RequestContext;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.DefaultTreeNode;
import org.primefaces.model.StreamedContent;
import org.primefaces.model.TreeNode;
import pe.gob.mef.gescon.common.Constante;
import pe.gob.mef.gescon.common.Parameters;
import pe.gob.mef.gescon.lucene.Indexador;
import pe.gob.mef.gescon.service.ArchivoConocimientoService;
import pe.gob.mef.gescon.service.ArchivoService;
import pe.gob.mef.gescon.service.BaseLegalHistorialService;
import pe.gob.mef.gescon.service.BaseLegalService;
import pe.gob.mef.gescon.service.CalificacionBaseLegalService;
import pe.gob.mef.gescon.service.CalificacionPreguntaService;
import pe.gob.mef.gescon.service.CalificacionService;
import pe.gob.mef.gescon.service.CategoriaService;
import pe.gob.mef.gescon.service.ConocimientoService;
import pe.gob.mef.gescon.service.ConsultaService;
import pe.gob.mef.gescon.service.ContenidoService;
import pe.gob.mef.gescon.service.DiscusionSeccionService;
import pe.gob.mef.gescon.service.DiscusionService;
import pe.gob.mef.gescon.service.HistorialService;
import pe.gob.mef.gescon.service.ParametroService;
import pe.gob.mef.gescon.service.PreguntaService;
import pe.gob.mef.gescon.service.SeccionService;
import pe.gob.mef.gescon.service.TipoConocimientoService;
import pe.gob.mef.gescon.service.UserService;
import pe.gob.mef.gescon.service.VinculoBaselegalHistorialService;
import pe.gob.mef.gescon.service.VinculoHistService;
import pe.gob.mef.gescon.util.GcmFileUtils;
import pe.gob.mef.gescon.util.JSFUtils;
import pe.gob.mef.gescon.util.ServiceFinder;
import pe.gob.mef.gescon.web.bean.ArchivoConocimiento;
import pe.gob.mef.gescon.web.bean.BaseLegal;
import pe.gob.mef.gescon.web.bean.BaselegalHist;
import pe.gob.mef.gescon.web.bean.Calificacion;
import pe.gob.mef.gescon.web.bean.CalificacionBaselegal;
import pe.gob.mef.gescon.web.bean.CalificacionPregunta;
import pe.gob.mef.gescon.web.bean.Categoria;
import pe.gob.mef.gescon.web.bean.Consulta;
import pe.gob.mef.gescon.web.bean.Discusion;
import pe.gob.mef.gescon.web.bean.DiscusionSeccion;
import pe.gob.mef.gescon.web.bean.Historial;
import pe.gob.mef.gescon.web.bean.Pregunta;
import pe.gob.mef.gescon.web.bean.Seccion;
import pe.gob.mef.gescon.web.bean.TipoConocimiento;
import pe.gob.mef.gescon.web.bean.User;
import pe.gob.mef.gescon.web.bean.VinculoBaselegalHist;

/**
 *
 * @author JJacobo
 */
@ManagedBean
@SessionScoped
public class ConsultaMB implements Serializable {

    private TreeNode tree;
    private List<Categoria> listaCategoriaFiltro;
    private Categoria selectedCategoriaFiltro;
    private List<Categoria> listaBreadCrumb;
    private Date fechaInicio;
    private Date fechaFin;
    private List<TipoConocimiento> listaTipoConocimientoFiltro;
    private List<String> selectedTipoConocimiento;
    private List<BaseLegal> listaBaseLegal;
    private List<Consulta> listaConsulta;
    private BaseLegal selectedBaseLegal;
    private StreamedContent content;
    private Pregunta selectedPregunta;
    private String searchText;
    private String tipoConocimiento;
    private String categoria;
    private String ordenpor;
    private String calificacion1;
    private String calificacion2;
    private String calificacion3;
    private String calificacion4;
    private String calificacion5;
    private String tempPopup;

    /**
     * Creates a new instance of ConsultaMB
     */
    public ConsultaMB() {
    }

    /**
     * @return the tree
     */
    public TreeNode getTree() {
        return tree;
    }

    /**
     * @param tree the tree to set
     */
    public void setTree(TreeNode tree) {
        this.tree = tree;
    }

    /**
     * @return the listaCategoriaFiltro
     */
    public List<Categoria> getListaCategoriaFiltro() {
        return listaCategoriaFiltro;
    }

    /**
     * @param listaCategoriaFiltro the listaCategoriaFiltro to set
     */
    public void setListaCategoriaFiltro(List<Categoria> listaCategoriaFiltro) {
        this.listaCategoriaFiltro = listaCategoriaFiltro;
    }

    /**
     * @return the selectedCategoriaFiltro
     */
    public Categoria getSelectedCategoriaFiltro() {
        return selectedCategoriaFiltro;
    }

    /**
     * @param selectedCategoriaFiltro the selectedCategoriaFiltro to set
     */
    public void setSelectedCategoriaFiltro(Categoria selectedCategoriaFiltro) {
        this.selectedCategoriaFiltro = selectedCategoriaFiltro;
    }

    /**
     * @return the listaBreadCrumb
     */
    public List<Categoria> getListaBreadCrumb() {
        return listaBreadCrumb;
    }

    /**
     * @param listaBreadCrumb the listaBreadCrumb to set
     */
    public void setListaBreadCrumb(List<Categoria> listaBreadCrumb) {
        this.listaBreadCrumb = listaBreadCrumb;
    }

    public Date getFechaInicio() {
        return fechaInicio;
    }

    public void setFechaInicio(Date fechaInicio) {
        this.fechaInicio = fechaInicio;
    }

    public Date getFechaFin() {
        return fechaFin;
    }

    public void setFechaFin(Date fechaFin) {
        this.fechaFin = fechaFin;
    }

    public List<TipoConocimiento> getListaTipoConocimientoFiltro() {
        return listaTipoConocimientoFiltro;
    }

    public void setListaTipoConocimientoFiltro(List<TipoConocimiento> listaTipoConocimientoFiltro) {
        this.listaTipoConocimientoFiltro = listaTipoConocimientoFiltro;
    }

    public List<String> getSelectedTipoConocimiento() {
        return selectedTipoConocimiento;
    }

    public void setSelectedTipoConocimiento(List<String> selectedTipoConocimiento) {
        this.selectedTipoConocimiento = selectedTipoConocimiento;
    }

    public List<BaseLegal> getListaBaseLegal() {
        return listaBaseLegal;
    }

    public void setListaBaseLegal(List<BaseLegal> listaBaseLegal) {
        this.listaBaseLegal = listaBaseLegal;
    }

    public List<Consulta> getListaConsulta() {
        return listaConsulta;
    }

    public void setListaConsulta(List<Consulta> listaConsulta) {
        this.listaConsulta = listaConsulta;
    }

    public BaseLegal getSelectedBaseLegal() {
        return selectedBaseLegal;
    }

    public void setSelectedBaseLegal(BaseLegal selectedBaseLegal) {
        this.selectedBaseLegal = selectedBaseLegal;
    }

    public StreamedContent getContent() {
        return content;
    }

    public void setContent(StreamedContent content) {
        this.content = content;
    }

    public Pregunta getSelectedPregunta() {
        return selectedPregunta;
    }

    public void setSelectedPregunta(Pregunta selectedPregunta) {
        this.selectedPregunta = selectedPregunta;
    }

    public String getSearchText() {
        return searchText;
    }

    public void setSearchText(String searchText) {
        this.searchText = searchText;
    }

    public String getTipoConocimiento() {
        return tipoConocimiento;
    }

    public void setTipoConocimiento(String tipoConocimiento) {
        this.tipoConocimiento = tipoConocimiento;
    }

    public String getCategoria() {
        return categoria;
    }

    public void setCategoria(String categoria) {
        this.categoria = categoria;
    }

    public String getOrdenpor() {
        return ordenpor;
    }

    public void setOrdenpor(String ordenpor) {
        this.ordenpor = ordenpor;
    }

    public String getCalificacion1() {
        return calificacion1;
    }

    public void setCalificacion1(String calificacion1) {
        this.calificacion1 = calificacion1;
    }

    public String getCalificacion2() {
        return calificacion2;
    }

    public void setCalificacion2(String calificacion2) {
        this.calificacion2 = calificacion2;
    }

    public String getCalificacion3() {
        return calificacion3;
    }

    public void setCalificacion3(String calificacion3) {
        this.calificacion3 = calificacion3;
    }

    public String getCalificacion4() {
        return calificacion4;
    }

    public void setCalificacion4(String calificacion4) {
        this.calificacion4 = calificacion4;
    }

    public String getCalificacion5() {
        return calificacion5;
    }

    public void setCalificacion5(String calificacion5) {
        this.calificacion5 = calificacion5;
    }

    public String getTempPopup() {
        return tempPopup;
    }

    public void setTempPopup(String tempPopup) {
        this.tempPopup = tempPopup;
    }

    @PostConstruct
    public void init() {
        try {
            ParametroService parametroService = (ParametroService) ServiceFinder.findBean("ParametroService");
            this.setCalificacion1(parametroService
                    .getParametroById(BigDecimal.valueOf(Long.valueOf(Constante.CALIFICACION1))).getVvalor());
            this.setCalificacion2(parametroService
                    .getParametroById(BigDecimal.valueOf(Long.valueOf(Constante.CALIFICACION2))).getVvalor());
            this.setCalificacion3(parametroService
                    .getParametroById(BigDecimal.valueOf(Long.valueOf(Constante.CALIFICACION3))).getVvalor());
            this.setCalificacion4(parametroService
                    .getParametroById(BigDecimal.valueOf(Long.valueOf(Constante.CALIFICACION4))).getVvalor());
            this.setCalificacion5(parametroService
                    .getParametroById(BigDecimal.valueOf(Long.valueOf(Constante.CALIFICACION5))).getVvalor());
            CategoriaService catservice = (CategoriaService) ServiceFinder.findBean("CategoriaService");
            this.setListaCategoriaFiltro(catservice.getCategoriasActived());
            createTree(this.getListaCategoriaFiltro());
            this.setListaBreadCrumb(new ArrayList<Categoria>());
            TipoConocimientoService tcservice = (TipoConocimientoService) ServiceFinder
                    .findBean("TipoConocimientoService");
            this.setListaTipoConocimientoFiltro(tcservice.getTipoConocimientos());
        } catch (Exception e) {
            e.getMessage();
            e.printStackTrace();
        }
    }

    public void createTree(List<Categoria> lista) {
        try {
            for (Categoria ele : lista) {
                String id = ele.getNcategoriasup() != null ? ele.getNcategoriasup().toString() : null;
                if (id != null) {
                    TreeNode parent = this.getNodeByIdCategoria(this.getTree(), id);
                    TreeNode node = new DefaultTreeNode(ele, parent);
                    node.setParent(parent);
                } else {
                    this.setTree(new DefaultTreeNode(ele, this.getTree()));
                }
            }
        } catch (Exception e) {
            e.getMessage();
            e.printStackTrace();
        }
    }

    public TreeNode getNodeByIdCategoria(TreeNode treeNode, String idCategoria) {
        try {
            if (treeNode != null) {
                Categoria cat = (Categoria) treeNode.getData();
                if (cat.getNcategoriaid().toString().equals(idCategoria)) {
                    return treeNode;
                }
                List<TreeNode> lista = treeNode.getChildren();
                if (lista != null && !lista.isEmpty()) {
                    for (TreeNode node : lista) {
                        if (node != null) {
                            TreeNode tn = this.getNodeByIdCategoria(node, idCategoria);
                            if (tn != null) {
                                return tn;
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.getMessage();
            e.printStackTrace();
        }
        return null;
    }

    public List<String> getIdsSubTreeByNode(TreeNode node, List<String> ids) {
        try {
            if (node != null) {
                List<TreeNode> lista = node.getChildren();
                if (lista != null && !lista.isEmpty()) {
                    for (TreeNode n : lista) {
                        if (n != null) {
                            Categoria c = (Categoria) n.getData();
                            String id = c.getNcategoriaid().toString();
                            if (StringUtils.isNotBlank(id)) {
                                ids.add(id);
                                getIdsSubTreeByNode(n, ids);
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.getMessage();
            e.printStackTrace();
        }
        return ids;
    }

    public void onClickSubCategoriesFilter(ActionEvent event) {
        try {
            int index = Integer.parseInt((String) JSFUtils.getRequestParameter("rowIndex"));
            this.setSelectedCategoriaFiltro(this.getListaCategoriaFiltro().get(index));
            this.getListaBreadCrumb().add(this.getSelectedCategoriaFiltro());
            this.filtrar(event);
        } catch (Exception e) {
            e.getMessage();
            e.printStackTrace();
        }
    }

    public void onClickBreadCrumb(ActionEvent event) {
        int pos = 0;
        try {
            String id = (String) JSFUtils.getRequestParameter("ncategoriaid");
            for (int i = 0; i < this.getListaBreadCrumb().size(); i++) {
                Categoria c = this.getListaBreadCrumb().get(i);
                if (c.getNcategoriaid().toString().equals(id)) {
                    pos = i;
                    break;
                }
            }
            this.setSelectedCategoriaFiltro(this.getListaBreadCrumb().get(pos));
            this.setListaBreadCrumb(this.getListaBreadCrumb().subList(0, pos + 1));
            this.filtrar(event);
        } catch (Exception e) {
            e.getMessage();
            e.printStackTrace();
        }
    }

    public String getCategoriesFilter() {
        String id;
        TreeNode node;
        List<String> ids = new ArrayList<String>();
        try {
            if (this.getSelectedCategoriaFiltro() != null) {
                id = this.getSelectedCategoriaFiltro().getNcategoriaid().toString();
                ids.add(id);
                node = this.getNodeByIdCategoria(this.getTree(), id);
                ids.addAll(getIdsSubTreeByNode(node, ids));
            }
        } catch (Exception e) {
            e.getMessage();
            e.printStackTrace();
        }
        return StringUtils.join(ids, ',');
    }

    public String getTypesFilter() {
        String filter = StringUtils.join(this.getSelectedTipoConocimiento(), ',');
        if (StringUtils.isBlank(filter)) {
            filter = "1,2,3,4,5,6";
        }
        return filter;
    }

    public void filtrar(ActionEvent event) {
        HashMap filter = new HashMap();
        try {
            filter.put("fCategoria", this.getCategoriesFilter());
            filter.put("fFromDate", this.getFechaInicio());
            filter.put("fToDate", this.getFechaFin());
            filter.put("fType", this.getTypesFilter());
            if (StringUtils.isNotBlank(this.getSearchText())) {
                HashMap map = Indexador.search(this.getSearchText());
                filter.put("fCodesBL", (String) map.get("codesBL"));
                filter.put("fCodesPR", (String) map.get("codesPR"));
                filter.put("fCodesC", (String) map.get("codesC"));
                filter.put("fText", this.getSearchText().trim());
            } else {
                filter.remove("fCodesBL");
                filter.remove("fCodesPR");
                filter.remove("fCodesC");
                filter.remove("fText");
            }
            filter.put("order", this.getOrdenpor());
            ConsultaService service = (ConsultaService) ServiceFinder.findBean("ConsultaService");
            this.setListaConsulta(service.getQueryFilter(filter));
        } catch (Exception e) {
            e.getMessage();
            e.printStackTrace();
        }
    }

    public void filtrar(AjaxBehaviorEvent event) {
        HashMap filter = new HashMap();
        try {
            filter.put("fCategoria", this.getCategoriesFilter());
            filter.put("fFromDate", this.getFechaInicio());
            filter.put("fToDate", this.getFechaFin());
            filter.put("fType", this.getTypesFilter());
            if (StringUtils.isNotBlank(this.getSearchText())) {
                HashMap map = Indexador.search(this.getSearchText());
                filter.put("fCodesBL", (String) map.get("codesBL"));
                filter.put("fCodesPR", (String) map.get("codesPR"));
                filter.put("fCodesC", (String) map.get("codesC"));
                filter.put("fText", this.getSearchText().trim());
            } else {
                filter.remove("fCodesBL");
                filter.remove("fCodesPR");
                filter.remove("fCodesC");
                filter.remove("fText");
            }
            filter.put("order", this.getOrdenpor());
            ConsultaService service = (ConsultaService) ServiceFinder.findBean("ConsultaService");
            this.setListaConsulta(service.getQueryFilter(filter));
        } catch (Exception e) {
            e.getMessage();
            e.printStackTrace();
        }
    }

    public String search() {
        HashMap filter = new HashMap();
        try {
            filter.put("fCategoria", this.getCategoriesFilter());
            filter.put("fFromDate", this.getFechaInicio());
            filter.put("fToDate", this.getFechaFin());
            filter.put("fType", this.getTypesFilter());
            if (StringUtils.isNotBlank(this.getSearchText())) {
                HashMap map = Indexador.search(this.getSearchText());
                filter.put("fCodesBL", (String) map.get("codesBL"));
                filter.put("fCodesPR", (String) map.get("codesPR"));
                filter.put("fCodesC", (String) map.get("codesC"));
                filter.put("fText", this.getSearchText().trim());
            } else {
                filter.remove("fCodesBL");
                filter.remove("fCodesPR");
                filter.remove("fCodesC");
                filter.remove("fText");
            }
            filter.put("order", this.getOrdenpor());
            ConsultaService service = (ConsultaService) ServiceFinder.findBean("ConsultaService");
            this.setListaConsulta(service.getQueryFilter(filter));
            if (CollectionUtils.isEmpty(this.getListaCategoriaFiltro())) {
                CategoriaService catservice = (CategoriaService) ServiceFinder.findBean("CategoriaService");
                this.setListaCategoriaFiltro(catservice.getCategoriasActived());
                createTree(this.getListaCategoriaFiltro());
                this.setListaBreadCrumb(new ArrayList<Categoria>());
            }
            if (CollectionUtils.isEmpty(this.getSelectedTipoConocimiento())) {
                TipoConocimientoService tcservice = (TipoConocimientoService) ServiceFinder
                        .findBean("TipoConocimientoService");
                this.setListaTipoConocimientoFiltro(tcservice.getTipoConocimientos());
            }
        } catch (Exception e) {
            e.getMessage();
            e.printStackTrace();
        }
        return "/pages/consulta?faces-redirect=true";
    }

    public String advanceSearch() {
        HashMap filter = new HashMap();
        try {
            if (CollectionUtils.isEmpty(this.getListaCategoriaFiltro())) {
                CategoriaService catservice = (CategoriaService) ServiceFinder.findBean("CategoriaService");
                this.setListaCategoriaFiltro(catservice.getCategoriasActived());
            }
            for (Categoria c : this.getListaCategoriaFiltro()) {
                if (c.getNcategoriaid().toString().equals(this.getCategoria())) {
                    this.setSelectedCategoriaFiltro(c);
                    break;
                }
            }
            this.setSelectedTipoConocimiento(new ArrayList<String>());
            if (StringUtils.isNotBlank(this.getTipoConocimiento())) {
                this.getSelectedTipoConocimiento().add(this.getTipoConocimiento());
            }
            filter.put("fCategoria", this.getCategoriesFilter());
            filter.put("fFromDate", this.getFechaInicio());
            filter.put("fToDate", this.getFechaFin());
            filter.put("fType", this.getTypesFilter());
            if (StringUtils.isNotBlank(this.getSearchText())) {
                HashMap map = Indexador.search(this.getSearchText());
                filter.put("fCodesBL", (String) map.get("codesBL"));
                filter.put("fCodesPR", (String) map.get("codesPR"));
                filter.put("fCodesC", (String) map.get("codesC"));
                filter.put("fText", this.getSearchText().trim());
            } else {
                filter.remove("fCodesBL");
                filter.remove("fCodesPR");
                filter.remove("fCodesC");
                filter.remove("fText");
            }
            filter.put("order", this.getOrdenpor());
            ConsultaService service = (ConsultaService) ServiceFinder.findBean("ConsultaService");
            this.setListaConsulta(service.getQueryFilter(filter));
            if (CollectionUtils.isEmpty(this.getListaCategoriaFiltro())) {
                CategoriaService catservice = (CategoriaService) ServiceFinder.findBean("CategoriaService");
                this.setListaCategoriaFiltro(catservice.getCategoriasActived());
                createTree(this.getListaCategoriaFiltro());
                this.setListaBreadCrumb(new ArrayList<Categoria>());
            }
            if (CollectionUtils.isEmpty(this.getSelectedTipoConocimiento())) {
                TipoConocimientoService tcservice = (TipoConocimientoService) ServiceFinder
                        .findBean("TipoConocimientoService");
                this.setListaTipoConocimientoFiltro(tcservice.getTipoConocimientos());
            }
        } catch (Exception e) {
            e.getMessage();
            e.printStackTrace();
        }
        return "/pages/consulta?faces-redirect=true";
    }

    public void view(ActionEvent event) {
        try {
            int id = Integer.parseInt((String) JSFUtils.getRequestParameter("id"));
            int idTipo = Integer.parseInt((String) JSFUtils.getRequestParameter("idTipo"));
            boolean popup = Boolean.valueOf((String) JSFUtils.getRequestParameter("popup"));
            boolean tmpPopup = Boolean.valueOf((String) JSFUtils.getRequestParameter("tempPopup"));
            switch (idTipo) {
            case 1: { //Base Legal
                BaseLegalMB bl = new BaseLegalMB();
                BaseLegalService service = (BaseLegalService) ServiceFinder.findBean("BaseLegalService");
                bl.setSelectedBaseLegal(service.getBaselegalById(BigDecimal.valueOf(id)));
                bl.setChkGobNacional(bl.getSelectedBaseLegal().getNgobnacional().equals(BigDecimal.ONE));
                bl.setChkGobRegional(bl.getSelectedBaseLegal().getNgobregional().equals(BigDecimal.ONE));
                bl.setChkGobLocal(bl.getSelectedBaseLegal().getNgoblocal().equals(BigDecimal.ONE));
                bl.setChkMancomunidades(bl.getSelectedBaseLegal().getNmancomunidades().equals(BigDecimal.ONE));
                CategoriaService categoriaService = (CategoriaService) ServiceFinder.findBean("CategoriaService");
                bl.setSelectedCategoria(
                        categoriaService.getCategoriaById(bl.getSelectedBaseLegal().getNcategoriaid()));
                ArchivoService aservice = (ArchivoService) ServiceFinder.findBean("ArchivoService");
                bl.getSelectedBaseLegal().setArchivo(aservice.getArchivoByBaseLegal(bl.getSelectedBaseLegal()));
                bl.setListaTarget(service.getTbaselegalesLinkedById(bl.getSelectedBaseLegal().getNbaselegalid()));
                bl.setListaLinks(service.getTbaselegalesByLinkId(bl.getSelectedBaseLegal().getNbaselegalid()));

                BaseLegalHistorialService historialService = (BaseLegalHistorialService) ServiceFinder
                        .findBean("BaseLegalHistorialService");
                bl.setListaHistorial(
                        historialService.getHistorialesByBaselegal(bl.getSelectedBaseLegal().getNbaselegalid()));
                if (CollectionUtils.isNotEmpty(bl.getListaHistorial())) {
                    UserService userService = (UserService) ServiceFinder.findBean("UserService");
                    VinculoBaselegalHistorialService vservice = (VinculoBaselegalHistorialService) ServiceFinder
                            .findBean("VinculoBaselegalHistorialService");
                    for (BaselegalHist historial : bl.getListaHistorial()) {
                        User user = userService.getUserByLogin(historial.getVusuariocreacion());
                        historial.setVnombreusuario(user.getVnombres() + " " + user.getVapellidos());
                        historial.setListaVinculos(new ArrayList<BaseLegal>());
                        List<VinculoBaselegalHist> lista = vservice
                                .getVinculoHistsByBaselegalHist(historial.getNbaselegalid());
                        if (CollectionUtils.isNotEmpty(lista)) {
                            for (VinculoBaselegalHist ele : lista) {
                                historial.getListaVinculos()
                                        .add(service.getBaselegalById(ele.getNbaselegalvinculadaid()));
                            }
                        }
                    }
                }
                CalificacionBaseLegalService calificacionService = (CalificacionBaseLegalService) ServiceFinder
                        .findBean("CalificacionBaseLegalService");
                bl.setListaCalificacion(calificacionService
                        .getCalificacionesByConocimiento(bl.getSelectedBaseLegal().getNbaselegalid()));
                if (CollectionUtils.isNotEmpty(bl.getListaCalificacion())) {
                    UserService userService = (UserService) ServiceFinder.findBean("UserService");
                    for (CalificacionBaselegal calificacion : bl.getListaCalificacion()) {
                        User user = userService.getUserByLogin(calificacion.getVusuariocreacion());
                        calificacion.setUsuarioNombre(user.getVnombres() + " " + user.getVapellidos());
                    }
                }
                JSFUtils.getSession().setAttribute("baseLegalMB", bl);
                if (popup) {
                    if (tmpPopup) {
                        RequestContext.getCurrentInstance().execute(
                                "popupCenter('/gescon/pages/baselegal/vistaPopup.xhtml','','1000','650');");
                    } else {
                        RequestContext.getCurrentInstance().execute(
                                "popupCenter('/gescon/pages/baselegal/vistaConsulta.xhtml','','1000','650');");
                    }
                    this.setTempPopup("true");
                } else {
                    if (tmpPopup) {
                        FacesContext.getCurrentInstance().getExternalContext()
                                .redirect("/gescon/pages/baselegal/vistaPopup.xhtml");
                        this.setTempPopup("true");
                    } else {
                        FacesContext.getCurrentInstance().getExternalContext()
                                .redirect("/gescon/pages/baselegal/vistaConsulta.xhtml");
                        this.setTempPopup("false");
                    }
                }
                break;
            }
            case 2: { //Preguntas y respuestas
                PreguntaMB pr = new PreguntaMB();
                PreguntaService service = (PreguntaService) ServiceFinder.findBean("PreguntaService");
                pr.setSelectedPregunta(service.getPreguntaById(BigDecimal.valueOf(id)));
                String ruta0 = "pr/" + pr.getSelectedPregunta().getNpreguntaid().toString() + "/"
                        + BigDecimal.ZERO.toString() + "/";
                pr.getSelectedPregunta().setVrespuesta(GcmFileUtils.readStringFromFileServer(ruta0, "html.txt"));
                CategoriaService categoriaService = (CategoriaService) ServiceFinder.findBean("CategoriaService");
                pr.setSelectedCategoria(
                        categoriaService.getCategoriaById(pr.getSelectedPregunta().getNcategoriaid()));
                pr.setEntidad(service.getNomEntidadbyIdEntidad(pr.getSelectedPregunta().getNentidadid()));
                pr.setListaSourceVinculos(new ArrayList<Consulta>());
                pr.setListaTargetVinculos(new ArrayList<Consulta>());
                pr.setListaTargetVinculosConocimiento(new ArrayList<Consulta>());
                pr.setListaTargetVinculosBL(new ArrayList<Consulta>());
                pr.setListaTargetVinculosPR(new ArrayList<Consulta>());
                pr.setListaTargetVinculosWK(new ArrayList<Consulta>());
                pr.setListaTargetVinculosCT(new ArrayList<Consulta>());
                pr.setListaTargetVinculosBP(new ArrayList<Consulta>());
                pr.setListaTargetVinculosOM(new ArrayList<Consulta>());

                HashMap filters = new HashMap();
                filters.put("npreguntaid", pr.getSelectedPregunta().getNpreguntaid());
                filters.put("ntipoconocimientoid", Constante.BASELEGAL);
                pr.getListaTargetVinculosBL().addAll(service.getConcimientosVinculados(filters));
                filters.put("ntipoconocimientoid", Constante.PREGUNTAS);
                pr.getListaTargetVinculosPR().addAll(service.getConcimientosVinculados(filters));
                filters.put("ntipoconocimientoid", Constante.WIKI);
                pr.getListaTargetVinculosWK().addAll(service.getConcimientosVinculados(filters));
                filters.put("ntipoconocimientoid", Constante.CONTENIDO);
                pr.getListaTargetVinculosCT().addAll(service.getConcimientosVinculados(filters));
                filters.put("ntipoconocimientoid", Constante.BUENAPRACTICA);
                pr.getListaTargetVinculosBP().addAll(service.getConcimientosVinculados(filters));
                filters.put("ntipoconocimientoid", Constante.OPORTUNIDADMEJORA);
                pr.getListaTargetVinculosOM().addAll(service.getConcimientosVinculados(filters));
                if (pr.getListaTargetVinculosBL() != null) {
                    pr.getListaTargetVinculosConocimiento().addAll(pr.getListaTargetVinculosBL());
                }
                if (pr.getListaTargetVinculosBP() != null) {
                    pr.getListaTargetVinculosConocimiento().addAll(pr.getListaTargetVinculosBP());
                }
                if (pr.getListaTargetVinculosCT() != null) {
                    pr.getListaTargetVinculosConocimiento().addAll(pr.getListaTargetVinculosCT());
                }
                if (pr.getListaTargetVinculosOM() != null) {
                    pr.getListaTargetVinculosConocimiento().addAll(pr.getListaTargetVinculosOM());
                }
                if (pr.getListaTargetVinculosWK() != null) {
                    pr.getListaTargetVinculosConocimiento().addAll(pr.getListaTargetVinculosWK());
                }
                CalificacionPreguntaService calificacionService = (CalificacionPreguntaService) ServiceFinder
                        .findBean("CalificacionPreguntaService");
                pr.setListaCalificacion(calificacionService
                        .getCalificacionesByConocimiento(pr.getSelectedPregunta().getNpreguntaid()));
                if (CollectionUtils.isNotEmpty(pr.getListaCalificacion())) {
                    UserService userService = (UserService) ServiceFinder.findBean("UserService");
                    for (CalificacionPregunta calificacion : pr.getListaCalificacion()) {
                        User user = userService.getUserByLogin(calificacion.getVusuariocreacion());
                        calificacion.setUsuarioNombre(user.getVnombres() + " " + user.getVapellidos());
                    }
                }
                JSFUtils.getSession().setAttribute("preguntaMB", pr);
                if (popup) {
                    if (tmpPopup) {
                        RequestContext.getCurrentInstance()
                                .execute("popupCenter('/gescon/pages/pregunta/vistaPopup.xhtml','','1000','650');");
                    } else {
                        RequestContext.getCurrentInstance().execute(
                                "popupCenter('/gescon/pages/pregunta/vistaConsulta.xhtml','','1000','650');");
                    }
                    this.setTempPopup("true");
                } else {
                    if (tmpPopup) {
                        FacesContext.getCurrentInstance().getExternalContext()
                                .redirect("/gescon/pages/pregunta/vistaPopup.xhtml");
                        this.setTempPopup("true");
                    } else {
                        FacesContext.getCurrentInstance().getExternalContext()
                                .redirect("/gescon/pages/pregunta/vistaConsulta.xhtml");
                        this.setTempPopup("false");
                    }
                }
                break;
            }
            case 3: { //Wiki
                WikiMB mb = new WikiMB();
                ConocimientoService conocimientoService = (ConocimientoService) ServiceFinder
                        .findBean("ConocimientoService");
                mb.setSelectedWiki(conocimientoService.getConocimientoById(BigDecimal.valueOf(id)));
                CategoriaService categoriaService = (CategoriaService) ServiceFinder.findBean("CategoriaService");
                mb.setSelectedCategoria(categoriaService.getCategoriaById(mb.getSelectedWiki().getNcategoriaid()));
                mb.setDescripcionHtml(
                        GcmFileUtils.readStringFromFileServer(mb.getSelectedWiki().getVruta(), "html.txt"));
                SeccionService seccionService = (SeccionService) ServiceFinder.findBean("SeccionService");
                mb.setListaSeccion(
                        seccionService.getSeccionesByConocimiento(mb.getSelectedWiki().getNconocimientoid()));
                if (CollectionUtils.isNotEmpty(mb.getListaSeccion())) {
                    for (Seccion seccion : mb.getListaSeccion()) {
                        seccion.setDetalleHtml(
                                GcmFileUtils.readStringFromFileServer(seccion.getVruta(), "html.txt"));
                    }
                }
                HashMap map = new HashMap();
                map.put("nconocimientoid", mb.getSelectedWiki().getNconocimientoid().toString());
                map.put("flag", true);
                map.put("ntipoconocimientoid", Constante.BASELEGAL.toString());
                mb.setListaTargetVinculosBL(conocimientoService.getConcimientosVinculados(map));
                map.put("ntipoconocimientoid", Constante.PREGUNTAS.toString());
                mb.setListaTargetVinculosPR(conocimientoService.getConcimientosVinculados(map));
                map.put("ntipoconocimientoid", Constante.BUENAPRACTICA.toString());
                mb.setListaTargetVinculosBP(conocimientoService.getConcimientosVinculados(map));
                map.put("ntipoconocimientoid", Constante.CONTENIDO.toString());
                mb.setListaTargetVinculosCT(conocimientoService.getConcimientosVinculados(map));
                map.put("ntipoconocimientoid", Constante.OPORTUNIDADMEJORA.toString());
                mb.setListaTargetVinculosOM(conocimientoService.getConcimientosVinculados(map));
                map.put("ntipoconocimientoid", Constante.WIKI.toString());
                mb.setListaTargetVinculosWK(conocimientoService.getConcimientosVinculados(map));
                DiscusionService discusionService = (DiscusionService) ServiceFinder.findBean("DiscusionService");
                List listaDiscusion = discusionService
                        .getDiscusionesByConocimiento(mb.getSelectedWiki().getNconocimientoid());
                if (CollectionUtils.isNotEmpty(listaDiscusion)) {
                    Discusion discusion = (Discusion) listaDiscusion.get(0);
                    mb.setSelectedDiscusion(discusion);
                    DiscusionSeccionService discusionSeccionService = (DiscusionSeccionService) ServiceFinder
                            .findBean("DiscusionSeccionService");
                    mb.setListaDiscusionSeccion(
                            discusionSeccionService.getSeccionesByDiscusion(discusion.getNdiscusionid()));
                    UserService userService = (UserService) ServiceFinder.findBean("UserService");
                    if (CollectionUtils.isNotEmpty(mb.getListaDiscusionSeccion())) {
                        for (DiscusionSeccion discusionSeccion : mb.getListaDiscusionSeccion()) {
                            discusionSeccion.setDiscusionHtml(
                                    GcmFileUtils.readStringFromFileServer(discusionSeccion.getVruta(), "html.txt"));
                            User user = userService.getUserByLogin(discusionSeccion.getVusuariocreacion());
                            discusionSeccion.setUsuarioNombre(user.getVnombres() + " " + user.getVapellidos());
                        }
                    }
                }
                HistorialService historialService = (HistorialService) ServiceFinder.findBean("HistorialService");
                mb.setListaHistorial(
                        historialService.getHistorialesByConocimiento(mb.getSelectedWiki().getNconocimientoid()));
                if (CollectionUtils.isNotEmpty(mb.getListaHistorial())) {
                    UserService userService = (UserService) ServiceFinder.findBean("UserService");
                    VinculoHistService vinculoHistService = (VinculoHistService) ServiceFinder
                            .findBean("VinculoHistService");
                    for (Historial historial : mb.getListaHistorial()) {
                        User user = userService.getUserByLogin(historial.getVusuariocreacion());
                        historial.setVnombreusuario(user.getVnombres() + " " + user.getVapellidos());
                        map = new HashMap();
                        map.put("nhistorialid", historial.getId().getNhistorialid().toString());
                        map.put("nconocimientoid", historial.getId().getNconocimientoid().toString());
                        map.put("flag", true);
                        map.put("ntipoconocimientoid", Constante.BASELEGAL.toString());
                        historial.setListaVinculosBL(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                        map.put("ntipoconocimientoid", Constante.PREGUNTAS.toString());
                        historial.setListaVinculosPR(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                        map.put("ntipoconocimientoid", Constante.BUENAPRACTICA.toString());
                        historial.setListaVinculosBP(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                        map.put("ntipoconocimientoid", Constante.CONTENIDO.toString());
                        historial.setListaVinculosCT(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                        map.put("ntipoconocimientoid", Constante.OPORTUNIDADMEJORA.toString());
                        historial.setListaVinculosOM(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                        map.put("ntipoconocimientoid", Constante.WIKI.toString());
                        historial.setListaVinculosWK(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                    }
                }
                CalificacionService calificacionService = (CalificacionService) ServiceFinder
                        .findBean("CalificacionService");
                mb.setListaCalificacion(calificacionService
                        .getCalificacionesByConocimiento(mb.getSelectedWiki().getNconocimientoid()));
                if (CollectionUtils.isNotEmpty(mb.getListaCalificacion())) {
                    UserService userService = (UserService) ServiceFinder.findBean("UserService");
                    for (Calificacion calificacion : mb.getListaCalificacion()) {
                        User user = userService.getUserByLogin(calificacion.getVusuariocreacion());
                        calificacion.setUsuarioNombre(user.getVnombres() + " " + user.getVapellidos());
                    }
                }
                JSFUtils.getSession().setAttribute("wikiMB", mb);
                if (popup) {
                    if (tmpPopup) {
                        RequestContext.getCurrentInstance()
                                .execute("popupCenter('/gescon/pages/wiki/vistaPopup.xhtml','','1000','650');");
                    } else {
                        RequestContext.getCurrentInstance()
                                .execute("popupCenter('/gescon/pages/wiki/vistaConsulta.xhtml','','1000','650');");
                    }
                    this.setTempPopup("true");
                } else {
                    if (tmpPopup) {
                        FacesContext.getCurrentInstance().getExternalContext()
                                .redirect("/gescon/pages/wiki/vistaPopup.xhtml");
                        this.setTempPopup("true");
                    } else {
                        FacesContext.getCurrentInstance().getExternalContext()
                                .redirect("/gescon/pages/wiki/vistaConsulta.xhtml");
                        this.setTempPopup("false");
                    }
                }
                break;
            }
            case 4: { //Contenido
                ResourceBundle bundle = ResourceBundle.getBundle(Parameters.getParameters());
                String path = bundle.getString("path");
                ContenidoMB ct = new ContenidoMB();
                ConocimientoService service = (ConocimientoService) ServiceFinder.findBean("ConocimientoService");
                ct.setSelectedContenido(service.getConocimientoById(BigDecimal.valueOf(id)));
                ct.setContenidoHtml(
                        GcmFileUtils.readStringFromFileServer(ct.getSelectedContenido().getVruta(), "html.txt"));
                CategoriaService categoriaService = (CategoriaService) ServiceFinder.findBean("CategoriaService");
                ct.setSelectedCategoria(
                        categoriaService.getCategoriaById(ct.getSelectedContenido().getNcategoriaid()));
                ArchivoConocimientoService archivoservice = (ArchivoConocimientoService) ServiceFinder
                        .findBean("ArchivoConocimientoService");
                ct.setListaArchivos(
                        archivoservice.getArchivosByConocimiento(ct.getSelectedContenido().getNconocimientoid()));
                if (CollectionUtils.isNotEmpty(ct.getListaArchivos())) {
                    for (ArchivoConocimiento ac : ct.getListaArchivos()) {
                        ac.setContent(
                                new DefaultStreamedContent(new FileInputStream(new File(path + ac.getVruta())),
                                        ac.getVcontenttype(), ac.getVnombre()));
                    }
                }
                ContenidoService contenidoService = (ContenidoService) ServiceFinder.findBean("ContenidoService");
                HashMap map = new HashMap();
                map.put("nconocimientoid", ct.getSelectedContenido().getNconocimientoid().toString());
                map.put("flag", true);
                map.put("ntipoconocimientoid", Constante.BASELEGAL.toString());
                ct.setListaTargetVinculosBL(contenidoService.getConcimientosVinculados(map));
                map.put("ntipoconocimientoid", Constante.PREGUNTAS.toString());
                ct.setListaTargetVinculosPR(contenidoService.getConcimientosVinculados(map));
                map.put("ntipoconocimientoid", Constante.BUENAPRACTICA.toString());
                ct.setListaTargetVinculosBP(contenidoService.getConcimientosVinculados(map));
                map.put("ntipoconocimientoid", Constante.CONTENIDO.toString());
                ct.setListaTargetVinculosCT(contenidoService.getConcimientosVinculados(map));
                map.put("ntipoconocimientoid", Constante.OPORTUNIDADMEJORA.toString());
                ct.setListaTargetVinculosOM(contenidoService.getConcimientosVinculados(map));
                map.put("ntipoconocimientoid", Constante.WIKI.toString());
                ct.setListaTargetVinculosWK(contenidoService.getConcimientosVinculados(map));

                DiscusionService discusionService = (DiscusionService) ServiceFinder.findBean("DiscusionService");
                List listaDiscusion = discusionService
                        .getDiscusionesByConocimiento(ct.getSelectedContenido().getNconocimientoid());
                if (CollectionUtils.isNotEmpty(listaDiscusion)) {
                    Discusion discusion = (Discusion) listaDiscusion.get(0);
                    ct.setSelectedDiscusion(discusion);
                    DiscusionSeccionService discusionSeccionService = (DiscusionSeccionService) ServiceFinder
                            .findBean("DiscusionSeccionService");
                    ct.setListaDiscusionSeccion(
                            discusionSeccionService.getSeccionesByDiscusion(discusion.getNdiscusionid()));
                    UserService userService = (UserService) ServiceFinder.findBean("UserService");
                    if (CollectionUtils.isNotEmpty(ct.getListaDiscusionSeccion())) {
                        for (DiscusionSeccion discusionSeccion : ct.getListaDiscusionSeccion()) {
                            discusionSeccion.setDiscusionHtml(
                                    GcmFileUtils.readStringFromFileServer(discusionSeccion.getVruta(), "html.txt"));
                            User user = userService.getUserByLogin(discusionSeccion.getVusuariocreacion());
                            discusionSeccion.setUsuarioNombre(user.getVnombres() + " " + user.getVapellidos());
                        }
                    }
                }
                HistorialService historialService = (HistorialService) ServiceFinder.findBean("HistorialService");
                ct.setListaHistorial(historialService
                        .getHistorialesByConocimiento(ct.getSelectedContenido().getNconocimientoid()));
                if (CollectionUtils.isNotEmpty(ct.getListaHistorial())) {
                    UserService userService = (UserService) ServiceFinder.findBean("UserService");
                    VinculoHistService vinculoHistService = (VinculoHistService) ServiceFinder
                            .findBean("VinculoHistService");
                    for (Historial historial : ct.getListaHistorial()) {
                        User user = userService.getUserByLogin(historial.getVusuariocreacion());
                        historial.setVnombreusuario(user.getVnombres() + " " + user.getVapellidos());
                        map = new HashMap();
                        map.put("nhistorialid", historial.getId().getNhistorialid().toString());
                        map.put("nconocimientoid", historial.getId().getNconocimientoid().toString());
                        map.put("flag", true);
                        map.put("ntipoconocimientoid", Constante.BASELEGAL.toString());
                        historial.setListaVinculosBL(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                        map.put("ntipoconocimientoid", Constante.PREGUNTAS.toString());
                        historial.setListaVinculosPR(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                        map.put("ntipoconocimientoid", Constante.BUENAPRACTICA.toString());
                        historial.setListaVinculosBP(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                        map.put("ntipoconocimientoid", Constante.CONTENIDO.toString());
                        historial.setListaVinculosCT(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                        map.put("ntipoconocimientoid", Constante.OPORTUNIDADMEJORA.toString());
                        historial.setListaVinculosOM(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                        map.put("ntipoconocimientoid", Constante.WIKI.toString());
                        historial.setListaVinculosWK(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                    }
                }
                CalificacionService calificacionService = (CalificacionService) ServiceFinder
                        .findBean("CalificacionService");
                ct.setListaCalificacion(calificacionService
                        .getCalificacionesByConocimiento(ct.getSelectedContenido().getNconocimientoid()));
                if (CollectionUtils.isNotEmpty(ct.getListaCalificacion())) {
                    UserService userService = (UserService) ServiceFinder.findBean("UserService");
                    for (Calificacion calificacion : ct.getListaCalificacion()) {
                        User user = userService.getUserByLogin(calificacion.getVusuariocreacion());
                        calificacion.setUsuarioNombre(user.getVnombres() + " " + user.getVapellidos());
                    }
                }
                JSFUtils.getSession().setAttribute("contenidoMB", ct);
                if (popup) {
                    if (tmpPopup) {
                        RequestContext.getCurrentInstance().execute(
                                "popupCenter('/gescon/pages/contenido/vistaPopup.xhtml','','1000','650');");
                    } else {
                        RequestContext.getCurrentInstance().execute(
                                "popupCenter('/gescon/pages/contenido/vistaConsulta.xhtml','','1000','650');");
                    }
                    this.setTempPopup("true");
                } else {
                    if (tmpPopup) {
                        FacesContext.getCurrentInstance().getExternalContext()
                                .redirect("/gescon/pages/contenido/vistaPopup.xhtml");
                        this.setTempPopup("true");
                    } else {
                        FacesContext.getCurrentInstance().getExternalContext()
                                .redirect("/gescon/pages/contenido/vistaConsulta.xhtml");
                        this.setTempPopup("false");
                    }
                }
                break;
            }
            case 5: { //Buena Practica
                BuenaPracticaMB bp = new BuenaPracticaMB();
                ConocimientoService conocimientoService = (ConocimientoService) ServiceFinder
                        .findBean("ConocimientoService");
                bp.setSelectedBuenaPractica(conocimientoService.getConocimientoById(BigDecimal.valueOf(id)));
                CategoriaService categoriaService = (CategoriaService) ServiceFinder.findBean("CategoriaService");
                bp.setSelectedCategoria(
                        categoriaService.getCategoriaById(bp.getSelectedBuenaPractica().getNcategoriaid()));
                bp.setDescripcionHtml(GcmFileUtils
                        .readStringFromFileServer(bp.getSelectedBuenaPractica().getVruta(), "html.txt"));
                SeccionService seccionService = (SeccionService) ServiceFinder.findBean("SeccionService");
                bp.setListaSeccion(seccionService
                        .getSeccionesByConocimiento(bp.getSelectedBuenaPractica().getNconocimientoid()));
                if (CollectionUtils.isNotEmpty(bp.getListaSeccion())) {
                    for (Seccion seccion : bp.getListaSeccion()) {
                        seccion.setDetalleHtml(
                                GcmFileUtils.readStringFromFileServer(seccion.getVruta(), "html.txt"));
                    }
                }
                HashMap map = new HashMap();
                map.put("nconocimientoid", bp.getSelectedBuenaPractica().getNconocimientoid().toString());
                map.put("flag", true);
                map.put("ntipoconocimientoid", Constante.BASELEGAL.toString());
                bp.setListaTargetVinculosBL(conocimientoService.getConcimientosVinculados(map));
                map.put("ntipoconocimientoid", Constante.PREGUNTAS.toString());
                bp.setListaTargetVinculosPR(conocimientoService.getConcimientosVinculados(map));
                map.put("ntipoconocimientoid", Constante.BUENAPRACTICA.toString());
                bp.setListaTargetVinculosBP(conocimientoService.getConcimientosVinculados(map));
                map.put("ntipoconocimientoid", Constante.CONTENIDO.toString());
                bp.setListaTargetVinculosCT(conocimientoService.getConcimientosVinculados(map));
                map.put("ntipoconocimientoid", Constante.OPORTUNIDADMEJORA.toString());
                bp.setListaTargetVinculosOM(conocimientoService.getConcimientosVinculados(map));
                map.put("ntipoconocimientoid", Constante.WIKI.toString());
                bp.setListaTargetVinculosWK(conocimientoService.getConcimientosVinculados(map));
                DiscusionService discusionService = (DiscusionService) ServiceFinder.findBean("DiscusionService");
                List listaDiscusion = discusionService
                        .getDiscusionesByConocimiento(bp.getSelectedBuenaPractica().getNconocimientoid());
                if (CollectionUtils.isNotEmpty(listaDiscusion)) {
                    Discusion discusion = (Discusion) listaDiscusion.get(0);
                    bp.setSelectedDiscusion(discusion);
                    DiscusionSeccionService discusionSeccionService = (DiscusionSeccionService) ServiceFinder
                            .findBean("DiscusionSeccionService");
                    bp.setListaDiscusionSeccion(
                            discusionSeccionService.getSeccionesByDiscusion(discusion.getNdiscusionid()));
                    UserService userService = (UserService) ServiceFinder.findBean("UserService");
                    if (CollectionUtils.isNotEmpty(bp.getListaDiscusionSeccion())) {
                        for (DiscusionSeccion discusionSeccion : bp.getListaDiscusionSeccion()) {
                            discusionSeccion.setDiscusionHtml(
                                    GcmFileUtils.readStringFromFileServer(discusionSeccion.getVruta(), "html.txt"));
                            User user = userService.getUserByLogin(discusionSeccion.getVusuariocreacion());
                            discusionSeccion.setUsuarioNombre(user.getVnombres() + " " + user.getVapellidos());
                        }
                    }
                }
                HistorialService historialService = (HistorialService) ServiceFinder.findBean("HistorialService");
                bp.setListaHistorial(historialService
                        .getHistorialesByConocimiento(bp.getSelectedBuenaPractica().getNconocimientoid()));
                if (CollectionUtils.isNotEmpty(bp.getListaHistorial())) {
                    UserService userService = (UserService) ServiceFinder.findBean("UserService");
                    VinculoHistService vinculoHistService = (VinculoHistService) ServiceFinder
                            .findBean("VinculoHistService");
                    for (Historial historial : bp.getListaHistorial()) {
                        User user = userService.getUserByLogin(historial.getVusuariocreacion());
                        historial.setVnombreusuario(user.getVnombres() + " " + user.getVapellidos());
                        map = new HashMap();
                        map.put("nhistorialid", historial.getId().getNhistorialid().toString());
                        map.put("nconocimientoid", historial.getId().getNconocimientoid().toString());
                        map.put("flag", true);
                        map.put("ntipoconocimientoid", Constante.BASELEGAL.toString());
                        historial.setListaVinculosBL(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                        map.put("ntipoconocimientoid", Constante.PREGUNTAS.toString());
                        historial.setListaVinculosPR(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                        map.put("ntipoconocimientoid", Constante.BUENAPRACTICA.toString());
                        historial.setListaVinculosBP(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                        map.put("ntipoconocimientoid", Constante.CONTENIDO.toString());
                        historial.setListaVinculosCT(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                        map.put("ntipoconocimientoid", Constante.OPORTUNIDADMEJORA.toString());
                        historial.setListaVinculosOM(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                        map.put("ntipoconocimientoid", Constante.WIKI.toString());
                        historial.setListaVinculosWK(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                    }
                }
                CalificacionService calificacionService = (CalificacionService) ServiceFinder
                        .findBean("CalificacionService");
                bp.setListaCalificacion(calificacionService
                        .getCalificacionesByConocimiento(bp.getSelectedBuenaPractica().getNconocimientoid()));
                if (CollectionUtils.isNotEmpty(bp.getListaCalificacion())) {
                    UserService userService = (UserService) ServiceFinder.findBean("UserService");
                    for (Calificacion calificacion : bp.getListaCalificacion()) {
                        User user = userService.getUserByLogin(calificacion.getVusuariocreacion());
                        calificacion.setUsuarioNombre(user.getVnombres() + " " + user.getVapellidos());
                    }
                }
                JSFUtils.getSession().setAttribute("buenaPracticaMB", bp);
                if (popup) {
                    if (tmpPopup) {
                        RequestContext.getCurrentInstance().execute(
                                "popupCenter('/gescon/pages/buenapractica/vistaPopup.xhtml','','1000','650');");
                    } else {
                        RequestContext.getCurrentInstance().execute(
                                "popupCenter('/gescon/pages/buenapractica/vistaConsulta.xhtml','','1000','650');");
                    }
                    this.setTempPopup("true");
                } else {
                    if (tmpPopup) {
                        FacesContext.getCurrentInstance().getExternalContext()
                                .redirect("/gescon/pages/buenapractica/vistaPopup.xhtml");
                        this.setTempPopup("true");
                    } else {
                        FacesContext.getCurrentInstance().getExternalContext()
                                .redirect("/gescon/pages/buenapractica/vistaConsulta.xhtml");
                        this.setTempPopup("false");
                    }
                }
                break;
            }
            case 6: { //Oportunidad de Mejora
                OportunidadMB om = new OportunidadMB();
                ConocimientoService conocimientoService = (ConocimientoService) ServiceFinder
                        .findBean("ConocimientoService");
                om.setSelectedOportunidad(conocimientoService.getConocimientoById(BigDecimal.valueOf(id)));
                CategoriaService categoriaService = (CategoriaService) ServiceFinder.findBean("CategoriaService");
                om.setSelectedCategoria(
                        categoriaService.getCategoriaById(om.getSelectedOportunidad().getNcategoriaid()));
                om.setContenidoHtml(
                        GcmFileUtils.readStringFromFileServer(om.getSelectedOportunidad().getVruta(), "html.txt"));
                SeccionService seccionService = (SeccionService) ServiceFinder.findBean("SeccionService");
                om.setListaSeccion(seccionService
                        .getSeccionesByConocimiento(om.getSelectedOportunidad().getNconocimientoid()));
                if (CollectionUtils.isNotEmpty(om.getListaSeccion())) {
                    for (Seccion seccion : om.getListaSeccion()) {
                        seccion.setDetalleHtml(
                                GcmFileUtils.readStringFromFileServer(seccion.getVruta(), "html.txt"));
                    }
                }
                HashMap map = new HashMap();
                map.put("nconocimientoid", om.getSelectedOportunidad().getNconocimientoid().toString());
                map.put("flag", true);
                map.put("ntipoconocimientoid", Constante.BASELEGAL.toString());
                om.setListaTargetVinculosBL(conocimientoService.getConcimientosVinculados(map));
                map.put("ntipoconocimientoid", Constante.PREGUNTAS.toString());
                om.setListaTargetVinculosPR(conocimientoService.getConcimientosVinculados(map));
                map.put("ntipoconocimientoid", Constante.BUENAPRACTICA.toString());
                om.setListaTargetVinculosBP(conocimientoService.getConcimientosVinculados(map));
                map.put("ntipoconocimientoid", Constante.CONTENIDO.toString());
                om.setListaTargetVinculosCT(conocimientoService.getConcimientosVinculados(map));
                map.put("ntipoconocimientoid", Constante.OPORTUNIDADMEJORA.toString());
                om.setListaTargetVinculosOM(conocimientoService.getConcimientosVinculados(map));
                map.put("ntipoconocimientoid", Constante.WIKI.toString());
                om.setListaTargetVinculosWK(conocimientoService.getConcimientosVinculados(map));
                DiscusionService discusionService = (DiscusionService) ServiceFinder.findBean("DiscusionService");
                List listaDiscusion = discusionService
                        .getDiscusionesByConocimiento(om.getSelectedOportunidad().getNconocimientoid());
                if (CollectionUtils.isNotEmpty(listaDiscusion)) {
                    Discusion discusion = (Discusion) listaDiscusion.get(0);
                    om.setSelectedDiscusion(discusion);
                    DiscusionSeccionService discusionSeccionService = (DiscusionSeccionService) ServiceFinder
                            .findBean("DiscusionSeccionService");
                    om.setListaDiscusionSeccion(
                            discusionSeccionService.getSeccionesByDiscusion(discusion.getNdiscusionid()));
                    UserService userService = (UserService) ServiceFinder.findBean("UserService");
                    if (CollectionUtils.isNotEmpty(om.getListaDiscusionSeccion())) {
                        for (DiscusionSeccion discusionSeccion : om.getListaDiscusionSeccion()) {
                            discusionSeccion.setDiscusionHtml(
                                    GcmFileUtils.readStringFromFileServer(discusionSeccion.getVruta(), "html.txt"));
                            User user = userService.getUserByLogin(discusionSeccion.getVusuariocreacion());
                            discusionSeccion.setUsuarioNombre(user.getVnombres() + " " + user.getVapellidos());
                        }
                    }
                }
                HistorialService historialService = (HistorialService) ServiceFinder.findBean("HistorialService");
                om.setListaHistorial(historialService
                        .getHistorialesByConocimiento(om.getSelectedOportunidad().getNconocimientoid()));
                if (CollectionUtils.isNotEmpty(om.getListaHistorial())) {
                    UserService userService = (UserService) ServiceFinder.findBean("UserService");
                    VinculoHistService vinculoHistService = (VinculoHistService) ServiceFinder
                            .findBean("VinculoHistService");
                    for (Historial historial : om.getListaHistorial()) {
                        User user = userService.getUserByLogin(historial.getVusuariocreacion());
                        historial.setVnombreusuario(user.getVnombres() + " " + user.getVapellidos());
                        map = new HashMap();
                        map.put("nhistorialid", historial.getId().getNhistorialid().toString());
                        map.put("nconocimientoid", historial.getId().getNconocimientoid().toString());
                        map.put("flag", true);
                        map.put("ntipoconocimientoid", Constante.BASELEGAL.toString());
                        historial.setListaVinculosBL(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                        map.put("ntipoconocimientoid", Constante.PREGUNTAS.toString());
                        historial.setListaVinculosPR(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                        map.put("ntipoconocimientoid", Constante.BUENAPRACTICA.toString());
                        historial.setListaVinculosBP(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                        map.put("ntipoconocimientoid", Constante.CONTENIDO.toString());
                        historial.setListaVinculosCT(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                        map.put("ntipoconocimientoid", Constante.OPORTUNIDADMEJORA.toString());
                        historial.setListaVinculosOM(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                        map.put("ntipoconocimientoid", Constante.WIKI.toString());
                        historial.setListaVinculosWK(vinculoHistService.getConcimientosVinculadosByHistorial(map));
                    }
                }
                CalificacionService calificacionService = (CalificacionService) ServiceFinder
                        .findBean("CalificacionService");
                om.setListaCalificacion(calificacionService
                        .getCalificacionesByConocimiento(om.getSelectedOportunidad().getNconocimientoid()));
                if (CollectionUtils.isNotEmpty(om.getListaCalificacion())) {
                    UserService userService = (UserService) ServiceFinder.findBean("UserService");
                    for (Calificacion calificacion : om.getListaCalificacion()) {
                        User user = userService.getUserByLogin(calificacion.getVusuariocreacion());
                        calificacion.setUsuarioNombre(user.getVnombres() + " " + user.getVapellidos());
                    }
                }
                JSFUtils.getSession().setAttribute("oportunidadMB", om);
                if (popup) {
                    if (tmpPopup) {
                        RequestContext.getCurrentInstance().execute(
                                "popupCenter('/gescon/pages/oportunidad/vistaPopup.xhtml','','1000','650');");
                    } else {
                        RequestContext.getCurrentInstance().execute(
                                "popupCenter('/gescon/pages/oportunidad/vistaConsulta.xhtml','','1000','650');");
                    }
                    this.setTempPopup("true");
                } else {
                    if (tmpPopup) {
                        FacesContext.getCurrentInstance().getExternalContext()
                                .redirect("/gescon/pages/oportunidad/vistaPopup.xhtml");
                        this.setTempPopup("true");
                    } else {
                        FacesContext.getCurrentInstance().getExternalContext()
                                .redirect("/gescon/pages/oportunidad/vistaConsulta.xhtml");
                        this.setTempPopup("false");
                    }
                }
                break;
            }
            }
            RequestContext.getCurrentInstance().execute("PF('alertDialog').hide();");
        } catch (Exception e) {
            e.getMessage();
            e.printStackTrace();
        }
    }

    public String back() {
        try {
            JSFUtils.getSession().removeAttribute("administracionMB");
            JSFUtils.getSession().removeAttribute("baseLegalMB");
            JSFUtils.getSession().removeAttribute("buenaPracticaMB");
            JSFUtils.getSession().removeAttribute("categoriaMB");
            JSFUtils.getSession().removeAttribute("contenidoMB");
            JSFUtils.getSession().removeAttribute("listaSessionMB");
            JSFUtils.getSession().removeAttribute("oportunidadMB");
            JSFUtils.getSession().removeAttribute("wikiMB");
        } catch (Exception e) {
            e.getMessage();
            e.printStackTrace();
        }
        return "/pages/consulta?faces-redirect=true";
    }

    public void reporte() {
        HashMap parametrosReporte = new HashMap();
        HashMap parametrosJasper = new HashMap();
        File archivo;
        List<HashMap<String, Object>> listaDatosReporte;

        HashMap filter = new HashMap();
        try {
            filter.put("fCategoria", this.getCategoriesFilter());
            filter.put("fFromDate", this.getFechaInicio());
            filter.put("fToDate", this.getFechaFin());
            filter.put("fType", this.getTypesFilter());
            if (StringUtils.isNotBlank(this.getSearchText())) {
                HashMap map = Indexador.search(this.getSearchText());
                filter.put("fCodesBL", (String) map.get("codesBL"));
                filter.put("fCodesPR", (String) map.get("codesPR"));
                filter.put("fCodesC", (String) map.get("codesC"));
            } else {
                filter.remove("fCodesBL");
                filter.remove("fCodesPR");
                filter.remove("fCodesC");
            }
            filter.put("order", this.getOrdenpor());
            ConsultaService service = (ConsultaService) ServiceFinder.findBean("ConsultaService");
            listaDatosReporte = service.listarReporte(filter);

            archivo = new File(JSFUtils.getServletContext().getRealPath("/pages/reportes/reporteConsulta.jasper"));
            String rutaImagen = JSFUtils.getServletContext().getRealPath("/resources/images/logogescon2.png");
            String rutaBanner = JSFUtils.getServletContext().getRealPath("/resources/images/banner.png");
            parametrosJasper.put("P_IMAGEN", rutaImagen);
            parametrosJasper.put("P_BANNER", rutaBanner);
            List<HashMap<String, Object>> listaDatos = listaDatosReporte;
            JRDataSource fuenteDatos = new JRBeanCollectionDataSource(listaDatos);
            JasperReport reporteJasper = (JasperReport) JRLoader.loadObjectFromFile(archivo.getPath());
            //JasperReport reporteJasper = JasperCompileManager.compileReport(archivo.getPath());
            JasperPrint documentoPdf = JasperFillManager.fillReport(reporteJasper, parametrosJasper, fuenteDatos);
            HttpServletResponse response = JSFUtils.getResponse();
            if (documentoPdf != null) {
                response.setContentType("application/pdf");
                response.setHeader("Content-Disposition", "attachment;filename=" + "ReporteConsulta" + ".pdf");
                ServletOutputStream ouputStream = response.getOutputStream();
                JRPdfExporter pdfExporter = new JRPdfExporter();
                pdfExporter.setParameter(JRExporterParameter.JASPER_PRINT, documentoPdf);
                pdfExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
                pdfExporter.exportReport();
                FacesContext.getCurrentInstance().responseComplete();
            }
        } catch (JRException e) {
            e.getMessage();
            e.printStackTrace();
        } catch (IOException e) {
            e.getMessage();
            e.printStackTrace();
        }
    }
}