1 package org.apache.maven.scm.provider.cvslib.cvsjava.command.status;
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.ScmException;
23 import org.apache.maven.scm.command.status.StatusScmResult;
24 import org.apache.maven.scm.provider.cvslib.command.status.AbstractCvsStatusCommand;
25 import org.apache.maven.scm.provider.cvslib.command.status.CvsStatusConsumer;
26 import org.apache.maven.scm.provider.cvslib.cvsjava.util.CvsConnection;
27 import org.apache.maven.scm.provider.cvslib.cvsjava.util.CvsLogListener;
28 import org.codehaus.plexus.util.cli.Commandline;
29
30 import java.io.BufferedReader;
31 import java.io.ByteArrayInputStream;
32 import java.io.InputStreamReader;
33
34
35
36
37
38 public class CvsJavaStatusCommand
39 extends AbstractCvsStatusCommand
40 {
41
42 protected StatusScmResult executeCvsCommand( Commandline cl )
43 throws ScmException
44 {
45 CvsLogListener logListener = new CvsLogListener();
46
47 CvsStatusConsumer consumer = new CvsStatusConsumer( getLogger(), cl.getWorkingDirectory() );
48
49 try
50 {
51 boolean isSuccess = CvsConnection.processCommand( cl.getArguments(),
52 cl.getWorkingDirectory().getAbsolutePath(), logListener,
53 getLogger() );
54
55 if ( !isSuccess )
56 {
57 return new StatusScmResult( cl.toString(), "The cvs command failed.",
58 logListener.getStderr().toString(), false );
59 }
60 BufferedReader stream = new BufferedReader(
61 new InputStreamReader( new ByteArrayInputStream( logListener.getStdout().toString().getBytes() ) ) );
62
63 String line;
64
65 while ( ( line = stream.readLine() ) != null )
66 {
67 consumer.consumeLine( line );
68 }
69 }
70 catch ( Exception e )
71 {
72 e.printStackTrace();
73 return new StatusScmResult( cl.toString(), "The cvs command failed.", logListener.getStderr().toString(),
74 false );
75 }
76
77 return new StatusScmResult( cl.toString(), consumer.getChangedFiles() );
78 }
79 }