public Rule getRule(String url, Date captureDate, Date retrievalDate,
            String who) throws RuleOracleUnavailableException {
        url = ArchiveUtils.addImpliedHttpIfNecessary(url);
        String surt = SURT.fromURI(url);
//        PublicSuffixes.reduceSurtToAssignmentLevel(surt)
        String publicSuffix = PublicSuffixes
                .reduceSurtToAssignmentLevel(getSurtAuthority(surt));

            RuleSet rules =  ruleDao.getRuleTree(getScheme(surt) + "(" + publicSuffix);

        Rule matchingRule = rules.getMatchingRule(surt, captureDate,
                retrievalDate, who);
        return matchingRule;
    }
public Rule getRule ( String url , Date captureDate , Date retrievalDate , String who ) throws RuleOracleUnavailableException { url = ArchiveUtils . addImpliedHttpIfNecessary ( url ) ; String surt = SURT . fromURI ( url ) ; String publicSuffix = PublicSuffixes . reduceSurtToAssignmentLevel ( getSurtAuthority ( surt ) ) ; RuleSet rules = ruleDao . getRuleTree ( getScheme ( surt ) + "(" + publicSuffix ) ; Rule matchingRule = rules . getMatchingRule ( surt , captureDate , retrievalDate , who ) ; return matchingRule ; }
Return the most specific matching rule for the requested document.

@param url
URL of the requested document.
@param captureDate
Date the document was archived.
@param retrievalDate
Date of retrieval (usually now).
@param who
Group name of the user accessing the document.
@return
@throws RuleOracleUnavailableException