- Timestamp:
- 2019-09-19T16:01:03+02:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/command/SplitWayCommand.java
r15276 r15362 19 19 import java.util.Set; 20 20 import java.util.function.Consumer; 21 import java.util.stream.Collectors; 21 22 22 23 import org.openstreetmap.josm.data.osm.DefaultNameFormatter; … … 426 427 String type = Optional.ofNullable(r.get("type")).orElse(""); 427 428 if ("from".equals(role) || "to".equals(role)) { 428 OsmPrimitive via = findVia(r, type);429 429 List<Node> nodes = new ArrayList<>(); 430 if (via != null) {430 for (OsmPrimitive via : findVias(r, type)) { 431 431 if (via instanceof Node) { 432 432 nodes.add((Node) via); … … 468 468 } 469 469 470 static OsmPrimitive findVia(Relation r, String type) {470 static List<OsmPrimitive> findVias(Relation r, String type) { 471 471 if (type != null) { 472 472 switch (type) { 473 case "connectivity": 473 474 case "restriction": 474 return findRelationMember(r, "via" ).orElse(null);475 return findRelationMembers(r, "via"); 475 476 case "destination_sign": 476 477 // Prefer intersection over sign, see #12347 477 return findRelationMember(r, "intersection").orElse(findRelationMember(r, "sign").orElse(null)); 478 List<OsmPrimitive> intersections = findRelationMembers(r, "intersection"); 479 return intersections.isEmpty() ? findRelationMembers(r, "sign") : intersections; 478 480 default: 479 return null;480 } 481 } 482 return null;483 } 484 485 static Optional<OsmPrimitive> findRelationMember(Relation r, String role) {481 break; 482 } 483 } 484 return Collections.emptyList(); 485 } 486 487 static List<OsmPrimitive> findRelationMembers(Relation r, String role) { 486 488 return r.getMembers().stream().filter(rmv -> role.equals(rmv.getRole())) 487 .map(RelationMember::getMember). findAny();489 .map(RelationMember::getMember).collect(Collectors.toList()); 488 490 } 489 491
Note:
See TracChangeset
for help on using the changeset viewer.