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
35
36
37 public class TfsStatusCommand
38 extends AbstractStatusCommand
39 {
40
41 protected StatusScmResult executeStatusCommand( ScmProviderRepository r, ScmFileSet f )
42 throws ScmException
43 {
44 TfsScmProviderRepository tfsRepo = (TfsScmProviderRepository) r;
45
46 TfsCommand command = createCommand( tfsRepo, f );
47 ChangedFileConsumer out = new ChangedFileConsumer( getLogger() );
48 ErrorStreamConsumer err = new ErrorStreamConsumer();
49
50 int status = command.execute( out, err );
51 if ( status != 0 || err.hasBeenFed() )
52 {
53 return new StatusScmResult( command.getCommandString(), "Error code for TFS status command - " + status,
54 err.getOutput(), false );
55 }
56 Iterator<ScmFile> iter = out.getChangedFiles().iterator();
57 getLogger().debug( "Iterating" );
58 while ( iter.hasNext() )
59 {
60 ScmFile file = (ScmFile) iter.next();
61 getLogger().debug( file.getPath() + ":" + file.getStatus() );
62 }
63 return new StatusScmResult( command.getCommandString(), out.getChangedFiles() );
64 }
65
66 public TfsCommand createCommand( TfsScmProviderRepository r, ScmFileSet f )
67 {
68 String url = r.getServerPath();
69 String workspace = r.getWorkspace();
70 TfsCommand command = new TfsCommand( "status", r, f, getLogger() );
71 if ( workspace != null && !workspace.trim().equals( "" ) )
72 {
73 command.addArgument( "-workspace:" + workspace );
74 }
75 command.addArgument( "-recursive" );
76 command.addArgument( "-format:detailed" );
77 command.addArgument( url );
78 return command;
79 }
80 }
81