com.primeleaf.krystal.web.view.console.SearchView.java Source code

Java tutorial

Introduction

Here is the source code for com.primeleaf.krystal.web.view.console.SearchView.java

Source

/**
 * Created On 05-Jan-2014
 * Copyright 2010 by Primeleaf Consulting (P) Ltd.,
 * #29,784/785 Hendre Castle,
 * D.S.Babrekar Marg,
 * Gokhale Road(North),
 * Dadar,Mumbai 400 028
 * India
 * 
 * All rights reserved.
 *
 * This software is the confidential and proprietary information
 * of Primeleaf Consulting (P) Ltd. ("Confidential Information").  
 * You shall not disclose such Confidential Information and shall use
 * it only in accordance with the terms of the license agreement
 * you entered into with Primeleaf Consulting (P) Ltd.
 */

package com.primeleaf.krystal.web.view.console;

import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang3.StringEscapeUtils;

import com.primeleaf.krystal.constants.HTTPConstants;
import com.primeleaf.krystal.model.vo.DocumentClass;
import com.primeleaf.krystal.model.vo.DocumentNote;
import com.primeleaf.krystal.model.vo.Hit;
import com.primeleaf.krystal.model.vo.IndexDefinition;
import com.primeleaf.krystal.util.StringHelper;
import com.primeleaf.krystal.web.view.WebPageTemplate;
import com.primeleaf.krystal.web.view.WebView;

/**
 * @author Rahul Kubadia
 *
 */
public class SearchView extends WebView {
    public SearchView(HttpServletRequest request, HttpServletResponse response) throws Exception {
        init(request, response);
    }

    public void render() throws Exception {
        WebPageTemplate template = new WebPageTemplate(request, response);
        template.generateHeader();
        printSearchResults();
        template.generateFooter();
    }

    private void printBreadCrumbs() throws Exception {
        out.println("<ol class=\"breadcrumb\">");
        out.println("<li><a href=\"/console\">My Workspace</a></li>");
        out.println("<li class=\"active\">Search Results</li>");
        out.println("</ol>");
    }

    private void printSearchResults() throws Exception {
        printBreadCrumbs();
        if (request.getAttribute(HTTPConstants.REQUEST_ERROR) != null) {
            printError((String) request.getAttribute(HTTPConstants.REQUEST_ERROR));
        }

        String searchText = request.getAttribute("SEARCHTEXT").toString();
        searchText = StringEscapeUtils.escapeHtml4(searchText);

        out.println("<div id=\"searchresults\">");

        out.println("<div class=\"panel panel-default\">");
        out.println("<div class=\"panel-heading\"><h4><i class=\"fa fa-lg fa-search\"></i> Search Results : "
                + searchText + " </h4></div>");
        out.println("</div>");

        printDocumentClasses();
        printDocuments();
        printDocumentNotes();

        out.println("<div class=\"well well-sm\">");
        out.println("Total time taken to retreive results : " + request.getAttribute("EXECUTIONTIME") + " seconds");
        out.println("</div>");

        out.println("</div>");

        String[] searchWords = searchText.split("\\s+");
        String classNames[] = { "highlight", "btn-danger", "btn-success", "btn-warning", "btn-default" };
        int i = 0;
        for (String searchWord : searchWords) {
            String className = classNames[i % 5];
            i++;
            out.println("<script>$(\"#searchresults \").highlight(\"" + StringEscapeUtils.escapeHtml4(searchWord)
                    + "\",  { element: 'span', className: '" + className + "' });</script>");
        }
    }

    @SuppressWarnings("unchecked")
    private void printDocumentClasses() {
        ArrayList<DocumentClass> documentClassList = (ArrayList<DocumentClass>) request
                .getAttribute("MATCHINGDOCUMENTCLASSLIST");
        if (documentClassList.size() > 0) {
            out.println("<div class=\"panel panel-default\">");
            out.println("<div class=\"panel-heading\">");
            out.println("<div class=\"row\">");
            out.println("<div class=\"col-xs-8\">");
            out.println("<h4><i class=\"fa fa-folder-open fa-lg\"></i> Document Classes</h4>");
            out.println("</div>");
            out.println("<div class=\"col-xs-4 text-right\">");
            out.println("<h4>" + documentClassList.size() + " Document Classes</h4>");
            out.println("</div>");
            out.println("</div>");
            out.println("</div>");
            out.println("<div class=\"list-group\">");
            for (DocumentClass documentClass : documentClassList) {
                out.println("<li class=\"list-group-item\">");
                out.println("<h3>" + StringEscapeUtils.escapeHtml4(documentClass.getClassName()) + "</h3>");
                out.println("<h4>" + StringEscapeUtils.escapeHtml4(documentClass.getClassDescription()) + "</h4>");

                out.println("<p>");
                out.println("<a href=\"/console/opendocumentclass?classid=" + documentClass.getClassId()
                        + "\">View All</a> | ");
                out.println("<a href=\"/console/searchdocumentclass?classid=" + documentClass.getClassId()
                        + "\">Search</a>");
                out.println("</p>");

                out.println("</li>");
            }
            out.println("</div>");
            out.println("</div>");
        }
    }

