Skip to content

Commit 705520b

Browse files
committed
-test
1 parent 8369b1d commit 705520b

File tree

9 files changed

+209
-57
lines changed

9 files changed

+209
-57
lines changed

descriptors/ModuleDescriptor-template.json

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
"provides": [
3939
{
4040
"id": "marc-migrations",
41-
"version": "1.0",
41+
"version": "1.1",
4242
"handlers": [
4343
{
4444
"methods": [
@@ -82,6 +82,33 @@
8282
"inventory-storage.authorities.bulk.post",
8383
"inventory-storage.instances.bulk.post"
8484
]
85+
},
86+
{
87+
"methods": [
88+
"POST"
89+
],
90+
"pathPattern": "/marc-migrations/{id}/error-report",
91+
"permissionsRequired": [
92+
"marc-migrations.operations.error-report.post"
93+
]
94+
},
95+
{
96+
"methods": [
97+
"GET"
98+
],
99+
"pathPattern": "/marc-migrations/{operationId}/error-report/status",
100+
"permissionsRequired": [
101+
"marc-migrations.operations.error-report.status.item.get"
102+
]
103+
},
104+
{
105+
"methods": [
106+
"GET"
107+
],
108+
"pathPattern": "/marc-migrations/{operationId}/error-report/errors",
109+
"permissionsRequired": [
110+
"marc-migrations.operations.error-report.errors.collection.get"
111+
]
85112
}
86113
]
87114
},
@@ -140,6 +167,21 @@
140167
"displayName": "MARC Migrations - Put operation",
141168
"description": "Save MARC Migrations Operation by ID"
142169
},
170+
{
171+
"permissionName": "marc-migrations.operations.error-report.post",
172+
"displayName": "MARC Migrations - Initialize error report",
173+
"description": "Initialize error report for MARC Migrations Operation"
174+
},
175+
{
176+
"permissionName": "marc-migrations.operations.error-report.status.item.get",
177+
"displayName": "MARC Migrations - Get error report status",
178+
"description": "Get error report status for MARC Migrations Operation"
179+
},
180+
{
181+
"permissionName": "marc-migrations.operations.error-report.errors.collection.get",
182+
"displayName": "MARC Migrations - Get error report errors collection",
183+
"description": "Get error report errors collection for MARC Migrations Operation"
184+
},
143185
{
144186
"permissionName": "marc-migrations.all",
145187
"displayName": "MARC Migrations - all permissions",
@@ -148,7 +190,10 @@
148190
"marc-migrations.operations.collection.get",
149191
"marc-migrations.operations.item.post",
150192
"marc-migrations.operations.item.get",
151-
"marc-migrations.operations.item.put"
193+
"marc-migrations.operations.item.put",
194+
"marc-migrations.operations.error-report.post",
195+
"marc-migrations.operations.error-report.status.item.get",
196+
"marc-migrations.operations.error-report.errors.collection.get"
152197
]
153198
}
154199
],

pom.xml

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,15 @@
2626
src/main/java/org/folio/marc/migrations/MarcMigrationsApplication.java
2727
</sonar.exclusions>
2828

29-
<folio-spring-support.version>100.0.0-SNAPSHOT</folio-spring-support.version>
29+
<folio-spring-support.version>10.0.0-SNAPSHOT</folio-spring-support.version>
3030
<data-import-processing-core.version>4.5.0-SNAPSHOT</data-import-processing-core.version>
3131
<folio-s3-client.version>2.4.0-SNAPSHOT</folio-s3-client.version>
3232
<aws-sdk-java.version>2.31.25</aws-sdk-java.version>
3333
<mapstruct.version>1.6.3</mapstruct.version>
3434
<lombok.mapstruct-binding.version>0.2.0</lombok.mapstruct-binding.version>
3535

3636
<checkstyle.version>10.23.0</checkstyle.version>
37+
<folio-module-descriptor-validator.version>1.0.1</folio-module-descriptor-validator.version>
3738
<maven-openapi-generator-plugin.version>7.12.0</maven-openapi-generator-plugin.version>
3839
<maven-copy-rename-plugin.version>1.0.1</maven-copy-rename-plugin.version>
3940
<maven-checkstyle-plugin.version>3.6.0</maven-checkstyle-plugin.version>
@@ -160,6 +161,19 @@
160161
</executions>
161162
</plugin>
162163

164+
<plugin>
165+
<groupId>org.folio</groupId>
166+
<artifactId>folio-module-descriptor-validator</artifactId>
167+
<version>1.0.1</version>
168+
<executions>
169+
<execution>
170+
<goals>
171+
<goal>validate</goal>
172+
</goals>
173+
</execution>
174+
</executions>
175+
</plugin>
176+
163177
<plugin>
164178
<groupId>org.springframework.boot</groupId>
165179
<artifactId>spring-boot-maven-plugin</artifactId>
@@ -407,11 +421,24 @@
407421
<repositories>
408422
<repository>
409423
<id>folio-nexus</id>
410-
<name>FOLIO Maven Repository</name>
424+
<name>FOLIO Maven repository</name>
411425
<url>https://repository.folio.org/repository/maven-folio</url>
412426
</repository>
427+
<repository>
428+
<id>index-data-nexus</id>
429+
<name>FOLIO Maven repository</name>
430+
<url>https://maven.indexdata.com</url>
431+
</repository>
413432
</repositories>
414433

