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

Commit ad0ca8f

Browse files
Merge branch 'feature-4082-send-events-to-survnet-button' into hotfix-1.54.1
2 parents 7daef7f + ae5da07 commit ad0ca8f

12 files changed

Lines changed: 131 additions & 7 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/event/EventParticipantFacade.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,4 +75,6 @@ List<EventParticipantIndexDto> getIndexList(
7575
List<EventParticipantExportDto> getExportList(EventParticipantCriteria eventParticipantCriteria, int first, int max, Language userLanguage);
7676

7777
List<SimilarEventParticipantDto> getSimilarEventParticipants(EventParticipantSimilarityCriteria eventParticipantSimilarityCriteria);
78+
79+
List<EventParticipantDto> getByEventUuids(List<String> eventUuids);
7880
}

sormas-api/src/main/java/de/symeda/sormas/api/survnet/SurvnetGatewayFacade.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,6 @@ public interface SurvnetGatewayFacade {
3434
* @return http response code of the gateway
3535
*/
3636
int sendCases(List<String> caseUuids);
37+
38+
int sendEvents(List<String> eventUuids);
3739
}

sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantFacadeEjb.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -763,4 +763,10 @@ public List<EventParticipantDto> getAllActiveEventParticipantsByEvent(String eve
763763
return eventParticipantService.getAllActiveByEvent(event).stream().map(e -> toDto(e)).collect(Collectors.toList());
764764
}
765765

766+
@Override
767+
public List<EventParticipantDto> getByEventUuids(List<String> eventUuids) {
768+
Pseudonymizer pseudonymizer = Pseudonymizer.getDefault(userService::hasRight);
769+
return eventParticipantService.getByEventUuids(eventUuids).stream().map(e -> convertToDto(e, pseudonymizer)).collect(Collectors.toList());
770+
}
771+
766772
}

sormas-backend/src/main/java/de/symeda/sormas/backend/event/EventParticipantService.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import de.symeda.sormas.api.utils.DataHelper;
3838
import de.symeda.sormas.backend.caze.Case;
3939
import de.symeda.sormas.backend.common.AbstractCoreAdoService;
40+
import de.symeda.sormas.backend.common.AbstractDomainObject;
4041
import de.symeda.sormas.backend.common.CriteriaBuilderHelper;
4142
import de.symeda.sormas.backend.person.Person;
4243
import de.symeda.sormas.backend.sample.SampleService;
@@ -311,4 +312,17 @@ public Optional<EventParticipant> getFirst(EventParticipantCriteria criteria) {
311312
}
312313
}
313314

315+
public List<EventParticipant> getByEventUuids(List<String> eventUuids) {
316+
317+
CriteriaBuilder cb = em.getCriteriaBuilder();
318+
CriteriaQuery<EventParticipant> cq = cb.createQuery(EventParticipant.class);
319+
Root<EventParticipant> epRoot = cq.from(EventParticipant.class);
320+
Join<EventParticipant, Event> eventJoin = epRoot.join(EventParticipant.EVENT, JoinType.LEFT);
321+
322+
Predicate filter = cb.and(createDefaultFilter(cb, epRoot), eventJoin.get(AbstractDomainObject.UUID).in(eventUuids));
323+
324+
cq.where(filter);
325+
return em.createQuery(cq).getResultList();
326+
}
327+
314328
}

