Ignore:
Timestamp:
2019-10-05T15:51:53+02:00 (7 years ago)
Author:
Don-vip
Message:

fix #14253 - Highlight affected relation members in role validation warnings

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/validation/tests/RelationChecker.java

    r14990 r15418  
    55import static org.openstreetmap.josm.tools.I18n.tr;
    66
     7import java.util.ArrayList;
    78import java.util.Collection;
    89import java.util.EnumSet;
     
    1011import java.util.LinkedHashMap;
    1112import java.util.LinkedList;
     13import java.util.List;
    1214import java.util.Map;
    1315import java.util.stream.Collectors;
     
    317319        // verify unwanted members
    318320        for (String key : map.keySet()) {
    319             boolean found = false;
    320             for (Role r: allroles.keySet()) {
    321                 if (r.isRole(key)) {
    322                     found = true;
    323                     break;
    324                 }
    325             }
    326 
    327             if (!found) {
     321            if (allroles.keySet().stream().noneMatch(role -> role.isRole(key))) {
    328322                String templates = allroles.keySet().stream().map(r -> r.key).collect(Collectors.joining("/"));
     323                List<OsmPrimitive> primitives = new ArrayList<>(n.findRelationMembers(key));
     324                primitives.add(0, n);
    329325
    330326                if (!key.isEmpty()) {
    331327                    errors.add(TestError.builder(this, Severity.WARNING, ROLE_UNKNOWN)
    332328                            .message(ROLE_VERIF_PROBLEM_MSG, marktr("Role ''{0}'' is not in templates ''{1}''"), key, templates)
    333                             .primitives(n)
     329                            .primitives(primitives)
    334330                            .build());
    335331                } else {
    336332                    errors.add(TestError.builder(this, Severity.WARNING, ROLE_EMPTY)
    337333                            .message(ROLE_VERIF_PROBLEM_MSG, marktr("Empty role found when expecting one of ''{0}''"), templates)
    338                             .primitives(n)
     334                            .primitives(primitives)
    339335                            .build());
    340336                }
Note: See TracChangeset for help on using the changeset viewer.