Ignore:
Timestamp:
2017-06-06T00:23:42+02:00 (7 years ago)
Author:
donvip
Message:

fix #josm12640 - undelete plugin does not work if an object has redactions in its history

File:
1 edited

Legend:

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

    r33263 r33374  
    7171
    7272                        HistoryOsmPrimitive hPrimitive1 = h.getLatest();
    73                         HistoryOsmPrimitive hPrimitive2;
     73                        HistoryOsmPrimitive hPrimitive2 = null;
    7474
    7575                        boolean visible = hPrimitive1.isVisible();
     
    8282                            primitive = layer.data.getPrimitiveById(id, type);
    8383                        } else {
     84                            // We search n-1 version with redaction robustness
     85                            int idx = 1;
     86                            int n = h.getNumVersions();
     87                            while (hPrimitive2 == null && idx < n) {
     88                                hPrimitive2 =  h.getByVersion(n - idx++);
     89                            }
    8490                            if (type.equals(OsmPrimitiveType.NODE)) {
    8591                                // We get version and user from the latest version,
    8692                                // coordinates and tags from n-1 version
    87                                 hPrimitive2 = h.getByVersion(h.getNumVersions() - 1);
    88 
    8993                                Node node = new Node(id, (int) hPrimitive1.getVersion());
    9094
     
    99103                                // nodes and tags from n-1 version
    100104                                hPrimitive1 = h.getLatest();
    101                                 hPrimitive2 = h.getByVersion(h.getNumVersions() - 1);
    102105
    103106                                Way way = new Way(id, (int) hPrimitive1.getVersion());
     
    119122                                primitive = new Relation();
    120123                                hPrimitive1 = h.getLatest();
    121                                 hPrimitive2 = h.getByVersion(h.getNumVersions() - 1);
    122124
    123125                                Relation rel = new Relation(id, (int) hPrimitive1.getVersion());
Note: See TracChangeset for help on using the changeset viewer.