Skip to content

Commit 15d17c1

Browse files
soimugeoWBsoimugeo
andauthored
added CreateProjectSmallFilesRequest. (#64)
* added CreateProjectSmallFilesRequest. * fixed shouldCreateProjectFromBackupFile test --------- Co-authored-by: soimugeo <[email protected]>
1 parent add05ab commit 15d17c1

File tree

6 files changed

+55
-1
lines changed

6 files changed

+55
-1
lines changed

src/main/java/edu/stanford/protege/webprotege/ApplicationBeansConfiguration.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,11 @@ CommandExecutor<PrepareBackupFilesForUseRequest, PrepareBackupFilesForUseRespons
577577
return new CommandExecutorImpl<>(PrepareBackupFilesForUseResponse.class);
578578
}
579579

580+
@Bean
581+
CommandExecutor<CreateProjectSmallFilesRequest, CreateProjectSmallFilesResponse> executorForCreateProjectSmallFiles() {
582+
return new CommandExecutorImpl<>(CreateProjectSmallFilesResponse.class);
583+
}
584+
580585
@Bean
581586
MinioClient minioClient(MinioProperties properties) {
582587
return MinioClient.builder()

src/main/java/edu/stanford/protege/webprotege/dispatch/Result.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@
181181
@Type(SetUserProjectEntityGraphSettingsResult.class),
182182
@Type(UpdateEntityTagsResult.class),
183183
@Type(UpdateFormDescriptorResult.class),
184+
@Type(CreateNewProjectFromProjectBackupResult.class),
184185
})
185186
public interface Result extends Response {
186187

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package edu.stanford.protege.webprotege.icd.projects;
2+
3+
import com.fasterxml.jackson.annotation.*;
4+
import edu.stanford.protege.webprotege.common.*;
5+
6+
import static edu.stanford.protege.webprotege.icd.projects.CreateProjectSmallFilesRequest.CHANNEL;
7+
8+
@JsonTypeName(CHANNEL)
9+
public record CreateProjectSmallFilesRequest(
10+
@JsonProperty("projectId") ProjectId projectId
11+
)implements Request<CreateProjectSmallFilesResponse> {
12+
public static final String CHANNEL = "icatx.versioning.CreateProjectSmallFiles";
13+
14+
@Override
15+
public String getChannel() {
16+
return CHANNEL;
17+
}
18+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package edu.stanford.protege.webprotege.icd.projects;
2+
3+
import com.fasterxml.jackson.annotation.JsonTypeName;
4+
import edu.stanford.protege.webprotege.dispatch.Result;
5+
6+
import static edu.stanford.protege.webprotege.icd.projects.CreateProjectSmallFilesRequest.CHANNEL;
7+
8+
@JsonTypeName(CHANNEL)
9+
public record CreateProjectSmallFilesResponse() implements Result {
10+
}

src/main/java/edu/stanford/protege/webprotege/project/CreateProjectSagaManager.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
import java.nio.file.Path;
1313
import java.util.*;
14-
import java.util.concurrent.CompletableFuture;
14+
import java.util.concurrent.*;
1515

1616
/**
1717
* Matthew Horridge
@@ -30,6 +30,8 @@ public class CreateProjectSagaManager {
3030
private final CommandExecutor<CreateInitialRevisionHistoryRequest, CreateInitialRevisionHistoryResponse> createInitialRevisionHistoryExecutor;
3131
private final CommandExecutor<PrepareBackupFilesForUseRequest, PrepareBackupFilesForUseResponse> prepareBinaryFileBackupForUseExecutor;
3232

33+
private final CommandExecutor<CreateProjectSmallFilesRequest, CreateProjectSmallFilesResponse> createProjectSmallFilesExecutor;
34+
3335
private final MinioFileDownloader fileDownloader;
3436

3537
private final RevisionHistoryReplacer revisionHistoryReplacer;
@@ -41,13 +43,15 @@ public CreateProjectSagaManager(ProjectDetailsManager projectDetailsManager,
4143
CommandExecutor<ProcessUploadedOntologiesRequest, ProcessUploadedOntologiesResponse> processOntologiesExecutor,
4244
CommandExecutor<CreateInitialRevisionHistoryRequest, CreateInitialRevisionHistoryResponse> createInitialRevisionHistoryExecutor,
4345
CommandExecutor<PrepareBackupFilesForUseRequest, PrepareBackupFilesForUseResponse> prepareBinaryFileBackupForUseExecutor,
46+
CommandExecutor<CreateProjectSmallFilesRequest, CreateProjectSmallFilesResponse> createProjectSmallFilesExecutor,
4447
MinioFileDownloader fileDownloader,
4548
RevisionHistoryReplacer revisionHistoryReplacer,
4649
ProjectPermissionsInitializer projectPermissionsInitializer) {
4750
this.projectDetailsManager = projectDetailsManager;
4851
this.processOntologiesExecutor = processOntologiesExecutor;
4952
this.createInitialRevisionHistoryExecutor = createInitialRevisionHistoryExecutor;
5053
this.prepareBinaryFileBackupForUseExecutor = prepareBinaryFileBackupForUseExecutor;
54+
this.createProjectSmallFilesExecutor = createProjectSmallFilesExecutor;
5155
this.revisionHistoryReplacer = revisionHistoryReplacer;
5256
this.fileDownloader = fileDownloader;
5357
this.projectPermissionsInitializer = projectPermissionsInitializer;
@@ -113,6 +117,7 @@ private CompletableFuture<CreateNewProjectFromProjectBackupResult> createProject
113117
return prepareBackupFilesForRestore(sagaState)
114118
.thenCompose(this::downloadRevisionHistory)
115119
.thenCompose(this::copyRevisionHistoryToProject)
120+
.thenCompose(this::createProjectSmallFiles)
116121
.thenCompose(this::registerProject)
117122
.thenCompose(this::initializeProjectPermissions)
118123
.thenCompose(this::retrieveProjectDetails)
@@ -129,6 +134,12 @@ private CompletableFuture<CreateNewProjectFromProjectBackupResult> createProject
129134
});
130135
}
131136

137+
private CompletableFuture<SagaStateWithSources> createProjectSmallFiles(SagaStateWithSources sagaState) {
138+
var createHistoryRequest = sagaState.createProjectSmallFiles();
139+
return createProjectSmallFilesExecutor.execute(createHistoryRequest, sagaState.getExecutionContext())
140+
.thenApply(response -> sagaState);
141+
}
142+
132143
private CompletableFuture<SagaStateWithSources> prepareBackupFilesForRestore(SagaStateWithSources sagaState) {
133144
var createHistoryRequest = sagaState.createPrepareBackupFilesForUseRequest();
134145
return prepareBinaryFileBackupForUseExecutor.execute(createHistoryRequest, sagaState.getExecutionContext())
@@ -269,6 +280,9 @@ public PrepareBackupFilesForUseRequest createPrepareBackupFilesForUseRequest() {
269280
return new PrepareBackupFilesForUseRequest(getProjectId(), getNewProjectSettings().sourceDocument());
270281
}
271282

283+
public CreateProjectSmallFilesRequest createProjectSmallFiles() {
284+
return new CreateProjectSmallFilesRequest(getProjectId());
285+
}
272286
}
273287

274288
}

src/test/java/edu/stanford/protege/webprotege/project/CreateProjectSagaManagerTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ class CreateProjectSagaManagerTest {
4646

4747
@Mock
4848
private CommandExecutor<PrepareBackupFilesForUseRequest, PrepareBackupFilesForUseResponse> prepareBinaryFileBackupForUseExecutor;
49+
@Mock
50+
private CommandExecutor<CreateProjectSmallFilesRequest, CreateProjectSmallFilesResponse> createProjectSmallFilesExecutor;
4951

5052
@Mock
5153
private MinioFileDownloader fileDownloader;
@@ -74,6 +76,7 @@ void setUp() {
7476
processOntologiesExecutor,
7577
createInitialRevisionHistoryExecutor,
7678
prepareBinaryFileBackupForUseExecutor,
79+
createProjectSmallFilesExecutor,
7780
fileDownloader,
7881
revisionHistoryReplacer,
7982
projectPermissionsInitializer);
@@ -238,6 +241,9 @@ void shouldCreateProjectFromBackupFile() throws ExecutionException, InterruptedE
238241
when(projectPermissionsInitializer.applyDefaultPermissions(any(ProjectId.class), any(UserId.class)))
239242
.thenReturn(CompletableFuture.completedFuture(null));
240243

244+
when(createProjectSmallFilesExecutor.execute(any(), eq(executionContext)))
245+
.thenReturn(CompletableFuture.completedFuture(null));
246+
241247
when(projectDetailsManager.getProjectDetails(any(ProjectId.class)))
242248
.thenReturn(projectDetails);
243249

0 commit comments

Comments
 (0)