Ticket #23701: Multiple_revert.patch

File Multiple_revert.patch, 3.4 KB (added by TrickyFoxy, 19 months ago)
  • plugins/reverter/src/reverter/RevertChangesetHandler.java

    Subject: [PATCH] Multiple revert
    ---
    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
    diff --git a/plugins/reverter/src/reverter/RevertChangesetHandler.java b/plugins/reverter/src/reverter/RevertChangesetHandler.java
    a b  
    77import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
    88import org.openstreetmap.josm.io.remotecontrol.handler.RequestHandler;
    99
     10import java.util.List;
     11import java.util.ArrayList;
     12
    1013public class RevertChangesetHandler extends RequestHandler {
    1114    public static final String command = "revert_changeset";
    1215    public static final String permissionKey = "remotecontrol.permission.revert_changeset";
    1316    public static final boolean permissionDefault = true;
    1417
    1518    private int changesetId;
     19    private List<Integer> changesetIds = null;
    1620
    1721    @Override
    1822    protected void handleRequest() throws RequestHandlerErrorException,
    1923            RequestHandlerBadRequestException {
    2024        try {
    21             MainApplication.worker.submit(new RevertChangesetTask(changesetId, ChangesetReverter.RevertType.FULL, true));
     25            if (changesetIds == null) {
     26                MainApplication.worker.submit(new RevertChangesetTask(changesetId, ChangesetReverter.RevertType.FULL, true));
     27            } else {
     28                MainApplication.worker.submit(new RevertChangesetTask(changesetIds, ChangesetReverter.RevertType.FULL, true, false));
     29            }
    2230        } catch (Exception ex) {
    2331            System.out.println("RemoteControl: Error parsing revert_changeset remote control request:");
    2432            ex.printStackTrace();
     
    2836
    2937    @Override
    3038    public String[] getMandatoryParams() {
    31         return new String[] {"id"};
     39        return new String[0];
     40    }
     41    @Override
     42    public String[] getOptionalParams() {
     43        return new String[] {"id", "ids"};
    3244    }
    3345
    3446    @Override
     
    4355
    4456    @Override
    4557    protected void validateRequest() throws RequestHandlerBadRequestException {
    46         try {
    47             changesetId = Integer.parseInt(args.get("id"));
    48         } catch (NumberFormatException e) {
    49             throw new RequestHandlerBadRequestException("NumberFormatException: "+e.getMessage());
     58        if (args.containsKey("id")) {
     59            try {
     60                changesetId = Integer.parseInt(args.get("id"));
     61            } catch (NumberFormatException e) {
     62                throw new RequestHandlerBadRequestException("NumberFormatException: " + e.getMessage());
     63            }
     64        } else if (args.get("ids") != null) {
     65            try {
     66                changesetIds = new ArrayList<>();
     67                for (String id : args.get("ids").split(",")) {
     68                    changesetIds.add(Integer.parseInt(id));
     69                }
     70            } catch (NumberFormatException e) {
     71                throw new RequestHandlerBadRequestException("NumberFormatException: " + e.getMessage());
     72            }
     73        } else {
     74            throw new RequestHandlerBadRequestException(String.format("At least one of the optional arguments must be specified (%s)",
     75                    String.join(", ", getOptionalParams())));
    5076        }
    5177    }
    5278}