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}