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
028    @Override
029    public Collection<Changeset> getRemovedChangesets() {
030        return Collections.unmodifiableCollection(removed);
031    }
032
033    @Override
034    public ChangesetCache getSource() {
035        return source;
036    }
037
038    @Override
039    public Collection<Changeset> getUpdatedChangesets() {
040        return Collections.unmodifiableCollection(modified);
041    }
042
043    public void rememberAddedChangeset(Changeset cs) {
044        if (cs == null) return;
045        added.add(cs);
046    }
047
048    public void rememberUpdatedChangeset(Changeset cs) {
049        if (cs == null) return;
050        modified.add(cs);
051    }
052
053    public void rememberRemovedChangeset(Changeset cs) {
054        if (cs == null) return;
055        removed.add(cs);
056    }
057
058    public boolean isEmpty() {
059        return added.isEmpty() && modified.isEmpty() && removed.isEmpty();
060    }
061}