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