From: <bra...@us...> - 2010-04-14 21:56:37
|
Revision: 3047 http://archive-access.svn.sourceforge.net/archive-access/?rev=3047&view=rev Author: bradtofel Date: 2010-04-14 21:56:30 +0000 (Wed, 14 Apr 2010) Log Message: ----------- REFACTOR: now uses new partitioning code, and HTML string escaping. Old implementation left as-was, for the moment, in OldCalendarResults.jsp for easy consulting/diffing with previous implementation Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/WEB-INF/query/CalendarResults.jsp Added Paths: ----------- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/WEB-INF/query/OldCalendarResults.jsp Modified: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/WEB-INF/query/CalendarResults.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/WEB-INF/query/CalendarResults.jsp 2010-04-14 21:50:33 UTC (rev 3046) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/WEB-INF/query/CalendarResults.jsp 2010-04-14 21:56:30 UTC (rev 3047) @@ -9,8 +9,10 @@ <%@ page import="org.archive.wayback.core.CaptureSearchResults" %> <%@ page import="org.archive.wayback.core.UIResults" %> <%@ page import="org.archive.wayback.core.WaybackRequest" %> -<%@ page import="org.archive.wayback.query.resultspartitioner.ResultsPartitionsFactory" %> -<%@ page import="org.archive.wayback.query.resultspartitioner.ResultsPartition" %> +<%@ page import="org.archive.wayback.partition.CaptureSearchResultPartitionMap" %> +<%@ page import="org.archive.wayback.util.partition.Partition" %> +<%@ page import="org.archive.wayback.util.partition.Partitioner" %> +<%@ page import="org.archive.wayback.util.partition.PartitionSize" %> <%@ page import="org.archive.wayback.util.StringFormatter" %> <jsp:include page="/WEB-INF/template/UI-header.jsp" flush="true" /> <jsp:include page="/WEB-INF/template/CookieJS.jsp" flush="true" /> @@ -20,7 +22,7 @@ WaybackRequest wbRequest = results.getWbRequest(); CaptureSearchResults cResults = results.getCaptureResults(); StringFormatter fmt = wbRequest.getFormatter(); -String searchString = wbRequest.getRequestUrl(); +String searchString = fmt.escapeHtml(wbRequest.getRequestUrl()); List<String> closeMatches = cResults.getCloseMatches(); @@ -30,8 +32,16 @@ long lastResult = cResults.getReturnedCount() + firstResult; long resultCount = cResults.getMatchingCount(); -ArrayList<ResultsPartition> partitions = - ResultsPartitionsFactory.get(cResults, wbRequest); +CaptureSearchResultPartitionMap map = + new CaptureSearchResultPartitionMap(); +Partitioner<CaptureSearchResult> partitioner = + new Partitioner<CaptureSearchResult>(map); +PartitionSize size = partitioner.getSize(searchStartDate,searchEndDate,13); +List<Partition<CaptureSearchResult>> partitions = + partitioner.getRange(size,searchStartDate,searchEndDate); + +Iterator<CaptureSearchResult> it = cResults.iterator(); +partitioner.populate(partitions,it); int numPartitions = partitions.size(); %> <table border="0" cellpadding="5" width="100%" class="mainSearchBanner" cellspacing="0"> @@ -60,10 +70,10 @@ <tr bgcolor="#CCCCCC"> <% for(int i = 0; i < numPartitions; i++) { - ResultsPartition partition = partitions.get(i); + Partition<CaptureSearchResult> partition = partitions.get(i); %> <td align="center" class="mainBigBody"> - <%= partition.getTitle() %> + <%= fmt.format("PartitionSize.dateHeader."+size.name(),partition.getStart(), partition.getEnd()) %> </td> <% } @@ -77,10 +87,10 @@ <tr bgcolor="#CCCCCC"> <% for(int i = 0; i < numPartitions; i++) { - ResultsPartition partition = (ResultsPartition) partitions.get(i); + Partition<CaptureSearchResult> partition = partitions.get(i); %> <td align="center" class="mainBigBody"> - <%= fmt.format("ResultPartition.columnSummary",partition.resultsCount()) %> + <%= fmt.format("Partition.columnSummary",partition.count()) %> </td> <% } @@ -96,8 +106,8 @@ String lastMD5 = null; for(int i = 0; i < numPartitions; i++) { - ResultsPartition partition = (ResultsPartition) partitions.get(i); - ArrayList<CaptureSearchResult> partitionResults = partition.getMatches(); + Partition<CaptureSearchResult> partition = partitions.get(i); + List<CaptureSearchResult> partitionResults = partition.list(); %> <td nowrap class="mainBody" valign="top"> <% @@ -125,7 +135,7 @@ String arcFile = result.getFile(); String arcOffset = String.valueOf(result.getOffset()); - String replayUrl = results.resultToReplayUrl(result); + String replayUrl = fmt.escapeHtml(results.resultToReplayUrl(result)); boolean updated = false; if(lastMD5 == null) { @@ -164,8 +174,9 @@ <% for(String closeMatch : closeMatches) { tmp.setRequestUrl(closeMatch); - String link = tmp.getContextPrefix() + "query?" + - tmp.getQueryArguments(); + String link = fmt.escapeHtml(tmp.getContextPrefix() + "query?" + + tmp.getQueryArguments()); + closeMatch = fmt.escapeHtml(closeMatch); %> <a href="<%= link %>"><%= closeMatch %></a><br> <% @@ -184,7 +195,7 @@ <% } else { %> - <a href="<%= results.urlForPage(i) %>"><%= i %></a> + <a href="<%= fmt.escapeHtml(results.urlForPage(i)) %>"><%= i %></a> <% } } Added: trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/WEB-INF/query/OldCalendarResults.jsp =================================================================== --- trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/WEB-INF/query/OldCalendarResults.jsp (rev 0) +++ trunk/archive-access/projects/wayback/wayback-webapp/src/main/webapp/WEB-INF/query/OldCalendarResults.jsp 2010-04-14 21:56:30 UTC (rev 3047) @@ -0,0 +1,193 @@ +<%@ page language="java" pageEncoding="utf-8" contentType="text/html;charset=utf-8"%> +<%@ page import="java.util.List" %> +<%@ page import="java.util.ArrayList" %> +<%@ page import="java.util.Date" %> +<%@ page import="java.util.Iterator" %> +<%@ page import="java.text.ParseException" %> +<%@ page import="org.archive.wayback.WaybackConstants" %> +<%@ page import="org.archive.wayback.core.CaptureSearchResult" %> +<%@ page import="org.archive.wayback.core.CaptureSearchResults" %> +<%@ page import="org.archive.wayback.core.UIResults" %> +<%@ page import="org.archive.wayback.core.WaybackRequest" %> +<%@ page import="org.archive.wayback.query.resultspartitioner.ResultsPartitionsFactory" %> +<%@ page import="org.archive.wayback.query.resultspartitioner.ResultsPartition" %> +<%@ page import="org.archive.wayback.util.StringFormatter" %> +<jsp:include page="/WEB-INF/template/UI-header.jsp" flush="true" /> +<jsp:include page="/WEB-INF/template/CookieJS.jsp" flush="true" /> +<% +UIResults results = UIResults.extractCaptureQuery(request); + +WaybackRequest wbRequest = results.getWbRequest(); +CaptureSearchResults cResults = results.getCaptureResults(); +StringFormatter fmt = wbRequest.getFormatter(); +String searchString = wbRequest.getRequestUrl(); +List<String> closeMatches = cResults.getCloseMatches(); + + +Date searchStartDate = wbRequest.getStartDate(); +Date searchEndDate = wbRequest.getEndDate(); +long firstResult = cResults.getFirstReturned(); +long lastResult = cResults.getReturnedCount() + firstResult; +long resultCount = cResults.getMatchingCount(); + +ArrayList<ResultsPartition> partitions = + ResultsPartitionsFactory.get(cResults, wbRequest); +int numPartitions = partitions.size(); +%> +<table border="0" cellpadding="5" width="100%" class="mainSearchBanner" cellspacing="0"> + <tr> + <td> + <%= fmt.format("PathQueryClassic.searchedFor",searchString) %> + </td> + <td align="right"> + Set Anchor Window: + <jsp:include page="/WEB-INF/template/AnchorWindow.jsp" flush="true" /> + <%= fmt.format("PathQueryClassic.resultsSummary",resultCount) %> + </td> + </tr> +</table> +<br> + + +<table border="0" width="100%"> + <tr bgcolor="#CCCCCC"> + <td colspan="<%= numPartitions %>" align="center" class="mainCalendar"> + <%= fmt.format("PathQueryClassic.searchResults",searchStartDate,searchEndDate) %> + </td> + </tr> + +<!-- RESULT COLUMN HEADERS --> + <tr bgcolor="#CCCCCC"> +<% + for(int i = 0; i < numPartitions; i++) { + ResultsPartition partition = partitions.get(i); +%> + <td align="center" class="mainBigBody"> + <%= partition.getTitle() %> + </td> +<% + } +%> + </tr> +<!-- /RESULT COLUMN HEADERS --> + + + +<!-- RESULT COLUMN COUNTS --> + <tr bgcolor="#CCCCCC"> +<% + for(int i = 0; i < numPartitions; i++) { + ResultsPartition partition = (ResultsPartition) partitions.get(i); +%> + <td align="center" class="mainBigBody"> + <%= fmt.format("ResultPartition.columnSummary",partition.resultsCount()) %> + </td> +<% + } +%> + </tr> +<!-- /RESULT COLUMN COUNTS --> + + +<!-- RESULT COLUMN DATA --> + <tr bgcolor="#EBEBEB"> +<% + boolean first = false; + String lastMD5 = null; + + for(int i = 0; i < numPartitions; i++) { + ResultsPartition partition = (ResultsPartition) partitions.get(i); + ArrayList<CaptureSearchResult> partitionResults = partition.getMatches(); +%> + <td nowrap class="mainBody" valign="top"> +<% + if(partitionResults.size() == 0) { +%> + +<% + } else { + + for(int j = 0; j < partitionResults.size(); j++) { + + CaptureSearchResult result = partitionResults.get(j); + String url = result.getUrlKey(); + String captureTimestamp = result.getCaptureTimestamp(); + Date captureDate = result.getCaptureDate(); + String prettyDate = fmt.format("PathQuery.classicResultLinkText", + captureDate); + String origHost = result.getOriginalHost(); + String MD5 = result.getDigest(); + String redirectFlag = (0 == result.getRedirectUrl().compareTo("-")) + ? "" : fmt.format("PathPrefixQuery.redirectIndicator"); + String httpResponse = result.getHttpCode(); + String mimeType = result.getMimeType(); + + String arcFile = result.getFile(); + String arcOffset = String.valueOf(result.getOffset()); + + String replayUrl = results.resultToReplayUrl(result); + + boolean updated = false; + if(lastMD5 == null) { + lastMD5 = MD5; + updated = true; + } else if(0 != lastMD5.compareTo(MD5)) { + updated = true; + lastMD5 = MD5; + } + String updateStar = updated ? "*" : ""; +%> + <a onclick="SetAnchorDate('<%= captureTimestamp %>');" href="<%= replayUrl %>"><%= prettyDate %></a> <%= updateStar %><br></br> +<% + + } + + } +%> + </td> +<% + } + +%> + </tr> +<!-- /RESULT COLUMN DATA --> +</table> + + +<% +if(closeMatches != null && !closeMatches.isEmpty()) { + WaybackRequest tmp = wbRequest.clone(); + + + %> + Close Matches:<br> + <% + for(String closeMatch : closeMatches) { + tmp.setRequestUrl(closeMatch); + String link = tmp.getContextPrefix() + "query?" + + tmp.getQueryArguments(); + %> + <a href="<%= link %>"><%= closeMatch %></a><br> + <% + } +} +// show page indicators: +if(cResults.getNumPages() > 1) { + int curPage = cResults.getCurPageNum(); + %> + <hr></hr> + <% + for(int i = 1; i <= cResults.getNumPages(); i++) { + if(i == curPage) { + %> + <b><%= i %></b> + <% + } else { + %> + <a href="<%= results.urlForPage(i) %>"><%= i %></a> + <% + } + } +} +%> +<jsp:include page="/WEB-INF/template/UI-footer.jsp" flush="true" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |