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