/** * */ package querqy.rewrite.commonrules.model; import querqy.ComparableCharSequence; /** * @author René Kriegler, @renekrie * */ public class TermMatch { final querqy.model.Term queryTerm; final boolean isPrefix; final ComparableCharSequence wildcardMatch; //final Term ruleInputTerm; public TermMatch(querqy.model.Term queryTerm) { this(queryTerm, false, null); } public TermMatch(querqy.model.Term queryTerm, boolean isPrefix, ComparableCharSequence wildcardMatch) { if (isPrefix) { if ((wildcardMatch == null) || (wildcardMatch.length() == 0)) { throw new IllegalArgumentException("Need a wildcard match if isPrefix for " + queryTerm.toString()); } } this.queryTerm = queryTerm; this.isPrefix = isPrefix; this.wildcardMatch = wildcardMatch; } public querqy.model.Term getQueryTerm() { return queryTerm; } public boolean isPrefix() { return isPrefix; } public ComparableCharSequence getWildcardMatch() { return wildcardMatch; } @Override public String toString() { return "TermMatch{" + "queryTerm=" + queryTerm + ", isPrefix=" + isPrefix + ", wildcardMatch=" + wildcardMatch + '}'; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + (isPrefix ? 1231 : 1237); result = prime * result + ((queryTerm == null) ? 0 : queryTerm.hashCode()); result = prime * result + ((wildcardMatch == null) ? 0 : wildcardMatch.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; TermMatch other = (TermMatch) obj; if (isPrefix != other.isPrefix) return false; if (queryTerm == null) { if (other.queryTerm != null) return false; } else if (!queryTerm.equals(other.queryTerm)) return false; if (wildcardMatch == null) { if (other.wildcardMatch != null) return false; } else if (!wildcardMatch.equals(other.wildcardMatch)) return false; return true; } }