434+
<pluginRepositories>
435+
<pluginRepository>
436+
<id>folio-nexus</id>
437+
<name>FOLIO Maven repository</name>
438+
<url>https://repository.folio.org/repository/maven-folio</url>
439+
</pluginRepository>
440+
</pluginRepositories>
441+
415442
<distributionManagement>
416443
<repository>
417444
<id>folio-nexus</id>

src/main/java/org/folio/marc/migrations/controllers/MarcMigrationsController.java

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ public MarcMigrationsController(MarcMigrationsService migrationsService) {
2525
this.migrationsService = migrationsService;
2626
}
2727

28+
@Override
29+
public ResponseEntity<Void> createErrorReport(UUID operationId, String tenantId) {
30+
migrationsService.createErrorReport(operationId);
31+
return ResponseEntity.noContent().build();
32+
}
33+
2834
@Override
2935
public ResponseEntity<MigrationOperation> createMarcMigrations(String tenantId,
3036
NewMigrationOperation newMigrationOperation) {
@@ -33,9 +39,8 @@ public ResponseEntity<MigrationOperation> createMarcMigrations(String tenantId,
3339
}
3440

3541
@Override
36-
public ResponseEntity<MigrationOperationCollection> getMarcMigrations(String tenantId, Integer offset, Integer limit,
37-
EntityType entityType) {
38-
return ResponseEntity.ok(migrationsService.getMarcMigrations(offset, limit, entityType));
42+
public ResponseEntity<ErrorReportStatus> getErrorReportStatus(UUID operationId, String tenantId) {
43+
return ResponseEntity.ok(migrationsService.getErrorReportStatus(operationId));
3944
}
4045

4146
@Override
@@ -44,26 +49,21 @@ public ResponseEntity<MigrationOperation> getMarcMigrationById(UUID operationId,
4449
}
4550

4651
@Override
47-
public ResponseEntity<Void> saveMarcMigration(UUID operationId, String tenantId,
48-
SaveMigrationOperation saveMigrationOperation) {
49-
migrationsService.saveMigrationOperation(operationId, saveMigrationOperation);
50-
return ResponseEntity.noContent().build();
51-
}
52-
53-
@Override
54-
public ResponseEntity<Void> createErrorReport(UUID operationId, String tenantId) {
55-
migrationsService.createErrorReport(operationId);
56-
return ResponseEntity.noContent().build();
52+
public ResponseEntity<MigrationOperationCollection> getMarcMigrations(String tenantId, Integer offset, Integer limit,
53+
EntityType entityType) {
54+
return ResponseEntity.ok(migrationsService.getMarcMigrations(offset, limit, entityType));
5755
}
5856

5957
@Override
60-
public ResponseEntity<ErrorReportStatus> getErrorReportStatus(UUID operationId, String tenantId) {
61-
return MarcMigrationsApi.super.getErrorReportStatus(operationId, tenantId);
58+
public ResponseEntity<ErrorReportCollection> getMigrationErrors(UUID operationId, String tenantId, Integer offset,
59+
Integer limit) {
60+
return ResponseEntity.ok(migrationsService.getErrorReportEntries(operationId, offset, limit));
6261
}
6362

6463
@Override
65-
public ResponseEntity<ErrorReportCollection> getMigrationErrors(UUID operationId, String tenantId, Integer offset,
66-
Integer limit) {
67-
return MarcMigrationsApi.super.getMigrationErrors(operationId, tenantId, offset, limit);
64+
public ResponseEntity<Void> saveMarcMigration(UUID operationId, String tenantId,
65+
SaveMigrationOperation saveMigrationOperation) {
66+
migrationsService.saveMigrationOperation(operationId, saveMigrationOperation);
67+
return ResponseEntity.noContent().build();
6868
}
6969
}

src/main/java/org/folio/marc/migrations/controllers/delegates/MarcMigrationsService.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
import lombok.extern.log4j.Log4j2;
77
import org.folio.marc.migrations.controllers.mappers.MarcMigrationMapper;
88
import org.folio.marc.migrations.domain.dto.EntityType;
9+
import org.folio.marc.migrations.domain.dto.ErrorReport;
10+
import org.folio.marc.migrations.domain.dto.ErrorReportCollection;
11+
import org.folio.marc.migrations.domain.dto.ErrorReportStatus;
912
import org.folio.marc.migrations.domain.dto.MigrationOperation;
1013
import org.folio.marc.migrations.domain.dto.MigrationOperationCollection;
1114
import org.folio.marc.migrations.domain.dto.MigrationOperationStatus;
@@ -18,6 +21,7 @@
1821
import org.folio.marc.migrations.services.MigrationOrchestrator;
1922
import org.folio.marc.migrations.services.operations.OperationErrorReportService;
2023
import org.folio.marc.migrations.services.operations.OperationsService;
24+
import org.folio.spring.data.OffsetRequest;
2125
import org.folio.spring.exception.NotFoundException;
2226
import org.springframework.stereotype.Service;
2327

@@ -82,6 +86,30 @@ public void createErrorReport(UUID operationId) {
8286
});
8387
}
8488

89+
public ErrorReportStatus getErrorReportStatus(UUID operationId) {
90+
log.debug("getErrorReportStatus::Trying to get error report status for operation ID '{}'", operationId);
91+
return errorReportsService.getErrorReport(operationId)
92+
.map(operationErrorReport ->
93+
new ErrorReportStatus(ErrorReportStatus.StatusEnum.fromValue(operationErrorReport.getStatus().name()))
94+
.operationId(operationId))
95+
.orElseThrow(() -> new NotFoundException(NOT_FOUND_MSG.formatted(operationId)));
96+
}
97+
98+
public ErrorReportCollection getErrorReportEntries(UUID operationId, Integer offset, Integer limit) {
99+
log.debug("getErrorReportEntries::Trying to get error report entries for operation ID '{}'", operationId);
100+
var offsetRequest = new OffsetRequest(offset, limit);
101+
var reports = errorReportsService.getErrorReportEntries(operationId, offsetRequest)
102+
.stream()
103+
.map(operationError -> new ErrorReport(operationError.getReportId(),
104+
operationError.getChunkId().toString(),
105+
operationError.getOperationStep().name(),
106+
operationError.getChunkStatus().name(),
107+
operationError.getRecordId(), operationError.getErrorMessage()))
108+
.toList();
109+
return new ErrorReportCollection()
110+
.errorReports(reports);
111+
}
112+
85113
private void validateMigrationCreate(NewMigrationOperation newMigrationOperation) {
86114
log.debug("validate::Validating new migration operation: {}", newMigrationOperation);
87115
var operationType = newMigrationOperation.getOperationType();

src/main/java/org/folio/marc/migrations/domain/repositories/OperationErrorReportRepository.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,4 @@ public interface OperationErrorReportRepository extends CrudRepository<Operation
1414
@Modifying
1515
@Query("update OperationErrorReport o set o.status = ?1 where o.id = ?2")
1616
int updateStatusById(ErrorReportStatus status, UUID id);
17-
18-
19-
}
17+
}

src/main/java/org/folio/marc/migrations/services/jdbc/OperationErrorJdbcService.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
package org.folio.marc.migrations.services.jdbc;
22

33
import java.util.Collection;
4+
import java.util.List;
5+
import java.util.UUID;
46
import lombok.extern.log4j.Log4j2;
57
import org.folio.marc.migrations.domain.entities.OperationError;
8+
import org.folio.marc.migrations.domain.entities.types.OperationStep;
9+
import org.folio.marc.migrations.domain.entities.types.StepStatus;
610
import org.folio.spring.FolioExecutionContext;
11+
import org.folio.spring.data.OffsetRequest;
712
import org.springframework.jdbc.core.JdbcTemplate;
813
import org.springframework.stereotype.Service;
914

@@ -37,4 +42,27 @@ public void saveOperationErrors(Collection<OperationError> operationErrors) {
3742
});
3843
}
3944

