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

Commit a17d8dc

Browse files
[GITFLOW]merging 'hotfix-1.48.2' into 'master'
2 parents 6b2d78b + b3ccaf0 commit a17d8dc

16 files changed

Lines changed: 115 additions & 111 deletions

File tree

sormas-api/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<parent>
33
<groupId>de.symeda.sormas</groupId>
44
<artifactId>sormas-base</artifactId>
5-
<version>1.48.1</version>
5+
<version>1.48.2</version>
66
<relativePath>../sormas-base</relativePath>
77
</parent>
88
<modelVersion>4.0.0</modelVersion>

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-api/src/main/java/de/symeda/sormas/api/utils/jurisdiction/EventParticipantJurisdictionHelper.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
import de.symeda.sormas.api.event.EventParticipantJurisdictionDto;
1919
import de.symeda.sormas.api.user.JurisdictionLevel;
20-
import de.symeda.sormas.api.utils.DataHelper;
2120

2221
public class EventParticipantJurisdictionHelper {
2322

@@ -27,12 +26,15 @@ public static boolean isInJurisdictionOrOwned(
2726
UserJurisdiction userJurisdiction,
2827
EventParticipantJurisdictionDto eventParticipantJurisdiction) {
2928

30-
if (eventParticipantJurisdiction.getReportingUserUuid() != null
31-
&& DataHelper.equal(eventParticipantJurisdiction.getReportingUserUuid(), userJurisdiction.getUuid())) {
32-
return true;
33-
}
29+
/*
30+
* if (eventParticipantJurisdiction.getReportingUserUuid() != null
31+
* && DataHelper.equal(eventParticipantJurisdiction.getReportingUserUuid(), userJurisdiction.getUuid())) {
32+
* return true;
33+
* }
34+
* return false;
35+
*/
3436

35-
return false;
37+
return true;
3638

3739
}
3840
}

sormas-app/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<artifactId>sormas-base</artifactId>
55
<groupId>de.symeda.sormas</groupId>
6-
<version>1.48.1</version>
6+
<version>1.48.2</version>
77
<relativePath>../sormas-base</relativePath>
88
</parent>
99
<modelVersion>4.0.0</modelVersion>

sormas-backend/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<artifactId>sormas-base</artifactId>
55
<groupId>de.symeda.sormas</groupId>
6-
<version>1.48.1</version>
6+
<version>1.48.2</version>
77
<relativePath>../sormas-base</relativePath>
88
</parent>
99
<modelVersion>4.0.0</modelVersion>

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,13 @@
1515

1616
package de.symeda.sormas.backend.event;
1717

18+
import de.symeda.sormas.api.event.EventParticipantJurisdictionDto;
19+
import de.symeda.sormas.backend.user.UserService;
20+
1821
import javax.ejb.EJB;
1922
import javax.ejb.LocalBean;
2023
import javax.ejb.Stateless;
2124

