1 package org.apache.maven.scm.provider.accurev.command;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23 import java.util.ArrayList;
24 import java.util.List;
25
26 import org.apache.maven.scm.CommandParameters;
27 import org.apache.maven.scm.ScmException;
28 import org.apache.maven.scm.ScmFile;
29 import org.apache.maven.scm.ScmFileSet;
30 import org.apache.maven.scm.ScmFileStatus;
31 import org.apache.maven.scm.ScmResult;
32 import org.apache.maven.scm.command.AbstractCommand;
33 import org.apache.maven.scm.log.ScmLogger;
34 import org.apache.maven.scm.provider.ScmProviderRepository;
35 import org.apache.maven.scm.provider.accurev.AccuRevException;
36 import org.apache.maven.scm.provider.accurev.AccuRevScmProviderRepository;
37
38 public abstract class AbstractAccuRevCommand
39 extends AbstractCommand
40 {
41
42 public AbstractAccuRevCommand( ScmLogger logger )
43 {
44 super();
45 setLogger( logger );
46 }
47
48 protected abstract ScmResult executeAccurevCommand( AccuRevScmProviderRepository repository, ScmFileSet fileSet,
49 CommandParameters parameters )
50 throws ScmException, AccuRevException;
51
52 protected final ScmResult executeCommand( ScmProviderRepository repository, ScmFileSet fileSet,
53 CommandParameters parameters )
54 throws ScmException
55 {
56
57 if ( !( repository instanceof AccuRevScmProviderRepository ) )
58 {
59 throw new ScmException( "Not an AccuRev repository " + repository );
60 }
61
62 AccuRevScmProviderRepository accuRevRepository = (AccuRevScmProviderRepository) repository;
63 accuRevRepository.getAccuRev().reset();
64 try
65 {
66 return executeAccurevCommand( accuRevRepository, fileSet, parameters );
67 }
68 catch ( AccuRevException e )
69 {
70 throw new ScmException( "Error invoking AccuRev command", e );
71 }
72 }
73
74 protected static List<ScmFile> getScmFiles( final List<File> files, ScmFileStatus status )
75 {
76 ArrayList<ScmFile> resultFiles = new ArrayList<ScmFile>( files.size() );
77 for ( File addedFile : files )
78 {
79
80 resultFiles.add( new ScmFile( addedFile.getPath(), status ) );
81 }
82 return resultFiles;
83 }
84
85 }