1 package org.apache.maven.scm.provider.tfs.command;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.Iterator;
23
24 import org.apache.maven.scm.ScmException;
25 import org.apache.maven.scm.ScmFile;
26 import org.apache.maven.scm.ScmFileSet;
27 import org.apache.maven.scm.command.status.AbstractStatusCommand;
28 import org.apache.maven.scm.command.status.StatusScmResult;
29 import org.apache.maven.scm.provider.ScmProviderRepository;
30 import org.apache.maven.scm.provider.tfs.TfsScmProviderRepository;
31 import org.apache.maven.scm.provider.tfs.command.consumer.ChangedFileConsumer;
32 import org.apache.maven.scm.provider.tfs.command.consumer.ErrorStreamConsumer;
33
34 public class TfsStatusCommand
35 extends AbstractStatusCommand
36 {
37
38 protected StatusScmResult executeStatusCommand( ScmProviderRepository r, ScmFileSet f )
39 throws ScmException
40 {
41 TfsScmProviderRepository tfsRepo = (TfsScmProviderRepository) r;
42
43 TfsCommand command = createCommand( tfsRepo, f );
44 ChangedFileConsumer out = new ChangedFileConsumer( getLogger() );
45 ErrorStreamConsumer err = new ErrorStreamConsumer();
46
47 int status = command.execute( out, err );
48 if ( status != 0 || err.hasBeenFed() )
49 {
50 return new StatusScmResult( command.getCommandString(), "Error code for TFS status command - " + status,
51 err.getOutput(), false );
52 }
53 Iterator<ScmFile> iter = out.getChangedFiles().iterator();
54 getLogger().debug( "Iterating" );
55 while ( iter.hasNext() )
56 {
57 ScmFile file = (ScmFile) iter.next();
58 getLogger().debug( file.getPath() + ":" + file.getStatus() );
59 }
60 return new StatusScmResult( command.getCommandString(), out.getChangedFiles() );
61 }
62
63 public TfsCommand createCommand( TfsScmProviderRepository r, ScmFileSet f )
64 {
65 String url = r.getServerPath();
66 String workspace = r.getWorkspace();
67 TfsCommand command = new TfsCommand( "status", r, f, getLogger() );
68 if ( workspace != null && !workspace.trim().equals( "" ) )
69 {
70 command.addArgument( "-workspace:" + workspace );
71 }
72 command.addArgument( "-recursive" );
73 command.addArgument( "-format:detailed" );
74 command.addArgument( url );
75 return command;
76 }
77 }
78