- Timestamp:
- 2014-01-29T22:41:40+01:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/data/APIDataSet.java
r6317 r6776 232 232 relationsToAdd.removeAll(noProblemRelations); 233 233 234 RelationUploadDependencyGraph graph = new RelationUploadDependencyGraph(relationsToAdd); 234 RelationUploadDependencyGraph graph = new RelationUploadDependencyGraph(relationsToAdd, true); 235 235 newToAdd.addAll(graph.computeUploadOrder()); 236 236 toAdd = newToAdd; 237 238 LinkedList<OsmPrimitive> newToDelete = new LinkedList<OsmPrimitive>(); 239 newToDelete.addAll(Utils.filteredCollection(toDelete, Node.class)); 240 newToDelete.addAll(Utils.filteredCollection(toDelete, Way.class)); 241 graph = new RelationUploadDependencyGraph(Utils.filteredCollection(toDelete, Relation.class), false); 242 newToDelete.addAll(graph.computeUploadOrder()); 243 toDelete = newToDelete; 237 244 } 238 245 … … 268 275 */ 269 276 private static class RelationUploadDependencyGraph { 270 private Map<Relation, Set<Relation>> children; 277 private Map<Relation, Set<Relation>> children = new HashMap<Relation, Set<Relation>>(); 271 278 private Collection<Relation> relations; 272 private Set<Relation> visited; 279 private Set<Relation> visited = new HashSet<Relation>(); 273 280 private List<Relation> uploadOrder; 274 275 public RelationUploadDependencyGraph() { 276 this.children = new HashMap<Relation, Set<Relation>>(); 277 this.visited = new HashSet<Relation>(); 278 } 279 280 public RelationUploadDependencyGraph(Collection<Relation> relations) { 281 this(); 281 private final boolean newOrUndeleted; 282 283 public RelationUploadDependencyGraph(Collection<Relation> relations, boolean newOrUndeleted) { 284 this.newOrUndeleted = newOrUndeleted; 282 285 build(relations); 283 286 } … … 286 289 this.relations = new HashSet<Relation>(); 287 290 for(Relation relation: relations) { 288 if (!relation.isNewOrUndeleted() ) { 291 if (newOrUndeleted ? !relation.isNewOrUndeleted() : !relation.isDeleted()) { 289 292 continue; 290 293 } 291 294 this.relations.add(relation); 292 295 for (RelationMember m: relation.getMembers()) { 293 if (m.isRelation() && m.getMember().isNewOrUndeleted()) { 296 if (m.isRelation() && (newOrUndeleted ? m.getMember().isNewOrUndeleted() : m.getMember().isDeleted())) { 294 297 addDependency(relation, (Relation)m.getMember()); 295 298 }
Note:
See TracChangeset
for help on using the changeset viewer.