sormas-backend/src/main/java/de/symeda/sormas/backend/survnet/SurvnetGatewayFacadeEjb.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,18 @@ public int sendCases(List<String> caseUuids) {
4545
ExportParameters params = new ExportParameters();
4646
params.setCaseUuids(caseUuids);
4747

48+
return sendRequest(params);
49+
}
50+
51+
@Override
52+
public int sendEvents(List<String> eventUuids) {
53+
ExportParameters params = new ExportParameters();
54+
params.setEventUuids(eventUuids);
55+
56+
return sendRequest(params);
57+
}
58+
59+
private int sendRequest(ExportParameters params) {
4860
String serviceUrl = configFacade.getSurvnetGatewayUrl().trim();
4961

5062
Response response = ClientBuilder.newBuilder()
@@ -60,6 +72,7 @@ public int sendCases(List<String> caseUuids) {
6072
public static class ExportParameters {
6173

6274
private List<String> caseUuids;
75+
private List<String> eventUuids;
6376

6477
public List<String> getCaseUuids() {
6578
return caseUuids;
@@ -68,5 +81,13 @@ public List<String> getCaseUuids() {
6881
public void setCaseUuids(List<String> caseUuids) {
6982
this.caseUuids = caseUuids;
7083
}
84+
85+
public List<String> getEventUuids() {
86+
return eventUuids;
87+
}
88+
89+
public void setEventUuids(List<String> eventUuids) {
90+
this.eventUuids = eventUuids;
91+
}
7192
}
7293
}

sormas-backend/src/test/java/de/symeda/sormas/backend/event/EventParticipantFacadeEjbTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@
2121
package de.symeda.sormas.backend.event;
2222

2323
import static org.hamcrest.MatcherAssert.assertThat;
24+
import static org.hamcrest.Matchers.hasSize;
2425

26+
import java.util.Arrays;
27+
import java.util.Collections;
2528
import java.util.Date;
2629
import java.util.List;
2730

@@ -33,6 +36,7 @@
3336
import de.symeda.sormas.api.event.EventDto;
3437
import de.symeda.sormas.api.event.EventInvestigationStatus;
3538
import de.symeda.sormas.api.event.EventParticipantCriteria;
39+
import de.symeda.sormas.api.event.EventParticipantDto;
3640
import de.symeda.sormas.api.event.EventParticipantExportDto;
3741
import de.symeda.sormas.api.event.EventStatus;
3842
import de.symeda.sormas.api.event.TypeOfPlace;
@@ -42,6 +46,7 @@
4246
import de.symeda.sormas.api.utils.DateHelper;
4347
import de.symeda.sormas.backend.AbstractBeanTest;
4448
import de.symeda.sormas.backend.TestDataCreator;
49+
import de.symeda.sormas.backend.TestDataCreator.RDCFEntities;
4550

4651
public class EventParticipantFacadeEjbTest extends AbstractBeanTest {
4752

@@ -80,4 +85,25 @@ public void testGetExportList() {
8085
// List should have two entries
8186
assertThat(results, Matchers.hasSize(2));
8287
}
88+
89+
@Test
90+
public void testGetByEventUuids() {
91+
92+
RDCFEntities rdcf = creator.createRDCFEntities();
93+
UserDto user = creator.createUser(rdcf, UserRole.SURVEILLANCE_SUPERVISOR);
94+
95+
EventDto event1 = creator.createEvent(user.toReference());
96+
EventDto event2 = creator.createEvent(user.toReference());
97+
98+
PersonDto person1 = creator.createPerson();
99+
PersonDto person2 = creator.createPerson();
100+
creator.createEventParticipant(event1.toReference(), person1, user.toReference());
101+
creator.createEventParticipant(event1.toReference(), person2, user.toReference());
102+
creator.createEventParticipant(event2.toReference(), person1, user.toReference());
103+
104+
List<EventParticipantDto> eps = getEventParticipantFacade().getByEventUuids(Collections.singletonList(event1.getUuid()));
105+
assertThat(eps, hasSize(2));
106+
eps = getEventParticipantFacade().getByEventUuids(Arrays.asList(event1.getUuid(), event2.getUuid()));
107+
assertThat(eps, hasSize(3));
108+
}
83109
}

sormas-rest/src/main/java/de/symeda/sormas/rest/EventParticipantResource.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,13 @@ public List<EventParticipantDto> getByUuids(List<String> uuids) {
6363
return result;
6464
}
6565

66+
@POST
67+
@Path("/query/events")
68+
public List<EventParticipantDto> getByEventUuids(List<String> uuids) {
69+
List<EventParticipantDto> result = FacadeProvider.getEventParticipantFacade().getByEventUuids(uuids);
70+
return result;
71+
}
72+
6673
@POST
6774
@Path("/push")
6875
public List<PushResult> postEventParticipants(List<EventParticipantDto> dtos) {

sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseController.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@
105105
import de.symeda.sormas.ui.hospitalization.HospitalizationForm;
106106
import de.symeda.sormas.ui.hospitalization.HospitalizationView;
107107
import de.symeda.sormas.ui.survnet.SurvnetGateway;
108+
import de.symeda.sormas.ui.survnet.SurvnetGatewayType;
108109
import de.symeda.sormas.ui.symptoms.SymptomsForm;
109110
import de.symeda.sormas.ui.therapy.TherapyView;
110111
import de.symeda.sormas.ui.utils.AbstractView;
@@ -1406,7 +1407,7 @@ public void sendCasesToSurvnet(Collection<? extends CaseIndexDto> selectedCases,
14061407
return;
14071408
}
14081409

1409-
SurvnetGateway.sendToSurvnet(selectedUuids);
1410+
SurvnetGateway.sendToSurvnet(SurvnetGatewayType.CASES, selectedUuids);
14101411

14111412
Notification successNotification =
14121413
new Notification(I18nProperties.getString(Strings.notificationCasesSentToSurvNet), "", Type.HUMANIZED_MESSAGE);

sormas-ui/src/main/java/de/symeda/sormas/ui/caze/CaseDataView.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import de.symeda.sormas.ui.samples.sampleLink.SampleListComponent;
4141
import de.symeda.sormas.ui.sormastosormas.SormasToSormasListComponent;
4242
import de.symeda.sormas.ui.survnet.SurvnetGateway;
43+
import de.symeda.sormas.ui.survnet.SurvnetGatewayType;
4344
import de.symeda.sormas.ui.task.TaskListComponent;
4445
import de.symeda.sormas.ui.utils.CommitDiscardWrapperComponent;
4546
import de.symeda.sormas.ui.utils.CssStyles;
@@ -174,7 +175,7 @@ protected void initView(String params) {
174175
layout.addComponent(sormasToSormasLocLayout, SORMAS_TO_SORMAS_LOC);
175176
}
176177

177-
SurvnetGateway.addComponentToLayout(layout, () -> Arrays.asList(caze.getUuid()));
178+
SurvnetGateway.addComponentToLayout(layout, SurvnetGatewayType.CASES, () -> Arrays.asList(caze.getUuid()));
178179

179180
DocGenerationComponent.addComponentToLayout(layout, getCaseRef(), caze.getQuarantine());
180181

sormas-ui/src/main/java/de/symeda/sormas/ui/events/EventDataView.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
*/
1515
package de.symeda.sormas.ui.events;
1616

17+
import java.util.Collections;
18+
1719
import com.vaadin.ui.Button;
1820
import com.vaadin.ui.CustomLayout;
1921
import com.vaadin.ui.HorizontalLayout;
@@ -36,6 +38,8 @@
3638
import de.symeda.sormas.ui.document.DocumentListComponent;
3739
import de.symeda.sormas.ui.events.eventLink.EventListComponent;
3840
import de.symeda.sormas.ui.events.eventLink.SuperordinateEventComponent;
41+
import de.symeda.sormas.ui.survnet.SurvnetGateway;
42+
import de.symeda.sormas.ui.survnet.SurvnetGatewayType;
3943
import de.symeda.sormas.ui.task.TaskListComponent;
4044
import de.symeda.sormas.ui.utils.ButtonHelper;
4145
import de.symeda.sormas.ui.utils.CommitDiscardWrapperComponent;
@@ -77,6 +81,7 @@ protected void initView(String params) {
7781
LayoutUtil.fluidColumnLoc(4, 0, 12, 0, DOCUMENTS_LOC),
7882
LayoutUtil.fluidColumnLoc(4, 0, 6, 0, SUPERORDINATE_EVENT_LOC),
7983
LayoutUtil.fluidColumnLoc(4, 0, 6, 0, SUBORDINATE_EVENTS_LOC),
84+
LayoutUtil.fluidColumnLoc(4, 0, 6, 0, SurvnetGateway.SURVNET_GATEWAY_LOC),
8085
LayoutUtil.fluidColumnLoc(4, 0, 6, 0, SHORTCUT_LINKS_LOC));
8186

8287
DetailSubComponentWrapper container = new DetailSubComponentWrapper(() -> editComponent);
@@ -144,6 +149,8 @@ protected void initView(String params) {
144149
shortcutLinksLayout.addComponent(seeEventContactsBtn);
145150
}
146151

152+
SurvnetGateway.addComponentToLayout(layout, SurvnetGatewayType.EVENTS, () -> Collections.singletonList(event.getUuid()));
153+
147154
layout.addComponent(shortcutLinksLayout, SHORTCUT_LINKS_LOC);
148155

149156
setEventEditPermission(container);

0 commit comments

Comments
 (0)