package org.xbib.elasticsearch.index.analysis.icu.tokenattributes; import com.ibm.icu.lang.UScript; import org.apache.lucene.util.AttributeImpl; import org.apache.lucene.util.AttributeReflector; /** * Implementation of {@link ScriptAttribute} that stores the script as an integer. */ public class ScriptAttributeImpl extends AttributeImpl implements ScriptAttribute, Cloneable { private int code = UScript.COMMON; public ScriptAttributeImpl() {} @Override public int getCode() { return code; } @Override public void setCode(int code) { this.code = code; } @Override public String getName() { return UScript.getName(code); } @Override public String getShortName() { return UScript.getShortName(code); } @Override public void clear() { code = UScript.COMMON; } @Override public void copyTo(AttributeImpl target) { ScriptAttribute t = (ScriptAttribute) target; t.setCode(code); } @Override public boolean equals(Object other) { return this == other || other instanceof ScriptAttributeImpl && ((ScriptAttributeImpl) other).code == code; } @Override public ScriptAttributeImpl clone() { ScriptAttributeImpl attribute = (ScriptAttributeImpl) super.clone(); attribute.code = this.code; return attribute; } @Override public int hashCode() { return code; } @Override public void reflectWith(AttributeReflector reflector) { String name = code == UScript.JAPANESE ? "Chinese/Japanese" : getName(); reflector.reflect(ScriptAttribute.class, "script", name); } }