<%-- doReportSearch.jsp ------------------ Performs a search for Complete Reports and Report Excerpts in the OERL relational database given the parameters of the HTTP request object. Javascript Includes: focusWindow.js Dynamic Includes: inc_resultsFooter.html Static Includes: sinc_appendComponents.jsp sinc_appendContentAreas.jsp sinc_appendCurrentParams.jsp sinc_appendEmptyProjectParams.jsp sinc_checkForReset.jsp sinc_componentQueryConstants.jsp sinc_determineReferringPage.jsp sinc_initMyRequestParams.jsp sinc_oerlWebViewCon.jsp sinc_printComponentQuery.jsp sinc_printNumHits.jsp sinc_printExcerptRecord.jsp sinc_printProjectFields.jsp sinc_printProjectQuery.jsp sinc_processComponentParams.jsp sinc_processProjectParams.jsp sinc_projectQueryConstants.jsp sinc_restoreSavedSearch.jsp sinc_resultsIntro.jsp sinc_resultsTitle.jsp Created by zaz@sri.com. Last modified by zaz@sri.com, 4/28/03. --%> <%@ page errorPage="error.jsp" %> <%@ page import="java.io.File" %> <%@ page import="java.io.FileWriter" %> <%@ page import="java.sql.*" %> <%@ page import="java.text.DateFormat" %> <%@ page import="java.util.Date" %> <%@ page import="java.util.Hashtable" %> <%@ page import="java.util.Enumeration" %> <% final String longName = "Report"; %> <% final String shortName = "report"; %> <% final String logFilePath = "/var/www/html/oerl/search/search_logs/search_log_report.txt"; %> <%-- Get constants --%> <%@ include file="../jspcode/sinc_componentQueryConstants.jsp" %> <%@ include file="../jspcode/sinc_projectQueryConstants.jsp" %> <%-- Determine referring search page (get rid of query) --%> <%@ include file="codefragments/sinc_determineReferringPage.jsp" %> <%-- Initialize my request parameter hashtable --%> <% String filename = "doReportSearch.jsp"; %> <%@ include file="codefragments/sinc_initMyRequestParams.jsp" %> <%-- Check for search page reset --%> <%@ include file="codefragments/sinc_checkForReset.jsp" %> <%-- Process parameters --%> <%@ include file="codefragments/sinc_processProjectParams.jsp" %> <%@ include file="codefragments/sinc_processComponentParams.jsp" %> <% // Determine fields not in use by referring search page boolean hasReportTypeField = true; if (myRequestParams.get("noReportTypeField") != null) hasReportTypeField = false; // Append restrictions on query based on search parameters boolean doExcerpts = false, doCompleteReports = false; boolean hasEmptyReportType = false; values = (String []) myRequestParams.get("ReportType"); if (hasReportTypeField) { if (myRequestParams.get("ReportTypesAll") != null) { doExcerpts = true; doCompleteReports = true; } else if (values != null) { for (int i = 0; i < values.length; i++) { if (values[i] != null) { if (values[i].equals("Excerpt")) doExcerpts = true; else if (values[i].equals("Complete")) doCompleteReports = true; } } } else hasEmptyReportType = true; } else { doExcerpts = true; doCompleteReports = true; } // If there are unspecified parameters, go back to the search page if (hasEmptyFundingSource || hasEmptyOrganization || hasEmptyProjectType || hasEmptyContentArea || hasEmptyComponent || hasEmptyReportType) { // Reinstate last saved search, if it exists %><%@ include file="codefragments/sinc_restoreSavedSearch.jsp" %><% // Create search page URL to redirect to String searchPage = referringPage + "?hasEmptyFields=true&"; if (hasEmptyReportType) searchPage += "hasEmptyReportType=true&"; if (hasEmptyComponent) searchPage += "hasEmptyComponent=true&"; %><%@ include file="codefragments/sinc_appendEmptyProjectParams.jsp" %><% %><%@ include file="codefragments/sinc_appendCurrentParams.jsp" %><% // Redirect search page response.sendRedirect(searchPage); } // Make connection to database using oerl_webview login %><%@ include file="../jspcode/sinc_oerlWebViewCon.jsp" %><% // Create queries and result sets Statement stmt, crStmt = null, eStmt = null; ResultSet rs, crRS = null, eRS = null; StringBuffer crQuery = new StringBuffer(), eQuery = new StringBuffer(); if (doCompleteReports) { // Create Complete Report query crQuery.append("SELECT " + projectSelect + ", cr.CompleteReportID, cr.CompleteReportName, cr.ArtifactURL\n"); crQuery.append(" FROM " + projectFrom + ", " + componentFrom + ", CompleteReports AS cr, CompleteReportsToSubComponents AS cr2sc\n"); crQuery.append(" WHERE " + projectWhere + " AND " + componentWhere + " AND cr.ProjectID=p.ProjectID AND cr.CompleteReportID=cr2sc.CompleteReportID AND cr2sc.SubComponentPKID=sc.SubComponentPKID\n"); // Append restrictions and ORDER to Complete Report query crQuery.append(queryRestrictions); crQuery.append(" \n ORDER BY ProjectTypeName, ProjectName, CompleteReportName, CompleteReportID"); // Create result set crStmt = con.createStatement(); crRS = crStmt.executeQuery(crQuery.toString()); } if (doExcerpts) { // Create Report Excerpt query eQuery.append("SELECT " + projectSelect + ", e.ExcerptID, e.ExcerptDescription, e.ArtifactURL, et.ExcerptTypeID, et.ExcerptTypeName\n"); eQuery.append(" FROM " + projectFrom + ", " + componentFrom + ", Excerpts AS e, ExcerptTypes AS et, ExcerptsToSubComponents AS e2sc\n"); eQuery.append(" WHERE " + projectWhere + " AND " + componentWhere + " AND e.ProjectID=p.ProjectID AND e.ExcerptTypeID=et.ExcerptTypeID AND et.ExcerptTypeName=\"Report Excerpt\" AND e.ExcerptID=e2sc.ExcerptID AND e2sc.SubComponentPKID=sc.SubComponentPKID\n"); // Append restrictions and ORDER to Complete Report query eQuery.append(queryRestrictions); eQuery.append(" \n ORDER BY ProjectTypeName, ProjectName, ExcerptDescription, ExcerptID"); // Create Complete Report result set eStmt = con.createStatement(); eRS = eStmt.executeQuery(eQuery.toString()); } %> OERL: Reports: Search Results:
home
  : Reports : Search Results





























