Changeset 5380 in josm


Ignore:
Timestamp:
Jul 29, 2012 10:18:55 AM (10 months ago)
Author:
bastiK
Message:

fixed #5679 - Validator: value of name tag not in presets if a preset specifies a name value (patch by mrwojo)

File:
1 edited

Legend:

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

    r5379 r5380  
    458458            } 
    459459            if (checkValues && value != null && value.length() > 0 && presetsValueData != null) { 
     460                final Set<String> values = presetsValueData.get(key); 
     461                final boolean keyInPresets = values != null;   
     462                final boolean tagInPresets = values != null && (values.isEmpty() || values.contains(prop.getValue())); 
     463                 
    460464                boolean ignore = false; 
    461465                for (String a : ignoreDataStartsWith) { 
     
    474478                    } 
    475479                } 
     480                 
     481                if (!tagInPresets) { 
     482                    for (IgnoreKeyPair a : ignoreDataKeyPair) { 
     483                        if (key.equals(a.key) && value.equals(a.value)) { 
     484                            ignore = true; 
     485                        } 
     486                    } 
     487 
     488                    for (IgnoreTwoKeyPair a : ignoreDataTwoKeyPair) { 
     489                        if (key.equals(a.key2) && value.equals(a.value2)) { 
     490                            ignore = true; 
     491                        } 
     492                    } 
     493                } 
     494                 
    476495                if (!ignore) { 
    477                     String i = marktr("Key ''{0}'' not in presets."); 
    478                     errors.add( new TestError(this, Severity.OTHER, tr("Presets do not contain property key"), 
    479                             tr(i, key), MessageFormat.format(i, key), INVALID_VALUE, p) ); 
    480                     withErrors.put(p, "UPK"); 
    481                 } else { 
    482                     Set<String> values = presetsValueData.get(key); 
    483                     if (values != null && values.size() > 0 && !values.contains(prop.getValue())) { 
    484                         ignore = false; 
    485                         for (IgnoreKeyPair a : ignoreDataKeyPair) { 
    486                             if (key.equals(a.key) && value.equals(a.value)) { 
    487                                 ignore = true; 
    488                             } 
    489                         } 
    490  
    491                         for (IgnoreTwoKeyPair a : ignoreDataTwoKeyPair) { 
    492                             if (key.equals(a.key2) && value.equals(a.value2)) { 
    493                                 ignore = true; 
    494                             } 
    495                         } 
    496  
    497                         if (!ignore) { 
    498                             String i = marktr("Value ''{0}'' for key ''{1}'' not in presets."); 
    499                             errors.add( new TestError(this, Severity.OTHER, tr("Presets do not contain property value"), 
    500                                     tr(i, prop.getValue(), key), MessageFormat.format(i, prop.getValue(), key), INVALID_VALUE, p) ); 
    501                             withErrors.put(p, "UPV"); 
    502                         } 
     496                    if (!keyInPresets) { 
     497                        String i = marktr("Key ''{0}'' not in presets."); 
     498                        errors.add( new TestError(this, Severity.OTHER, tr("Presets do not contain property key"), 
     499                                tr(i, key), MessageFormat.format(i, key), INVALID_VALUE, p) ); 
     500                        withErrors.put(p, "UPK"); 
     501                    } else if (!tagInPresets) { 
     502                        String i = marktr("Value ''{0}'' for key ''{1}'' not in presets."); 
     503                        errors.add( new TestError(this, Severity.OTHER, tr("Presets do not contain property value"), 
     504                                tr(i, prop.getValue(), key), MessageFormat.format(i, prop.getValue(), key), INVALID_VALUE, p) ); 
     505                        withErrors.put(p, "UPV"); 
    503506                    } 
    504507                } 
Note: See TracChangeset for help on using the changeset viewer.