Skip to content

Commit 018a151

Browse files
Change signature of migrate method to return mutated instance of case data
1 parent c106e93 commit 018a151

File tree

5 files changed

+26
-18
lines changed

5 files changed

+26
-18
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ Package offers base domain classes for standardised case data structures such as
2424
Assuming that you have Java project scaffolding please include framework artifact as a project dependency by adding following line:
2525

2626
```groovy
27-
compile group: 'uk.gov.hmcts.reform.ccd-case-migration', name: 'processor', version: '1.1.0'
27+
compile group: 'uk.gov.hmcts.reform.ccd-case-migration', name: 'processor', version: '2.0.0'
2828
```
2929

3030
If you want to take advantages of standard domain classes please also include domain artifact as a project dependency by adding following line:
3131

3232
```groovy
33-
compile group: 'uk.gov.hmcts.reform.ccd-case-migration', name: 'domain', version: '1.1.0'
33+
compile group: 'uk.gov.hmcts.reform.ccd-case-migration', name: 'domain', version: '2.0.0'
3434
```
3535

3636
Having done above please create class that implements `uk.gov.hmcts.reform.migration.service.DataMigrationService` interface in similar way as shown below:

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ subprojects {
1111
apply plugin: 'com.jfrog.bintray'
1212

1313
group = 'uk.gov.hmcts.reform.ccd-case-migration'
14-
version = '1.1.0'
14+
version = '2.0.0'
1515

1616
sourceCompatibility = '11'
1717
targetCompatibility = '11'

modules/processor/src/main/java/uk/gov/hmcts/reform/migration/CaseMigrationProcessor.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import java.util.ArrayList;
1212
import java.util.List;
13+
import java.util.Map;
1314

1415
@Slf4j
1516
@Component
@@ -21,7 +22,7 @@ public class CaseMigrationProcessor {
2122
@Autowired
2223
private CoreCaseDataService coreCaseDataService;
2324
@Autowired
24-
private DataMigrationService dataMigrationService;
25+
private DataMigrationService<?> dataMigrationService;
2526
@Getter
2627
private List<Long> migratedCases = new ArrayList<>();
2728
@Getter
@@ -36,7 +37,7 @@ public void processSingleCase(String userToken, String caseId) {
3637
return;
3738
}
3839
if (dataMigrationService.accepts().test(caseDetails)) {
39-
updateCase(userToken, caseDetails);
40+
updateCase(userToken, caseDetails.getId(), caseDetails.getData());
4041
} else {
4142
log.info("Case {} already migrated", caseDetails.getId());
4243
}
@@ -45,21 +46,20 @@ public void processSingleCase(String userToken, String caseId) {
4546
public void processAllCases(String userToken, String userId) {
4647
coreCaseDataService.fetchAll(userToken, userId).stream()
4748
.filter(dataMigrationService.accepts())
48-
.forEach(caseDetails -> updateCase(userToken, caseDetails));
49+
.forEach(caseDetails -> updateCase(userToken, caseDetails.getId(), caseDetails.getData()));
4950
}
5051

51-
private void updateCase(String authorisation, CaseDetails caseDetails) {
52-
log.info("Updating case {}", caseDetails.getId());
52+
private void updateCase(String authorisation, Long id, Map<String, Object> data) {
53+
log.info("Updating case {}", id);
5354
try {
54-
log.debug("Case data: {}", caseDetails.getData());
55-
dataMigrationService.migrate(caseDetails);
56-
coreCaseDataService.update(authorisation, caseDetails.getId().toString(),
57-
EVENT_ID, EVENT_SUMMARY, EVENT_DESCRIPTION, caseDetails.getData());
58-
log.info("Case {} successfully updated", caseDetails.getId());
59-
migratedCases.add(caseDetails.getId());
55+
log.debug("Case data: {}", data);
56+
coreCaseDataService.update(authorisation, id.toString(),
57+
EVENT_ID, EVENT_SUMMARY, EVENT_DESCRIPTION, dataMigrationService.migrate(data));
58+
log.info("Case {} successfully updated", id);
59+
migratedCases.add(id);
6060
} catch (Exception e) {
61-
log.error("Case {} update failed due to: {}", caseDetails.getId(), e.getMessage());
62-
failedCases.add(caseDetails.getId());
61+
log.error("Case {} update failed due to: {}", id, e.getMessage());
62+
failedCases.add(id);
6363
}
6464
}
6565
}

modules/processor/src/main/java/uk/gov/hmcts/reform/migration/service/DataMigrationService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22

33
import uk.gov.hmcts.reform.ccd.client.model.CaseDetails;
44

5+
import java.util.Map;
56
import java.util.function.Predicate;
67

7-
public interface DataMigrationService {
8+
public interface DataMigrationService<T> {
89
Predicate<CaseDetails> accepts();
910

10-
void migrate(CaseDetails caseDetails);
11+
T migrate(Map<String, Object> data);
1112
}

modules/processor/src/test/java/uk/gov/hmcts/reform/migration/CaseMigrationProcessorTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public void shouldProcessASingleCaseAndMigrationIsSuccessful() {
6666
public void shouldProcessASingleCaseAndMigrationIsFailed() {
6767
when(coreCaseDataService.fetchOne(USER_TOKEN, CASE_ID)).thenReturn(caseDetails1);
6868
when(dataMigrationService.accepts()).thenReturn(candidate -> true);
69+
when(dataMigrationService.migrate(caseDetails1.getData())).thenReturn(caseDetails1.getData());
6970
when(coreCaseDataService.update(USER_TOKEN, caseDetails1.getId().toString(), EVENT_ID, EVENT_SUMMARY, EVENT_DESCRIPTION, caseDetails1.getData())).thenThrow(new RuntimeException("Internal server error"));
7071
caseMigrationProcessor.processSingleCase(USER_TOKEN, CASE_ID);
7172
verify(coreCaseDataService, times(1)).fetchOne(USER_TOKEN, CASE_ID);
@@ -80,6 +81,9 @@ public void shouldProcessAllTheCandidateCases_whenOneCaseFailed() {
8081
mockDataUpdate(caseDetails1);
8182
mockDataUpdate(caseDetails2);
8283
when(dataMigrationService.accepts()).thenReturn(candidate -> true);
84+
when(dataMigrationService.migrate(caseDetails1.getData())).thenReturn(caseDetails1.getData());
85+
when(dataMigrationService.migrate(caseDetails2.getData())).thenReturn(caseDetails2.getData());
86+
when(dataMigrationService.migrate(caseDetails3.getData())).thenReturn(caseDetails3.getData());
8387
when(coreCaseDataService.update(USER_TOKEN, caseDetails3.getId().toString(), EVENT_ID, EVENT_SUMMARY, EVENT_DESCRIPTION, caseDetails3.getData())).thenThrow(new RuntimeException("Internal server error"));
8488
caseMigrationProcessor.processAllCases(USER_TOKEN, USER_ID);
8589
assertThat(caseMigrationProcessor.getFailedCases(), contains(1113L));
@@ -91,6 +95,9 @@ public void shouldProcessAllTheCandidateCases_whenTwoCasesFailed() {
9195
mockDataFetch(caseDetails1, caseDetails2, caseDetails3);
9296
mockDataUpdate(caseDetails1);
9397
when(dataMigrationService.accepts()).thenReturn(candidate -> true);
98+
when(dataMigrationService.migrate(caseDetails1.getData())).thenReturn(caseDetails1.getData());
99+
when(dataMigrationService.migrate(caseDetails2.getData())).thenReturn(caseDetails2.getData());
100+
when(dataMigrationService.migrate(caseDetails3.getData())).thenReturn(caseDetails3.getData());
94101
when(coreCaseDataService.update(USER_TOKEN, caseDetails2.getId().toString(), EVENT_ID, EVENT_SUMMARY, EVENT_DESCRIPTION, caseDetails2.getData())).thenThrow(new RuntimeException("Internal server error"));
95102
when(coreCaseDataService.update(USER_TOKEN, caseDetails3.getId().toString(), EVENT_ID, EVENT_SUMMARY, EVENT_DESCRIPTION, caseDetails3.getData())).thenThrow(new RuntimeException("Internal server error"));
96103
caseMigrationProcessor.processAllCases(USER_TOKEN, USER_ID);

0 commit comments

Comments
 (0)