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}