Changeset 21664 in osm for applications/editors
- Timestamp:
- 2010-06-12T01:14:01+02:00 (15 years ago)
- Location:
- applications/editors/josm
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/reverter/src/reverter/ChangesetReverter.java
r21659 r21664 181 181 } 182 182 } 183 layer.mergeFrom(rdr.parseOsm(monitor)); 183 DataSet source = rdr.parseOsm(monitor); 184 for (OsmPrimitive p : source.allPrimitives()) { 185 if (!p.isVisible() && !p.isDeleted()) { 186 p.setDeleted(true); 187 p.setModified(false); 188 } 189 } 190 layer.mergeFrom(source); 184 191 missing.clear(); 185 192 } … … 205 212 206 213 ////////////////////////////////////////////////////////////////////////// 207 // Create commands to restore/update all affected objects 208 LinkedList<Command> cmds = new DataSetToCmd(nds,ds).getCommandList(); 214 // Create commands to restore/update all affected objects 215 DataSetToCmd merger = new DataSetToCmd(nds,ds); 216 LinkedList<Command> cmds = merger.getCommandList(); 209 217 210 218 ////////////////////////////////////////////////////////////////////////// … … 230 238 231 239 HashSet<OsmPrimitive> conflicted = new HashSet<OsmPrimitive>(); 240 241 for (Conflict<? extends OsmPrimitive> conflict : merger.getConflicts()) { 242 cmds.add(new ConflictAddCommand(layer,conflict)); 243 } 244 232 245 // Check objects versions 233 246 Iterator<ChangesetDataSetEntry> iterator = cds.iterator(); … … 251 264 */ 252 265 for (OsmPrimitive p : toDelete.toArray(new OsmPrimitive[0])) { 266 if (p.isDeleted()) { 267 toDelete.remove(p); 268 continue; 269 } 253 270 for (OsmPrimitive referrer : p.getReferrers()) { 254 271 if (toDelete.contains(referrer)) continue; // object is going to be deleted -
applications/editors/josm/plugins/reverter/src/reverter/DataSetToCmd.java
r21659 r21664 10 10 import org.openstreetmap.josm.command.ChangeNodesCommand; 11 11 import org.openstreetmap.josm.command.Command; 12 import org.openstreetmap.josm.data.conflict.Conflict; 13 import org.openstreetmap.josm.data.conflict.ConflictCollection; 12 14 import org.openstreetmap.josm.data.osm.*; 13 15 … … 19 21 final class DataSetToCmd { 20 22 23 /** the collection of conflicts created during merging */ 24 private final ConflictCollection conflicts = new ConflictCollection(); 21 25 /** the source dataset where primitives are merged from */ 22 26 private final DataSet sourceDataSet; … … 97 101 for (Node sourceNode : source.getNodes()) { 98 102 Node targetNode = (Node)getMergeTarget(sourceNode); 103 if (targetNode.isDeleted() && sourceNode.isIncomplete() 104 && !conflicts.hasConflictForMy(targetNode)) { 105 conflicts.add(new Conflict<OsmPrimitive>(targetNode, sourceNode, true)); 106 Node undeletedTargetNode = new Node(targetNode); 107 undeletedTargetNode.setDeleted(false); 108 cmds.add(new ChangeCommand(targetNode,undeletedTargetNode)); 109 } 99 110 newNodes.add(targetNode); 100 111 } … … 116 127 for (RelationMember sourceMember : source.getMembers()) { 117 128 OsmPrimitive targetMember = getMergeTarget(sourceMember.getMember()); 129 if (targetMember.isDeleted() && sourceMember.getMember().isIncomplete() 130 && !conflicts.hasConflictForMy(targetMember)) { 131 conflicts.add(new Conflict<OsmPrimitive>(targetMember, sourceMember.getMember(), true)); 132 OsmPrimitive undeletedTargetMember; 133 switch(targetMember.getType()) { 134 case NODE: undeletedTargetMember = new Node((Node)targetMember); break; 135 case WAY: undeletedTargetMember = new Way((Way)targetMember); break; 136 case RELATION: undeletedTargetMember = new Relation((Relation)targetMember); break; 137 default: throw new AssertionError(); 138 } 139 undeletedTargetMember.setDeleted(false); 140 cmds.add(new ChangeCommand(targetMember,undeletedTargetMember)); 141 } 118 142 newMembers.add(new RelationMember(sourceMember.getRole(), targetMember)); 119 143 } … … 138 162 return cmds; 139 163 } 164 165 /** 166 * replies the map of conflicts 167 * 168 * @return the map of conflicts 169 */ 170 public ConflictCollection getConflicts() { 171 return conflicts; 172 } 140 173 }
Note:
See TracChangeset
for help on using the changeset viewer.