1 package org.apache.maven.scm.provider.clearcase.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.command.blame.BlameLine;
23 import org.apache.maven.scm.log.ScmLogger;
24 import org.apache.maven.scm.util.AbstractConsumer;
25 import org.apache.regexp.RE;
26
27 import java.util.ArrayList;
28 import java.util.Date;
29 import java.util.List;
30
31
32
33
34
35
36 public class ClearCaseBlameConsumer
37 extends AbstractConsumer
38 {
39
40 private static final String CLEARCASE_TIMESTAMP_PATTERN = "yyyyMMdd.HHmmss";
41
42 private static final String LINE_PATTERN = "VERSION:(.*)@@@USER:(.*)@@@DATE:(.*)@@@(.*)";
43
44 private RE lineRegexp;
45
46 private List<BlameLine> lines = new ArrayList<BlameLine>();
47
48 public ClearCaseBlameConsumer( ScmLogger logger )
49 {
50 super( logger );
51 lineRegexp = new RE( LINE_PATTERN );
52 }
53
54 public void consumeLine( String line )
55 {
56 if ( lineRegexp.match( line ) )
57 {
58 String revision = lineRegexp.getParen( 1 );
59
60 String author = lineRegexp.getParen( 2 ).toLowerCase();
61 String dateTimeStr = lineRegexp.getParen( 3 );
62
63 Date dateTime = parseDate( dateTimeStr, null, CLEARCASE_TIMESTAMP_PATTERN );
64 lines.add( new BlameLine( dateTime, revision, author ) );
65
66 if ( getLogger().isDebugEnabled() )
67 {
68 getLogger().debug( author + " " + dateTimeStr );
69 }
70 }
71 }
72
73 public List<BlameLine> getLines()
74 {
75 return lines;
76 }
77 }