001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.data.osm.event;
003
004import java.util.Collection;
005import java.util.Collections;
006import java.util.List;
007
008import org.openstreetmap.josm.data.osm.DataSet;
009import org.openstreetmap.josm.data.osm.OsmPrimitive;
010
011public class DataChangedEvent extends AbstractDatasetChangedEvent {
012
013    private final List<AbstractDatasetChangedEvent> events;
014
015    public DataChangedEvent(DataSet dataSet, List<AbstractDatasetChangedEvent> events) {
016        super(dataSet);
017        this.events = events;
018    }
019
020    public DataChangedEvent(DataSet dataSet) {
021        this(dataSet, null);
022    }
023
024    @Override
025    public void fire(DataSetListener listener) {
026        listener.dataChanged(this);
027    }
028
029    @Override
030    public Collection<OsmPrimitive> getPrimitives() {
031        if (dataSet == null)
032            return Collections.emptyList();
033        else
034            return dataSet.allPrimitives();
035    }
036
037    @Override
038    public DatasetEventType getType() {
039        return DatasetEventType.DATA_CHANGED;
040    }
041
042    /**
043     *
044     * @return List of events that caused this DataChangedEvent. Might be null
045     */
046    public List<AbstractDatasetChangedEvent> getEvents() {
047        return events;
048    }
049
050}