Changeset 8444 in josm for trunk/src/org/openstreetmap/josm/data/osm/DataSetMerger.java
- Timestamp:
- 2015-06-02T16:41:37+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/data/osm/DataSetMerger.java
r8338 r8444 79 79 */ 80 80 protected void mergePrimitive(OsmPrimitive source, Collection<? extends OsmPrimitive> candidates) { 81 if (!source.isNew() 81 if (!source.isNew()) { 82 82 // try to merge onto a matching primitive with the same defined id 83 83 // … … 319 319 throw new DataIntegrityProblemException(tr("Conflict in ''visible'' attribute for object of type {0} with id {1}", 320 320 target.getType(), target.getId())); 321 else if (target.isDeleted() && ! 321 else if (target.isDeleted() && !source.isDeleted() && target.getVersion() == source.getVersion()) { 322 322 // same version, but target is deleted. Assume target takes precedence 323 323 // otherwise too many conflicts when refreshing from the server … … 331 331 } 332 332 } 333 } else if (! 333 } else if (!target.isModified() && source.isDeleted()) { 334 334 // target not modified. We can assume that source is the most recent version, 335 335 // so mark it to be deleted. 336 336 // 337 337 objectsToDelete.add(target); 338 } else if (! 338 } else if (!target.isModified() && source.isModified()) { 339 339 // target not modified. We can assume that source is the most recent version. 340 340 // clone it into target. 341 341 target.mergeFrom(source); 342 342 objectsWithChildrenToMerge.add(source.getPrimitiveId()); 343 } else if (! 343 } else if (!target.isModified() && !source.isModified() && target.getVersion() == source.getVersion()) { 344 344 // both not modified. Merge nevertheless. 345 345 // This helps when updating "empty" relations, see #4295 346 346 target.mergeFrom(source); 347 347 objectsWithChildrenToMerge.add(source.getPrimitiveId()); 348 } else if (! 348 } else if (!target.isModified() && !source.isModified() && target.getVersion() < source.getVersion()) { 349 349 // my not modified but other is newer. clone other onto mine. 350 350 // 351 351 target.mergeFrom(source); 352 352 objectsWithChildrenToMerge.add(source.getPrimitiveId()); 353 } else if (target.isModified() && ! 353 } else if (target.isModified() && !source.isModified() && target.getVersion() == source.getVersion()) { 354 354 // target is same as source but target is modified 355 355 // => keep target and reset modified flag if target and source are semantically equal … … 362 362 // 363 363 addConflict(target,source); 364 } else if (! 364 } else if (!target.hasEqualSemanticAttributes(source)) { 365 365 // target is modified and is not semantically equal with source. Can't automatically 366 366 // resolve the differences
Note:
See TracChangeset
for help on using the changeset viewer.