/* * File: StringEvaluatorSingleTermFilter.java * Authors: Justin Basilico * Company: Sandia National Laboratories * Project: Cognitive Foundry * * Copyright February 22, 2010, Sandia Corporation. * Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive * license for use of this work by or on behalf of the U.S. Government. Export * of this program may require a license from the United States Government. * See CopyrightHistory.txt for complete details. * */ package gov.sandia.cognition.text.term.filter; import gov.sandia.cognition.evaluator.Evaluator; import gov.sandia.cognition.text.term.DefaultTerm; import gov.sandia.cognition.text.term.DefaultTermOccurrence; import gov.sandia.cognition.text.term.Term; import gov.sandia.cognition.text.term.TermOccurrence; /** * Adapts an evaluator from string to string to be a term filter on individual * terms. * * @author Justin Basilico * @since 3.0 */ public class StringEvaluatorSingleTermFilter extends AbstractSingleTermFilter { /** The evaluator to adapt. */ protected Evaluator<String, String> evaluator; /** * Creates a new {@code StringEvaluatorSingleTermFilter} with a null * evaluator. */ public StringEvaluatorSingleTermFilter() { this(null); } /** * Creates a new {@code StringEvaluatorSingleTermFilter} with a given * evaluator. * * @param evaluator * The evaluator to use. */ public StringEvaluatorSingleTermFilter( final Evaluator<String, String> evaluator) { super(); this.setEvaluator(evaluator); } public TermOccurrence filterTerm( final TermOccurrence occurrence) { // Get the input string. final String input = occurrence.getTerm().getName(); // Evaluate to get the output. final String output = this.getEvaluator().evaluate(input); if (output == null) { // Bad output. return null; } else { // Create the new term. final Term term = new DefaultTerm(output); return new DefaultTermOccurrence(term, occurrence.getStart(), occurrence.getLength()); } } /** * Gets the evaluator being used as a filter. * * @return * The evaluator. */ public Evaluator<String, String> getEvaluator() { return this.evaluator; } /** * Sets the evaluator being used as a filter. * * @param evaluator * The evaluator. */ public void setEvaluator( final Evaluator<String, String> evaluator) { this.evaluator = evaluator; } }