@Override public void begin() { results = new CaptureSearchResults(); if (resolveRevisits) { if (isReverse) { digestToRevisits = new HashMap<String, LinkedList<CaptureSearchResult>>(); } else { digestToOriginal = new HashMap<String, CaptureSearchResult>(); } } }
/** * Append a capture. * @param result a capture */ public void addSearchResult(CaptureSearchResult result) { addSearchResult(result, true); }
public CaptureSearchResult getClosest(WaybackRequest wbRequest, CaptureSearchResults results) { CaptureSearchResult closest = results.getClosest(); return closest; } }
public void end() { results.setClosest(this.getClosest()); results.setReturnedCount(results.getResults().size()); results.setMatchingCount(results.getResults().size()); }
public CaptureSearchResult getClosest() { if (closest != null) { return closest; } if (!results.isEmpty()) { // If no target timestamp, always return the latest capture, // otherwise first or last based on reverse state if (targetTimestamp != null) { return getLastAdded(); } else { return results.getResults().getLast(); } } return null; }
private CaptureSearchResults documentToCaptureSearchResults( Document document, ObjectFilter<CaptureSearchResult> filter) throws ResourceNotInArchiveException { CaptureSearchResults results = new CaptureSearchResults(); NodeList xresults = getSearchResults(document); int numAdded = 0; for(int i = 0; i < xresults.getLength(); i++) { Node xresult = xresults.item(i); CaptureSearchResult result = searchElementToCaptureSearchResult(xresult); int ruling = ObjectFilter.FILTER_INCLUDE; if (filter != null) { ruling = filter.filterObject(result); } if (ruling == ObjectFilter.FILTER_ABORT) { break; } else if (ruling == ObjectFilter.FILTER_INCLUDE) { numAdded++; results.addSearchResult(result, true); } } if(numAdded == 0) { throw new ResourceNotInArchiveException("No documents matching" + " filter"); } return results; } private UrlSearchResult searchElementToUrlSearchResult(Node e) {
public void testGenerateMementoLinkHeaders() { final CaptureSearchResults results = new CaptureSearchResults(); results.addSearchResult(createCapture("20140101000000")); results.addSearchResult(createCapture("20140125000000")); results.setClosest(results.getResults().getLast());
public static void printLinkTimemap(CaptureSearchResults results, WaybackRequest wbr, PrintWriter pw) { Date first = results.getFirstResultDate(); Date last = results.getLastResultDate(); AccessPoint ap = wbr.getAccessPoint(); CaptureSearchResult result = results.getResults().get(0); pw.print(makeLink(ap, result.getOriginalUrl(), FIRST_LAST_MEMENTO, result)); } else { List<CaptureSearchResult> lr = results.getResults(); int count = lr.size(); String rel; if (results.getMatchingCount() > results.getReturnedCount()) { int sec = last.getSeconds() + 1; last.setSeconds(sec);
results = new CaptureSearchResults(); } else { if(resultsList != null) { for(CaptureSearchResult result : resultsList) { results.addSearchResult(result); results.putFilter(SearchResults.RESULTS_FIRST_RETURNED, getNodeContent(channelElement,NUTCH_FIRST_RESULT)); results.putFilter(SearchResults.RESULTS_NUM_RESULTS, getNodeContent(channelElement,NUTCH_NUM_RESULTS)); results.putFilter(SearchResults.RESULTS_NUM_RETURNED, getNodeContent(channelElement,NUTCH_NUM_RETURNED)); results.putFilter(SearchResults.RESULTS_REQUESTED, String.valueOf(wbRequest.getResultsPerPage())); results.putFilter(WaybackRequest.REQUEST_START_DATE, Timestamp.earliestTimestamp().getDateStr()); results.putFilter(WaybackRequest.REQUEST_END_DATE, Timestamp.latestTimestamp().getDateStr()); return results;
firstResultDate = cResults.getFirstResultDate(); firstResultReplayUrl = StringEscapeUtils.escapeHtml(results.resultToReplayUrl(cResults.getResults().getFirst())); lastResultDate = cResults.getLastResultDate(); lastResultReplayUrl = StringEscapeUtils.escapeHtml(results.resultToReplayUrl(cResults.getResults().getLast())); Date searchStartDate = wbRequest.getStartDate(); Date searchEndDate = wbRequest.getEndDate(); capturePartitioner.populate(months, cResults.iterator()); dataStartMSSE = years.get(0).getStart().getTime(); dataEndMSSE = years.get(years.size() - 1).getEnd().getTime(); numResults = cResults.getMatchingCount();
CaptureSearchResults results = new CaptureSearchResults(); CaptureSearchResult result = new CaptureSearchResult(); results.setClosest(result); EasyMock.expect(resourceIndex.query(wbRequest)).andReturn(results);
CaptureSearchResults results = (CaptureSearchResults)cut.query(wbr); assertEquals(2, results.getReturnedCount()); List<CaptureSearchResult> list = results.getResults(); assertEquals(2, list.size());
/** * Test of soft-block feature (URL-agnostic revisit payload lookup). * In revisit payload lookup mode, capture with "X" is returned. * @throws Exception */ public void testSoftBlock_revisitPayloadLookup() throws Exception { WaybackRequest wbr = WaybackRequest.createReplayRequest( "http://example.com/", "20101124000000", null, null); wbr.put(EmbeddedCDXServerIndex.REQUEST_REVISIT_LOOKUP, "true"); setCdxLines( "com,example)/ 20101124000000 http://example.com/ text/html 200" + " XXXX - X 2000 0 /a/a.warc.gz", "com,example)/ 20101125000000 http://example.com/ warc/revisit 200" + " XXXX - - 2000 0 /a/b.warc.gz", "com,example)/ 20101126000000 http://example.com/ text/html 200" + " XXXX - - 2000 0 /a/c.warc.gz" ); CaptureSearchResults results = (CaptureSearchResults)cut.query(wbr); CaptureSearchResult capture1 = results.getResults().get(0); assertEquals("20101124000000", capture1.getCaptureTimestamp()); assertSame(capture1, results.getClosest()); }
protected CaptureSearchResult getLastAdded() { if (!isReverse) { return results.getResults().getLast(); } else { return results.getResults().getFirst(); } }
private static NotableResultExtractor getNotableResults( CaptureSearchResults r) { // eventually, the NotableResultExtractor will be part of the standard // ResourceIndex.query() but for now, we'll just do an extra traversal // of the whole set of results: Iterator<CaptureSearchResult> itr = r.iterator(); Date want = r.getClosest().getCaptureDate(); NotableResultExtractor nre = new NotableResultExtractor(want); ObjectFilterIterator<CaptureSearchResult> ofi = new ObjectFilterIterator<CaptureSearchResult>( itr, nre); while (ofi.hasNext()) { ofi.next(); } return nre; } }
public void annotateResults(SearchResults results) throws ResourceNotInArchiveException, BadQueryException, AccessControlException { if(closestTracker != null) { if(results instanceof CaptureSearchResults) { CaptureSearchResults cResults = (CaptureSearchResults) results; cResults.setClosest(closestTracker.getClosest()); } } } }
/** * @param results * @return String Constant of minimum resolution that will hold the results */ public static String getMinResolution(CaptureSearchResults results) { int first = Timestamp.parseBefore(results.getFirstResultTimestamp()).sse(); int last = Timestamp.parseAfter(results.getLastResultTimestamp()).sse(); int diff = last - first; if(diff < MAX_HOUR_SECONDS) { return WaybackRequest.REQUEST_RESOLUTION_HOURS; } else if(diff < MAX_DAY_SECONDS) { return WaybackRequest.REQUEST_RESOLUTION_DAYS; } else if(diff < MAX_MONTH_SECONDS) { return WaybackRequest.REQUEST_RESOLUTION_MONTHS; } else if(diff < MAX_TWO_MONTH_SECONDS) { return WaybackRequest.REQUEST_RESOLUTION_TWO_MONTHS; } return WaybackRequest.REQUEST_RESOLUTION_YEARS; }
/** * @return the total number of results */ public long getResultCount() { return uiResults.getCaptureResults().getReturnedCount(); } /**
String reqDate = results.getFilter(WaybackRequest.REQUEST_EXACT_DATE); Calendar centerCal = partitioner.dateStrToCalendar(reqDate); partitioner.alignStart(centerCal);
/** * @return the Date of the first capture in the result set */ public Date getFirstResultDate() { return uiResults.getCaptureResults().getFirstResultDate(); } /**