All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.davidmoten.odata.client.internal.ChangedFields Maven / Gradle / Ivy

package com.github.davidmoten.odata.client.internal;

import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;

/**
 * Immutable
 */
public final class ChangedFields implements Iterable {

    private final Set set;

    private ChangedFields(Set set) {
        this.set = set;
    }

    public ChangedFields() {
        this(Collections.emptySet());
    }

    @Override
    public Iterator iterator() {
        // return a custom iterator that does not allow removal
        return new Iterator() {

            Iterator it = set.iterator();

            @Override
            public boolean hasNext() {
                return it.hasNext();
            }

            @Override
            public String next() {
                return it.next();
            }
        };
    }

    public boolean contains(String name) {
        return set.contains(name);
    }

    public ChangedFields add(String name) {
        Set set2 = new HashSet(set);
        set2.add(name);
        return new ChangedFields(set2);
    }

    public Set toSet() {
        return StreamSupport.stream(this.spliterator(), false).collect(Collectors.toSet());
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy