package pluginbase.config.field;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Iterator;
import java.util.Map;
import java.util.NoSuchElementException;
public class FieldMap implements Iterable<Field> {
@Nullable
Map<String, Field> fieldMap;
FieldMap(@Nullable Map<String, Field> fieldMap) {
this.fieldMap = fieldMap;
}
public boolean hasField(@NotNull String fieldName) {
return fieldMap != null && fieldMap.containsKey(fieldName.toLowerCase());
}
@Nullable
public Field getField(@NotNull String fieldName) {
return fieldMap == null ? null : fieldMap.get(fieldName.toLowerCase());
}
public int size() {
return fieldMap == null ? 0 : fieldMap.size();
}
@Override
public Iterator<Field> iterator() {
return new FieldIterator(fieldMap == null ? null : fieldMap.values().iterator());
}
private static class FieldIterator implements Iterator<Field> {
@Nullable
private Iterator<Field> fieldIterator;
FieldIterator(@Nullable Iterator<Field> fieldIterator) {
this.fieldIterator = fieldIterator;
}
@Override
public boolean hasNext() {
return fieldIterator != null && fieldIterator.hasNext();
}
@Override
public Field next() {
if (fieldIterator == null) {
throw new NoSuchElementException();
}
return fieldIterator.next();
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
}
}