Skip to content
This repository was archived by the owner on May 5, 2021. It is now read-only.

Commit c3ee30c

Browse files
author
FredrikSchäferVitagroup
committed
SORMAS-Foundation#3488 use system events, migrate since-time management to sormas
1 parent 48f81f1 commit c3ee30c

4 files changed

Lines changed: 48 additions & 11 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/labmessage/ExternalLabResultsFacade.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22

33
import javax.ejb.Remote;
44
import javax.ejb.Stateless;
5+
import java.util.Date;
56
import java.util.List;
67

78
@Remote
89
public interface ExternalLabResultsFacade {
910

10-
List<LabMessageDto> getExternalLabMessages(boolean getOnlyNew);
11+
List<LabMessageDto> getExternalLabMessages(Date since);
1112

1213
String convertToHTML(LabMessageDto message);
1314
}

sormas-api/src/main/java/de/symeda/sormas/api/labmessage/LabMessageFacade.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package de.symeda.sormas.api.labmessage;
22

3+
import java.util.Date;
34
import java.util.List;
45

56
import javax.ejb.Remote;
@@ -17,5 +18,5 @@ public interface LabMessageFacade {
1718

1819
List<LabMessageIndexDto> getIndexList(LabMessageCriteria criteria, Integer first, Integer max, List<SortProperty> sortProperties);
1920

20-
void fetchExternalLabMessages(boolean onlyNew);
21+
void fetchExternalLabMessages();
2122
}

sormas-backend/src/main/java/de/symeda/sormas/backend/labmessage/LabMessageFacadeEjb.java

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package de.symeda.sormas.backend.labmessage;
22

3+
import java.time.LocalDateTime;
34
import java.util.ArrayList;
5+
import java.util.Date;
46
import java.util.List;
57

68
import javax.ejb.EJB;
@@ -23,10 +25,15 @@
2325
import de.symeda.sormas.api.labmessage.LabMessageDto;
2426
import de.symeda.sormas.api.labmessage.LabMessageFacade;
2527
import de.symeda.sormas.api.labmessage.LabMessageIndexDto;
28+
import de.symeda.sormas.api.systemevents.SystemEventDto;
29+
import de.symeda.sormas.api.systemevents.SystemEventStatus;
30+
import de.symeda.sormas.api.systemevents.SystemEventType;
31+
import de.symeda.sormas.api.utils.DateHelper;
2632
import de.symeda.sormas.api.utils.SortProperty;
2733
import de.symeda.sormas.backend.common.BaseAdoService;
2834
import de.symeda.sormas.backend.common.ConfigFacadeEjb;
2935
import de.symeda.sormas.backend.common.CriteriaBuilderHelper;
36+
import de.symeda.sormas.backend.systemevent.SystemEventFacadeEjb;
3037
import de.symeda.sormas.backend.util.DtoHelper;
3138
import de.symeda.sormas.backend.util.ModelConstants;
3239

@@ -40,6 +47,8 @@ public class LabMessageFacadeEjb implements LabMessageFacade {
4047
private LabMessageService labMessageService;
4148
@EJB
4249
private ConfigFacadeEjb.ConfigFacadeEjbLocal configFacade;
50+
@EJB
51+
private SystemEventFacadeEjb.SystemEventFacadeEjbLocal systemEventFacade;
4352

4453
private LabMessage fromDto(@NotNull LabMessageDto source, LabMessage target) {
4554

@@ -214,21 +223,45 @@ public List<LabMessageIndexDto> getIndexList(LabMessageCriteria criteria, Intege
214223
}
215224

216225
@Override
217-
public void fetchExternalLabMessages(boolean onlyNew) {
226+
public void fetchExternalLabMessages() {
227+
Date now = new Date(DateHelper.now());
228+
SystemEventDto systemEvent = SystemEventDto.build();
229+
systemEvent.setType(SystemEventType.FETCH_LAB_MESSAGES);
230+
systemEvent.setStatus(SystemEventStatus.STARTED);
231+
systemEvent.setStartDate(now);
232+
systemEventFacade.saveSystemEvent(systemEvent);
233+
234+
Date since = null;
235+
since = systemEventFacade.getLatestSuccessByType(SystemEventType.FETCH_LAB_MESSAGES);
236+
237+
if (since == null) {
238+
since = new Date(0);
239+
}
240+
218241
List<LabMessageDto> newMessages = null;
219242
try {
220243
InitialContext ic = new InitialContext();
221244
String jndiName = configFacade.getDemisJndiName();
222-
// Maybe catch that jndiName can be null
223245
ExternalLabResultsFacade labResultsFacade = (ExternalLabResultsFacade) ic.lookup(jndiName);
224-
newMessages = labResultsFacade.getExternalLabMessages(onlyNew);
225-
} catch (NamingException e) {
226-
// That should be handled properly
246+
newMessages = labResultsFacade.getExternalLabMessages(since);
247+
if (newMessages != null) {
248+
newMessages.stream().forEach(labMessageDto -> save(labMessageDto));
249+
}
250+
} catch (Exception e) {
251+
systemEvent.setStatus(SystemEventStatus.ERROR);
252+
systemEvent.setAdditionalInfo(e.getMessage());
253+
now.setTime(DateHelper.now());
254+
systemEvent.setEndDate(now);
255+
systemEvent.setChangeDate(now);
256+
systemEventFacade.saveSystemEvent(systemEvent);
227257
e.printStackTrace();
258+
return;
228259
}
229-
if (newMessages != null) {
230-
newMessages.stream().forEach(labMessageDto -> save(labMessageDto));
231-
}
260+
systemEvent.setStatus(SystemEventStatus.SUCCESS);
261+
now.setTime(DateHelper.now());
262+
systemEvent.setEndDate(now);
263+
systemEvent.setChangeDate(now);
264+
systemEventFacade.saveSystemEvent(systemEvent);
232265
}
233266

234267
@LocalBean

sormas-ui/src/main/java/de/symeda/sormas/ui/labmessage/LabMessagesView.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
import de.symeda.sormas.ui.utils.ButtonHelper;
1818
import de.symeda.sormas.ui.utils.CssStyles;
1919

20+
import java.util.Date;
21+
2022
public class LabMessagesView extends AbstractView {
2123

2224
public static final String VIEW_NAME = "labMessages";
@@ -51,7 +53,7 @@ public LabMessagesView() {
5153
addHeaderComponent(samplesViewSwitcher);
5254

5355
addHeaderComponent(ButtonHelper.createIconButton(Captions.labMessageFetch, VaadinIcons.REFRESH, e -> {
54-
FacadeProvider.getLabMessageFacade().fetchExternalLabMessages(true);
56+
FacadeProvider.getLabMessageFacade().fetchExternalLabMessages();
5557
listComponent.getGrid().reload();
5658
}, ValoTheme.BUTTON_PRIMARY));
5759
}

0 commit comments

Comments
 (0)