1 package org.apache.maven.scm.provider.hg.command.blame;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.scm.ScmFileStatus;
23 import org.apache.maven.scm.command.blame.BlameLine;
24 import org.apache.maven.scm.provider.hg.command.HgConsumer;
25
26 import java.util.ArrayList;
27 import java.util.Date;
28 import java.util.List;
29 import java.util.Locale;
30
31
32
33
34
35
36
37 public class HgBlameConsumer
38 extends HgConsumer
39 {
40 private final List<BlameLine> lines = new ArrayList<>();
41
42 private static final String HG_TIMESTAMP_PATTERN = "EEE MMM dd HH:mm:ss yyyy Z";
43
44 public void doConsume( ScmFileStatus status, String trimmedLine )
45 {
46
47 String annotation;
48 if ( trimmedLine.indexOf( ": " ) > -1 )
49 {
50 annotation = trimmedLine.substring( 0, trimmedLine.indexOf( ": " ) ).trim();
51 }
52 else
53 {
54 annotation = trimmedLine.substring( 0, trimmedLine.lastIndexOf( ":" ) ).trim();
55 }
56
57 String author = annotation.substring( 0, annotation.indexOf( ' ' ) );
58 annotation = annotation.substring( annotation.indexOf( ' ' ) + 1 ).trim();
59
60 String revision = annotation.substring( 0, annotation.indexOf( ' ' ) );
61 annotation = annotation.substring( annotation.indexOf( ' ' ) + 1 ).trim();
62
63 String dateStr = annotation;
64 Date dateTime = parseDate( dateStr, null, HG_TIMESTAMP_PATTERN, Locale.ENGLISH );
65
66 lines.add( new BlameLine( dateTime, revision, author ) );
67 }
68
69 public List<BlameLine> getLines()
70 {
71 return lines;
72 }
73 }