001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.data.osm.event;
003
004import java.util.ArrayList;
005import java.util.Collection;
006import java.util.Collections;
007import java.util.List;
008
009import org.openstreetmap.josm.data.osm.DataSet;
010import org.openstreetmap.josm.data.osm.OsmPrimitive;
011
012/**
013 * An event that is triggered when primitives were removed from the dataset
014 */
015public class PrimitivesRemovedEvent extends AbstractDatasetChangedEvent {
016
017    private final List<? extends OsmPrimitive> primitives;
018    private final boolean wasComplete;
019
020    /**
021     * Constructs a new {@code PrimitivesRemovedEvent}.
022     * @param dataSet the dataset from which the event comes from
023     * @param primitives the list of primitives affected by the change
024     * @param wasComplete {@code true} if primitive wasn't really removed from the dataset, it only become incomplete again
025     */
026    public PrimitivesRemovedEvent(DataSet dataSet, Collection<? extends OsmPrimitive> primitives, boolean wasComplete) {
027        super(dataSet);
028        this.primitives = Collections.unmodifiableList(new ArrayList<>(primitives));
029        this.wasComplete = wasComplete;
030    }
031
032    @Override
033    public void fire(DataSetListener listener) {
034        listener.primitivesRemoved(this);
035    }
036
037    @Override
038    public List<? extends OsmPrimitive> getPrimitives() {
039        return primitives;
040    }
041
042    /**
043     * Determines if primitive wasn't really removed from the dataset, it only become incomplete again.
044     * @return {@code true} if primitive wasn't really removed from the dataset, it only become incomplete again
045     */
046    public boolean wasComplete() {
047        return wasComplete;
048    }
049
050    @Override
051    public DatasetEventType getType() {
052        return DatasetEventType.PRIMITIVES_REMOVED;
053    }
054
055}