    @SuppressWarnings("unchecked")
    private void printDocuments() {
        ArrayList<DocumentClass> documentClasses = (ArrayList<DocumentClass>) request
                .getAttribute("DOCUMENTCLASSLIST");
        for (DocumentClass documentClass : documentClasses) {
            ArrayList<Hit> hits = (ArrayList<Hit>) request.getAttribute(documentClass.getClassId() + "_HITS");
            if (hits.size() > 0) {
                out.println("<div class=\"panel panel-default\">");
                out.println("<div class=\"panel-heading\">");
                out.println("<div class=\"row\">");
                out.println("<div class=\"col-xs-8\">");
                out.println("<h4><i class=\"fa fa-file fa-lg\"></i> "
                        + StringEscapeUtils.escapeHtml4(documentClass.getClassName()) + "");
                out.println(" - " + StringEscapeUtils.escapeHtml4(documentClass.getClassDescription()) + "</h4>");
                out.println("</div>");
                out.println("<div class=\"col-xs-4 text-right\">");
                out.println("<h4>" + hits.size() + " Documents</h4>");
                out.println("</div>");
                out.println("</div>");//row
                out.println("</div>");//panel-heading

                out.println("<div class=\"table-responsive\">");
                out.println("<table class=\"table table-striped\">");
                out.println("<thead>");
                out.println("<tr>");
                out.println("<th class=\"text-center\">Document ID</th>");
                if (documentClass.isRevisionControlEnabled()) {
                    out.println("<th class=\"text-center\">Revision ID</th>");
                }
                for (IndexDefinition indexDefinition : documentClass.getIndexDefinitions()) {
                    String indexDescription = indexDefinition.getIndexDisplayName();
                    out.println("<th>" + StringEscapeUtils.escapeHtml4(indexDescription) + "</th>");
                }
                out.println("<th class=\"text-right\">&nbsp;</th>");
                out.println("</tr>");
                out.println("</thead>");

                out.println("<tbody>");
                for (Hit hit : hits) {
                    out.println("<tr>");
                    out.println("<td class=\"text-center\">" + hit.documentId + "</td>");
                    if (documentClass.isRevisionControlEnabled()) {
                        out.println("<td class=\"text-center\">" + hit.revisionId + "</td>");
                    }
                    for (String value : hit.indexValues) {
                        out.println("<td>" + StringEscapeUtils.escapeHtml4(value) + "</td>");
                    }
                    out.println("<td class=\"text-right\">");
                    out.println("<a href=\"" + HTTPConstants.BASEURL + "/console/viewdocument?documentid="
                            + hit.documentId + "&revisionid=" + hit.revisionId
                            + "\" title=\"View Document\">View Document</a>");
                    out.println("</tr>");
                }
                out.println("</tbody>");
                out.println("</table>");
                out.println("</div>");//table-responsive
                out.println("</div>");//panel
            }
        }
    }

    @SuppressWarnings("unchecked")
    private void printDocumentNotes() {
        ArrayList<DocumentNote> documentNotes = (ArrayList<DocumentNote>) request.getAttribute("NOTELIST");
        if (documentNotes.size() > 0) {
            out.println("<div class=\"panel panel-default\">");
            out.println("<div class=\"panel-heading\">");
            out.println("<div class=\"row\">");
            out.println("<div class=\"col-xs-8\">");
            out.println("<h4><i class=\"fa fa-comments fa-lg\"></i> Document Notes</h4>");
            out.println("</div>");
            out.println("<div class=\"col-xs-4 text-right\">");
            out.println("<h4>" + documentNotes.size() + " Document Notes</h4>");
            out.println("</div>");
            out.println("</div>");//row
            out.println("</div>");//panel-heading
            out.println("<ul class=\"list-group\">");
            for (DocumentNote note : documentNotes) {
                String cssClass = "";
                if ("P".equalsIgnoreCase(note.getNoteType())) {
                    cssClass = "text-success";
                }
                out.println("<li class=\"list-group-item " + cssClass + "\">");
                out.println("<h4>" + StringEscapeUtils.escapeHtml4(note.getNoteData()) + "</h4>");
                out.println("<h5>" + StringEscapeUtils.escapeHtml4(note.getUserName()) + "</h5>");
                out.println("<p>" + StringHelper.getFriendlyDateTime(note.getCreated()) + "</p>");
                if (note.getUserName().equalsIgnoreCase(loggedInUser.getUserName())) {
                    out.println("<p><a href=\"" + HTTPConstants.BASEURL + "/console/viewdocument?documentid="
                            + note.getDocumentId() + "\" title=\"View Document\">View Document</a></p>");
                }
                out.println("</li>");
            }
            out.println("</ul>");
            out.println("</div>");//panel
        }
    }

}