Ticket #23571: 23571-alpha.patch
| File 23571-alpha.patch, 2.6 KB (added by , 2 years ago) |
|---|
-
src/org/openstreetmap/josm/data/validation/tests/TagChecker.java
70 70 import org.openstreetmap.josm.gui.tagging.presets.items.KeyedItem; 71 71 import org.openstreetmap.josm.gui.tagging.presets.items.PresetListEntry; 72 72 import org.openstreetmap.josm.gui.tagging.presets.items.RegionSpecific; 73 import org.openstreetmap.josm.gui.tagging.presets.items.Text; 73 74 import org.openstreetmap.josm.gui.widgets.EditableList; 74 75 import org.openstreetmap.josm.io.CachedFile; 75 76 import org.openstreetmap.josm.spi.preferences.Config; … … 111 112 private static final List<Tag> ignoreDataTag = new ArrayList<>(); 112 113 /** tag keys that have only numerical values in the presets */ 113 114 private static final Set<String> ignoreForLevenshtein = new HashSet<>(); 115 /** tag keys that have freeform text in the presets */ 116 private static final Set<String> freeformKeys = new HashSet<>(); 114 117 115 118 /** tag keys that are allowed to be the same on a multipolygon and an outer way */ 116 119 private static final Set<String> ignoreForOuterMPSameTagCheck = new HashSet<>(); … … 259 262 if (allNumerical) { 260 263 ignoreForLevenshtein.add(key); 261 264 } 265 // see #23571 266 boolean isfreeformKey = TaggingPresets.getTaggingPresets().stream() 267 .anyMatch(preset -> preset.data.stream() 268 .filter(KeyedItem.class::isInstance) 269 .map(KeyedItem.class::cast) 270 .anyMatch(item -> key.equals(item.key) && item instanceof Text)); 271 if (isfreeformKey) { 272 freeformKeys.add(key); 273 } 262 274 } 263 275 } 264 276 … … 280 292 oftenUsedTags.clear(); 281 293 presetIndex.clear(); 282 294 ignoreForOuterMPSameTagCheck.clear(); 295 freeformKeys.clear(); 283 296 284 297 StringBuilder errorSources = new StringBuilder(); 285 298 for (String source : Config.getPref().getList(PREF_SOURCES, DEFAULT_SOURCES)) { … … 1175 1188 .primitives(p) 1176 1189 .build()); 1177 1190 withErrors.put(p, "WPV"); 1178 } else if (includeOtherSeverity ) {1191 } else if (includeOtherSeverity && !freeformKeys.contains(key)) { 1179 1192 // unknown preset value 1180 1193 errors.add(TestError.builder(this, Severity.OTHER, INVALID_VALUE) 1181 1194 .message(tr("Presets do not contain property value"),
