ModifierSetIterator.java 1.86 KB
/*
 * Decompiled with CFR 0_118.
 * 
 * Could not load the following classes:
 *  com.scene7.is.util.KeyValuePair
 *  org.jetbrains.annotations.NotNull
 *  org.jetbrains.annotations.Nullable
 */
package com.scene7.is.ps.provider;

import com.scene7.is.ps.provider.ModifierSet;
import com.scene7.is.ps.provider.defs.ModifierEnum;
import com.scene7.is.util.KeyValuePair;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public class ModifierSetIterator
implements Iterator<KeyValuePair<ModifierEnum<?>, ?>> {
    @NotNull
    private final ModifierSet modifierSet;
    private final Iterator<ModifierEnum<?>> modifierIterator;
    private KeyValuePair<ModifierEnum<?>, ?> next;

    public ModifierSetIterator(ModifierSet modifierSet) {
        this.modifierSet = modifierSet;
        this.modifierIterator = ModifierEnum.VALUE_LIST.iterator();
        this.next = this.findNext();
    }

    @Override
    public boolean hasNext() {
        return this.next != null;
    }

    @NotNull
    @Override
    public KeyValuePair<ModifierEnum<?>, ?> next() {
        if (this.next == null) {
            throw new NoSuchElementException();
        }
        KeyValuePair result = this.next;
        this.next = this.findNext();
        return result;
    }

    @Override
    public void remove() {
        throw new UnsupportedOperationException("remove");
    }

    @Nullable
    private KeyValuePair<ModifierEnum<?>, ?> findNext() {
        while (this.modifierIterator.hasNext()) {
            ModifierEnum modifier = this.modifierIterator.next();
            if (!this.modifierSet.contains(modifier)) continue;
            Object value = this.modifierSet.getOrDie(modifier);
            return KeyValuePair.keyValuePair(modifier, value);
        }
        return null;
    }
}