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

Commit f4240ed

Browse files
SORMAS-Foundation#2898 - Sorting by district works again, contact and event participant columns are hidden correctly
# Conflicts: # sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleFacadeEjb.java # sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskFacadeEjb.java
1 parent ee35db5 commit f4240ed

3 files changed

Lines changed: 36 additions & 49 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/sample/SampleIndexDto.java

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

20-
import java.io.Serializable;
21-
import java.util.Date;
22-
2320
import de.symeda.sormas.api.Disease;
2421
import de.symeda.sormas.api.caze.CaseJurisdictionDto;
2522
import de.symeda.sormas.api.caze.CaseReferenceDto;
@@ -36,6 +33,9 @@
3633
import de.symeda.sormas.api.utils.pseudonymization.Pseudonymizer;
3734
import de.symeda.sormas.api.utils.pseudonymization.valuepseudonymizers.EmptyValuePseudonymizer;
3835

36+
import java.io.Serializable;
37+
import java.util.Date;
38+
3939
public class SampleIndexDto implements WithJurisdiction<SampleJurisdictionDto>, Serializable {
4040

4141
private static final long serialVersionUID = -6298614717044087479L;
@@ -106,12 +106,11 @@ public SampleIndexDto(String uuid, String epidNumber, String labSampleId, Date s
106106
String associatedContactUuid, String associatedContactFirstName, String associatedContactLastName,
107107
String associatedEventParticipantUuid, String associatedEventParticipantFirstName, String associatedEventParticipantLastName,
108108
Disease disease, String diseaseDetails, PathogenTestResultType pathogenTestResult, Boolean additionalTestingRequested, Boolean additionalTestPerformed,
109-
String caseDistrictName, String contactDistrictName, String contactCaseDistrictName,
110-
String reportingUserUuid, String labUuid,
109+
String districtName, String reportingUserUuid, String labUuid,
111110
String caseReportingUserUuid, String caseRegionUuid, String caseDistrictUuid, String caseCommunityUuid, String caseHealthFacilityUuid, String casePointOfEntryUuid,
112111
String contactReportingUserUuid, String contactRegionUuid, String contactDistrictUuid, String contactCommunityUuid,
113112
String contactCaseReportingUserUuid, String contactCaseRegionUuid, String contactCaseDistrictUuid,
114-
String contactCaseCommunityUuid, String contactCaseHealthFacilityUuid, String contactCasePointOfEntryUuid, String eventDistrictName,
113+
String contactCaseCommunityUuid, String contactCaseHealthFacilityUuid, String contactCasePointOfEntryUuid,
115114
String eventReportingUserUuid, String eventOfficerUuid, String eventRegionUuid, String eventDistrictUuid, String eventCommunityUuid) {
116115
//@formatter:on
117116

@@ -133,15 +132,7 @@ public SampleIndexDto(String uuid, String epidNumber, String labSampleId, Date s
133132
this.labSampleID = labSampleId;
134133
this.disease = disease;
135134
this.diseaseDetails = diseaseDetails;
136-
this.district = createDistrictReference(
137-
caseDistrictName,
138-
contactDistrictName,
139-
contactCaseDistrictName,
140-
eventDistrictName,
141-
caseDistrictUuid,
142-
contactDistrictUuid,
143-
contactCaseDistrictUuid,
144-
eventDistrictUuid);
135+
this.district = createDistrictReference(districtName, caseDistrictUuid, contactDistrictUuid, contactCaseDistrictUuid, eventDistrictUuid);
145136
this.shipped = shipped;
146137
this.received = received;
147138
this.referred = referredSampleUuid != null;
@@ -179,13 +170,12 @@ public SampleIndexDto(String uuid, String epidNumber, String labSampleId, Date s
179170
contactCaseCommunityUuid,
180171
contactCaseHealthFacilityUuid,
181172
contactCasePointOfEntryUuid);
182-
associatedContactJurisdiction =
183-
new ContactJurisdictionDto(
184-
contactReportingUserUuid,
185-
contactRegionUuid,
186-
contactDistrictUuid,
187-
contactCommunityUuid,
188-
contactCaseJurisdiction);
173+
associatedContactJurisdiction = new ContactJurisdictionDto(
174+
contactReportingUserUuid,
175+
contactRegionUuid,
176+
contactDistrictUuid,
177+
contactCommunityUuid,
178+
contactCaseJurisdiction);
189179
}
190180

191181
EventJurisdictionDto eventJurisdiction = null;
@@ -199,24 +189,21 @@ public SampleIndexDto(String uuid, String epidNumber, String labSampleId, Date s
199189
}
200190

201191
private DistrictReferenceDto createDistrictReference(
202-
String caseDistrictName,
203-
String contactDistrictName,
204-
String contactCaseDistrictName,
205-
String eventDistrictName,
192+
String districtName,
206193
String caseDistrictUuid,
207194
String contactDistrictUuid,
208195
String contactCaseDistrictUuid,
209196
String eventDistrictUuid) {
210197

211198
DistrictReferenceDto ref = null;
212199
if (caseDistrictUuid != null) {
213-
ref = new DistrictReferenceDto(caseDistrictUuid, caseDistrictName);
200+
ref = new DistrictReferenceDto(caseDistrictUuid, districtName);
214201
} else if (contactDistrictUuid != null) {
215-
ref = new DistrictReferenceDto(contactDistrictUuid, contactDistrictName);
202+
ref = new DistrictReferenceDto(contactDistrictUuid, districtName);
216203
} else if (contactCaseDistrictUuid != null) {
217-
ref = new DistrictReferenceDto(contactCaseDistrictUuid, contactCaseDistrictName);
204+
ref = new DistrictReferenceDto(contactCaseDistrictUuid, districtName);
218205
} else if (eventDistrictUuid != null) {
219-
ref = new DistrictReferenceDto(eventDistrictUuid, eventDistrictName);
206+
ref = new DistrictReferenceDto(eventDistrictUuid, districtName);
220207
}
221208

222209
return ref;

sormas-backend/src/main/java/de/symeda/sormas/backend/sample/SampleFacadeEjb.java

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -259,11 +259,6 @@ public List<SampleIndexDto> getIndexList(SampleCriteria sampleCriteria, Integer
259259
final CriteriaQuery<SampleIndexDto> cq = cb.createQuery(SampleIndexDto.class);
260260
final Root<Sample> sample = cq.from(Sample.class);
261261

262-
@SuppressWarnings({
263-
"unchecked",
264-
"rawtypes" })
265-
final QueryContext qc = new QueryContext(cb, cq, sample);
266-
267262
SampleJoins joins = new SampleJoins(sample);
268263

269264
final Join<Sample, Case> caze = joins.getCaze();
@@ -284,14 +279,16 @@ public List<SampleIndexDto> getIndexList(SampleCriteria sampleCriteria, Integer
284279
.otherwise(cb.selectCase().when(cb.isNotNull(contact), contact.get(Contact.DISEASE_DETAILS)).otherwise(event.get(Event.DISEASE_DETAILS)));
285280

286281
Expression<Object> districtSelect = cb.selectCase()
287-
.when(cb.isNotNull(caseDistrict), caseDistrict.get(District.UUID))
282+
.when(cb.isNotNull(caseDistrict), caseDistrict.get(District.NAME))
288283
.otherwise(
289284
cb.selectCase()
290-
.when(cb.isNotNull(contactDistrict), contactDistrict.get(District.UUID))
285+
.when(cb.isNotNull(contactDistrict), contactDistrict.get(District.NAME))
291286
.otherwise(
292287
cb.selectCase()
293-
.when(cb.isNotNull(contactCaseDistrict), contactCaseDistrict.get(District.UUID))
294-
.otherwise(eventDistrict.get(District.UUID))));
288+
.when(cb.isNotNull(contactCaseDistrict), contactCaseDistrict.get(District.NAME))
289+
.otherwise(eventDistrict.get(District.NAME))));
290+
291+
cq.distinct(true);
295292

296293
List<Selection<?>> selections = new ArrayList<>(
297294
Arrays.asList(
@@ -322,18 +319,14 @@ public List<SampleIndexDto> getIndexList(SampleCriteria sampleCriteria, Integer
322319
sample.get(Sample.PATHOGEN_TEST_RESULT),
323320
sample.get(Sample.ADDITIONAL_TESTING_REQUESTED),
324321
cb.isNotEmpty(sample.get(Sample.ADDITIONAL_TESTS)),
325-
joins.getCaseDistrict().get(Region.NAME),
326-
joins.getContactDistrict().get(Region.NAME),
327-
joins.getContactCaseDistrict().get(Region.NAME),
322+
districtSelect,
328323
joins.getReportingUser().get(User.UUID),
329324
joins.getLab().get(Facility.UUID)));
330325
selections.addAll(getCaseJurisdictionSelections(joins));
331326
selections.addAll(getContactJurisdictionSelections(joins));
332-
selections.add(joins.getEventDistrict().get(District.NAME));
333327
selections.addAll(getEventJurisdictionSelections(joins));
334328

335329
cq.multiselect(selections);
336-
cq.distinct(true);
337330

338331
Predicate filter = sampleService.createUserFilter(cq, cb, joins);
339332

sormas-ui/src/main/java/de/symeda/sormas/ui/samples/SampleGrid.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,10 @@
1717
*******************************************************************************/
1818
package de.symeda.sormas.ui.samples;
1919

20-
import java.util.Date;
21-
import java.util.stream.Collectors;
22-
2320
import com.vaadin.data.provider.DataProvider;
2421
import com.vaadin.data.provider.ListDataProvider;
2522
import com.vaadin.shared.data.sort.SortDirection;
2623
import com.vaadin.ui.renderers.DateRenderer;
27-
2824
import de.symeda.sormas.api.DiseaseHelper;
2925
import de.symeda.sormas.api.FacadeProvider;
3026
import de.symeda.sormas.api.i18n.Captions;
@@ -47,6 +43,9 @@
4743
import de.symeda.sormas.ui.utils.FilteredGrid;
4844
import de.symeda.sormas.ui.utils.ViewConfiguration;
4945

46+
import java.util.Date;
47+
import java.util.stream.Collectors;
48+
5049
@SuppressWarnings("serial")
5150
public class SampleGrid extends FilteredGrid<SampleIndexDto, SampleCriteria> {
5251

@@ -120,10 +119,18 @@ public SampleGrid(SampleCriteria criteria) {
120119
removeColumn(SampleIndexDto.RECEIVED_DATE);
121120
}
122121

123-
if (UserProvider.getCurrent().hasUserRole(UserRole.EXTERNAL_LAB_USER)) {
122+
if (!UserProvider.getCurrent().hasUserRight(UserRight.CASE_VIEW)) {
124123
removeColumn(SampleIndexDto.ASSOCIATED_CASE);
125124
}
126125

126+
if (!UserProvider.getCurrent().hasUserRight(UserRight.CONTACT_VIEW)) {
127+
removeColumn(SampleIndexDto.ASSOCIATED_CONTACT);
128+
}
129+
130+
if (!UserProvider.getCurrent().hasUserRight(UserRight.EVENT_VIEW)) {
131+
removeColumn(SampleIndexDto.ASSOCIATED_EVENT_PARTICIPANT);
132+
}
133+
127134
if (!UserProvider.getCurrent().hasUserRight(UserRight.ADDITIONAL_TEST_VIEW)) {
128135
removeColumn(SampleIndexDto.ADDITIONAL_TESTING_STATUS);
129136
}

0 commit comments

Comments
 (0)