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 }