1 package org.apache.maven.scm.provider.bazaar.command.checkin;
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.ScmFile;
24 import org.apache.maven.scm.ScmFileSet;
25 import org.apache.maven.scm.ScmFileStatus;
26 import org.apache.maven.scm.ScmResult;
27 import org.apache.maven.scm.ScmVersion;
28 import org.apache.maven.scm.command.checkin.AbstractCheckInCommand;
29 import org.apache.maven.scm.command.checkin.CheckInScmResult;
30 import org.apache.maven.scm.command.status.StatusScmResult;
31 import org.apache.maven.scm.provider.ScmProviderRepository;
32 import org.apache.maven.scm.provider.bazaar.BazaarUtils;
33 import org.apache.maven.scm.provider.bazaar.command.BazaarCommand;
34 import org.apache.maven.scm.provider.bazaar.command.BazaarConsumer;
35 import org.apache.maven.scm.provider.bazaar.command.status.BazaarStatusCommand;
36 import org.apache.maven.scm.provider.bazaar.repository.BazaarScmProviderRepository;
37 import org.codehaus.plexus.util.StringUtils;
38
39 import java.io.File;
40 import java.util.ArrayList;
41 import java.util.Iterator;
42 import java.util.List;
43
44
45
46
47 public class BazaarCheckInCommand
48 extends AbstractCheckInCommand
49 {
50
51 protected CheckInScmResult executeCheckInCommand( ScmProviderRepository repo, ScmFileSet fileSet, String message,
52 ScmVersion version )
53 throws ScmException
54 {
55
56 if ( version != null && StringUtils.isNotEmpty( version.getName() ) )
57 {
58 throw new ScmException( "This provider can't handle tags." );
59 }
60
61
62 List commitedFiles = new ArrayList();
63 File[] files = fileSet.getFiles();
64 if ( files.length == 0 )
65 {
66 BazaarStatusCommand statusCmd = new BazaarStatusCommand();
67 statusCmd.setLogger( getLogger() );
68 StatusScmResult status = statusCmd.executeStatusCommand( repo, fileSet );
69 List statusFiles = status.getChangedFiles();
70 for ( Iterator it = statusFiles.iterator(); it.hasNext(); )
71 {
72 ScmFile file = (ScmFile) it.next();
73 if ( file.getStatus() == ScmFileStatus.ADDED || file.getStatus() == ScmFileStatus.DELETED ||
74 file.getStatus() == ScmFileStatus.MODIFIED )
75 {
76 commitedFiles.add( new ScmFile( file.getPath(), ScmFileStatus.CHECKED_IN ) );
77 }
78 }
79
80 }
81 else
82 {
83 for ( int i = 0; i < files.length; i++ )
84 {
85 commitedFiles.add( new ScmFile( files[i].getPath(), ScmFileStatus.CHECKED_IN ) );
86 }
87 }
88
89
90 String[] commitCmd = new String[]{BazaarCommand.COMMIT_CMD, BazaarCommand.MESSAGE_OPTION, message};
91 commitCmd = BazaarUtils.expandCommandLine( commitCmd, fileSet );
92 ScmResult result =
93 BazaarUtils.execute( new BazaarConsumer( getLogger() ), getLogger(), fileSet.getBasedir(), commitCmd );
94
95
96 BazaarScmProviderRepository repository = (BazaarScmProviderRepository) repo;
97 if ( !repository.getURI().equals( fileSet.getBasedir().getAbsolutePath() ) )
98 {
99 String[] push_cmd = new String[]{BazaarCommand.PUSH_CMD, repository.getURI()};
100 result =
101 BazaarUtils.execute( new BazaarConsumer( getLogger() ), getLogger(), fileSet.getBasedir(), push_cmd );
102 }
103
104 return new CheckInScmResult( commitedFiles, result );
105 }
106 }