1 package org.apache.maven.scm.provider.integrity.command.checkout;
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 com.mks.api.response.Response;
24 import com.mks.api.response.Result;
25 import com.mks.api.response.WorkItem;
26 import com.mks.api.response.WorkItemIterator;
27 import com.mks.api.si.SIModelTypeName;
28 import org.apache.maven.scm.ScmException;
29 import org.apache.maven.scm.ScmFileSet;
30 import org.apache.maven.scm.ScmVersion;
31 import org.apache.maven.scm.command.checkout.AbstractCheckOutCommand;
32 import org.apache.maven.scm.command.checkout.CheckOutScmResult;
33 import org.apache.maven.scm.provider.ScmProviderRepository;
34 import org.apache.maven.scm.provider.integrity.ExceptionHandler;
35 import org.apache.maven.scm.provider.integrity.Sandbox;
36 import org.apache.maven.scm.provider.integrity.repository.IntegrityScmProviderRepository;
37
38
39
40
41
42
43
44
45
46
47
48
49 public class IntegrityCheckOutCommand
50 extends AbstractCheckOutCommand
51 {
52
53
54
55
56
57
58
59
60
61 @Override
62 public CheckOutScmResult executeCheckOutCommand( ScmProviderRepository repository, ScmFileSet fileSet,
63 ScmVersion scmVersion, boolean recursive )
64 throws ScmException
65 {
66 CheckOutScmResult result;
67 IntegrityScmProviderRepository iRepo = (IntegrityScmProviderRepository) repository;
68 try
69 {
70 getLogger().info(
71 "Attempting to checkout source for project " + iRepo.getProject().getConfigurationPath() );
72 String checkoutDir = System.getProperty( "checkoutDirectory" );
73
74 Sandbox siSandbox;
75 if ( null != checkoutDir && checkoutDir.length() > 0 )
76 {
77 siSandbox = new Sandbox( iRepo.getAPISession(), iRepo.getProject(), checkoutDir );
78 iRepo.setSandbox( siSandbox );
79 }
80 else
81 {
82 siSandbox = iRepo.getSandbox();
83 }
84 getLogger().info( "Sandbox location is " + siSandbox.getSandboxDir() );
85
86 if ( siSandbox.create() )
87 {
88
89 Response res = siSandbox.resync();
90
91 WorkItemIterator wit = res.getWorkItems();
92 while ( wit.hasNext() )
93 {
94 WorkItem wi = wit.next();
95 if ( wi.getModelType().equals( SIModelTypeName.MEMBER ) )
96 {
97 Result message = wi.getResult();
98 getLogger().debug( wi.getDisplayId() + " " + ( null != message ? message.getMessage() : "" ) );
99 }
100 }
101 int exitCode = res.getExitCode();
102 boolean success = ( exitCode == 0 ? true : false );
103 result = new CheckOutScmResult( res.getCommandString(), "", "Exit Code: " + exitCode, success );
104 }
105 else
106 {
107 result = new CheckOutScmResult( "si createsandbox", "Failed to create sandbox!", "", false );
108 }
109 }
110 catch ( APIException aex )
111 {
112 ExceptionHandler eh = new ExceptionHandler( aex );
113 getLogger().error( "MKS API Exception: " + eh.getMessage() );
114 getLogger().info( eh.getCommand() + " exited with return code " + eh.getExitCode() );
115 result = new CheckOutScmResult( eh.getCommand(), eh.getMessage(), "Exit Code: " + eh.getExitCode(), false );
116 }
117
118 return result;
119 }
120
121 }