package org.wikipedia.model;
import android.support.annotation.NonNull;
import android.util.SparseArray;
public class EnumCodeMap<T extends Enum<T> & EnumCode> {
@NonNull private final SparseArray<T> map;
public EnumCodeMap(@NonNull Class<T> enumeration) {
map = codeToEnumMap(enumeration);
}
@NonNull public T get(int code) {
T status = map.get(code);
if (status == null) {
throw new IllegalArgumentException("code=" + code);
}
return status;
}
@NonNull private SparseArray<T> codeToEnumMap(@NonNull Class<T> enumeration) {
SparseArray<T> ret = new SparseArray<>();
for (T value : enumeration.getEnumConstants()) {
ret.put(value.code(), value);
}
return ret;
}
public int size() {
return map.size();
}
}