Changeset 9932 in josm for trunk/src


Ignore:
Timestamp:
2016-03-05T17:57:04+01:00 (8 years ago)
Author:
simon04
Message:

see #8460 - fix typo from r9931, fix matching, improve conditions, add unit test

Location:
trunk/src/org/openstreetmap/josm
Files:
3 edited

Legend:

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

    r9574 r9932  
    2525import org.openstreetmap.josm.gui.tagging.presets.TaggingPresetType;
    2626import org.openstreetmap.josm.gui.tagging.presets.TaggingPresets;
    27 import org.openstreetmap.josm.gui.tagging.presets.items.Key;
     27import org.openstreetmap.josm.gui.tagging.presets.items.KeyedItem;
    2828import org.openstreetmap.josm.gui.tagging.presets.items.Roles;
    2929import org.openstreetmap.josm.gui.tagging.presets.items.Roles.Role;
     
    145145
    146146        for (TaggingPreset p : relationpresets) {
    147             boolean matches = true;
    148             Roles r = null;
    149             for (TaggingPresetItem i : p.data) {
    150                 if (i instanceof Key) {
    151                     Key k = (Key) i;
    152                     if (!k.value.equals(n.get(k.key))) {
    153                         matches = false;
    154                         break;
    155                     }
    156                 } else if (i instanceof Roles) {
    157                     r = (Roles) i;
    158                 }
    159             }
     147            final boolean matches = TaggingPresetItem.matches(Utils.filteredCollection(p.data, KeyedItem.class), n.getKeys());
     148            final Roles r = Utils.find(p.data, Roles.class);
    160149            if (matches && r != null) {
    161150                for (Role role: r.roles) {
  • trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java

    r9623 r9932  
    562562        else if (!typeMatches(t))
    563563            return false;
    564         boolean atLeastOnePositiveMatch = false;
    565         for (TaggingPresetItem item : data) {
    566             Boolean m = item.matches(tags);
    567             if (m != null && !m)
    568                 return false;
    569             else if (m != null) {
    570                 atLeastOnePositiveMatch = true;
    571             }
    572         }
    573         return atLeastOnePositiveMatch;
     564        else
     565            return TaggingPresetItem.matches(data, tags);
    574566    }
    575567
  • trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPresetItem.java

    r9574 r9932  
    134134        return imgProv.get();
    135135    }
     136
     137    /**
     138     * Determine whether the given preset items match the tags
     139     * @param data the preset items
     140     * @param tags the tags to match
     141     * @return whether the given preset items match the tags
     142     * @sice 9932
     143     */
     144    public static boolean matches(Iterable<? extends TaggingPresetItem> data, Map<String, String> tags) {
     145        boolean atLeastOnePositiveMatch = false;
     146        for (TaggingPresetItem item : data) {
     147            Boolean m = item.matches(tags);
     148            if (m != null && !m)
     149                return false;
     150            else if (m != null) {
     151                atLeastOnePositiveMatch = true;
     152            }
     153        }
     154        return atLeastOnePositiveMatch;
     155    }
    136156}
Note: See TracChangeset for help on using the changeset viewer.