1 package org.apache.maven.scm.provider.perforce.command.unedit;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.ArrayList;
23 import java.util.List;
24 import java.util.regex.Matcher;
25 import java.util.regex.Pattern;
26
27 import org.apache.maven.scm.ScmFile;
28 import org.apache.maven.scm.ScmFileStatus;
29 import org.apache.maven.scm.provider.perforce.command.AbstractPerforceConsumer;
30 import org.codehaus.plexus.util.cli.StreamConsumer;
31
32
33
34
35
36 public class PerforceUnEditConsumer
37 extends AbstractPerforceConsumer
38 implements StreamConsumer
39 {
40
41 private static final Pattern REVISION_PATTERN = Pattern.compile( "^([^#]+)#\\d+ - (.*)" );
42
43 private static final int STATE_NORMAL = 1;
44
45 private static final int STATE_ERROR = 2;
46
47 private int currentState = STATE_NORMAL;
48
49 private List<ScmFile> edits = new ArrayList<ScmFile>();
50
51 public List<ScmFile> getEdits()
52 {
53 return edits;
54 }
55
56
57 public void consumeLine( String line )
58 {
59 Matcher matcher = REVISION_PATTERN.matcher( line );
60 if ( currentState != STATE_ERROR && matcher.matches() )
61 {
62 edits.add( new ScmFile( matcher.group( 1 ), ScmFileStatus.UNKNOWN ) );
63 return;
64 }
65
66 error( line );
67 }
68
69 private void error( String line )
70 {
71 currentState = STATE_ERROR;
72 output.println( line );
73 }
74
75 public boolean isSuccess()
76 {
77 return currentState == STATE_NORMAL;
78 }
79 }