Changeset 17359 in josm
- Timestamp:
- 2020-11-25T13:23:30+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/command/SplitWayCommand.java
r17358 r17359 17 17 import java.util.HashSet; 18 18 import java.util.Iterator; 19 import java.util.LinkedHashSet;20 19 import java.util.LinkedList; 21 20 import java.util.List; … … 91 90 * @param newSelection The new list of selected primitives ids (which is saved for later retrieval with {@link #getNewSelection}) 92 91 * @param originalWay The original way being split (which is saved for later retrieval with {@link #getOriginalWay}) 93 * @param newWays The resulting new ways (which is saved for later retrieval with {@link #get NewWays})92 * @param newWays The resulting new ways (which is saved for later retrieval with {@link #getOriginalWay}) 94 93 */ 95 94 public SplitWayCommand(String name, Collection<Command> commandList, … … 403 402 } catch (OsmTransferException e) { 404 403 ExceptionDialogUtil.explainException(e); 405 analysis.cleanup();406 404 return Optional.empty(); 407 405 } 408 406 // If missing relation members were downloaded, perform the analysis again to find the relation 409 407 // member order for all relations. 410 analysis.cleanup();411 408 analysis = analyseSplit(way, wayToKeep, newWays); 412 break;409 return Optional.of(splitBasedOnAnalyses(way, newWays, newSelection, analysis, indexOfWayToKeep)); 413 410 case GO_AHEAD_WITHOUT_DOWNLOADS: 414 411 // Proceed with the split with the information we have. 415 412 // This can mean that there are no missing members we want, or that the user chooses to continue 416 413 // the split without downloading them. 417 break;414 return Optional.of(splitBasedOnAnalyses(way, newWays, newSelection, analysis, indexOfWayToKeep)); 418 415 case USER_ABORTED: 419 416 default: 420 417 return Optional.empty(); 421 }422 try {423 return Optional.of(splitBasedOnAnalyses(way, newWays, newSelection, analysis, indexOfWayToKeep));424 } finally {425 // see #19885426 wayToKeep.setNodes(null);427 analysis.cleanup();428 418 } 429 419 } … … 475 465 } 476 466 if (c == null) { 477 c = new Relation(r); // #19885: will be removed later467 c = new Relation(r); 478 468 } 479 469 … … 562 552 } 563 553 } 554 555 if (c != null) { 556 commandList.add(new ChangeCommand(r.getDataSet(), r, c)); 557 } 564 558 } 565 559 changedWay.setNodes(null); // see #19885 … … 581 575 warningTypes = warnings; 582 576 this.numberOfRelations = numberOfRelations; 583 }584 585 /**586 * Unlink temporary copies of relations. See #19885587 */588 void cleanup() {589 for (RelationAnalysis ra : relationAnalyses) {590 if (ra.relation.getDataSet() == null)591 ra.relation.setMembers(null);592 }593 577 } 594 578 … … 704 688 } 705 689 706 Set<Relation> modifiedRelations = new LinkedHashSet<>();707 690 // Perform the split. 708 691 for (RelationAnalysis relationAnalysis : analysis.getRelationAnalyses()) { … … 746 729 } 747 730 } 748 modifiedRelations.add(relation);749 }750 for (Relation r : modifiedRelations) {751 DataSet ds = way.getDataSet();752 Relation orig = (Relation) ds.getPrimitiveById(r);753 analysis.getCommands().add(new ChangeMembersCommand(orig, new ArrayList<>(r.getMembers())));754 r.setMembers(null); // see #19885755 731 } 756 732
Note:
See TracChangeset
for help on using the changeset viewer.