001 // License: GPL. For details, see LICENSE file.
002 package org.openstreetmap.josm.data.osm.event;
003
004 import java.util.Collection;
005
006 import org.openstreetmap.josm.data.osm.DataSet;
007 import org.openstreetmap.josm.data.osm.OsmPrimitive;
008
009 public abstract class AbstractDatasetChangedEvent {
010
011 public enum DatasetEventType {DATA_CHANGED, NODE_MOVED, PRIMITIVES_ADDED, PRIMITIVES_REMOVED,
012 RELATION_MEMBERS_CHANGED, TAGS_CHANGED, WAY_NODES_CHANGED, CHANGESET_ID_CHANGED}
013
014 protected final DataSet dataSet;
015
016 protected AbstractDatasetChangedEvent(DataSet dataSet) {
017 this.dataSet = dataSet;
018 }
019
020 public abstract void fire(DataSetListener listener);
021
022 /**
023 * Returns list of primitives modified by this event.
024 * <br/>
025 * <strong>WARNING</strong> This value might be incorrect in case
026 * of {@link DataChangedEvent}. It returns all primitives in the dataset
027 * when this method is called (live list), not list of primitives when
028 * the event was created
029 * @return List of modified primitives
030 */
031 public abstract Collection<? extends OsmPrimitive> getPrimitives();
032
033 public DataSet getDataset() {
034 return dataSet;
035 }
036
037 public abstract DatasetEventType getType();
038
039 @Override
040 public String toString() {
041 return getType().toString();
042 }
043
044 }