Changeset 23192 in osm for applications/editors/josm/plugins/reverter/src
- Timestamp:
- 2010-09-15T18:59:53+02:00 (15 years ago)
- Location:
- applications/editors/josm/plugins/reverter/src/reverter
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/editors/josm/plugins/reverter/src/reverter/ChangesetIdQuery.java
r22533 r23192 31 31 try { 32 32 return NumberFormat.getInstance().parse(tcid.getText()).intValue(); 33 } catch (ParseException e) { 33 } catch (ParseException e) { 34 34 return 0; 35 35 } … … 50 50 panel.add(new JLabel(tr("Changeset id:"))); 51 51 panel.add(tcid, GBC.eol().fill(GBC.HORIZONTAL)); 52 52 53 53 bgRevertType.add(rbFull); 54 54 bgRevertType.add(rbSelection); 55 55 bgRevertType.add(rbSelectionUndelete); 56 56 57 57 rbFull.setSelected(true); 58 58 panel.add(rbFull, GBC.eol().insets(0,10,0,0).fill(GBC.HORIZONTAL)); 59 59 panel.add(rbSelection, GBC.eol().fill(GBC.HORIZONTAL)); 60 60 panel.add(rbSelectionUndelete, GBC.eol().fill(GBC.HORIZONTAL)); 61 61 62 62 setContent(panel); 63 setupDialog(); 63 setupDialog(); 64 64 } 65 65 } -
applications/editors/josm/plugins/reverter/src/reverter/ChangesetReverter.java
r21807 r23192 54 54 public final RevertType revertType; 55 55 56 private final OsmDataLayer layer; // data layer associated with reverter 57 private final DataSet ds; // DataSet associated with reverter 58 private final ChangesetDataSet cds; // Current changeset data 56 private final OsmDataLayer layer; // data layer associated with reverter 57 private final DataSet ds; // DataSet associated with reverter 58 private final ChangesetDataSet cds; // Current changeset data 59 59 private DataSet nds; // Dataset that contains new objects downloaded by reverter 60 60 … … 68 68 //////////////////////////////////////// 69 69 private void addIfMissing(PrimitiveId id) { 70 OsmPrimitive p = ds.getPrimitiveById(id); 70 OsmPrimitive p = ds.getPrimitiveById(id); 71 71 if (p == null || p.isIncomplete()) { 72 72 missing.add(id); … … 94 94 } 95 95 } 96 96 97 97 /** 98 98 * Checks if {@see ChangesetDataSetEntry} conforms to current RevertType 99 99 * @param entry entry to be checked 100 * @return <code>true</code> if {@see ChangesetDataSetEntry} conforms to current RevertType 100 * @return <code>true</code> if {@see ChangesetDataSetEntry} conforms to current RevertType 101 101 */ 102 102 private boolean CheckOsmChangeEntry(ChangesetDataSetEntry entry) { … … 110 110 return p.isSelected(); 111 111 } 112 112 113 113 /** 114 114 * creates a reverter for specific changeset and fetches initial data … … 132 132 monitor.finishTask(); 133 133 } 134 134 135 135 // Build our own lists of created/updated/modified objects for better performance 136 136 for (Iterator<ChangesetDataSetEntry> it = cds.iterator();it.hasNext();) { … … 163 163 public void downloadObjectsHistory(ProgressMonitor progressMonitor) throws OsmTransferException { 164 164 final OsmServerMultiObjectReader rdr = new OsmServerMultiObjectReader(); 165 165 166 166 progressMonitor.beginTask("Downloading objects history",updated.size()+deleted.size()+1); 167 167 try { … … 182 182 } 183 183 } 184 184 185 185 public void downloadMissingPrimitives(ProgressMonitor monitor) throws OsmTransferException { 186 186 if (!hasMissingObjects()) return; … … 200 200 } 201 201 } 202 DataSet source = rdr.parseOsm(monitor); 202 DataSet source = rdr.parseOsm(monitor); 203 203 for (OsmPrimitive p : source.allPrimitives()) { 204 204 if (!p.isVisible() && !p.isDeleted()) { … … 210 210 missing.clear(); 211 211 } 212 212 213 213 private static Conflict<? extends OsmPrimitive> CreateConflict(OsmPrimitive p, boolean isMyDeleted) { 214 214 switch (p.getType()) { … … 222 222 } 223 223 } 224 224 225 225 private static boolean hasEqualSemanticAttributes(OsmPrimitive current,HistoryOsmPrimitive history) { 226 226 if (!current.getKeys().equals(history.getTags())) return false; … … 237 237 return true; 238 238 case RELATION: 239 List<org.openstreetmap.josm.data.osm.RelationMember> currentMembers = 239 List<org.openstreetmap.josm.data.osm.RelationMember> currentMembers = 240 240 ((Relation)current).getMembers(); 241 241 List<RelationMember> historyMembers = ((HistoryRelation)history).getMembers(); 242 242 if (currentMembers.size() != historyMembers.size()) return false; 243 243 for (int i = 0; i < currentMembers.size(); i++) { 244 org.openstreetmap.josm.data.osm.RelationMember currentMember = 244 org.openstreetmap.josm.data.osm.RelationMember currentMember = 245 245 currentMembers.get(i); 246 246 RelationMember historyMember = historyMembers.get(i); … … 253 253 } 254 254 } 255 255 256 256 /** 257 257 * Builds a list of commands that will revert the changeset 258 * 258 * 259 259 */ 260 260 public List<Command> getCommands() { 261 261 if (this.nds == null) return null; 262 262 263 263 ////////////////////////////////////////////////////////////////////////// 264 264 // Create commands to restore/update all affected objects … … 282 282 if (p != null) toDelete.add(p); 283 283 } 284 284 285 285 286 286 ////////////////////////////////////////////////////////////////////////// 287 287 // Check reversion against current dataset and create necessary conflicts 288 288 289 289 HashSet<OsmPrimitive> conflicted = new HashSet<OsmPrimitive>(); 290 290 291 291 for (Conflict<? extends OsmPrimitive> conflict : merger.getConflicts()) { 292 292 cmds.add(new ConflictAddCommand(layer,conflict)); 293 293 } 294 294 295 295 // Check objects versions 296 296 for (Iterator<ChangesetDataSetEntry> it = cds.iterator();it.hasNext();) { … … 302 302 throw new IllegalStateException(tr("Missing merge target for {0} with id {1}", 303 303 hp.getType(), hp.getId())); 304 304 305 305 if (hp.getVersion() != dp.getVersion() 306 306 && (hp.isVisible() || dp.isVisible()) && … … 309 309 */ 310 310 !hasEqualSemanticAttributes(dp,hp)) { 311 312 313 cmds.add(new ConflictAddCommand(layer,CreateConflict(dp, 311 312 313 cmds.add(new ConflictAddCommand(layer,CreateConflict(dp, 314 314 entry.getModificationType() == ChangesetModificationType.CREATED))); 315 315 conflicted.add(dp); 316 316 } 317 317 } 318 318 319 319 /* Check referrers for deleted objects: if object is referred by another object that 320 320 * isn't going to be deleted or modified, create a conflict. … … 340 340 } 341 341 } 342 342 343 343 // Create a Command to delete all marked objects 344 344 List<? extends OsmPrimitive> list; -
applications/editors/josm/plugins/reverter/src/reverter/MultiOsmReader.java
r21634 r23192 561 561 processRelationsAfterParsing(); 562 562 } 563 564 563 564 565 565 } -
applications/editors/josm/plugins/reverter/src/reverter/ObjectsHistoryAction.java
r21634 r23192 16 16 Shortcut.registerShortcut("tool:history", 17 17 "Tool: Display objects history dialog", 18 KeyEvent.VK_H, Shortcut.GROUP_EDIT, 18 KeyEvent.VK_H, Shortcut.GROUP_EDIT, 19 19 Shortcut.SHIFT_DEFAULT), 20 20 true); -
applications/editors/josm/plugins/reverter/src/reverter/ObjectsHistoryDialog.java
r22533 r23192 18 18 setButtonIcons(new String[] {"ok.png", "cancel.png" }); 19 19 setContent(new JPanel(new GridBagLayout())); 20 setupDialog(); 20 setupDialog(); 21 21 } 22 22 } -
applications/editors/josm/plugins/reverter/src/reverter/PrimitiveIdVersion.java
r21700 r23192 20 20 return version; 21 21 } 22 22 23 23 @Override 24 24 public int hashCode() { -
applications/editors/josm/plugins/reverter/src/reverter/RevertChangesetAction.java
r21726 r23192 27 27 Shortcut.registerShortcut("tool:revert", 28 28 tr("Tool: {0}", tr("Revert changeset")), 29 KeyEvent.VK_T, Shortcut.GROUP_EDIT, 30 Shortcut.SHIFT_DEFAULT), 29 KeyEvent.VK_T, Shortcut.GROUP_EDIT, 30 Shortcut.SHIFT_DEFAULT), 31 31 true); 32 32 } 33 33 34 34 @Override 35 35 protected void updateEnabledState() { … … 47 47 if (changesetId == 0) return; 48 48 if (revertType == null) return; 49 49 50 50 Main.worker.submit(new PleaseWaitRunnable(tr("Reverting...")) { 51 51 private ChangesetReverter rev; 52 52 private boolean downloadConfirmed = false; 53 53 54 54 private boolean checkAndDownloadMissing() throws OsmTransferException { 55 55 if (!rev.hasMissingObjects()) return true; 56 56 if (!downloadConfirmed) { 57 57 downloadConfirmed = JOptionPane.showConfirmDialog(Main.parent, 58 tr("This changeset has objects that are not present in current dataset.\n" + 58 tr("This changeset has objects that are not present in current dataset.\n" + 59 59 "It is needed to download them before reverting. Do you want to continue?"), 60 60 tr("Confirm"), JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION; 61 61 if (!downloadConfirmed) return false; 62 62 } 63 final PleaseWaitProgressMonitor monitor = 63 final PleaseWaitProgressMonitor monitor = 64 64 new PleaseWaitProgressMonitor(tr("Fetching missing primitives")); 65 65 try { … … 70 70 return !monitor.isCancelled(); 71 71 } 72 72 73 73 @Override 74 74 protected void realRun() throws OsmTransferException { … … 90 90 rev.downloadMissingPrimitives(progressMonitor.createSubTaskMonitor(0, false)); 91 91 } 92 92 93 93 if (progressMonitor.isCancelled()) return; 94 94 rev.downloadObjectsHistory(progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false)); … … 96 96 if (!checkAndDownloadMissing()) return; 97 97 List<Command> cmds = rev.getCommands(); 98 Command cmd = new SequenceCommand(tr(revertType == RevertType.FULL ? "Revert changeset #{0}" : 98 Command cmd = new SequenceCommand(tr(revertType == RevertType.FULL ? "Revert changeset #{0}" : 99 99 "Partially revert changeset #{0}",changesetId),cmds); 100 100 Main.main.undoRedo.add(cmd); -
applications/editors/josm/plugins/reverter/src/reverter/ReverterPlugin.java
r21807 r23192 18 18 JMenu historyMenu = Main.main.menu.addMenu(marktr("History"), KeyEvent.VK_R, 19 19 Main.main.menu.defaultMenuPos,ht("/Plugin/Reverter")); 20 //MainMenu.add(historyMenu, new ObjectsHistoryAction()); 20 //MainMenu.add(historyMenu, new ObjectsHistoryAction()); 21 21 MainMenu.add(historyMenu, new RevertChangesetAction()); 22 22 }
Note:
See TracChangeset
for help on using the changeset viewer.