- Timestamp:
- 2020-06-07T11:36:21+02:00 (5 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/data/osm
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/data/osm/DataIntegrityProblemException.java
r12036 r16546 1 1 // License: GPL. For details, see LICENSE file. 2 2 package org.openstreetmap.josm.data.osm; 3 4 import java.util.Arrays; 5 import java.util.function.Predicate; 6 import java.util.stream.Collectors; 7 import java.util.stream.Stream; 8 9 import org.openstreetmap.josm.command.Command; 10 import org.openstreetmap.josm.data.UndoRedoHandler; 3 11 4 12 /** … … 22 30 * @param message the detail message 23 31 * @param htmlMessage HTML-formatted error message. Can be null 32 * @param p the primitive involved in this integrity problem (used for constructing a detailed message) 24 33 */ 25 public DataIntegrityProblemException(String message, String htmlMessage) { 26 super(message); 34 public DataIntegrityProblemException(String message, String htmlMessage, OsmPrimitive... p) { 35 super(message + relevantCommands(p)); 27 36 this.htmlMessage = htmlMessage; 28 37 } … … 35 44 return htmlMessage; 36 45 } 46 47 private static String relevantCommands(OsmPrimitive... p) { 48 if (p == null || p.length == 0) { 49 return ""; 50 } 51 Predicate<Command> isParticipating = c -> Arrays.stream(p).anyMatch(c.getParticipatingPrimitives()::contains); 52 Stream<String> undo = UndoRedoHandler.getInstance().getUndoCommands().stream() 53 .filter(isParticipating) 54 .map(c -> "[" + c.getDescriptionText() + "]"); 55 Stream<String> redo = UndoRedoHandler.getInstance().getRedoCommands().stream() 56 .filter(isParticipating) 57 .map(c -> "[" + c.getDescriptionText() + " (undone)]"); 58 return Stream.concat(undo, redo) 59 .collect(Collectors.joining(", ", " (changed by the following commands: ", ")")); 60 } 37 61 } -
trunk/src/org/openstreetmap/josm/data/osm/DataSet.java
r16468 r16546 496 496 if (getPrimitiveById(primitive) != null) 497 497 throw new DataIntegrityProblemException( 498 tr("Unable to add primitive {0} to the dataset because it is already included", 499 .toString()));498 tr("Unable to add primitive {0} to the dataset because it is already included", primitive.toString()), 499 null, primitive); 500 500 501 501 allPrimitives.add(primitive); -
trunk/src/org/openstreetmap/josm/data/osm/Relation.java
r16445 r16546 484 484 throw new DataIntegrityProblemException( 485 485 String.format("Relation member must be part of the same dataset as relation(%s, %s)", 486 getPrimitiveId(), rm.getMember().getPrimitiveId())); 486 getPrimitiveId(), rm.getMember().getPrimitiveId()), 487 null, this, rm.getMember()); 487 488 } 488 489 if (Config.getPref().getBoolean("debug.checkDeleteReferenced", true)) { 489 490 for (RelationMember rm: members) { 490 491 if (rm.getMember().isDeleted()) 491 throw new DataIntegrityProblemException("Deleted member referenced: " + toString()); 492 throw new DataIntegrityProblemException("Deleted member referenced: " + toString(), null, this, rm.getMember()); 492 493 } 493 494 } -
trunk/src/org/openstreetmap/josm/data/osm/Way.java
r16445 r16546 536 536 throw new DataIntegrityProblemException("Deleted node referenced: " + toString(), 537 537 "<html>" + tr("Deleted node referenced by {0}", 538 DefaultNameFormatter.getInstance().formatAsHtmlUnorderedList(this)) + "</html>"); 538 DefaultNameFormatter.getInstance().formatAsHtmlUnorderedList(this)) + "</html>", 539 this, n); 539 540 } 540 541 if (Config.getPref().getBoolean("debug.checkNullCoor", true)) { … … 543 544 throw new DataIntegrityProblemException("Complete visible node with null coordinates: " + toString(), 544 545 "<html>" + tr("Complete node {0} with null coordinates in way {1}", 545 DefaultNameFormatter.getInstance().formatAsHtmlUnorderedList(n), 546 DefaultNameFormatter.getInstance().formatAsHtmlUnorderedList(this)) + "</html>"); 546 DefaultNameFormatter.getInstance().formatAsHtmlUnorderedList(n), 547 DefaultNameFormatter.getInstance().formatAsHtmlUnorderedList(this)) + "</html>", 548 this, n); 547 549 } 548 550 }
Note:
See TracChangeset
for help on using the changeset viewer.