Mercurial > jhg
comparison src/org/tmatesoft/hg/core/HgAddRemoveCommand.java @ 581:0890628ed51e
Progress/cancel support in new commands
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Mon, 22 Apr 2013 16:02:17 +0200 |
| parents | 95bdcf75e71e |
| children | f41dd9a3b8af |
comparison
equal
deleted
inserted
replaced
| 580:bd5926e24aa3 | 581:0890628ed51e |
|---|---|
| 23 import org.tmatesoft.hg.internal.Experimental; | 23 import org.tmatesoft.hg.internal.Experimental; |
| 24 import org.tmatesoft.hg.internal.Internals; | 24 import org.tmatesoft.hg.internal.Internals; |
| 25 import org.tmatesoft.hg.repo.HgManifest.Flags; | 25 import org.tmatesoft.hg.repo.HgManifest.Flags; |
| 26 import org.tmatesoft.hg.repo.HgRepository; | 26 import org.tmatesoft.hg.repo.HgRepository; |
| 27 import org.tmatesoft.hg.repo.HgRuntimeException; | 27 import org.tmatesoft.hg.repo.HgRuntimeException; |
| 28 import org.tmatesoft.hg.util.CancelSupport; | |
| 29 import org.tmatesoft.hg.util.CancelledException; | |
| 28 import org.tmatesoft.hg.util.Path; | 30 import org.tmatesoft.hg.util.Path; |
| 31 import org.tmatesoft.hg.util.ProgressSupport; | |
| 29 | 32 |
| 30 /** | 33 /** |
| 31 * WORK IN PROGRESS | 34 * WORK IN PROGRESS |
| 32 * | 35 * |
| 33 * Schedule files for addition and removal | 36 * Schedule files for addition and removal |
| 92 } | 95 } |
| 93 | 96 |
| 94 /** | 97 /** |
| 95 * Perform scheduled addition/removal | 98 * Perform scheduled addition/removal |
| 96 * | 99 * |
| 97 * @throws HgException | 100 * @throws HgException subclass thereof to indicate specific issue with the command arguments or repository state |
| 101 * @throws CancelledException if execution of the command was cancelled | |
| 98 */ | 102 */ |
| 99 public void execute() throws HgException { | 103 public void execute() throws HgException, CancelledException { |
| 100 try { | 104 try { |
| 105 final ProgressSupport progress = getProgressSupport(null); | |
| 106 final CancelSupport cancellation = getCancelSupport(null, true); | |
| 107 cancellation.checkCancelled(); | |
| 108 progress.start(2 + toAdd.size() + toRemove.size()); | |
| 101 Internals implRepo = Internals.getInstance(repo); | 109 Internals implRepo = Internals.getInstance(repo); |
| 102 final DirstateBuilder dirstateBuilder = new DirstateBuilder(implRepo); | 110 final DirstateBuilder dirstateBuilder = new DirstateBuilder(implRepo); |
| 103 dirstateBuilder.fillFrom(new DirstateReader(implRepo, new Path.SimpleSource())); | 111 dirstateBuilder.fillFrom(new DirstateReader(implRepo, new Path.SimpleSource())); |
| 112 progress.worked(1); | |
| 113 cancellation.checkCancelled(); | |
| 104 for (Path p : toAdd) { | 114 for (Path p : toAdd) { |
| 105 dirstateBuilder.recordAdded(p, Flags.RegularFile, -1); | 115 dirstateBuilder.recordAdded(p, Flags.RegularFile, -1); |
| 116 progress.worked(1); | |
| 117 cancellation.checkCancelled(); | |
| 106 } | 118 } |
| 107 for (Path p : toRemove) { | 119 for (Path p : toRemove) { |
| 108 dirstateBuilder.recordRemoved(p); | 120 dirstateBuilder.recordRemoved(p); |
| 121 progress.worked(1); | |
| 122 cancellation.checkCancelled(); | |
| 109 } | 123 } |
| 110 dirstateBuilder.serialize(); | 124 dirstateBuilder.serialize(); |
| 125 progress.worked(1); | |
| 126 progress.done(); | |
| 111 } catch (HgRuntimeException ex) { | 127 } catch (HgRuntimeException ex) { |
| 112 throw new HgLibraryFailureException(ex); | 128 throw new HgLibraryFailureException(ex); |
| 113 } | 129 } |
| 114 } | 130 } |
| 115 } | 131 } |
