Ignore:
Timestamp:
2019-02-07T11:19:20+01:00 (6 years ago)
Author:
gerdp
Message:

improve undelete performance: don't download data for each node twice

File:
1 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/undelete/src/org/openstreetmap/josm/plugins/undelete/UndeleteAction.java

    r34881 r34883  
    1919import org.openstreetmap.josm.data.osm.DataSet;
    2020import org.openstreetmap.josm.data.osm.Node;
     21import org.openstreetmap.josm.data.osm.NodeData;
    2122import org.openstreetmap.josm.data.osm.OsmPrimitive;
    2223import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
     
    8788
    8889                        if (visible) {
    89                             // If the object is not deleted we get the real object
    90                             DownloadPrimitivesTask download = new DownloadPrimitivesTask(layer, Collections.singletonList(pid), true);
    91                             download.setZoom(false);
    92                             download.run();
    93 
    94                             primitive = layer.data.getPrimitiveById(id, type);
     90                            if (type == OsmPrimitiveType.NODE) {
     91                                // we have all needed information in the history object
     92                                primitive = new Node(hPrimitive1.getId());
     93                                HistoryNode hNode = (HistoryNode) hPrimitive1;
     94                                primitive.load(hNode.fillPrimitiveData(new NodeData()));
     95                                layer.data.addPrimitive(primitive);
     96                            } else {
     97                                // If the way or relation is not deleted we get the real object
     98                                DownloadPrimitivesTask download = new DownloadPrimitivesTask(layer, Collections.singletonList(pid), true);
     99                                download.setZoom(false);
     100                                download.run();
     101                                primitive = layer.data.getPrimitiveById(id, type);
     102                            }
    95103                            restored.add(primitive);
    96104                        } else {
Note: See TracChangeset for help on using the changeset viewer.