22-
import de.symeda.sormas.api.event.EventParticipantJurisdictionDto;
23-
import de.symeda.sormas.api.utils.jurisdiction.EventParticipantJurisdictionHelper;
24-
import de.symeda.sormas.backend.user.User;
25-
import de.symeda.sormas.backend.user.UserService;
26-
import de.symeda.sormas.backend.util.JurisdictionHelper;
27-
2825
@Stateless(name = "EventParticipantJurisdictionChecker")
2926
@LocalBean
3027
public class EventParticipantJurisdictionChecker {
@@ -38,10 +35,13 @@ public boolean isInJurisdictionOrOwned(EventParticipant eventParticipant) {
3835
}
3936

4037
public boolean isInJurisdictionOrOwned(EventParticipantJurisdictionDto eventParticipantJurisdiction) {
41-
User user = userService.getCurrentUser();
42-
43-
return EventParticipantJurisdictionHelper
44-
.isInJurisdictionOrOwned(user.getJurisdictionLevel(), JurisdictionHelper.createUserJurisdiction(user), eventParticipantJurisdiction);
38+
/*
39+
* User user = userService.getCurrentUser();
40+
* return EventParticipantJurisdictionHelper
41+
* .isInJurisdictionOrOwned(user.getJurisdictionLevel(), JurisdictionHelper.createUserJurisdiction(user),
42+
* eventParticipantJurisdiction);
43+
*/
44+
return true;
4545
}
4646

4747
private EventParticipantJurisdictionDto createEventParticipantJurisdictionDto(EventParticipant eventParticipant) {

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

Lines changed: 11 additions & 17 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

@@ -697,12 +690,13 @@ public long count(SampleCriteria sampleCriteria) {
697690
Predicate criteriaFilter = sampleService.buildCriteriaFilter(sampleCriteria, cb, joins);
698691
filter = AbstractAdoService.and(cb, filter, criteriaFilter);
699692
}
693+
700694
if (filter != null) {
701695
cq.where(filter);
702696
}
703-
cq.select(cb.count(root));
704-
Long count = em.createQuery(cq).getSingleResult();
705-
return count;
697+
698+
cq.select(cb.countDistinct(root));
699+
return em.createQuery(cq).getSingleResult();
706700
}
707701

708702
@Override

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

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

20-
import java.math.BigInteger;
21-
import java.util.Date;
22-
import java.util.HashMap;
23-
import java.util.List;
24-
import java.util.Map;
25-
import java.util.stream.Collectors;
26-
27-
import javax.ejb.EJB;
28-
import javax.ejb.LocalBean;
29-
import javax.ejb.Stateless;
30-
import javax.persistence.NoResultException;
31-
import javax.persistence.Query;
32-
import javax.persistence.criteria.CriteriaBuilder;
33-
import javax.persistence.criteria.CriteriaQuery;
34-
import javax.persistence.criteria.Expression;
35-
import javax.persistence.criteria.From;
36-
import javax.persistence.criteria.Join;
37-
import javax.persistence.criteria.JoinType;
38-
import javax.persistence.criteria.Predicate;
39-
import javax.persistence.criteria.Root;
40-
41-
import org.apache.commons.collections.CollectionUtils;
42-
4320
import de.symeda.sormas.api.EntityRelevanceStatus;
4421
import de.symeda.sormas.api.sample.PathogenTestResultType;
4522
import de.symeda.sormas.api.sample.SampleAssociationType;
@@ -64,6 +41,27 @@
6441
import de.symeda.sormas.backend.region.Region;
6542
import de.symeda.sormas.backend.user.User;
6643
import de.symeda.sormas.backend.util.QueryHelper;
44+
import org.apache.commons.collections.CollectionUtils;
45+
46+
import javax.ejb.EJB;
47+
import javax.ejb.LocalBean;
48+
import javax.ejb.Stateless;
49+
import javax.persistence.NoResultException;
50+
import javax.persistence.Query;
51+
import javax.persistence.criteria.CriteriaBuilder;
52+
import javax.persistence.criteria.CriteriaQuery;
53+
import javax.persistence.criteria.Expression;
54+
import javax.persistence.criteria.From;
55+
import javax.persistence.criteria.Join;
56+
import javax.persistence.criteria.JoinType;
57+
import javax.persistence.criteria.Predicate;
58+
import javax.persistence.criteria.Root;
59+
import java.math.BigInteger;
60+
import java.util.Date;
61+
import java.util.HashMap;
62+
import java.util.List;
63+
import java.util.Map;
64+
import java.util.stream.Collectors;
6765

6866
@Stateless
6967
@LocalBean
@@ -304,7 +302,7 @@ public Predicate createUserFilterWithoutCase(CriteriaBuilder cb, SampleJoins joi
304302
// lab users can see samples assigned to their laboratory
305303
if (jurisdictionLevel == JurisdictionLevel.LABORATORY || jurisdictionLevel == JurisdictionLevel.EXTERNAL_LABORATORY) {
306304
if (currentUser.getLaboratory() != null) {
307-
filter = or(cb, filter, cb.equal(joins.getRoot().get(Sample.LAB), currentUser.getLaboratory()));
305+
filter = or(cb, filter, cb.equal(joins.getLab(), currentUser.getLaboratory()));
308306
}
309307
}
310308

sormas-backend/src/main/java/de/symeda/sormas/backend/task/TaskFacadeEjb.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@ public long count(TaskCriteria taskCriteria) {
354354
cq.where(filter);
355355
}
356356

357-
cq.select(cb.count(task));
357+
cq.select(cb.countDistinct(task));
358358
return em.createQuery(cq).getSingleResult();
359359
}
360360

@@ -377,7 +377,6 @@ public List<TaskIndexDto> getIndexList(TaskCriteria taskCriteria, Integer first,
377377
task.get(Task.DUE_DATE), task.get(Task.SUGGESTED_START), task.get(Task.TASK_STATUS),
378378
joins.getCreator().get(User.UUID), joins.getCreator().get(User.FIRST_NAME), joins.getCreator().get(User.LAST_NAME), task.get(Task.CREATOR_COMMENT),
379379
joins.getAssignee().get(User.UUID), joins.getAssignee().get(User.FIRST_NAME), joins.getAssignee().get(User.LAST_NAME), task.get(Task.ASSIGNEE_REPLY),
380-
381380
joins.getCaseReportingUser().get(User.UUID), joins.getCaseRegion().get(Region.UUID), joins.getCaseDistrict().get(Region.UUID),
382381
joins.getCaseCommunity().get(Community.UUID), joins.getCaseFacility().get(Community.UUID), joins.getCasePointOfEntry().get(Community.UUID),
383382
joins.getContactReportingUser().get(User.UUID), joins.getContactRegion().get(Region.UUID), joins.getContactDistrict().get(District.UUID), joins.getContactCommunity().get(Community.UUID),
@@ -423,10 +422,14 @@ public List<TaskIndexDto> getIndexList(TaskCriteria taskCriteria, Integer first,
423422
expression = task.get(sortProperty.propertyName);
424423
break;
425424
case TaskIndexDto.ASSIGNEE_USER:
426-
expression = joins.getAssignee().get(User.USER_NAME);
425+
expression = joins.getAssignee().get(User.LAST_NAME);
426+
order.add(sortProperty.ascending ? cb.asc(expression) : cb.desc(expression));
427+
expression = joins.getAssignee().get(User.FIRST_NAME);
427428
break;
428429
case TaskIndexDto.CREATOR_USER:
429-
expression = joins.getCreator().get(User.USER_NAME);
430+
expression = joins.getCreator().get(User.LAST_NAME);
431+
order.add(sortProperty.ascending ? cb.asc(expression) : cb.desc(expression));
432+
expression = joins.getCreator().get(User.FIRST_NAME);
430433
break;
431434
case TaskIndexDto.CAZE:
432435
expression = joins.getCasePerson().get(Person.LAST_NAME);

sormas-base/dependencies/serverlibs.pom

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<parent>
99
<artifactId>sormas-base</artifactId>
1010
<groupId>de.symeda.sormas</groupId>
11-
<version>1.48.1</version>
11+
<version>1.48.2</version>
1212
<relativePath>../</relativePath>
1313
</parent>
1414

0 commit comments

Comments
 (0)