45+
public List<OperationError> getOperationErrors(UUID operationId, OffsetRequest offsetRequest) {
46+
var offset = offsetRequest.getOffset();
47+
var limit = offsetRequest.getPageSize();
48+
log.debug("getOperationErrors:: For operationId {}, offset {}, limit {}", operationId, offset, limit);
49+
var sql = """
50+
SELECT id, report_id, operation_chunk_id, operation_step, chunk_status, record_id, error_message
51+
FROM %s.operation_error
52+
WHERE report_id = ?
53+
ORDER BY id
54+
OFFSET ? LIMIT ?;
55+
""".formatted(getSchemaName());
56+
return jdbcTemplate.query(sql, (rs, rowNum) -> {
57+
var operationError = new OperationError();
58+
operationError.setId(rs.getObject("id", UUID.class));
59+
operationError.setReportId(rs.getObject("report_id", UUID.class));
60+
operationError.setChunkId(rs.getObject("operation_chunk_id", UUID.class));
61+
operationError.setOperationStep(Enum.valueOf(OperationStep.class, rs.getString("operation_step")));
62+
operationError.setChunkStatus(Enum.valueOf(StepStatus.class, rs.getString("chunk_status")));
63+
operationError.setRecordId(rs.getString("record_id"));
64+
operationError.setErrorMessage(rs.getString("error_message"));
65+
return operationError;
66+
}, operationId, offset, limit);
67+
}
4068
}

0 commit comments

Comments
 (0)