Ticket #23584: 23584.patch
| File 23584.patch, 2.4 KB (added by , 2 years ago) |
|---|
-
src/reverter/ChangesetReverter.java
512 512 513 513 // Remove primitives where we already know the LatLon. 514 514 nodes.removeIf(n -> { 515 if (n.isDeleted() || n.isLatLonKnown()) 516 return true; 515 517 PrimitiveId id = n.getPrimitiveId(); 516 518 OsmPrimitive p = ds.getPrimitiveById(id); 517 return !(p instanceof Node) || ((Node) p).isLatLonKnown() ;519 return !(p instanceof Node) || ((Node) p).isLatLonKnown() || p.getVersion() <= 1; 518 520 }); 519 521 progressMonitor.worked(num - nodes.size()); 520 522 … … 531 533 rds.readMultiObjects(OsmPrimitiveType.NODE, versionMap, subMonitor); 532 534 subMonitor.finishTask(); 533 535 final DataSet history = rds.parseOsm(progressMonitor.createSubTaskMonitor(0, false)); 536 ds.update(() -> updateNodes(progressMonitor, nodes, versionMap, history)); 534 537 versionMap.replaceAll((key, value) -> value - 1); 535 538 versionMap.values().removeIf(i -> i <= 0); 536 ds.update(() -> updateNodes(progressMonitor, nodes, versionMap, history));537 539 if (progressMonitor.isCanceled()) { 538 540 break; 539 541 } … … 554 556 for (Node n : nodes) { 555 557 if (!n.isDeleted() && !n.isLatLonKnown()) { 556 558 final Node historyNode = (Node) history.getPrimitiveById(n); 557 if (historyNode != null && historyNode.isLatLonKnown() 558 && changeset.getClosedAt().isAfter(historyNode.getInstant())) { 559 n.load(historyNode.save()); 560 versionMap.remove(n.getUniqueId()); 561 progressMonitor.worked(1); 559 if (historyNode != null) { 560 if (historyNode.isLatLonKnown() 561 && changeset.getClosedAt().isAfter(historyNode.getInstant())) { 562 n.load(historyNode.save()); 563 versionMap.remove(n.getUniqueId()); 564 progressMonitor.worked(1); 565 } else { 566 versionMap.put(n.getId(), historyNode.getVersion()); 567 } 562 568 } 563 569 } 564 570 if (progressMonitor.isCanceled()) {
