1 package org.apache.maven.scm.provider.integrity.command.export;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import com.mks.api.response.APIException;
23 import org.apache.maven.scm.ScmException;
24 import org.apache.maven.scm.ScmFile;
25 import org.apache.maven.scm.ScmFileSet;
26 import org.apache.maven.scm.ScmFileStatus;
27 import org.apache.maven.scm.ScmVersion;
28 import org.apache.maven.scm.command.export.AbstractExportCommand;
29 import org.apache.maven.scm.command.export.ExportScmResult;
30 import org.apache.maven.scm.provider.ScmProviderRepository;
31 import org.apache.maven.scm.provider.integrity.ExceptionHandler;
32 import org.apache.maven.scm.provider.integrity.Member;
33 import org.apache.maven.scm.provider.integrity.repository.IntegrityScmProviderRepository;
34
35 import java.util.ArrayList;
36 import java.util.Iterator;
37 import java.util.List;
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 public class IntegrityExportCommand
53 extends AbstractExportCommand
54 {
55
56
57
58 @Override
59 public ExportScmResult executeExportCommand( ScmProviderRepository repository, ScmFileSet fileSet,
60 ScmVersion scmVersion, String outputDirectory )
61 throws ScmException
62 {
63
64 String exportDir = outputDirectory;
65 exportDir =
66 ( ( null != exportDir && exportDir.length() > 0 ) ? exportDir : fileSet.getBasedir().getAbsolutePath() );
67
68 getLogger().info( "Attempting to export files to " + exportDir );
69 ExportScmResult result;
70 IntegrityScmProviderRepository iRepo = (IntegrityScmProviderRepository) repository;
71 try
72 {
73
74 boolean exportSuccess = true;
75
76 List<Member> projectMembers = iRepo.getProject().listFiles( exportDir );
77
78 List<ScmFile> scmFileList = new ArrayList<ScmFile>();
79 for ( Iterator<Member> it = projectMembers.iterator(); it.hasNext(); )
80 {
81 Member siMember = it.next();
82 try
83 {
84 getLogger().info( "Attempting to export file: " + siMember.getTargetFilePath() + " at revision "
85 + siMember.getRevision() );
86 siMember.checkout( iRepo.getAPISession() );
87 scmFileList.add( new ScmFile( siMember.getTargetFilePath(), ScmFileStatus.UNKNOWN ) );
88 }
89 catch ( APIException ae )
90 {
91 exportSuccess = false;
92 ExceptionHandler eh = new ExceptionHandler( ae );
93 getLogger().error( "MKS API Exception: " + eh.getMessage() );
94 getLogger().debug( eh.getCommand() + " exited with return code " + eh.getExitCode() );
95 }
96 }
97
98 getLogger().info(
99 "Exported " + scmFileList.size() + " files out of a total of " + projectMembers.size() + " files!" );
100 if ( exportSuccess )
101 {
102 result = new ExportScmResult( "si co", scmFileList );
103 }
104 else
105 {
106 result = new ExportScmResult( "si co", "Failed to export all files!", "", exportSuccess );
107 }
108 }
109 catch ( APIException aex )
110 {
111 ExceptionHandler eh = new ExceptionHandler( aex );
112 getLogger().error( "MKS API Exception: " + eh.getMessage() );
113 getLogger().debug( eh.getCommand() + " exited with return code " + eh.getExitCode() );
114 result = new ExportScmResult( eh.getCommand(), eh.getMessage(), "Exit Code: " + eh.getExitCode(), false );
115 }
116
117 return result;
118 }
119
120 }