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

Commit 831a929

Browse files
Fixed SORMAS-Foundation#3624 by replacing the redundant method to collect source case names
1 parent c82da73 commit 831a929

5 files changed

Lines changed: 5 additions & 70 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/contact/ContactReferenceDto.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,5 +151,9 @@ public String getFirstName() {
151151
public String getLastName() {
152152
return lastName;
153153
}
154+
155+
public String toString() {
156+
return firstName + " " + lastName;
157+
}
154158
}
155159
}

sormas-api/src/main/java/de/symeda/sormas/api/epidata/EpiDataFacade.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,9 @@
1717
*******************************************************************************/
1818
package de.symeda.sormas.api.epidata;
1919

20-
import java.util.List;
21-
import java.util.Map;
22-
2320
import javax.ejb.Remote;
2421

2522
@Remote
2623
public interface EpiDataFacade {
2724

28-
Map<String, String> getExposureSourceCaseNames(List<String> exposureUuids);
2925
}

sormas-backend/src/main/java/de/symeda/sormas/backend/epidata/EpiDataFacadeEjb.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import java.util.ArrayList;
2222
import java.util.Date;
2323
import java.util.List;
24-
import java.util.Map;
2524

2625
import javax.ejb.EJB;
2726
import javax.ejb.LocalBean;
@@ -55,11 +54,6 @@ public class EpiDataFacadeEjb implements EpiDataFacade {
5554
@EJB
5655
private UserService userService;
5756

58-
@Override
59-
public Map<String, String> getExposureSourceCaseNames(List<String> exposureUuids) {
60-
return service.getExposureSourceCaseNames(exposureUuids);
61-
}
62-
6357
public EpiData fromDto(EpiDataDto source) {
6458

6559
if (source == null) {

sormas-backend/src/main/java/de/symeda/sormas/backend/epidata/EpiDataService.java

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,6 @@
1818
package de.symeda.sormas.backend.epidata;
1919

2020
import java.sql.Timestamp;
21-
import java.util.Collections;
22-
import java.util.HashMap;
23-
import java.util.List;
24-
import java.util.Map;
2521

2622
import javax.ejb.LocalBean;
2723
import javax.ejb.Stateless;
@@ -31,19 +27,11 @@
3127
import javax.persistence.criteria.Join;
3228
import javax.persistence.criteria.JoinType;
3329
import javax.persistence.criteria.Predicate;
34-
import javax.persistence.criteria.Root;
35-
36-
import org.apache.commons.collections.CollectionUtils;
3730

3831
import de.symeda.sormas.api.utils.DataHelper;
39-
import de.symeda.sormas.backend.caze.Case;
4032
import de.symeda.sormas.backend.common.AbstractAdoService;
4133
import de.symeda.sormas.backend.common.AbstractDomainObject;
42-
import de.symeda.sormas.backend.contact.Contact;
4334
import de.symeda.sormas.backend.exposure.Exposure;
44-
import de.symeda.sormas.backend.person.Person;
45-
import de.symeda.sormas.backend.util.IterableHelper;
46-
import de.symeda.sormas.backend.util.ModelConstants;
4735

4836
@Stateless
4937
@LocalBean
@@ -60,34 +48,6 @@ public EpiData createEpiData() {
6048
return epiData;
6149
}
6250

63-
public Map<String, String> getExposureSourceCaseNames(List<String> exposureUuids) {
64-
if (CollectionUtils.isEmpty(exposureUuids)) {
65-
return Collections.emptyMap();
66-
}
67-
68-
Map<String, String> sourceCaseNameMap = new HashMap<>();
69-
70-
IterableHelper.executeBatched(exposureUuids, ModelConstants.PARAMETER_LIMIT, batchedExposureUuids -> {
71-
CriteriaBuilder cb = em.getCriteriaBuilder();
72-
CriteriaQuery<Object[]> cq = cb.createQuery(Object[].class);
73-
Root<Exposure> root = cq.from(Exposure.class);
74-
Join<Exposure, Contact> contactJoin = root.join(Exposure.CONTACT_TO_CASE);
75-
Join<Contact, Case> caseJoin = contactJoin.join(Contact.CAZE);
76-
Join<Case, Person> casePersonJoin = caseJoin.join(Case.PERSON);
77-
78-
cq.where(root.get(AbstractDomainObject.UUID).in(batchedExposureUuids));
79-
cq.multiselect(root.get(AbstractDomainObject.UUID), casePersonJoin.get(Person.FIRST_NAME), casePersonJoin.get(Person.LAST_NAME));
80-
81-
List<Object[]> resultList = em.createQuery(cq).getResultList();
82-
83-
for (Object[] result : resultList) {
84-
sourceCaseNameMap.put((String) result[0], DataHelper.toStringNullable(result[1]) + " " + DataHelper.toStringNullable(result[2]));
85-
}
86-
});
87-
88-
return sourceCaseNameMap;
89-
}
90-
9151
@SuppressWarnings("rawtypes")
9252
@Override
9353
public Predicate createUserFilter(CriteriaBuilder cb, CriteriaQuery cq, From<?, EpiData> from) {

sormas-ui/src/main/java/de/symeda/sormas/ui/exposure/ExposuresField.java

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,7 @@
1515

1616
package de.symeda.sormas.ui.exposure;
1717

18-
import java.util.Collection;
19-
import java.util.HashMap;
2018
import java.util.List;
21-
import java.util.Map;
2219
import java.util.function.Consumer;
2320
import java.util.function.Supplier;
2421
import java.util.stream.Collectors;
@@ -28,13 +25,11 @@
2825

2926
import com.vaadin.icons.VaadinIcons;
3027
import com.vaadin.ui.Window;
31-
import com.vaadin.v7.data.Property;
3228
import com.vaadin.v7.shared.ui.label.ContentMode;
3329
import com.vaadin.v7.ui.Label;
3430
import com.vaadin.v7.ui.Table;
3531

3632
import de.symeda.sormas.api.EntityDto;
37-
import de.symeda.sormas.api.FacadeProvider;
3833
import de.symeda.sormas.api.caze.CaseDataDto;
3934
import de.symeda.sormas.api.contact.ContactReferenceDto;
4035
import de.symeda.sormas.api.event.TypeOfPlace;
@@ -67,7 +62,6 @@ public class ExposuresField extends AbstractTableField<ExposureDto> {
6762
private static final String COLUMN_SOURCE_CASE_NAME = Captions.exposureSourceCaseName;
6863

6964
private final FieldVisibilityCheckers fieldVisibilityCheckers;
70-
private Map<String, String> sourceCaseNames = new HashMap<>();
7165
private Supplier<List<ContactReferenceDto>> getSourceContactsCallback;
7266
private Class<? extends EntityDto> epiDataParentClass;
7367
private boolean isPseudonymized;
@@ -161,7 +155,7 @@ private void addGeneratedColumns(Table table) {
161155
table.addGeneratedColumn(COLUMN_SOURCE_CASE_NAME, (Table.ColumnGenerator) (source, itemId, columnId) -> {
162156
ExposureDto exposure = (ExposureDto) itemId;
163157
return !isPseudonymized
164-
? DataHelper.toStringNullable(sourceCaseNames.get(exposure.getUuid()))
158+
? DataHelper.toStringNullable(exposure.getContactToCase().getCaseName())
165159
: I18nProperties.getCaption(Captions.inaccessibleValue);
166160
});
167161
}
@@ -238,19 +232,6 @@ protected ExposureDto createEntry() {
238232
return exposure;
239233
}
240234

241-
@SuppressWarnings("unchecked")
242-
@Override
243-
public void setPropertyDataSource(Property newDataSource) {
244-
super.setPropertyDataSource(newDataSource);
245-
if (newDataSource != null) {
246-
sourceCaseNames = FacadeProvider.getEpiDataFacade()
247-
.getExposureSourceCaseNames(
248-
((Collection<ExposureDto>) newDataSource.getValue()).stream().map(EntityDto::getUuid).collect(Collectors.toList()));
249-
} else {
250-
sourceCaseNames = new HashMap<>();
251-
}
252-
}
253-
254235
public void setGetSourceContactsCallback(Supplier<List<ContactReferenceDto>> callback) {
255236
getSourceContactsCallback = callback;
256237
}

0 commit comments

Comments
 (0)