Mercurial > jhg
comparison src/org/tmatesoft/hg/core/HgAnnotateCommand.java @ 628:6526d8adbc0f
Explicit HgRuntimeException to facilitate easy switch from runtime to checked exceptions
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Wed, 22 May 2013 15:52:31 +0200 |
| parents | 5afc7eedb3dd |
| children | 5f52074707b2 |
comparison
equal
deleted
inserted
replaced
| 627:5153eb73b18d | 628:6526d8adbc0f |
|---|---|
| 26 import org.tmatesoft.hg.internal.FileAnnotation.LineDescriptor; | 26 import org.tmatesoft.hg.internal.FileAnnotation.LineDescriptor; |
| 27 import org.tmatesoft.hg.internal.FileAnnotation.LineInspector; | 27 import org.tmatesoft.hg.internal.FileAnnotation.LineInspector; |
| 28 import org.tmatesoft.hg.repo.HgBlameInspector.BlockData; | 28 import org.tmatesoft.hg.repo.HgBlameInspector.BlockData; |
| 29 import org.tmatesoft.hg.repo.HgDataFile; | 29 import org.tmatesoft.hg.repo.HgDataFile; |
| 30 import org.tmatesoft.hg.repo.HgRepository; | 30 import org.tmatesoft.hg.repo.HgRepository; |
| 31 import org.tmatesoft.hg.repo.HgRuntimeException; | |
| 31 import org.tmatesoft.hg.util.CancelSupport; | 32 import org.tmatesoft.hg.util.CancelSupport; |
| 32 import org.tmatesoft.hg.util.CancelledException; | 33 import org.tmatesoft.hg.util.CancelledException; |
| 33 import org.tmatesoft.hg.util.Path; | 34 import org.tmatesoft.hg.util.Path; |
| 34 import org.tmatesoft.hg.util.ProgressSupport; | 35 import org.tmatesoft.hg.util.ProgressSupport; |
| 35 | 36 |
| 105 } | 106 } |
| 106 final ProgressSupport progress = getProgressSupport(inspector); | 107 final ProgressSupport progress = getProgressSupport(inspector); |
| 107 final CancelSupport cancellation = getCancelSupport(inspector, true); | 108 final CancelSupport cancellation = getCancelSupport(inspector, true); |
| 108 cancellation.checkCancelled(); | 109 cancellation.checkCancelled(); |
| 109 progress.start(2); | 110 progress.start(2); |
| 110 HgDataFile df = repo.getFileNode(file); | 111 try { |
| 111 if (!df.exists()) { | 112 HgDataFile df = repo.getFileNode(file); |
| 112 return; | 113 if (!df.exists()) { |
| 113 } | 114 return; |
| 114 final int changesetStart = followRename ? 0 : df.getChangesetRevisionIndex(0); | 115 } |
| 115 Collector c = new Collector(cancellation); | 116 final int changesetStart = followRename ? 0 : df.getChangesetRevisionIndex(0); |
| 116 FileAnnotation fa = new FileAnnotation(c); | 117 Collector c = new Collector(cancellation); |
| 117 df.annotate(changesetStart, annotateRevision.get(), fa, HgIterateDirection.NewToOld); | 118 FileAnnotation fa = new FileAnnotation(c); |
| 118 progress.worked(1); | 119 df.annotate(changesetStart, annotateRevision.get(), fa, HgIterateDirection.NewToOld); |
| 119 c.throwIfCancelled(); | 120 progress.worked(1); |
| 120 cancellation.checkCancelled(); | 121 c.throwIfCancelled(); |
| 121 ProgressSupport.Sub subProgress = new ProgressSupport.Sub(progress, 1); | |
| 122 subProgress.start(c.lineRevisions.length); | |
| 123 LineImpl li = new LineImpl(); | |
| 124 for (int i = 0; i < c.lineRevisions.length; i++) { | |
| 125 li.init(i+1, c.lineRevisions[i], c.line(i)); | |
| 126 inspector.next(li); | |
| 127 subProgress.worked(1); | |
| 128 cancellation.checkCancelled(); | 122 cancellation.checkCancelled(); |
| 129 } | 123 ProgressSupport.Sub subProgress = new ProgressSupport.Sub(progress, 1); |
| 130 subProgress.done(); | 124 subProgress.start(c.lineRevisions.length); |
| 125 LineImpl li = new LineImpl(); | |
| 126 for (int i = 0; i < c.lineRevisions.length; i++) { | |
| 127 li.init(i+1, c.lineRevisions[i], c.line(i)); | |
| 128 inspector.next(li); | |
| 129 subProgress.worked(1); | |
| 130 cancellation.checkCancelled(); | |
| 131 } | |
| 132 subProgress.done(); | |
| 133 } catch (HgRuntimeException ex) { | |
| 134 throw new HgLibraryFailureException(ex); | |
| 135 } | |
| 131 progress.done(); | 136 progress.done(); |
| 132 } | 137 } |
| 133 | 138 |
| 134 /** | 139 /** |
| 135 * Callback to receive annotated lines | 140 * Callback to receive annotated lines |
