|
@@ -96,17 +96,19 @@ public class ProjectServiceImpl implements ProjectService {
|
|
|
public Integer forkProject(UserForkDTO userForkDTO) throws GitLabApiException {
|
|
public Integer forkProject(UserForkDTO userForkDTO) throws GitLabApiException {
|
|
|
int userId=userForkDTO.getUserId();
|
|
int userId=userForkDTO.getUserId();
|
|
|
int projectId=userForkDTO.getProjectId();
|
|
int projectId=userForkDTO.getProjectId();
|
|
|
|
|
+ String username=userForkDTO.getUsername();
|
|
|
|
|
+ String examUuid=userForkDTO.getExamUuid();
|
|
|
GitlabUser gitlabUser = getGitlabUser(userId);
|
|
GitlabUser gitlabUser = getGitlabUser(userId);
|
|
|
Integer namespaceId=gitlabUser.getNamespaceId();
|
|
Integer namespaceId=gitlabUser.getNamespaceId();
|
|
|
Project project;
|
|
Project project;
|
|
|
log.info("trying to fork project {} to user {} (whose gitlab id is {})", projectId, userId, gitlabUser.getGitlabUserId());
|
|
log.info("trying to fork project {} to user {} (whose gitlab id is {})", projectId, userId, gitlabUser.getGitlabUserId());
|
|
|
- Integer existProjectId=searchForkedProject(namespaceId, projectId);
|
|
|
|
|
|
|
+ Integer existProjectId=searchForkedProject(username, examUuid);
|
|
|
if(existProjectId!=-1)
|
|
if(existProjectId!=-1)
|
|
|
return existProjectId;
|
|
return existProjectId;
|
|
|
|
|
|
|
|
try{
|
|
try{
|
|
|
gitlabApi.setSudoAsId((long) gitlabUser.getGitlabUserId());
|
|
gitlabApi.setSudoAsId((long) gitlabUser.getGitlabUserId());
|
|
|
- project=gitlabApi.getProjectApi().forkProject(new Long(projectId), String.valueOf(namespaceId));
|
|
|
|
|
|
|
+ project=gitlabApi.getProjectApi().forkProject(new Long(projectId), new Long(namespaceId));
|
|
|
project.setVisibility(Visibility.PRIVATE);
|
|
project.setVisibility(Visibility.PRIVATE);
|
|
|
project=gitlabApi.getProjectApi().updateProject(project);
|
|
project=gitlabApi.getProjectApi().updateProject(project);
|
|
|
}finally {
|
|
}finally {
|
|
@@ -115,12 +117,9 @@ public class ProjectServiceImpl implements ProjectService {
|
|
|
return Math.toIntExact(project != null ? project.getId() : null);
|
|
return Math.toIntExact(project != null ? project.getId() : null);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public Integer searchForkedProject(int namespaceId, int projectId) throws GitLabApiException {
|
|
|
|
|
|
|
+ public Integer searchForkedProject(String username, String examUuid) throws GitLabApiException {
|
|
|
try {
|
|
try {
|
|
|
- log.info("searching forked project");
|
|
|
|
|
- Project forkedProject = gitlabApi.getProjectApi().getProject(new Long(projectId));
|
|
|
|
|
- log.info("searched project to be forked, name={}",forkedProject.getName());
|
|
|
|
|
- Project project=gitlabApi.getProjectApi().getProject(String.valueOf(namespaceId),forkedProject.getName());
|
|
|
|
|
|
|
+ Project project=gitlabApi.getProjectApi().getProject(username,examUuid);
|
|
|
log.info("project had forked before, name={}",project.getName());
|
|
log.info("project had forked before, name={}",project.getName());
|
|
|
return Math.toIntExact(project.getId());
|
|
return Math.toIntExact(project.getId());
|
|
|
} catch (GitLabApiException e){
|
|
} catch (GitLabApiException e){
|