Changeset 16784 in josm for trunk/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
- Timestamp:
- 2020-07-17T17:12:54+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
r16630 r16784 18 18 import java.util.HashMap; 19 19 import java.util.HashSet; 20 import java.util.Iterator; 20 21 import java.util.LinkedHashMap; 21 22 import java.util.LinkedHashSet; … … 45 46 import org.openstreetmap.josm.data.osm.Tagged; 46 47 import org.openstreetmap.josm.data.preferences.sources.ValidatorPrefHelper; 48 import org.openstreetmap.josm.data.validation.OsmValidator; 47 49 import org.openstreetmap.josm.data.validation.Severity; 48 50 import org.openstreetmap.josm.data.validation.Test.TagTest; … … 100 102 /** The preferences prefix */ 101 103 protected static final String PREFIX = ValidatorPrefHelper.PREFIX + "." + TagChecker.class.getSimpleName(); 104 105 MapCSSTagChecker deprecatedChecker; 102 106 103 107 /** … … 894 898 // use Levenshtein distance to find typical typos 895 899 int minDist = MAX_LEVENSHTEIN_DISTANCE + 1; 896 String closest = null;897 900 for (Set<String> possibleValues: sets) { 898 901 for (String possibleVal : possibleValues) { … … 911 914 } 912 915 if (dist < minDist) { 913 closest = possibleVal;914 916 minDist = dist; 915 917 fixVals.clear(); … … 920 922 } 921 923 } 922 924 filterDeprecatedTags(p, key, fixVals); 923 925 if (minDist <= MAX_LEVENSHTEIN_DISTANCE && maxPresetValueLen > MAX_LEVENSHTEIN_DISTANCE 926 && !fixVals.isEmpty() 924 927 && (harmonizedValue.length() > 3 || minDist < MAX_LEVENSHTEIN_DISTANCE)) { 925 928 if (fixVals.size() < 2) { 926 fixedValue = closest;929 fixedValue = fixVals.get(0); 927 930 } else { 928 931 Collections.sort(fixVals); … … 958 961 } 959 962 963 // see #19180 964 private void filterDeprecatedTags(OsmPrimitive p, String key, List<String> fixVals) { 965 if (fixVals.isEmpty() || deprecatedChecker == null) 966 return; 967 968 String origVal = p.get(key); 969 try { 970 int unchangedDeprecated = countDeprecated(p); 971 Iterator<String> iter = fixVals.iterator(); 972 while (iter.hasNext()) { 973 p.put(key, iter.next()); 974 if (countDeprecated(p) > unchangedDeprecated) 975 iter.remove(); 976 } 977 } finally { 978 // restore original value 979 p.put(key, origVal); 980 } 981 } 982 983 private int countDeprecated(OsmPrimitive p) { 984 if (deprecatedChecker == null) 985 return 0; 986 deprecatedChecker.getErrors().clear(); 987 deprecatedChecker.runOnly("deprecated.mapcss", Collections.singleton(p)); 988 return deprecatedChecker.getErrors().size(); 989 } 990 960 991 private static boolean isNum(String harmonizedValue) { 961 992 try { … … 1008 1039 checkPresetsTypes = checkPresetsTypes && Config.getPref().getBoolean(PREF_CHECK_PRESETS_TYPES_BEFORE_UPLOAD, true); 1009 1040 } 1041 deprecatedChecker = OsmValidator.getTest(MapCSSTagChecker.class); 1042 } 1043 1044 @Override 1045 public void endTest() { 1046 deprecatedChecker = null; 1047 super.endTest(); 1010 1048 } 1011 1049
Note:
See TracChangeset
for help on using the changeset viewer.