1 package org.apache.maven.scm.provider.accurev.cli;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23 import java.util.List;
24 import java.util.regex.Matcher;
25 import java.util.regex.Pattern;
26
27 import org.codehaus.plexus.util.cli.StreamConsumer;
28
29 class FileConsumer
30 implements StreamConsumer
31 {
32 private Pattern filePattern;
33
34 public FileConsumer( List<File> matchedFilesAccumulator, Pattern filematcher )
35 {
36 this.matchedFiles = matchedFilesAccumulator;
37 this.filePattern = filematcher;
38 }
39
40 public List<File> matchedFiles;
41
42
43 public static final Pattern ADD_PATTERN = Pattern.compile( "Added and kept element [/\\\\]\\.[/\\\\](\\S+)\\s*" );
44
45 public static final Pattern UPDATE_PATTERN = Pattern
46 .compile( "Updating element [/\\\\]\\.[/\\\\](\\S+)\\s*|Content.*of \"(.*)\".*" );
47
48 public static final Pattern POPULATE_PATTERN = Pattern.compile( "Populating element [/\\\\]\\.[/\\\\](\\S+)\\s*" );
49
50 public static final Pattern PROMOTE_PATTERN = Pattern.compile( "Promoted element [/\\\\]\\.[/\\\\](\\S+)\\s*" );
51
52 public static final Pattern STAT_PATTERN = Pattern.compile( "[/\\\\]\\.[/\\\\](.*)" );
53
54
55
56
57 public static final Pattern DEFUNCT_PATTERN = Pattern.compile( "Removing \"(\\S+)\".*" );
58
59 public void consumeLine( String line )
60 {
61
62 Matcher m = filePattern.matcher( line );
63 if ( m.matches() )
64 {
65
66 int i = 1;
67 String fileName = null;
68 while ( fileName == null && i <= m.groupCount() )
69 {
70 fileName = m.group( i++ );
71 }
72
73 if ( fileName != null )
74 {
75 matchedFiles.add( new File( fileName ) );
76 }
77 }
78
79 }
80 }