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 PRIMITIVE_FLAGS_CHANGED, 021 } 022 023 protected final DataSet dataSet; 024 025 protected AbstractDatasetChangedEvent(DataSet dataSet) { 026 this.dataSet = dataSet; 027 } 028 029 public abstract void fire(DataSetListener listener); 030 031 /** 032 * Returns list of primitives modified by this event. 033 * <br> 034 * <strong>WARNING</strong> This value might be incorrect in case 035 * of {@link DataChangedEvent}. It returns all primitives in the dataset 036 * when this method is called (live list), not list of primitives when 037 * the event was created 038 * @return List of modified primitives 039 */ 040 public abstract Collection<? extends OsmPrimitive> getPrimitives(); 041 042 public DataSet getDataset() { 043 return dataSet; 044 } 045 046 public abstract DatasetEventType getType(); 047 048 @Override 049 public String toString() { 050 return getType().toString(); 051 } 052 053}