1 package org.apache.maven.scm.provider.cvslib.cvsexe.command.changelog;
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.ScmVersion;
24 import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
25 import org.apache.maven.scm.command.changelog.ChangeLogSet;
26 import org.apache.maven.scm.provider.cvslib.command.changelog.AbstractCvsChangeLogCommand;
27 import org.apache.maven.scm.provider.cvslib.command.changelog.CvsChangeLogConsumer;
28 import org.codehaus.plexus.util.cli.CommandLineException;
29 import org.codehaus.plexus.util.cli.CommandLineUtils;
30 import org.codehaus.plexus.util.cli.Commandline;
31
32 import java.util.Date;
33
34
35
36
37
38 public class CvsExeChangeLogCommand
39 extends AbstractCvsChangeLogCommand
40 {
41
42 protected ChangeLogScmResult executeCvsCommand( Commandline cl, Date startDate, Date endDate,
43 ScmVersion startVersion, ScmVersion endVersion, String datePattern )
44 throws ScmException
45 {
46 CvsChangeLogConsumer consumer = new CvsChangeLogConsumer( getLogger(), datePattern );
47
48 CommandLineUtils.StringStreamConsumer stderr = new CommandLineUtils.StringStreamConsumer();
49
50 int exitCode;
51
52 try
53 {
54 exitCode = CommandLineUtils.executeCommandLine( cl, consumer, stderr );
55 }
56 catch ( CommandLineException ex )
57 {
58 throw new ScmException( "Error while executing cvs command.", ex );
59 }
60
61 if ( exitCode != 0 )
62 {
63 return new ChangeLogScmResult( cl.toString(), "The cvs command failed.", stderr.getOutput(), false );
64 }
65
66 ChangeLogSet changeLogSet = new ChangeLogSet( consumer.getModifications(), startDate, endDate );
67 changeLogSet.setStartVersion( startVersion );
68 changeLogSet.setEndVersion( endVersion );
69
70 return new ChangeLogScmResult( cl.toString(), changeLogSet );
71 }
72 }