Skip to content

Commit 8fdc680

Browse files
committed
Fixed information dialogs discard functionality
1 parent 35cb191 commit 8fdc680

2 files changed

Lines changed: 55 additions & 42 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/externalmessage/processing/AbstractMessageProcessingFlowBase.java

Lines changed: 39 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -296,37 +296,50 @@ protected FlowThen<ExternalMessageProcessingResult> doCaseSelectedFlow(
296296
(sampleReportIndex, previousSampleResult) -> createOneSampleAndPathogenTests(caze, sampleReportIndex, false, previousSampleResult);
297297

298298
FlowThen<ExternalMessageProcessingResult> caseFlow = flow.then(previousResult -> {
299-
CompletionStage<Void> mismatchInformationStage = CompletableFuture.completedFuture(null);
299+
CompletionStage<Boolean> mismatchInformationStage = CompletableFuture.completedFuture(true);
300300

301301
// Check and inform about symptoms mismatch
302302
if (hasCaseSymptomsMismatch(caze, getExternalMessage())) {
303-
mismatchInformationStage = informCaseSymptomsMismatch(caze, getExternalMessage());
303+
mismatchInformationStage = confirmCaseSymptomsMismatch(caze, getExternalMessage());
304304
}
305305

306306
// Chain hospitalization mismatch check
307-
mismatchInformationStage = mismatchInformationStage.thenCompose(
308-
ignored -> hasCaseHospitalizationMismatch(caze, getExternalMessage())
309-
? informCaseHospitalizationMismatch(caze, getExternalMessage())
310-
: CompletableFuture.completedFuture(null));
307+
mismatchInformationStage = mismatchInformationStage.thenCompose(confirmed -> {
308+
if (Boolean.TRUE.equals(confirmed) && hasCaseHospitalizationMismatch(caze, getExternalMessage())) {
309+
return confirmCaseHospitalizationMismatch(caze, getExternalMessage());
310+
} else {
311+
return CompletableFuture.completedFuture(confirmed);
312+
}
313+
});
311314

312315
// Chain exposures mismatch check
313-
mismatchInformationStage = mismatchInformationStage.thenCompose(
314-
ignored -> hasCaseExposuresMismatch(caze, getExternalMessage())
315-
? informCaseExposuresMismatch(caze, getExternalMessage())
316-
: CompletableFuture.completedFuture(null));
316+
mismatchInformationStage = mismatchInformationStage.thenCompose(confirmed -> {
317+
if (Boolean.TRUE.equals(confirmed) && hasCaseExposuresMismatch(caze, getExternalMessage())) {
318+
return confirmCaseExposuresMismatch(caze, getExternalMessage());
319+
} else {
320+
return CompletableFuture.completedFuture(confirmed);
321+
}
322+
});
317323

318324
// Chain activities as case mismatch check
319-
mismatchInformationStage = mismatchInformationStage.thenCompose(
320-
ignored -> hasCaseActivitiesAsCaseMismatch(caze, getExternalMessage())
321-
? informCaseActivitiesAsCaseMismatch(caze, getExternalMessage())
322-
: CompletableFuture.completedFuture(null));
325+
mismatchInformationStage = mismatchInformationStage.thenCompose(confirmed -> {
326+
if (Boolean.TRUE.equals(confirmed) && hasCaseActivitiesAsCaseMismatch(caze, getExternalMessage())) {
327+
return confirmCaseActivitiesAsCaseMismatch(caze, getExternalMessage());
328+
} else {
329+
return CompletableFuture.completedFuture(confirmed);
330+
}
331+
});
323332

324-
return mismatchInformationStage.thenCompose(ignored -> {
333+
return mismatchInformationStage.thenCompose(confirmed -> {
325334
ExternalMessageProcessingResult withCase = previousResult.getData().withSelectedCase(caze);
326335

327-
logger.debug("[MESSAGE PROCESSING] Continue processing with case: {}", withCase);
328-
329-
return ProcessingResult.continueWith(withCase).asCompletedFuture();
336+
if (Boolean.TRUE.equals(confirmed)) {
337+
logger.debug("[MESSAGE PROCESSING] Continue processing with case: {}", withCase);
338+
return ProcessingResult.continueWith(withCase).asCompletedFuture();
339+
} else {
340+
logger.debug("[MESSAGE PROCESSING] Canceled processing with case: {} information mismatch aborted.", withCase);
341+
return ProcessingResult.withStatus(ProcessingResultStatus.CANCELED, previousResult.getData()).asCompletedFuture();
342+
}
330343
});
331344
});
332345
return caseFlow.then(
@@ -944,32 +957,32 @@ protected boolean hasCaseSymptomsMismatch(CaseDataDto caze, ExternalMessageDto e
944957
return false;
945958
}
946959

947-
protected CompletionStage<Void> informCaseSymptomsMismatch(CaseDataDto caze, ExternalMessageDto externalMessage) {
948-
return CompletableFuture.completedFuture(null);
960+
protected CompletionStage<Boolean> confirmCaseSymptomsMismatch(CaseDataDto caze, ExternalMessageDto externalMessage) {
961+
return CompletableFuture.completedFuture(true);
949962
}
950963

951964
protected boolean hasCaseHospitalizationMismatch(CaseDataDto caze, ExternalMessageDto externalMessage) {
952965
return false;
953966
}
954967

955-
protected CompletionStage<Void> informCaseHospitalizationMismatch(CaseDataDto caze, ExternalMessageDto externalMessage) {
956-
return CompletableFuture.completedFuture(null);
968+
protected CompletionStage<Boolean> confirmCaseHospitalizationMismatch(CaseDataDto caze, ExternalMessageDto externalMessage) {
969+
return CompletableFuture.completedFuture(true);
957970
}
958971

959972
protected boolean hasCaseExposuresMismatch(CaseDataDto caze, ExternalMessageDto externalMessage) {
960973
return false;
961974
}
962975

963-
protected CompletionStage<Void> informCaseExposuresMismatch(CaseDataDto caze, ExternalMessageDto externalMessage) {
964-
return CompletableFuture.completedFuture(null);
976+
protected CompletionStage<Boolean> confirmCaseExposuresMismatch(CaseDataDto caze, ExternalMessageDto externalMessage) {
977+
return CompletableFuture.completedFuture(true);
965978
}
966979

967980
protected boolean hasCaseActivitiesAsCaseMismatch(CaseDataDto caze, ExternalMessageDto externalMessage) {
968981
return false;
969982
}
970983

971-
protected CompletionStage<Void> informCaseActivitiesAsCaseMismatch(CaseDataDto caze, ExternalMessageDto externalMessage) {
972-
return CompletableFuture.completedFuture(null);
984+
protected CompletionStage<Boolean> confirmCaseActivitiesAsCaseMismatch(CaseDataDto caze, ExternalMessageDto externalMessage) {
985+
return CompletableFuture.completedFuture(true);
973986
}
974987

975988
protected abstract void handleCreateSampleAndPathogenTests(

sormas-ui/src/main/java/de/symeda/sormas/ui/externalmessage/doctordeclaration/DoctorDeclarationMessageProcessingFlow.java

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -207,10 +207,10 @@ protected CompletionStage<Boolean> handleRelatedForwardedMessages() {
207207
}
208208

209209
@Override
210-
protected CompletionStage<Void> informCaseSymptomsMismatch(CaseDataDto caze, ExternalMessageDto externalMessage) {
210+
protected CompletionStage<Boolean> confirmCaseSymptomsMismatch(CaseDataDto caze, ExternalMessageDto externalMessage) {
211211
LOGGER.debug("Informing about symptoms mismatch for case: {}, externalMessage: {}", caze, externalMessage);
212212

213-
CompletableFuture<Void> ret = new CompletableFuture<>();
213+
CompletableFuture<Boolean> ret = new CompletableFuture<>();
214214

215215
VerticalLayout content = new VerticalLayout();
216216
content.setSpacing(true);
@@ -222,8 +222,8 @@ protected CompletionStage<Void> informCaseSymptomsMismatch(CaseDataDto caze, Ext
222222

223223
CommitDiscardWrapperComponent<VerticalLayout> commitDiscardWrapperComponent = new CommitDiscardWrapperComponent<>(content);
224224
commitDiscardWrapperComponent.getCommitButton().setCaption(I18nProperties.getCaption(Captions.actionContinue));
225-
commitDiscardWrapperComponent.addCommitListener(() -> ret.complete(null));
226-
commitDiscardWrapperComponent.addDiscardListener(() -> ret.complete(null));
225+
commitDiscardWrapperComponent.addCommitListener(() -> ret.complete(true));
226+
commitDiscardWrapperComponent.addDiscardListener(() -> ret.complete(false));
227227

228228
VaadinUiUtil.showModalPopupWindow(commitDiscardWrapperComponent, I18nProperties.getCaption(Captions.info), true);
229229

@@ -801,10 +801,10 @@ protected CompletionStage<Boolean> confirmPickExistingEventParticipant() {
801801
}
802802

803803
@Override
804-
protected CompletionStage<Void> informCaseHospitalizationMismatch(CaseDataDto caze, ExternalMessageDto externalMessage) {
804+
protected CompletionStage<Boolean> confirmCaseHospitalizationMismatch(CaseDataDto caze, ExternalMessageDto externalMessage) {
805805
LOGGER.debug("Informing about hospitalization mismatch for case: {}, externalMessage: {}", caze, externalMessage);
806806

807-
CompletableFuture<Void> ret = new CompletableFuture<>();
807+
CompletableFuture<Boolean> ret = new CompletableFuture<>();
808808

809809
VerticalLayout content = new VerticalLayout();
810810
content.setSpacing(true);
@@ -816,19 +816,19 @@ protected CompletionStage<Void> informCaseHospitalizationMismatch(CaseDataDto ca
816816

817817
CommitDiscardWrapperComponent<VerticalLayout> commitDiscardWrapperComponent = new CommitDiscardWrapperComponent<>(content);
818818
commitDiscardWrapperComponent.getCommitButton().setCaption(I18nProperties.getCaption(Captions.actionContinue));
819-
commitDiscardWrapperComponent.addCommitListener(() -> ret.complete(null));
820-
commitDiscardWrapperComponent.addDiscardListener(() -> ret.complete(null));
819+
commitDiscardWrapperComponent.addCommitListener(() -> ret.complete(true));
820+
commitDiscardWrapperComponent.addDiscardListener(() -> ret.complete(false));
821821

822822
VaadinUiUtil.showModalPopupWindow(commitDiscardWrapperComponent, I18nProperties.getCaption(Captions.info), true);
823823

824824
return ret;
825825
}
826826

827827
@Override
828-
protected CompletionStage<Void> informCaseExposuresMismatch(CaseDataDto caze, ExternalMessageDto externalMessage) {
828+
protected CompletionStage<Boolean> confirmCaseExposuresMismatch(CaseDataDto caze, ExternalMessageDto externalMessage) {
829829
LOGGER.debug("Informing about exposures mismatch for case: {}, externalMessage: {}", caze, externalMessage);
830830

831-
CompletableFuture<Void> ret = new CompletableFuture<>();
831+
CompletableFuture<Boolean> ret = new CompletableFuture<>();
832832

833833
VerticalLayout content = new VerticalLayout();
834834
content.setSpacing(true);
@@ -840,19 +840,19 @@ protected CompletionStage<Void> informCaseExposuresMismatch(CaseDataDto caze, Ex
840840

841841
CommitDiscardWrapperComponent<VerticalLayout> commitDiscardWrapperComponent = new CommitDiscardWrapperComponent<>(content);
842842
commitDiscardWrapperComponent.getCommitButton().setCaption(I18nProperties.getCaption(Captions.actionContinue));
843-
commitDiscardWrapperComponent.addCommitListener(() -> ret.complete(null));
844-
commitDiscardWrapperComponent.addDiscardListener(() -> ret.complete(null));
843+
commitDiscardWrapperComponent.addCommitListener(() -> ret.complete(true));
844+
commitDiscardWrapperComponent.addDiscardListener(() -> ret.complete(false));
845845

846846
VaadinUiUtil.showModalPopupWindow(commitDiscardWrapperComponent, I18nProperties.getCaption(Captions.info), true);
847847

848848
return ret;
849849
}
850850

851851
@Override
852-
protected CompletionStage<Void> informCaseActivitiesAsCaseMismatch(CaseDataDto caze, ExternalMessageDto externalMessage) {
852+
protected CompletionStage<Boolean> confirmCaseActivitiesAsCaseMismatch(CaseDataDto caze, ExternalMessageDto externalMessage) {
853853
LOGGER.debug("Informing about activities as case mismatch for case: {}, externalMessage: {}", caze, externalMessage);
854854

855-
CompletableFuture<Void> ret = new CompletableFuture<>();
855+
CompletableFuture<Boolean> ret = new CompletableFuture<>();
856856

857857
VerticalLayout content = new VerticalLayout();
858858
content.setSpacing(true);
@@ -864,8 +864,8 @@ protected CompletionStage<Void> informCaseActivitiesAsCaseMismatch(CaseDataDto c
864864

865865
CommitDiscardWrapperComponent<VerticalLayout> commitDiscardWrapperComponent = new CommitDiscardWrapperComponent<>(content);
866866
commitDiscardWrapperComponent.getCommitButton().setCaption(I18nProperties.getCaption(Captions.actionContinue));
867-
commitDiscardWrapperComponent.addCommitListener(() -> ret.complete(null));
868-
commitDiscardWrapperComponent.addDiscardListener(() -> ret.complete(null));
867+
commitDiscardWrapperComponent.addCommitListener(() -> ret.complete(true));
868+
commitDiscardWrapperComponent.addDiscardListener(() -> ret.complete(false));
869869

870870
VaadinUiUtil.showModalPopupWindow(commitDiscardWrapperComponent, I18nProperties.getCaption(Captions.info), true);
871871

0 commit comments

Comments
 (0)