Ticket #23517: 23517-alternative.patch
| File 23517-alternative.patch, 1.8 KB (added by , 23 months ago) |
|---|
-
src/org/openstreetmap/josm/gui/dialogs/relation/sort/RelationSorter.java
199 199 * @since 17862 (signature change, generics) 200 200 */ 201 201 public static <T extends IRelationMember<? extends IPrimitive>> List<T> sortMembersByConnectivity(List<T> defaultMembers) { 202 List<T> newMembers; 202 List<T> orderedMembers = defaultMembers; 203 // see #23517 204 if (defaultMembers.stream().allMatch(rm -> ("outer".equals(rm.getRole()) || "inner".equals(rm.getRole())))) { 205 orderedMembers = defaultMembers.stream() 206 .sorted((m1, m2) -> m2.getRole().compareTo(m1.getRole())) // outer first 207 .collect(Collectors.toList()); 208 } 203 209 204 RelationNodeMap<T> map = new RelationNodeMap<>( defaultMembers);210 RelationNodeMap<T> map = new RelationNodeMap<>(orderedMembers); 205 211 // List of groups of linked members 206 212 // 207 213 List<LinkedList<Integer>> allGroups = new ArrayList<>(); … … 232 238 } 233 239 } 234 240 235 newMembers = allGroups.stream().flatMap(Collection::stream).map(defaultMembers::get).collect(Collectors.toList()); 241 List<T> newMembers; 242 newMembers = allGroups.stream().flatMap(Collection::stream).map(orderedMembers::get).collect(Collectors.toList()); 236 243 237 244 // Finally, add members that have not been sorted at all 238 245 for (Integer i : map.getNotSortableMembers()) { 239 newMembers.add(defaultMembers.get(i));246 orderedMembers.add(defaultMembers.get(i)); 240 247 } 241 248 242 249 return newMembers;
