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 public class IntegrityExportCommand
52 extends AbstractExportCommand
53 {
54
55
56
57 @Override
58 public ExportScmResult executeExportCommand( ScmProviderRepository repository, ScmFileSet fileSet,
59 ScmVersion scmVersion, String outputDirectory )
60 throws ScmException
61 {
62
63 String exportDir = outputDirectory;
64 exportDir =
65 ( ( null != exportDir && exportDir.length() > 0 ) ? exportDir : fileSet.getBasedir().getAbsolutePath() );
66
67 getLogger().info( "Attempting to export files to " + exportDir );
68 ExportScmResult result;
69 IntegrityScmProviderRepository iRepo = (IntegrityScmProviderRepository) repository;
70 try
71 {
72
73 boolean exportSuccess = true;
74
75 List<Member> projectMembers = iRepo.getProject().listFiles( exportDir );
76
77 List<ScmFile> scmFileList = new ArrayList<ScmFile>();
78 for ( Iterator<Member> it = projectMembers.iterator(); it.hasNext(); )
79 {
80 Member siMember = it.next();
81 try
82 {
83 getLogger().info( "Attempting to export file: " + siMember.getTargetFilePath() + " at revision "
84 + siMember.getRevision() );
85 siMember.checkout( iRepo.getAPISession() );
86 scmFileList.add( new ScmFile( siMember.getTargetFilePath(), ScmFileStatus.UNKNOWN ) );
87 }
88 catch ( APIException ae )
89 {
90 exportSuccess = false;
91 ExceptionHandler eh = new ExceptionHandler( ae );
92 getLogger().error( "MKS API Exception: " + eh.getMessage() );
93 getLogger().debug( eh.getCommand() + " exited with return code " + eh.getExitCode() );
94 }
95 }
96
97 getLogger().info(
98 "Exported " + scmFileList.size() + " files out of a total of " + projectMembers.size() + " files!" );
99 if ( exportSuccess )
100 {
101 result = new ExportScmResult( "si co", scmFileList );
102 }
103 else
104 {
105 result = new ExportScmResult( "si co", "Failed to export all files!", "", exportSuccess );
106 }
107 }
108 catch ( APIException aex )
109 {
110 ExceptionHandler eh = new ExceptionHandler( aex );
111 getLogger().error( "MKS API Exception: " + eh.getMessage() );
112 getLogger().debug( eh.getCommand() + " exited with return code " + eh.getExitCode() );
113 result = new ExportScmResult( eh.getCommand(), eh.getMessage(), "Exit Code: " + eh.getExitCode(), false );
114 }
115
116 return result;
117 }
118
119 }