From: <bra...@us...> - 2008-03-01 02:05:24
|
Revision: 2211 http://archive-access.svn.sourceforge.net/archive-access/?rev=2211&view=rev Author: bradtofel Date: 2008-02-29 18:05:29 -0800 (Fri, 29 Feb 2008) Log Message: ----------- INITIAL REV: Wayback Exclusion interface to use the access-control "Oracle" Added Paths: ----------- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/accesscontrol/oracleclient/ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/accesscontrol/oracleclient/OracleExclusionFilter.java trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/accesscontrol/oracleclient/OracleExclusionFilterFactory.java Added: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/accesscontrol/oracleclient/OracleExclusionFilter.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/accesscontrol/oracleclient/OracleExclusionFilter.java (rev 0) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/accesscontrol/oracleclient/OracleExclusionFilter.java 2008-03-01 02:05:29 UTC (rev 2211) @@ -0,0 +1,71 @@ +package org.archive.wayback.accesscontrol.oracleclient; + +import java.util.Date; + +import org.archive.accesscontrol.AccessControlClient; +import org.archive.accesscontrol.RobotsUnavailableException; +import org.archive.accesscontrol.RuleOracleUnavailableException; +import org.archive.util.ArchiveUtils; +import org.archive.wayback.WaybackConstants; +import org.archive.wayback.core.SearchResult; +import org.archive.wayback.core.Timestamp; +import org.archive.wayback.util.ObjectFilter; + +public class OracleExclusionFilter implements ObjectFilter<SearchResult> { + ObjectFilter<SearchResult> robotFilter = null; + AccessControlClient client = null; + private String accessGroup = null; + + private final static String POLICY_ALLOW = "allow"; + private final static String POLICY_BLOCK = "block"; + private final static String POLICY_ROBOT = "robots"; + + + public OracleExclusionFilter(String oracleUrl, String accessGroup) { + client = new AccessControlClient(oracleUrl); + this.accessGroup = accessGroup; + } + + + public int filterObject(SearchResult o) { + String url = o.get(WaybackConstants.RESULT_URL); + Date captureDate = Timestamp.parseBefore( + o.get(WaybackConstants.RESULT_CAPTURE_DATE)).getDate(); + Date retrievalDate = new Date(); + + String policy; + try { + policy = client.getPolicy(ArchiveUtils.addImpliedHttpIfNecessary(url), captureDate, retrievalDate, + accessGroup); + if(policy != null) { + if(policy.equals(POLICY_ALLOW)) { + return FILTER_INCLUDE; + } else if(policy.equals(POLICY_BLOCK)) { + return FILTER_EXCLUDE; + } else if(policy.equals(POLICY_ROBOT)) { + return FILTER_INCLUDE; +// if(robotFilter != null) { +// return robotFilter.filterObject(o); +// } else { +// return FILTER_EXCLUDE; +// } + } + } + } catch (RobotsUnavailableException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (RuleOracleUnavailableException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return FILTER_EXCLUDE; + } + + public ObjectFilter<SearchResult> getRobotFilter() { + return robotFilter; + } + + public void setRobotFilter(ObjectFilter<SearchResult> robotFilter) { + this.robotFilter = robotFilter; + } +} Added: trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/accesscontrol/oracleclient/OracleExclusionFilterFactory.java =================================================================== --- trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/accesscontrol/oracleclient/OracleExclusionFilterFactory.java (rev 0) +++ trunk/archive-access/projects/wayback/wayback-core/src/main/java/org/archive/wayback/accesscontrol/oracleclient/OracleExclusionFilterFactory.java 2008-03-01 02:05:29 UTC (rev 2211) @@ -0,0 +1,51 @@ +package org.archive.wayback.accesscontrol.oracleclient; + +import org.archive.wayback.accesscontrol.ExclusionFilterFactory; +import org.archive.wayback.accesscontrol.robotstxt.RobotExclusionFilterFactory; +import org.archive.wayback.core.SearchResult; +import org.archive.wayback.util.ObjectFilter; + +public class OracleExclusionFilterFactory implements ExclusionFilterFactory { + + private RobotExclusionFilterFactory robotFactory = null; + private String oracleUrl = null; + private String accessGroup = null; + + public ObjectFilter<SearchResult> get() { + OracleExclusionFilter filter = new OracleExclusionFilter(oracleUrl, + accessGroup); + if(robotFactory != null) { + filter.setRobotFilter(robotFactory.get()); + } + return filter; + } + + public void shutdown() { + // no-op... yet.. + } + + public RobotExclusionFilterFactory getRobotFactory() { + return robotFactory; + } + + public void setRobotFactory(RobotExclusionFilterFactory robotFactory) { + this.robotFactory = robotFactory; + } + + public String getOracleUrl() { + return oracleUrl; + } + + public void setOracleUrl(String oracleUrl) { + this.oracleUrl = oracleUrl; + } + + public String getAccessGroup() { + return accessGroup; + } + + public void setAccessGroup(String accessGroup) { + this.accessGroup = accessGroup; + } + +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |