package org.xbib.elasticsearch.index.analysis.naturalsort; import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.util.AttributeFactory; import java.text.Collator; /** * */ public class NaturalSortKeyAttributeFactory extends AttributeFactory.StaticImplementationAttributeFactory<NaturalSortKeyAttributeImpl> { private final Collator collator; private final int digits; private final int maxTokens; public NaturalSortKeyAttributeFactory(Collator collator, int digits, int maxTokens) { this(TokenStream.DEFAULT_TOKEN_ATTRIBUTE_FACTORY, collator, digits, maxTokens); } public NaturalSortKeyAttributeFactory(AttributeFactory delegate, Collator collator, int digits, int maxTokens) { super(delegate, NaturalSortKeyAttributeImpl.class); this.collator = collator; this.digits = digits; this.maxTokens = maxTokens; } @Override protected NaturalSortKeyAttributeImpl createInstance() { return new NaturalSortKeyAttributeImpl(collator, digits, maxTokens); } @Override public boolean equals(Object object) { return object instanceof NaturalSortKeyAttributeFactory && collator.equals(((NaturalSortKeyAttributeFactory)object).collator) && Integer.compare(digits, ((NaturalSortKeyAttributeFactory)object).digits) == 0 && Integer.compare(maxTokens, ((NaturalSortKeyAttributeFactory)object).maxTokens) == 0; } @Override public int hashCode() { return collator.hashCode() ^ Integer.hashCode(digits) ^ Integer.hashCode(maxTokens); } }