home reports instruments plans
search

<%@ include file="codefragments/sinc_resultsTitle.jsp" %>

<% String tempQuery, cmpQuery; Statement tempStmt; ResultSet tempRS; int reportID, compID, subCompID, excerptID; int projTypeID, fundingSourceID, contentAreaID, subContentAreaID, orgID; if (!projectTypeSpecified && !fundingSourceSpecified && !organizationSpecified && !contentAreaSpecified && !componentSpecified) { isListingAll = true; } String searchFor = "You"; if (isListing || isListingAll) { searchFor += " requested a listing of"; if (isListingAll) searchFor += " all"; } else searchFor += " searched for"; if (doCompleteReports) searchFor += " Complete Reports"; if (doExcerpts) { if (doCompleteReports) searchFor += " and"; searchFor += " Report Excerpts"; } if (isListingAll) searchFor += "."; else searchFor += "..."; StringBuffer printToFileBuf = new StringBuffer(); %> <%= searchFor %>
<% printToFileBuf.append(searchFor + "\n"); %> <% if (!isListingAll) { %>
    <%@ include file="codefragments/sinc_printComponentQuery.jsp" %> <% if (projectTypeSpecified || fundingSourceSpecified || organizationSpecified || contentAreaSpecified) { %> <% printToFileBuf.append(" from Projects:\n"); %>
  • from Projects:
      <%@ include file="codefragments/sinc_printProjectQuery.jsp" %>
  • <% } %>
<% } %> <%@ include file="codefragments/sinc_resultsIntro.jsp" %> <% // Print size of result // The number of hits per project type is stored into the session object int numHits = 0, projTypeHits = 0; if (doCompleteReports) { reportID = -1; projTypeID = -1; while (crRS.next()) { if (reportID != crRS.getInt("CompleteReportID")) { numHits++; if (projTypeID != crRS.getInt("ProjectTypeID") && projTypeID != -1) { session.putValue("ProjTypeComplete" + projTypeID, Integer.toString(projTypeHits)); projTypeHits = 1; } else { projTypeHits++; } } reportID = crRS.getInt("CompleteReportID"); projTypeID = crRS.getInt("ProjectTypeID"); if (crRS.isLast()) session.putValue("ProjTypeComplete" + projTypeID, Integer.toString(projTypeHits)); } } projTypeHits = 0; if (doExcerpts) { excerptID = -1; projTypeID = -1; while (eRS.next()) { if (excerptID != eRS.getInt("ExcerptID")) { numHits++; if (projTypeID != eRS.getInt("ProjectTypeID") && projTypeID != -1) { session.putValue("ProjTypeExcerpt" + projTypeID, Integer.toString(projTypeHits)); projTypeHits = 1; } else { projTypeHits++; } } excerptID = eRS.getInt("ExcerptID"); projTypeID = eRS.getInt("ProjectTypeID"); if (eRS.isLast()) session.putValue("ProjTypeExcerpt" + projTypeID, Integer.toString(projTypeHits)); } } boolean hasExcerpts = true; %><%@ include file="codefragments/sinc_printNumHits.jsp" %><% // Look for log file, create if necessary File logFile = new File(logFilePath); boolean fileExists = logFile.exists(); if (!fileExists) logFile.createNewFile(); FileWriter logFileWriter = new FileWriter(logFilePath, true); DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM); String dateStr = dateFormat.format(new Date()); if (!fileExists) logFileWriter.write("File created: " + dateStr + "\n-----\n"); logFileWriter.write("Time = " + dateStr + "\n"); logFileWriter.write("IP = " + request.getRemoteAddr() + "\n"); logFileWriter.write("Number of Results = " + numHits + "\n"); logFileWriter.write(printToFileBuf.toString()); logFileWriter.write("-----\n"); logFileWriter.close(); // Reset variables for main loop if (doCompleteReports) crRS.beforeFirst(); if (doExcerpts) eRS.beforeFirst(); boolean nextIsComplete = false, projTypeHdrPrinted = false, excerptHdrPrinted = false, reportHdrPrinted = false, firstProjTypeHdr = true; reportID = -1; excerptID = -1; String crProjType = null; String eProjType = null; String curProjType = ""; String caQuery; // Start pointers to result sets if (doCompleteReports && crRS.isBeforeFirst()) if (crRS.next()) crProjType = crRS.getString("ProjectTypeName"); if (doExcerpts && eRS.isBeforeFirst()) if (eRS.next()) eProjType = eRS.getString("ProjectTypeName"); // Main loop for going through result sets while (!(eProjType == null && crProjType == null)) { // Set next record to display; Complete Reports are first by default nextIsComplete = crProjType != null && (eProjType == null || crProjType.compareTo(eProjType) <= 0); // Set current Project Type header if necessary if (nextIsComplete) { if (!curProjType.equals(crProjType)) { curProjType = String.valueOf(crProjType); projTypeHdrPrinted = false; } } else if (!curProjType.equals(eProjType)) { curProjType = String.valueOf(eProjType); projTypeHdrPrinted = false; } // Print Project Type Header if necessary if (!projTypeHdrPrinted) { excerptHdrPrinted = false; reportHdrPrinted = false; projTypeHdrPrinted = true; if (firstProjTypeHdr) firstProjTypeHdr = false; else { %> <% } %>

