Ticket #23571: 23571-beta.patch
File 23571-beta.patch, 2.7 KB (added by , 17 months 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 if (!values.isEmpty()) { 267 boolean isfreeformKey = TaggingPresets.getTaggingPresets().stream() 268 .anyMatch(preset -> preset.data.stream() 269 .filter(KeyedItem.class::isInstance) 270 .map(KeyedItem.class::cast) 271 .anyMatch(item -> key.equals(item.key) && item instanceof Text)); 272 if (isfreeformKey) { 273 freeformKeys.add(key); 274 } 275 } 262 276 } 263 277 } 264 278 … … 280 294 oftenUsedTags.clear(); 281 295 presetIndex.clear(); 282 296 ignoreForOuterMPSameTagCheck.clear(); 297 freeformKeys.clear(); 283 298 284 299 StringBuilder errorSources = new StringBuilder(); 285 300 for (String source : Config.getPref().getList(PREF_SOURCES, DEFAULT_SOURCES)) { … … 1175 1190 .primitives(p) 1176 1191 .build()); 1177 1192 withErrors.put(p, "WPV"); 1178 } else if (includeOtherSeverity ) {1193 } else if (includeOtherSeverity && !freeformKeys.contains(key)) { 1179 1194 // unknown preset value 1180 1195 errors.add(TestError.builder(this, Severity.OTHER, INVALID_VALUE) 1181 1196 .message(tr("Presets do not contain property value"),