Ticket #19898: 19898.patch
File 19898.patch, 3.4 KB (added by , 4 years ago) |
---|
-
src/org/openstreetmap/josm/data/osm/DataSetMerger.java
424 424 progressMonitor.beginTask(tr("Merging data..."), sourceDataSet.allPrimitives().size()); 425 425 } 426 426 targetDataSet.update(() -> { 427 List<? extends OsmPrimitive> candidates = n ew ArrayList<>(targetDataSet.getNodes());427 List<? extends OsmPrimitive> candidates = null; 428 428 for (Node node: sourceDataSet.getNodes()) { 429 // lazy initialisation to improve performance, see #19898 430 if (node.isNew() && candidates == null) { 431 candidates = new ArrayList<>(targetDataSet.getNodes()); 432 } 429 433 mergePrimitive(node, candidates); 430 434 if (progressMonitor != null) { 431 435 progressMonitor.worked(1); 432 436 } 433 437 } 434 candidates.clear(); 435 candidates = new ArrayList<>(targetDataSet.getWays()); 438 candidates = null; 436 439 for (Way way: sourceDataSet.getWays()) { 440 // lazy initialisation to improve performance 441 if (way.isNew() && candidates == null) { 442 candidates = new ArrayList<>(targetDataSet.getWays()); 443 } 437 444 mergePrimitive(way, candidates); 438 445 if (progressMonitor != null) { 439 446 progressMonitor.worked(1); 440 447 } 441 448 } 442 candidates.clear(); 443 candidates = new ArrayList<>(targetDataSet.getRelations()); 449 candidates = null; 444 450 for (Relation relation: sourceDataSet.getRelations()) { 451 // lazy initialisation to improve performance 452 if (relation.isNew() && candidates == null) { 453 candidates = new ArrayList<>(targetDataSet.getRelations()); 454 } 445 455 mergePrimitive(relation, candidates); 446 456 if (progressMonitor != null) { 447 457 progressMonitor.worked(1); 448 458 } 449 459 } 450 candidates .clear();460 candidates = null; 451 461 fixReferences(); 452 462 453 463 Area a = targetDataSet.getDataSourceArea(); -
src/org/openstreetmap/josm/io/OsmServerBackreferenceReader.java
214 214 protected DataSet readIncompletePrimitives(DataSet ds, ProgressMonitor progressMonitor) throws OsmTransferException { 215 215 progressMonitor.beginTask(null, 2); 216 216 try { 217 Collection<Way> waysToCheck = new ArrayList<>(ds.getWays());218 217 if (isReadFull() || (primitiveType == OsmPrimitiveType.NODE && !isAllowIncompleteParentWays())) { 218 Collection<Way> waysToCheck = new ArrayList<>(ds.getWays()); 219 219 for (Way way: waysToCheck) { 220 220 if (!way.isNew() && way.hasIncompleteNodes()) { 221 221 OsmServerObjectReader reader = new OsmServerObjectReader(way.getId(), OsmPrimitiveType.from(way), true /* read full */);