From: <bra...@us...> - 2011-06-16 16:50:19
|
Revision: 3468 http://archive-access.svn.sourceforge.net/archive-access/?rev=3468&view=rev Author: bradtofel Date: 2011-06-16 16:50:12 +0000 (Thu, 16 Jun 2011) Log Message: ----------- BUGFIX: the closest tracking filter was part of the QueryCaptureFilterGroup, forcing this group to be last. In fact, we definitely want to do date and URL filtering before exclusions, and probably want to do it as early as possible. Moved ClosestTrackingFilter into it's own FilterGroup, which now is installed last. Modified Paths: -------------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/LocalResourceIndex.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filterfactory/QueryCaptureFilterGroup.java Added Paths: ----------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filterfactory/ClosestTrackingCaptureFilterGroup.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filterfactory/ClosestTrackingCaptureFilterGroupFactory.java Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/LocalResourceIndex.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/LocalResourceIndex.java 2011-06-16 16:41:19 UTC (rev 3467) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/LocalResourceIndex.java 2011-06-16 16:50:12 UTC (rev 3468) @@ -42,6 +42,7 @@ import org.archive.wayback.resourceindex.adapters.CaptureToUrlSearchResultIterator; import org.archive.wayback.resourceindex.filterfactory.AccessPointCaptureFilterGroupFactory; import org.archive.wayback.resourceindex.filterfactory.CaptureFilterGroup; +import org.archive.wayback.resourceindex.filterfactory.ClosestTrackingCaptureFilterGroupFactory; import org.archive.wayback.resourceindex.filterfactory.CoreCaptureFilterGroupFactory; import org.archive.wayback.resourceindex.filterfactory.ExclusionCaptureFilterGroupFactory; import org.archive.wayback.resourceindex.filterfactory.FilterGroupFactory; @@ -118,8 +119,9 @@ fgFactories = new ArrayList<FilterGroupFactory>(); fgFactories.add(new CoreCaptureFilterGroupFactory()); fgFactories.add(new AccessPointCaptureFilterGroupFactory()); + fgFactories.add(new QueryCaptureFilterGroupFactory()); fgFactories.add(new ExclusionCaptureFilterGroupFactory()); - fgFactories.add(new QueryCaptureFilterGroupFactory()); + fgFactories.add(new ClosestTrackingCaptureFilterGroupFactory()); } private void cleanupIterator(CloseableIterator<? extends SearchResult> itr) Added: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filterfactory/ClosestTrackingCaptureFilterGroup.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filterfactory/ClosestTrackingCaptureFilterGroup.java (rev 0) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filterfactory/ClosestTrackingCaptureFilterGroup.java 2011-06-16 16:50:12 UTC (rev 3468) @@ -0,0 +1,45 @@ +package org.archive.wayback.resourceindex.filterfactory; + +import java.util.List; + +import org.archive.wayback.UrlCanonicalizer; +import org.archive.wayback.core.CaptureSearchResult; +import org.archive.wayback.core.CaptureSearchResults; +import org.archive.wayback.core.SearchResults; +import org.archive.wayback.core.WaybackRequest; +import org.archive.wayback.exception.AccessControlException; +import org.archive.wayback.exception.BadQueryException; +import org.archive.wayback.exception.ResourceNotInArchiveException; +import org.archive.wayback.resourceindex.filters.ClosestResultTrackingFilter; +import org.archive.wayback.util.ObjectFilter; +import org.archive.wayback.util.ObjectFilterChain; + +public class ClosestTrackingCaptureFilterGroup implements CaptureFilterGroup { + private ObjectFilterChain<CaptureSearchResult> chain = null; + private ClosestResultTrackingFilter closestTracker = null; + public ClosestTrackingCaptureFilterGroup(WaybackRequest request, + UrlCanonicalizer canonicalizer) { + chain = new ObjectFilterChain<CaptureSearchResult>(); + if(request.isCaptureQueryRequest() || + request.isReplayRequest()) { + closestTracker = + new ClosestResultTrackingFilter(request.getReplayDate().getTime()); + chain.addFilter(closestTracker); + } + } + + public List<ObjectFilter<CaptureSearchResult>> getFilters() { + return chain.getFilters(); + } + + public void annotateResults(SearchResults results) + throws ResourceNotInArchiveException, BadQueryException, + AccessControlException { + if(closestTracker != null) { + if(results instanceof CaptureSearchResults) { + CaptureSearchResults cResults = (CaptureSearchResults) results; + cResults.setClosest(closestTracker.getClosest()); + } + } + } +} Added: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filterfactory/ClosestTrackingCaptureFilterGroupFactory.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filterfactory/ClosestTrackingCaptureFilterGroupFactory.java (rev 0) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filterfactory/ClosestTrackingCaptureFilterGroupFactory.java 2011-06-16 16:50:12 UTC (rev 3468) @@ -0,0 +1,16 @@ +package org.archive.wayback.resourceindex.filterfactory; + +import org.archive.wayback.UrlCanonicalizer; +import org.archive.wayback.core.WaybackRequest; +import org.archive.wayback.exception.BadQueryException; +import org.archive.wayback.resourceindex.LocalResourceIndex; + +public class ClosestTrackingCaptureFilterGroupFactory implements FilterGroupFactory { + + public CaptureFilterGroup getGroup(WaybackRequest request, + UrlCanonicalizer canonicalizer, LocalResourceIndex index) + throws BadQueryException { + return new ClosestTrackingCaptureFilterGroup(request,canonicalizer); + } + +} Modified: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filterfactory/QueryCaptureFilterGroup.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filterfactory/QueryCaptureFilterGroup.java 2011-06-16 16:41:19 UTC (rev 3467) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/resourceindex/filterfactory/QueryCaptureFilterGroup.java 2011-06-16 16:50:12 UTC (rev 3468) @@ -27,11 +27,9 @@ import org.apache.commons.httpclient.URIException; import org.archive.wayback.UrlCanonicalizer; import org.archive.wayback.core.CaptureSearchResult; -import org.archive.wayback.core.CaptureSearchResults; import org.archive.wayback.core.SearchResults; import org.archive.wayback.core.WaybackRequest; import org.archive.wayback.exception.BadQueryException; -import org.archive.wayback.resourceindex.filters.ClosestResultTrackingFilter; import org.archive.wayback.resourceindex.filters.DateRangeFilter; import org.archive.wayback.resourceindex.filters.HostMatchFilter; import org.archive.wayback.resourceindex.filters.SchemeMatchFilter; @@ -44,12 +42,7 @@ import org.archive.wayback.util.url.UrlOperations; public class QueryCaptureFilterGroup implements CaptureFilterGroup { -// private ObjectFilter<CaptureSearchResult> prefixFilter = null; -// private ObjectFilter<CaptureSearchResult> dateFilter = null; -// private ObjectFilter<CaptureSearchResult> selfRedirectFilter = null; -// private ObjectFilter<CaptureSearchResult> exactHost = null; -// private ObjectFilter<CaptureSearchResult> exactScheme = null; - private ClosestResultTrackingFilter closestTracker = null; + private ObjectFilterChain<CaptureSearchResult> chain = null; private String requestType = null; private String keyUrl = null; @@ -94,14 +87,9 @@ Timestamp.parseBefore(anchorTS).getDate().getTime(); } } - - closestTracker = new ClosestResultTrackingFilter( - request.getReplayDate().getTime()); } else if(request.isCaptureQueryRequest()) { chain.addFilter(new UrlMatchFilter(keyUrl)); - closestTracker = new ClosestResultTrackingFilter( - request.getReplayDate().getTime()); } else if(request.isUrlQueryRequest()) { chain.addFilter(new UrlPrefixMatchFilter(keyUrl)); } @@ -130,9 +118,6 @@ chain.addFilter(new SchemeMatchFilter( UrlOperations.urlToScheme(request.getRequestUrl()),this)); } - if(closestTracker != null) { - chain.addFilter(closestTracker); - } } public List<ObjectFilter<CaptureSearchResult>> getFilters() { @@ -152,12 +137,6 @@ if(!closeMatches.isEmpty()) { results.setCloseMatches(new ArrayList<String>(closeMatches.values())); } - if(closestTracker != null) { - if(results instanceof CaptureSearchResults) { - CaptureSearchResults cResults = (CaptureSearchResults) results; - cResults.setClosest(closestTracker.getClosest()); - } - } } public void addCloseMatch(String host, String closeMatch) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |