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