Mercurial > hg4j
comparison src/org/tmatesoft/hg/internal/FileAnnotation.java @ 603:707b5c7c6fa4
Refactor HgBlameFacility: relevant action methods moved to proper home (HgDataFile), as facility doesn't provide anything but packaging of relevant methods/interfaces
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Mon, 06 May 2013 18:29:57 +0200 |
parents | 8ed4f4f4f0a6 |
children | 6526d8adbc0f |
comparison
equal
deleted
inserted
replaced
602:e3717fc7d26f | 603:707b5c7c6fa4 |
---|---|
17 package org.tmatesoft.hg.internal; | 17 package org.tmatesoft.hg.internal; |
18 | 18 |
19 | 19 |
20 import org.tmatesoft.hg.core.HgCallbackTargetException; | 20 import org.tmatesoft.hg.core.HgCallbackTargetException; |
21 import org.tmatesoft.hg.core.HgIterateDirection; | 21 import org.tmatesoft.hg.core.HgIterateDirection; |
22 import org.tmatesoft.hg.repo.HgBlameFacility; | 22 import org.tmatesoft.hg.repo.HgBlameInspector; |
23 import org.tmatesoft.hg.repo.HgBlameInspector.RevisionDescriptor; | |
24 import org.tmatesoft.hg.repo.HgDataFile; | |
23 import org.tmatesoft.hg.repo.HgInvalidStateException; | 25 import org.tmatesoft.hg.repo.HgInvalidStateException; |
24 import org.tmatesoft.hg.repo.HgBlameFacility.AddBlock; | |
25 import org.tmatesoft.hg.repo.HgBlameFacility.BlockData; | |
26 import org.tmatesoft.hg.repo.HgBlameFacility.ChangeBlock; | |
27 import org.tmatesoft.hg.repo.HgBlameFacility.DeleteBlock; | |
28 import org.tmatesoft.hg.repo.HgBlameFacility.EqualBlock; | |
29 import org.tmatesoft.hg.repo.HgBlameFacility.RevisionDescriptor; | |
30 import org.tmatesoft.hg.repo.HgDataFile; | |
31 | 26 |
32 /** | 27 /** |
33 * Produce output like 'hg annotate' does | 28 * Produce output like 'hg annotate' does |
34 * | 29 * |
35 * @author Artem Tikhomirov | 30 * @author Artem Tikhomirov |
36 * @author TMate Software Ltd. | 31 * @author TMate Software Ltd. |
37 */ | 32 */ |
38 public class FileAnnotation implements HgBlameFacility.Inspector, RevisionDescriptor.Recipient { | 33 public class FileAnnotation implements HgBlameInspector, RevisionDescriptor.Recipient { |
39 | 34 |
40 @Experimental(reason="The line-by-line inspector likely to become part of core/command API") | 35 @Experimental(reason="The line-by-line inspector likely to become part of core/command API") |
41 @Callback | 36 @Callback |
42 public interface LineInspector { | 37 public interface LineInspector { |
43 /** | 38 /** |
56 public static void annotate(HgDataFile df, int changelogRevisionIndex, LineInspector insp) throws HgCallbackTargetException { | 51 public static void annotate(HgDataFile df, int changelogRevisionIndex, LineInspector insp) throws HgCallbackTargetException { |
57 if (!df.exists()) { | 52 if (!df.exists()) { |
58 return; | 53 return; |
59 } | 54 } |
60 FileAnnotation fa = new FileAnnotation(insp); | 55 FileAnnotation fa = new FileAnnotation(insp); |
61 HgBlameFacility af = new HgBlameFacility(df); | 56 df.annotate(changelogRevisionIndex, fa, HgIterateDirection.NewToOld); |
62 af.annotate(changelogRevisionIndex, fa, HgIterateDirection.NewToOld); | |
63 } | 57 } |
64 | 58 |
65 // keeps <startSeq1, startSeq2, len> of equal blocks, origin to target, from some previous step | 59 // keeps <startSeq1, startSeq2, len> of equal blocks, origin to target, from some previous step |
66 private RangeSeq activeEquals; | 60 private RangeSeq activeEquals; |
67 // equal blocks of the current iteration, to be recalculated before next step | 61 // equal blocks of the current iteration, to be recalculated before next step |