package org.maltparser.core.feature.value; import java.util.Set; import java.util.SortedMap; import java.util.TreeMap; import org.maltparser.core.feature.function.Function; import org.maltparser.core.helper.HashSet; /** * * * @author Johan Hall * @since 1.0 * */ public class MultipleFeatureValue extends FeatureValue { protected SortedMap<Integer, String> featureValues; public MultipleFeatureValue(Function function) { super(function); setFeatureValues(new TreeMap<Integer, String>()); } @Override public void reset() { super.reset(); featureValues.clear(); } public void addFeatureValue(int code, String Symbol) { featureValues.put(code, Symbol); } protected void setFeatureValues(SortedMap<Integer, String> featureValues) { this.featureValues = featureValues; } public Set<Integer> getCodes() { return (Set<Integer>) featureValues.keySet(); } public int getFirstCode() { return featureValues.firstKey(); } public Set<String> getSymbols() { return new HashSet<String>(featureValues.values()); } public String getFirstSymbol() { return featureValues.get(featureValues.firstKey()); } public boolean isMultiple() { return true; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } MultipleFeatureValue v = ((MultipleFeatureValue) obj); if (!featureValues.equals(v.featureValues)) { return false; } return super.equals(obj); } @Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append(super.toString()); sb.append('{'); for (Integer code : featureValues.keySet()) { sb.append('{'); sb.append(featureValues.get(code)); sb.append("->"); sb.append(code); sb.append('}'); } sb.append('}'); return sb.toString(); } }