// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.data.osm.event;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

import org.openstreetmap.josm.data.osm.DataSet;
import org.openstreetmap.josm.data.osm.OsmPrimitive;

public class PrimitivesRemovedEvent extends AbstractDatasetChangedEvent {

    private final List<? extends OsmPrimitive> primitives;
    private final boolean wasComplete;

    public PrimitivesRemovedEvent(DataSet dataSet, Collection<? extends OsmPrimitive> primitives, boolean wasComplete) {
        super(dataSet);
        this.primitives = Collections.unmodifiableList(new ArrayList<>(primitives));
        this.wasComplete = wasComplete;
    }

    @Override
    public void fire(DataSetListener listener) {
        listener.primitivesRemoved(this);
    }

    @Override
    public List<? extends OsmPrimitive> getPrimitives() {
        return primitives;
    }

    /**
     *
     * @return True if primitive wasn't really removed from the dataset, it only become incomplete again
     */
    public boolean wasComplete() {
        return wasComplete;
    }

    @Override
    public DatasetEventType getType() {
        return DatasetEventType.PRIMITIVES_REMOVED;
    }

}
