Ignore:
Timestamp:
2009-09-20T11:07:46+02:00 (15 years ago)
Author:
stoecker
Message:

see #3475 - patch by Petr Dlouhý - improve speed

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/command/DeleteCommand.java

    r2070 r2166  
    163163    public static Command deleteWithReferences(OsmDataLayer layer, Collection<? extends OsmPrimitive> selection, boolean simulate) {
    164164        CollectBackReferencesVisitor v = new CollectBackReferencesVisitor(layer.data);
     165        v.initialize();
    165166        for (OsmPrimitive osm : selection) {
    166167            osm.visit(v);
    167168        }
    168         v.data.addAll(selection);
    169         if (v.data.isEmpty())
     169        v.getData().addAll(selection);
     170        if (v.getData().isEmpty())
    170171            return null;
    171         if (!checkAndConfirmOutlyingDeletes(layer,v.data) && !simulate)
     172        if (!checkAndConfirmOutlyingDeletes(layer,v.getData()) && !simulate)
    172173            return null;
    173         return new DeleteCommand(layer,v.data);
     174        return new DeleteCommand(layer,v.getData());
    174175    }
    175176
     
    239240    protected static Collection<Node> computeNodesToDelete(OsmDataLayer layer, Collection<OsmPrimitive> primitivesToDelete) {
    240241        Collection<Node> nodesToDelete = new HashSet<Node>();
     242        CollectBackReferencesVisitor v = new CollectBackReferencesVisitor(layer.data, false);
    241243        for (OsmPrimitive osm : primitivesToDelete) {
    242244            if (! (osm instanceof Way) ) {
     
    247249                    continue;
    248250                }
    249                 CollectBackReferencesVisitor v = new CollectBackReferencesVisitor(layer.data, false);
     251                v.initialize();
    250252                n.visit(v);
    251                 v.data.removeAll(primitivesToDelete);
    252                 if (v.data.isEmpty()) {
     253                v.getData().removeAll(primitivesToDelete);
     254                if (v.getData().isEmpty()) {
    253255                    nodesToDelete.add(n);
    254256                }
     
    297299            return null;
    298300
     301        CollectBackReferencesVisitor v = new CollectBackReferencesVisitor(layer.data, false);
    299302        for (OsmPrimitive osm : primitivesToDelete) {
    300             CollectBackReferencesVisitor v = new CollectBackReferencesVisitor(layer.data, false);
     303            v.initialize();
    301304            osm.visit(v);
    302             for (OsmPrimitive ref : v.data) {
     305            for (OsmPrimitive ref : v.getData()) {
    303306                if (primitivesToDelete.contains(ref)) {
    304307                    continue;
     
    328331                primitivesToDelete.add(w);
    329332
    330                 CollectBackReferencesVisitor v = new CollectBackReferencesVisitor(layer.data, false);
     333                v.initialize();
    331334                w.visit(v);
    332                 for (OsmPrimitive ref : v.data) {
     335                for (OsmPrimitive ref : v.getData()) {
    333336                    if (primitivesToDelete.contains(ref)) {
    334337                        continue;
Note: See TracChangeset for help on using the changeset viewer.