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