<%= curProjType %>

    <% } if (nextIsComplete) { // Print Complete Report fields if (reportID!= crRS.getInt("CompleteReportID")) { // Print Complete Report Header if (!reportHdrPrinted) { reportHdrPrinted = true; %>

Complete Reports

    <% } // Get Content Areas caQuery = "SELECT sca.SubContentAreaID, sca.SubContentAreaName, ca.ContentAreaName"; caQuery += " FROM " + contentAreaFrom + ", CompleteReports AS cr, ProjectsToSubContentAreas AS p2sca"; caQuery += " WHERE " + contentAreaWhere + " AND cr.CompleteReportID =" + crRS.getInt("CompleteReportID") + " AND cr.ProjectID=p2sca.ProjectID AND p2sca.SubContentAreaID=sca.SubContentAreaID"; %> <%@ include file="codefragments/sinc_appendContentAreas.jsp" %> <% // Get Components cmpQuery = "SELECT sc.SubComponentID, sc.SubComponentName, c.ComponentID, c.ComponentName"; cmpQuery += " FROM " + componentFrom + ", CompleteReportsToSubComponents AS cr2sc"; cmpQuery += " WHERE " + componentWhere + " AND cr2sc.CompleteReportID =" + crRS.getInt("CompleteReportID") + " AND cr2sc.SubComponentPKID=sc.SubComponentPKID"; boolean linkResources = true; %> <%@ include file="../jspcode/sinc_appendComponents.jsp" %> <% // Print info for this report rs = crRS; %>
  • Report: "><%= crRS.getString("CompleteReportName") %>
    <% if (componentSpecified || isListing) { %> Components: <%= componentResult %>
    <% } %> from
    <%@ include file="codefragments/sinc_printProjectFields.jsp" %>
  • <% // Update reportID reportID = crRS.getInt("CompleteReportID"); } if (crRS.next()) crProjType = crRS.getString("ProjectTypeName"); else crProjType = null; } else { // Print Excerpt fields if (excerptID != eRS.getInt("ExcerptID")) { // Print Report Excerpt Header if (!excerptHdrPrinted) { excerptHdrPrinted = true; %>

Report Excerpts

    <% } // Print Excerpt Record %> <%@ include file="codefragments/sinc_printExcerptRecord.jsp" %> <% // Update excerptID excerptID = eRS.getInt("ExcerptID"); } if (eRS.next()) eProjType = eRS.getString("ProjectTypeName"); else eProjType = null; } // ends if (nextIsComplete) clause } // ends while loop if (numHits != 0) { %>
<% } if (crRS != null) crRS.close(); if (crStmt != null) crStmt.close(); if (eRS != null) eRS.close(); if (eStmt != null) eStmt.close(); con.close(); %>