001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.data.osm.event; 003 004import java.util.Collections; 005import java.util.List; 006import java.util.Map; 007 008import org.openstreetmap.josm.data.osm.DataSet; 009import org.openstreetmap.josm.data.osm.OsmPrimitive; 010 011/** 012 * An event that is triggered if the tags of a single primitive have changed 013 */ 014public class TagsChangedEvent extends AbstractDatasetChangedEvent { 015 016 private final OsmPrimitive primitive; 017 private final Map<String, String> originalKeys; 018 019 /** 020 * Constructs a new {@code TagsChangedEvent}. 021 * @param dataSet the dataset from which the event comes from 022 * @param primitive the primitive affected by the change 023 * @param originalKeys the original tags 024 */ 025 public TagsChangedEvent(DataSet dataSet, OsmPrimitive primitive, Map<String, String> originalKeys) { 026 super(dataSet); 027 this.primitive = primitive; 028 this.originalKeys = originalKeys; 029 } 030 031 @Override 032 public void fire(DataSetListener listener) { 033 listener.tagsChanged(this); 034 } 035 036 /** 037 * Returns the primitive affected by the change. 038 * @return the primitive affected by the change 039 */ 040 public OsmPrimitive getPrimitive() { 041 return primitive; 042 } 043 044 @Override 045 public List<? extends OsmPrimitive> getPrimitives() { 046 return Collections.singletonList(primitive); 047 } 048 049 @Override 050 public DatasetEventType getType() { 051 return DatasetEventType.TAGS_CHANGED; 052 } 053 054 /** 055 * Returns the original tags. 056 * @return the original tags 057 */ 058 public Map<String, String> getOriginalKeys() { 059 return originalKeys; 060 } 061 062}