1 package org.apache.maven.scm.provider.cvslib.command.checkout;
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.ScmFileSet;
24 import org.apache.maven.scm.ScmVersion;
25 import org.apache.maven.scm.command.checkout.AbstractCheckOutCommand;
26 import org.apache.maven.scm.command.checkout.CheckOutScmResult;
27 import org.apache.maven.scm.provider.ScmProviderRepository;
28 import org.apache.maven.scm.provider.cvslib.command.CvsCommand;
29 import org.apache.maven.scm.provider.cvslib.command.CvsCommandUtils;
30 import org.apache.maven.scm.provider.cvslib.repository.CvsScmProviderRepository;
31 import org.codehaus.plexus.util.FileUtils;
32 import org.codehaus.plexus.util.StringUtils;
33 import org.codehaus.plexus.util.cli.Commandline;
34
35 import java.io.IOException;
36
37
38
39
40
41
42 public abstract class AbstractCvsCheckOutCommand
43 extends AbstractCheckOutCommand
44 implements CvsCommand
45 {
46
47 protected CheckOutScmResult executeCheckOutCommand( ScmProviderRepository repo, ScmFileSet fileSet,
48 ScmVersion version, boolean recursive )
49 throws ScmException
50 {
51 if ( fileSet.getBasedir().exists() )
52 {
53 try
54 {
55 FileUtils.deleteDirectory( fileSet.getBasedir() );
56 }
57 catch ( IOException e )
58 {
59 if ( getLogger().isWarnEnabled() )
60 {
61 getLogger().warn( "Can't delete " + fileSet.getBasedir().getAbsolutePath(), e );
62 }
63 }
64 }
65
66 CvsScmProviderRepository repository = (CvsScmProviderRepository) repo;
67
68 Commandline cl = CvsCommandUtils.getBaseCommand( "checkout", repository, fileSet );
69
70 cl.setWorkingDirectory( fileSet.getBasedir().getParentFile().getAbsolutePath() );
71
72 if ( version != null && !StringUtils.isEmpty( version.getName() ) )
73 {
74 cl.createArg().setValue( "-r" );
75 cl.createArg().setValue( version.getName() );
76 }
77
78 cl.createArg().setValue( "-d" );
79
80 cl.createArg().setValue( fileSet.getBasedir().getName() );
81
82 cl.createArg().setValue( repository.getModule() );
83
84 if ( getLogger().isInfoEnabled() )
85 {
86 getLogger().info( "Executing: " + cl );
87 getLogger().info( "Working directory: " + cl.getWorkingDirectory().getAbsolutePath() );
88 }
89
90 return executeCvsCommand( cl );
91 }
92
93 protected abstract CheckOutScmResult executeCvsCommand( Commandline cl )
94 throws ScmException;
95 }