001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.data.osm;
003
004import java.util.Collection;
005import java.util.Collections;
006import java.util.HashSet;
007import java.util.Set;
008
009public class DefaultChangesetCacheEvent implements ChangesetCacheEvent{
010
011    private final Set<Changeset> added;
012    private final Set<Changeset> modified;
013    private final Set<Changeset> removed;
014    private final ChangesetCache source;
015
016    public DefaultChangesetCacheEvent(ChangesetCache source) {
017        this.source = source;
018        added = new HashSet<>();
019        modified = new HashSet<>();
020        removed = new HashSet<>();
021    }
022
023    @Override
024    public Collection<Changeset> getAddedChangesets() {
025        return Collections.unmodifiableCollection(added);
026    }
027    @Override
028    public Collection<Changeset> getRemovedChangesets() {
029        return Collections.unmodifiableCollection(removed);
030    }
031    @Override
032    public ChangesetCache getSource() {
033        return source;
034    }
035    @Override
036    public Collection<Changeset> getUpdatedChangesets() {
037        return Collections.unmodifiableCollection(modified);
038    }
039
040    public void rememberAddedChangeset(Changeset cs) {
041        if (cs == null) return;
042        added.add(cs);
043    }
044
045    public void rememberUpdatedChangeset(Changeset cs) {
046        if (cs == null) return;
047        modified.add(cs);
048    }
049
050    public void rememberRemovedChangeset(Changeset cs) {
051        if (cs == null) return;
052        removed.add(cs);
053    }
054
055    public boolean isEmpty() {
056        return added.isEmpty() && modified.isEmpty() && removed.isEmpty();
057    }
058}