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 011/** 012 * A combined data change event. It consists of multiple dataset events. 013 */ 014public class DataChangedEvent extends AbstractDatasetChangedEvent { 015 016 private final List<AbstractDatasetChangedEvent> events; 017 018 /** 019 * Constructs a new {@code DataChangedEvent} 020 * @param dataSet the dataset from which the event comes from 021 * @param events list of change events 022 */ 023 public DataChangedEvent(DataSet dataSet, List<AbstractDatasetChangedEvent> events) { 024 super(dataSet); 025 this.events = events; 026 } 027 028 /** 029 * Constructs a new {@code DataChangedEvent} 030 * @param dataSet data set. Can be null 031 */ 032 public DataChangedEvent(DataSet dataSet) { 033 this(dataSet, null); 034 } 035 036 @Override 037 public void fire(DataSetListener listener) { 038 listener.dataChanged(this); 039 } 040 041 @Override 042 public Collection<OsmPrimitive> getPrimitives() { 043 return dataSet == null ? Collections.emptyList() : dataSet.allPrimitives(); 044 } 045 046 @Override 047 public DatasetEventType getType() { 048 return DatasetEventType.DATA_CHANGED; 049 } 050 051 /** 052 * Returns list of events that caused this DataChangedEvent. 053 * @return List of events that caused this DataChangedEvent. Might be null 054 */ 055 public List<AbstractDatasetChangedEvent> getEvents() { 056 return events; 057 } 058}