Ticket #21589: 21589.patch

File 21589.patch, 2.8 KB (added by GerdP, 3 years ago)

stop if missing objects caused conflicts, replace tabs

  • src/reverter/RevertChangesetTask.java

     
    9797                Logging.info("Reverted changeset {0}", Long.toString(changesetId));
    9898                newLayer = false; // reuse layer for subsequent reverts
    9999            } catch (OsmTransferException e) {
    100                 rollback(allcmds);
     100                rollback(allcmds);
    101101                Logging.error(e);
    102102                throw e;
    103103            } catch (UserCancelException e) {
    104                 rollback(allcmds);
     104                rollback(allcmds);
    105105                GuiHelper.executeByMainWorkerInEDT(() -> new Notification(tr("Revert was canceled")).show());
    106106                Logging.trace(e);
    107107                return;
     
    139139        }
    140140        if (progressMonitor.isCanceled())
    141141            throw new UserCancelException();
    142 
     142        int numOldConflicts = oldDataSet == null ? 0 : oldDataSet.getConflicts().size();
    143143        // Check missing objects
    144144        rev.checkMissingCreated();
    145145        rev.checkMissingUpdated();
     
    153153            rev.checkMissingDeleted();
    154154            rev.downloadMissingPrimitives(progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false));
    155155        }
     156        int numConflicts = oldDataSet == null ? 0 : oldDataSet.getConflicts().size();
     157        if (numConflicts > numOldConflicts) {
     158            GuiHelper.runInEDT(() -> new Notification(tr("Please solve conflicts and maybe try again to revert."))
     159            .setIcon(JOptionPane.ERROR_MESSAGE)
     160            .show());
     161            progressMonitor.cancel();
     162        }
    156163
    157164        if (progressMonitor.isCanceled())
    158165            throw new UserCancelException();
     
    172179            return null;
    173180        }
    174181        GuiHelper.runInEDT(() -> {
    175                 for (Command c : cmds) {
    176                         if (c instanceof ConflictAddCommand) {
    177                                 numberOfConflicts++;
    178                         }
    179                         c.executeCommand();
    180                 }
     182            for (Command c : cmds) {
     183                if (c instanceof ConflictAddCommand) {
     184                    numberOfConflicts++;
     185                }
     186                c.executeCommand();
     187            }
    181188        });
    182189        final String desc;
    183190        if (revertType == RevertType.FULL) {
     
    188195        return new RevertChangesetCommand(desc, cmds);
    189196    }
    190197
    191         @Override
    192         protected void cancel() {
     198    @Override
     199    protected void cancel() {
    193200        // nothing to do
    194         }
     201    }
    195202
    196         @Override
    197         protected void finish() {
     203    @Override
     204    protected void finish() {
    198205        // nothing to do
    199206
    200         }
     207    }
    201208
    202209    /**
    203210     * Return number of conflicts for this changeset.