- Timestamp:
- 2016-09-17T14:37:53+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/data/validation/tests/DuplicateNode.java
r10970 r11007 32 32 import org.openstreetmap.josm.data.validation.TestError; 33 33 import org.openstreetmap.josm.gui.progress.ProgressMonitor; 34 import org.openstreetmap.josm.tools.CheckParameterUtil; 34 35 import org.openstreetmap.josm.tools.MultiMap; 35 36 … … 86 87 } 87 88 89 private static class DuplicateNodeTestError extends TestError { 90 DuplicateNodeTestError(Test parentTest, Severity severity, String msg, int code, Set<OsmPrimitive> primitives) { 91 super(parentTest, severity, tr("Duplicated nodes"), tr(msg), msg, code, primitives); 92 CheckParameterUtil.ensureThat(!primitives.isEmpty(), "Empty primitives: " + msg); 93 } 94 } 95 88 96 protected static final int DUPLICATE_NODE = 1; 89 97 protected static final int DUPLICATE_NODE_MIXED = 2; … … 173 181 // check whether we have multiple nodes at the same position with the same tag set 174 182 for (Iterator<Map<String, String>> it = mm.keySet().iterator(); it.hasNext();) { 175 Map<String, String> tagSet = it.next();176 if ( mm.get(tagSet).size() > 1) {183 Set<OsmPrimitive> primitives = mm.get(it.next()); 184 if (primitives.size() > 1) { 177 185 178 186 for (String type: TYPES) { … … 180 188 } 181 189 182 for (OsmPrimitive p : mm.get(tagSet)) {190 for (OsmPrimitive p : primitives) { 183 191 if (p.getType() == OsmPrimitiveType.NODE) { 184 192 Node n = (Node) p; … … 203 211 } 204 212 205 int nbType = 0; 206 for (Entry<String, Boolean> entry: typeMap.entrySet()) { 207 if (entry.getValue()) { 208 nbType++; 209 } 210 } 213 long nbType = typeMap.entrySet().stream().filter(Entry::getValue).count(); 211 214 212 215 if (nbType > 1) { 213 String msg = marktr("Mixed type duplicated nodes"); 214 errors.add(new TestError( 216 errors.add(new DuplicateNodeTestError( 215 217 parentTest, 216 218 Severity.WARNING, 217 tr("Duplicated nodes"), 218 tr(msg), 219 msg, 219 marktr("Mixed type duplicated nodes"), 220 220 DUPLICATE_NODE_MIXED, 221 mm.get(tagSet)221 primitives 222 222 )); 223 223 } else if (typeMap.get("highway")) { 224 String msg = marktr("Highway duplicated nodes"); 225 errors.add(new TestError( 226 parentTest, 227 Severity.ERROR, 228 tr("Duplicated nodes"), 229 tr(msg), 230 msg, 224 errors.add(new DuplicateNodeTestError( 225 parentTest, 226 Severity.ERROR, 227 marktr("Highway duplicated nodes"), 231 228 DUPLICATE_NODE_HIGHWAY, 232 mm.get(tagSet)229 primitives 233 230 )); 234 231 } else if (typeMap.get("railway")) { 235 String msg = marktr("Railway duplicated nodes"); 236 errors.add(new TestError( 237 parentTest, 238 Severity.ERROR, 239 tr("Duplicated nodes"), 240 tr(msg), 241 msg, 232 errors.add(new DuplicateNodeTestError( 233 parentTest, 234 Severity.ERROR, 235 marktr("Railway duplicated nodes"), 242 236 DUPLICATE_NODE_RAILWAY, 243 mm.get(tagSet)237 primitives 244 238 )); 245 239 } else if (typeMap.get("waterway")) { 246 String msg = marktr("Waterway duplicated nodes"); 247 errors.add(new TestError( 248 parentTest, 249 Severity.ERROR, 250 tr("Duplicated nodes"), 251 tr(msg), 252 msg, 240 errors.add(new DuplicateNodeTestError( 241 parentTest, 242 Severity.ERROR, 243 marktr("Waterway duplicated nodes"), 253 244 DUPLICATE_NODE_WATERWAY, 254 mm.get(tagSet)245 primitives 255 246 )); 256 247 } else if (typeMap.get("boundary")) { 257 String msg = marktr("Boundary duplicated nodes"); 258 errors.add(new TestError( 259 parentTest, 260 Severity.ERROR, 261 tr("Duplicated nodes"), 262 tr(msg), 263 msg, 248 errors.add(new DuplicateNodeTestError( 249 parentTest, 250 Severity.ERROR, 251 marktr("Boundary duplicated nodes"), 264 252 DUPLICATE_NODE_BOUNDARY, 265 mm.get(tagSet)253 primitives 266 254 )); 267 255 } else if (typeMap.get("power")) { 268 String msg = marktr("Power duplicated nodes"); 269 errors.add(new TestError( 270 parentTest, 271 Severity.ERROR, 272 tr("Duplicated nodes"), 273 tr(msg), 274 msg, 256 errors.add(new DuplicateNodeTestError( 257 parentTest, 258 Severity.ERROR, 259 marktr("Power duplicated nodes"), 275 260 DUPLICATE_NODE_POWER, 276 mm.get(tagSet)261 primitives 277 262 )); 278 263 } else if (typeMap.get("natural")) { 279 String msg = marktr("Natural duplicated nodes"); 280 errors.add(new TestError( 281 parentTest, 282 Severity.ERROR, 283 tr("Duplicated nodes"), 284 tr(msg), 285 msg, 264 errors.add(new DuplicateNodeTestError( 265 parentTest, 266 Severity.ERROR, 267 marktr("Natural duplicated nodes"), 286 268 DUPLICATE_NODE_NATURAL, 287 mm.get(tagSet)269 primitives 288 270 )); 289 271 } else if (typeMap.get("building")) { 290 String msg = marktr("Building duplicated nodes"); 291 errors.add(new TestError( 292 parentTest, 293 Severity.ERROR, 294 tr("Duplicated nodes"), 295 tr(msg), 296 msg, 272 errors.add(new DuplicateNodeTestError( 273 parentTest, 274 Severity.ERROR, 275 marktr("Building duplicated nodes"), 297 276 DUPLICATE_NODE_BUILDING, 298 mm.get(tagSet)277 primitives 299 278 )); 300 279 } else if (typeMap.get("landuse")) { 301 String msg = marktr("Landuse duplicated nodes"); 302 errors.add(new TestError( 303 parentTest, 304 Severity.ERROR, 305 tr("Duplicated nodes"), 306 tr(msg), 307 msg, 280 errors.add(new DuplicateNodeTestError( 281 parentTest, 282 Severity.ERROR, 283 marktr("Landuse duplicated nodes"), 308 284 DUPLICATE_NODE_LANDUSE, 309 mm.get(tagSet)285 primitives 310 286 )); 311 287 } else { 312 String msg = marktr("Other duplicated nodes"); 313 errors.add(new TestError( 288 errors.add(new DuplicateNodeTestError( 314 289 parentTest, 315 290 Severity.WARNING, 316 tr("Duplicated nodes"), 317 tr(msg), 318 msg, 291 marktr("Other duplicated nodes"), 319 292 DUPLICATE_NODE_OTHER, 320 mm.get(tagSet) 321 )); 322 293 primitives 294 )); 323 295 } 324 296 it.remove(); … … 326 298 } 327 299 328 // check whether we have multiple nodes at the same position with 329 // differing tag sets 330 // 300 // check whether we have multiple nodes at the same position with differing tag sets 331 301 if (!mm.isEmpty()) { 332 302 List<OsmPrimitive> duplicates = new ArrayList<>();
Note:
See TracChangeset
for help on using the changeset viewer.