Hi, Patch 0002 stops the purging of deleted primitives that have not been uploaded after upload.
The remaining patches are cleanups, during the process of finding 0002. Thanks, Matthew Bell
From 665237e67fb2f768075709ba5579e737a9877d58 Mon Sep 17 00:00:00 2001 From: Matthew W. S. Bell <[email protected]> Date: Fri, 6 Aug 2010 16:32:03 +0100 Subject: [PATCH 1/4] Correct method and variable names --- .../josm/actions/UploadSelectionAction.java | 6 +++--- src/org/openstreetmap/josm/data/osm/DataSet.java | 2 +- .../openstreetmap/josm/gui/layer/OsmDataLayer.java | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/org/openstreetmap/josm/actions/UploadSelectionAction.java b/src/org/openstreetmap/josm/actions/UploadSelectionAction.java index 99ba771..4ce7ba3 100644 --- a/src/org/openstreetmap/josm/actions/UploadSelectionAction.java +++ b/src/org/openstreetmap/josm/actions/UploadSelectionAction.java @@ -92,8 +92,8 @@ public class UploadSelectionAction extends JosmAction{ UploadHullBuilder builder = new UploadHullBuilder(); UploadSelectionDialog dialog = new UploadSelectionDialog(); Collection<OsmPrimitive> modifiedCandidates = getModifiedPrimitives(getEditLayer().data.getSelected()); - Collection<OsmPrimitive> deletedCandiates = getDeletedPrimitives(getEditLayer().data); - if (modifiedCandidates.isEmpty() && deletedCandiates.isEmpty()) { + Collection<OsmPrimitive> deletedCandidates = getDeletedPrimitives(getEditLayer().data); + if (modifiedCandidates.isEmpty() && deletedCandidates.isEmpty()) { JOptionPane.showMessageDialog( Main.parent, tr("No changes to upload."), @@ -104,7 +104,7 @@ public class UploadSelectionAction extends JosmAction{ } dialog.populate( modifiedCandidates, - deletedCandiates + deletedCandidates ); dialog.setVisible(true); if (dialog.isCanceled()) diff --git a/src/org/openstreetmap/josm/data/osm/DataSet.java b/src/org/openstreetmap/josm/data/osm/DataSet.java index dad88dc..712f9d9 100644 --- a/src/org/openstreetmap/josm/data/osm/DataSet.java +++ b/src/org/openstreetmap/josm/data/osm/DataSet.java @@ -948,7 +948,7 @@ public class DataSet implements Cloneable { highlightUpdateCount++; } - public void clenupDeletedPrimitives() { + public void cleanupDeletedPrimitives() { beginUpdate(); try { if (cleanupDeleted(nodes.iterator()) diff --git a/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java b/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java index c550d63..e1ac3dd 100644 --- a/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java +++ b/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java @@ -399,7 +399,7 @@ public class OsmDataLayer extends Layer implements Listener, SelectionChangedLis Main.main.undoRedo.clean(this); // if uploaded, clean the modified flags as well - data.clenupDeletedPrimitives(); + data.cleanupDeletedPrimitives(); for (OsmPrimitive p: data.allPrimitives()) { if (processed.contains(p)) { p.setModified(false); -- 1.7.1
From cd28eedf8d0625eb22391bcb7c2d4d124a8d5b2a Mon Sep 17 00:00:00 2001 From: Matthew W. S. Bell <[email protected]> Date: Fri, 6 Aug 2010 16:34:08 +0100 Subject: [PATCH 2/4] Only cleanup uploaded deleted nodes. --- src/org/openstreetmap/josm/data/osm/DataSet.java | 2 +- .../openstreetmap/josm/gui/layer/OsmDataLayer.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/org/openstreetmap/josm/data/osm/DataSet.java b/src/org/openstreetmap/josm/data/osm/DataSet.java index 712f9d9..dad5df3 100644 --- a/src/org/openstreetmap/josm/data/osm/DataSet.java +++ b/src/org/openstreetmap/josm/data/osm/DataSet.java @@ -965,7 +965,7 @@ public class DataSet implements Cloneable { boolean changed = false; while (it.hasNext()) { OsmPrimitive primitive = it.next(); - if (primitive.isDeleted()) { + if (primitive.isDeleted() && !primitive.isModified()) { selectedPrimitives.remove(primitive); storeAllPrimitives.remove(primitive); primitive.setDataset(null); diff --git a/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java b/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java index e1ac3dd..b516865 100644 --- a/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java +++ b/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java @@ -399,12 +399,12 @@ public class OsmDataLayer extends Layer implements Listener, SelectionChangedLis Main.main.undoRedo.clean(this); // if uploaded, clean the modified flags as well - data.cleanupDeletedPrimitives(); for (OsmPrimitive p: data.allPrimitives()) { if (processed.contains(p)) { p.setModified(false); } } + data.cleanupDeletedPrimitives(); } -- 1.7.1
From b4f0c8f5fb7401daa0e9cd16961dab09e2b706ba Mon Sep 17 00:00:00 2001 From: Matthew W. S. Bell <[email protected]> Date: Sat, 7 Aug 2010 00:33:06 +0100 Subject: [PATCH 3/4] Iterate over target collection, instead of larger collection and then checking to see if each item is in the target collection. --- .../openstreetmap/josm/gui/layer/OsmDataLayer.java | 6 ++---- 1 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java b/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java index b516865..133e312 100644 --- a/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java +++ b/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java @@ -399,10 +399,8 @@ public class OsmDataLayer extends Layer implements Listener, SelectionChangedLis Main.main.undoRedo.clean(this); // if uploaded, clean the modified flags as well - for (OsmPrimitive p: data.allPrimitives()) { - if (processed.contains(p)) { - p.setModified(false); - } + for (OsmPrimitive p: processed) { + p.setModified(false); } data.cleanupDeletedPrimitives(); } -- 1.7.1
From ea23f6e4804b2650cfec7d955ebf2203b9ec1d4e Mon Sep 17 00:00:00 2001 From: Matthew W. S. Bell <[email protected]> Date: Sat, 7 Aug 2010 01:00:22 +0100 Subject: [PATCH 4/4] Whitespace --- .../openstreetmap/josm/data/osm/DataSetMerger.java | 18 +++++++++--------- 1 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/org/openstreetmap/josm/data/osm/DataSetMerger.java b/src/org/openstreetmap/josm/data/osm/DataSetMerger.java index e2b032a..5048188 100644 --- a/src/org/openstreetmap/josm/data/osm/DataSetMerger.java +++ b/src/org/openstreetmap/josm/data/osm/DataSetMerger.java @@ -92,9 +92,9 @@ public class DataSetMerger { // yet but which is equal in its semantic attributes // Collection<? extends OsmPrimitive> candidates = null; - switch(source.getType()) { + switch (source.getType()) { case NODE: candidates = targetDataSet.getNodes(); break; - case WAY: candidates =targetDataSet.getWays(); break; + case WAY: candidates = targetDataSet.getWays(); break; case RELATION: candidates = targetDataSet.getRelations(); break; default: throw new AssertionError(); } @@ -132,7 +132,7 @@ public class DataSetMerger { objectsWithChildrenToMerge.add(source.getPrimitiveId()); } - protected OsmPrimitive getMergeTarget(OsmPrimitive mergeSource) throws IllegalStateException{ + protected OsmPrimitive getMergeTarget(OsmPrimitive mergeSource) throws IllegalStateException { PrimitiveId targetId = mergedMap.get(mergeSource.getPrimitiveId()); if (targetId == null) return null; @@ -256,7 +256,7 @@ public class DataSetMerger { // target and source are incomplete. Doesn't matter which one to // take. We take target. // - } else if (target.isDeleted() && ! source.isDeleted() && target.getVersion() == source.getVersion()) { + } else if (target.isDeleted() && !source.isDeleted() && target.getVersion() == source.getVersion()) { // same version, but target is deleted. Assume target takes precedence // otherwise too many conflicts when refreshing from the server // but, if source has a referrer that is not in the target dataset there is a conflict @@ -273,7 +273,7 @@ public class DataSetMerger { // happen if one layer is merged onto another layer // conflicts.add(target,source); - } else if (! target.isModified() && source.isModified()) { + } else if (!target.isModified() && source.isModified()) { // target not modified. We can assume that source is the most recent version. // clone it into target. But check first, whether source is deleted. if so, // make sure that target is not referenced any more in myDataSet. If it is there @@ -286,23 +286,23 @@ public class DataSetMerger { target.mergeFrom(source); objectsWithChildrenToMerge.add(source.getPrimitiveId()); } - } else if (! target.isModified() && !source.isModified() && target.getVersion() == source.getVersion()) { + } else if (!target.isModified() && !source.isModified() && target.getVersion() == source.getVersion()) { // both not modified. Merge nevertheless. // This helps when updating "empty" relations, see #4295 target.mergeFrom(source); objectsWithChildrenToMerge.add(source.getPrimitiveId()); - } else if (! target.isModified() && !source.isModified() && target.getVersion() < source.getVersion()) { + } else if (!target.isModified() && !source.isModified() && target.getVersion() < source.getVersion()) { // my not modified but other is newer. clone other onto mine. // target.mergeFrom(source); objectsWithChildrenToMerge.add(source.getPrimitiveId()); - } else if (target.isModified() && ! source.isModified() && target.getVersion() == source.getVersion()) { + } else if (target.isModified() && !source.isModified() && target.getVersion() == source.getVersion()) { // target is same as source but target is modified // => keep target and reset modified flag if target and source are semantically equal if (target.hasEqualSemanticAttributes(source)) { target.setModified(false); } - } else if (! target.hasEqualSemanticAttributes(source)) { + } else if (!target.hasEqualSemanticAttributes(source)) { // target is modified and is not semantically equal with source. Can't automatically // resolve the differences // => create a conflict -- 1.7.1
signature.asc
Description: This is a digitally signed message part
_______________________________________________ josm-dev mailing list [email protected] http://lists.openstreetmap.org/listinfo/josm-dev
