001    // License: GPL. For details, see LICENSE file.
002    package org.openstreetmap.josm.data.osm;
003    
004    import java.util.Collection;
005    import java.util.Collections;
006    import java.util.HashSet;
007    import java.util.Set;
008    
009    public 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<Changeset>();
019            modified = new HashSet<Changeset>();
020            removed = new HashSet<Changeset>();
021        }
022    
023        public Collection<Changeset> getAddedChangesets() {
024            return Collections.unmodifiableCollection(added);
025        }
026        public Collection<Changeset> getRemovedChangesets() {
027            return Collections.unmodifiableCollection(removed);
028        }
029        public ChangesetCache getSource() {
030            return source;
031        }
032        public Collection<Changeset> getUpdatedChangesets() {
033            return Collections.unmodifiableCollection(modified);
034        }
035    
036        public void rememberAddedChangeset(Changeset cs) {
037            if (cs == null) return;
038            added.add(cs);
039        }
040    
041        public void rememberUpdatedChangeset(Changeset cs) {
042            if (cs == null) return;
043            modified.add(cs);
044        }
045    
046        public void rememberRemovedChangeset(Changeset cs) {
047            if (cs == null) return;
048            removed.add(cs);
049        }
050    
051        public boolean isEmpty() {
052            return added.isEmpty() && modified.isEmpty() && removed.isEmpty();
053        }
054    }