// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.data.osm;

import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;

public class DefaultChangesetCacheEvent implements ChangesetCacheEvent{

    private final Set<Changeset> added;
    private final Set<Changeset> modified;
    private final Set<Changeset> removed;
    private final ChangesetCache source;

    public DefaultChangesetCacheEvent(ChangesetCache source) {
        this.source = source;
        added = new HashSet<>();
        modified = new HashSet<>();
        removed = new HashSet<>();
    }

    @Override
    public Collection<Changeset> getAddedChangesets() {
        return Collections.unmodifiableCollection(added);
    }

    @Override
    public Collection<Changeset> getRemovedChangesets() {
        return Collections.unmodifiableCollection(removed);
    }

    @Override
    public ChangesetCache getSource() {
        return source;
    }

    @Override
    public Collection<Changeset> getUpdatedChangesets() {
        return Collections.unmodifiableCollection(modified);
    }

    public void rememberAddedChangeset(Changeset cs) {
        if (cs == null) return;
        added.add(cs);
    }

    public void rememberUpdatedChangeset(Changeset cs) {
        if (cs == null) return;
        modified.add(cs);
    }

    public void rememberRemovedChangeset(Changeset cs) {
        if (cs == null) return;
        removed.add(cs);
    }

    public boolean isEmpty() {
        return added.isEmpty() && modified.isEmpty() && removed.isEmpty();
    }
}
