001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.data.osm.event;
003
004import java.util.Collection;
005import java.util.Collections;
006
007import org.openstreetmap.josm.data.osm.DataSet;
008import org.openstreetmap.josm.data.osm.OsmPrimitive;
009
010/**
011 * Represents a change in {@link OsmPrimitive#flags} unless covered by a more specific {@linkplain AbstractDatasetChangedEvent event}
012 */
013public class PrimitiveFlagsChangedEvent extends AbstractDatasetChangedEvent {
014
015    private final OsmPrimitive primitive;
016
017    /**
018     * Constructs a new {@code PrimitiveFlagsChangedEvent}.
019     * @param dataSet the dataset from which the event comes from
020     * @param primitive the primitive affected by the change
021     */
022    public PrimitiveFlagsChangedEvent(DataSet dataSet, OsmPrimitive primitive) {
023        super(dataSet);
024        this.primitive = primitive;
025    }
026
027    @Override
028    public void fire(DataSetListener listener) {
029        listener.otherDatasetChange(this);
030    }
031
032    @Override
033    public Collection<? extends OsmPrimitive> getPrimitives() {
034        return Collections.singleton(primitive);
035    }
036
037    @Override
038    public DatasetEventType getType() {
039        return DatasetEventType.PRIMITIVE_FLAGS_CHANGED;
040    }
041}