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

Commit f742db4

Browse files
[GITFLOW]merging 'hotfix-1.47.1' into 'master'
2 parents 6c26a96 + f740534 commit f742db4

22 files changed

Lines changed: 237 additions & 192 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.47.0</version>
5+
<version>1.47.1</version>
66
<relativePath>../sormas-base</relativePath>
77
</parent>
88
<modelVersion>4.0.0</modelVersion>

sormas-api/src/main/java/de/symeda/sormas/api/caze/CaseIndexDetailedDto.java

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package de.symeda.sormas.api.caze;
22

3-
import java.util.Date;
4-
53
import de.symeda.sormas.api.Disease;
64
import de.symeda.sormas.api.contact.FollowUpStatus;
75
import de.symeda.sormas.api.person.ApproximateAgeType;
@@ -13,14 +11,18 @@
1311
import de.symeda.sormas.api.utils.pseudonymization.Pseudonymizer;
1412
import de.symeda.sormas.api.utils.pseudonymization.valuepseudonymizers.PostalCodePseudonymizer;
1513

14+
import java.util.Date;
15+
1616
public class CaseIndexDetailedDto extends CaseIndexDto {
1717

1818
private static final long serialVersionUID = -3722694511897383913L;
1919

2020
public static final String SEX = "sex";
2121
public static final String CITY = "city";
22-
public static final String ADDRESS = "address";
22+
public static final String STREET = "street";
23+
public static final String HOUSE_NUMBER = "houseNumber";
2324
public static final String POSTAL_CODE = "postalCode";
25+
public static final String ADDITIONAL_INFORMATION = "additionalInformation";
2426
public static final String PHONE = "phone";
2527
public static final String REPORTING_USER = "reportingUser";
2628

@@ -29,7 +31,13 @@ public class CaseIndexDetailedDto extends CaseIndexDto {
2931
private String city;
3032
@PersonalData
3133
@SensitiveData
32-
private String address;
34+
private String street;
35+
@PersonalData
36+
@SensitiveData
37+
private String houseNumber;
38+
@PersonalData
39+
@SensitiveData
40+
private String additionalInformation;
3341
@PersonalData
3442
@SensitiveData
3543
@Pseudonymizer(PostalCodePseudonymizer.class)
@@ -48,7 +56,7 @@ public CaseIndexDetailedDto(long id, String uuid, String epidNumber, String exte
4856
String pointOfEntryUuid, String pointOfEntryName, String pointOfEntryDetails, String surveillanceOfficerUuid, CaseOutcome outcome,
4957
Integer age, ApproximateAgeType ageType, Integer birthdateDD, Integer birthdateMM, Integer birthdateYYYY, Sex sex,
5058
Date quarantineTo, Float completeness, FollowUpStatus followUpStatus, Date followUpUntil,
51-
String city, String address, String postalCode, String phone,
59+
String city, String street, String houseNumber, String additionalInformation, String postalCode, String phone,
5260
String reportingUserFirstName, String reportingUserLastName, int visitCount) {
5361

5462
super(id, uuid, epidNumber, externalID, personFirstName, personLastName, disease, diseaseDetails, caseClassification, investigationStatus,
@@ -59,7 +67,9 @@ public CaseIndexDetailedDto(long id, String uuid, String epidNumber, String exte
5967
//@formatter:on
6068

6169
this.city = city;
62-
this.address = address;
70+
this.street = street;
71+
this.houseNumber = houseNumber;
72+
this.additionalInformation = additionalInformation;
6373
this.postalCode = postalCode;
6474
this.phone = phone;
6575
this.reportingUser = new UserReferenceDto(reportingUserUuid, reportingUserFirstName, reportingUserLastName, null);
@@ -69,8 +79,16 @@ public String getCity() {
6979
return city;
7080
}
7181

72-
public String getAddress() {
73-
return address;
82+
public String getStreet() {
83+
return street;
84+
}
85+
86+
public String getHouseNumber() {
87+
return houseNumber;
88+
}
89+
90+
public String getAdditionalInformation() {
91+
return additionalInformation;
7492
}
7593

7694
public String getPostalCode() {

sormas-api/src/main/resources/descriptions.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ Event.srcMediaDetails = Enter the source's details
111111
Event.typeOfPlace = Select the place where the event took place
112112

113113
# Facility
114-
Facility.NO_FACILITY = This facility should be used is explicitly not a facility but another place (e.g. at home). In this case, the corresponding facility type must be empty.
114+
Facility.NO_FACILITY = This facility should be used if explicitly not a facility but another place (e.g. at home) is meant. In this case, the corresponding facility type must be empty.
115115
Facility.OTHER_FACILITY = This facility should be used if the desired facility does not (yet) exist in Sormas for any reason. The corresponding facility type must be filled in, so that it is clear what kind of facility it is.
116116

117117
# Hospitalization

sormas-api/src/test/java/de/symeda/sormas/api/doc/DataDictionaryGenerator.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,6 @@
7878
*/
7979
public class DataDictionaryGenerator {
8080

81-
CellStyle defaultCellStyle;
82-
8381
@Test
8482
public void generateDataDictionary() throws FileNotFoundException, IOException {
8583

@@ -164,7 +162,7 @@ private XSSFSheet createEntitySheet(XSSFWorkbook workbook, Class<? extends Entit
164162
sheet.setColumnWidth(EntityColumn.DISEASES.ordinal(), 256 * 45);
165163
sheet.setColumnWidth(EntityColumn.OUTBREAKS.ordinal(), 256 * 10);
166164

167-
defaultCellStyle = workbook.createCellStyle();
165+
CellStyle defaultCellStyle = workbook.createCellStyle();
168166
defaultCellStyle.setWrapText(true);
169167

170168
List<Class<Enum<?>>> usedEnums = new ArrayList<Class<Enum<?>>>();
@@ -253,7 +251,7 @@ private XSSFSheet createEntitySheet(XSSFWorkbook workbook, Class<? extends Entit
253251

254252
// constant facilities
255253
if (CaseDataDto.class.equals(entityClass) || PersonDto.class.equals(entityClass)) {
256-
rowNumber = createFacilityTable(sheet, rowNumber + 1);
254+
rowNumber = createFacilityTable(sheet, rowNumber + 1, defaultCellStyle);
257255
}
258256

259257
// enums
@@ -264,7 +262,7 @@ private XSSFSheet createEntitySheet(XSSFWorkbook workbook, Class<? extends Entit
264262
return sheet;
265263
}
266264

267-
private int createFacilityTable(XSSFSheet sheet, int startRow) {
265+
private int createFacilityTable(XSSFSheet sheet, int startRow, CellStyle defaultCellStyle) {
268266

269267
// Create
270268
XSSFTable table = sheet.createTable();

sormas-app/app/src/main/res/values/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -597,7 +597,7 @@
597597
<string name="no_camera_permission">No camera permission</string>
598598
<string name="permission_camera_rationale">Access to the camera is needed for detection</string>
599599
<string name="scan_field_sample_id">Scan field sample id</string>
600-
<string name="caption_facility_type_group">Facility type group</string>
600+
<string name="caption_facility_type_group">Facility category</string>
601601
<string name="caption_facility_type">Facility type</string>
602602

603603
</resources>

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.47.0</version>
6+
<version>1.47.1</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.47.0</version>
6+
<version>1.47.1</version>
77
<relativePath>../sormas-base</relativePath>
88
</parent>
99
<modelVersion>4.0.0</modelVersion>

sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseFacadeEjb.java

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

20-
import static de.symeda.sormas.backend.util.DtoHelper.fillDto;
21-
import static de.symeda.sormas.backend.visit.VisitLogic.getVisitResult;
22-
23-
import java.math.BigDecimal;
24-
import java.sql.Timestamp;
25-
import java.time.LocalDate;
26-
import java.util.ArrayList;
27-
import java.util.Arrays;
28-
import java.util.Calendar;
29-
import java.util.Collections;
30-
import java.util.Comparator;
31-
import java.util.Date;
32-
import java.util.HashMap;
33-
import java.util.List;
34-
import java.util.Map;
35-
import java.util.Optional;
36-
import java.util.Random;
37-
import java.util.function.Function;
38-
import java.util.stream.Collectors;
39-
import java.util.stream.Stream;
40-
41-
import javax.ejb.EJB;
42-
import javax.ejb.LocalBean;
43-
import javax.ejb.Stateless;
44-
import javax.ejb.TransactionAttribute;
45-
import javax.ejb.TransactionAttributeType;
46-
import javax.persistence.EntityManager;
47-
import javax.persistence.NoResultException;
48-
import javax.persistence.PersistenceContext;
49-
import javax.persistence.TypedQuery;
50-
import javax.persistence.criteria.CriteriaBuilder;
51-
import javax.persistence.criteria.CriteriaQuery;
52-
import javax.persistence.criteria.CriteriaUpdate;
53-
import javax.persistence.criteria.Expression;
54-
import javax.persistence.criteria.Join;
55-
import javax.persistence.criteria.JoinType;
56-
import javax.persistence.criteria.Order;
57-
import javax.persistence.criteria.ParameterExpression;
58-
import javax.persistence.criteria.Path;
59-
import javax.persistence.criteria.Predicate;
60-
import javax.persistence.criteria.Root;
61-
import javax.persistence.criteria.Selection;
62-
import javax.validation.constraints.NotNull;
63-
64-
import org.apache.commons.lang3.StringUtils;
65-
import org.slf4j.Logger;
66-
import org.slf4j.LoggerFactory;
67-
6820
import de.symeda.sormas.api.CaseMeasure;
6921
import de.symeda.sormas.api.Disease;
7022
import de.symeda.sormas.api.DiseaseHelper;
@@ -244,6 +196,52 @@
244196
import de.symeda.sormas.backend.util.Pseudonymizer;
245197
import de.symeda.sormas.backend.visit.Visit;
246198
import de.symeda.sormas.backend.visit.VisitService;
199+
import org.apache.commons.lang3.StringUtils;
200+
import org.slf4j.Logger;
201+
import org.slf4j.LoggerFactory;
202+
203+
import javax.ejb.EJB;
204+
import javax.ejb.LocalBean;
205+
import javax.ejb.Stateless;
206+
import javax.ejb.TransactionAttribute;
207+
import javax.ejb.TransactionAttributeType;
208+
import javax.persistence.EntityManager;
209+
import javax.persistence.NoResultException;
210+
import javax.persistence.PersistenceContext;
211+
import javax.persistence.TypedQuery;
212+
import javax.persistence.criteria.CriteriaBuilder;
213+
import javax.persistence.criteria.CriteriaQuery;
214+
import javax.persistence.criteria.CriteriaUpdate;
215+
import javax.persistence.criteria.Expression;
216+
import javax.persistence.criteria.Join;
217+
import javax.persistence.criteria.JoinType;
218+
import javax.persistence.criteria.Order;
219+
import javax.persistence.criteria.ParameterExpression;
220+
import javax.persistence.criteria.Path;
221+
import javax.persistence.criteria.Predicate;
222+
import javax.persistence.criteria.Root;
223+
import javax.persistence.criteria.Selection;
224+
import javax.validation.constraints.NotNull;
225+
import java.math.BigDecimal;
226+
import java.sql.Timestamp;
227+
import java.time.LocalDate;
228+
import java.util.ArrayList;
229+
import java.util.Arrays;
230+
import java.util.Calendar;
231+
import java.util.Collections;
232+
import java.util.Comparator;
233+
import java.util.Date;
234+
import java.util.HashMap;
235+
import java.util.List;
236+
import java.util.Map;
237+
import java.util.Optional;
238+
import java.util.Random;
239+
import java.util.function.Function;
240+
import java.util.stream.Collectors;
241+
import java.util.stream.Stream;
242+
243+
import static de.symeda.sormas.backend.util.DtoHelper.fillDto;
244+
import static de.symeda.sormas.backend.visit.VisitLogic.getVisitResult;
247245

248246
@Stateless(name = "CaseFacade")
249247
public class CaseFacadeEjb implements CaseFacade {
@@ -771,7 +769,9 @@ public List<CaseExportDto> getExportList(
771769
for (Sample sample : caseSamples) {
772770
CaseExportDto.CaseExportSampleDto sampleDto = new CaseExportDto.CaseExportSampleDto(
773771
sample.getSampleDateTime(),
774-
FacilityHelper.buildFacilityString(sample.getLab().getUuid(), sample.getLab().getName(), sample.getLabDetails()),
772+
sample.getLab() != null
773+
? FacilityHelper.buildFacilityString(sample.getLab().getUuid(), sample.getLab().getName(), sample.getLabDetails())
774+
: null,
775775
sample.getPathogenTestResult());
776776

777777
switch (++count) {
@@ -1418,6 +1418,11 @@ public void onCaseChanged(CaseDataDto existingCase, Case newCase) {
14181418
}
14191419
}
14201420

1421+
// Clear facility type if no facility or home was selected
1422+
if (newCase.getHealthFacility() == null || FacilityDto.NONE_FACILITY_UUID.equals(newCase.getHealthFacility().getUuid())) {
1423+
newCase.setFacilityType(null);
1424+
}
1425+
14211426
// Generate epid number if missing or incomplete
14221427
if (!CaseLogic.isCompleteEpidNumber(newCase.getEpidNumber())) {
14231428
newCase.setEpidNumber(generateEpidNumber(newCase));

sormas-backend/src/main/java/de/symeda/sormas/backend/caze/CaseListCriteriaBuilder.java

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,5 @@
11
package de.symeda.sormas.backend.caze;
22

3-
import java.util.ArrayList;
4-
import java.util.Arrays;
5-
import java.util.Collections;
6-
import java.util.List;
7-
import java.util.function.BiFunction;
8-
import java.util.stream.Collectors;
9-
import java.util.stream.Stream;
10-
11-
import javax.ejb.EJB;
12-
import javax.ejb.LocalBean;
13-
import javax.ejb.Stateless;
14-
import javax.persistence.EntityManager;
15-
import javax.persistence.PersistenceContext;
16-
import javax.persistence.criteria.CriteriaBuilder;
17-
import javax.persistence.criteria.CriteriaQuery;
18-
import javax.persistence.criteria.Expression;
19-
import javax.persistence.criteria.Order;
20-
import javax.persistence.criteria.Predicate;
21-
import javax.persistence.criteria.Root;
22-
import javax.persistence.criteria.Selection;
23-
import javax.persistence.criteria.Subquery;
24-
253
import de.symeda.sormas.api.caze.CaseCriteria;
264
import de.symeda.sormas.api.caze.CaseIndexDetailedDto;
275
import de.symeda.sormas.api.caze.CaseIndexDto;
@@ -38,6 +16,27 @@
3816
import de.symeda.sormas.backend.user.User;
3917
import de.symeda.sormas.backend.util.ModelConstants;
4018

19+
import javax.ejb.EJB;
20+
import javax.ejb.LocalBean;
21+
import javax.ejb.Stateless;
22+
import javax.persistence.EntityManager;
23+
import javax.persistence.PersistenceContext;
24+
import javax.persistence.criteria.CriteriaBuilder;
25+
import javax.persistence.criteria.CriteriaQuery;
26+
import javax.persistence.criteria.Expression;
27+
import javax.persistence.criteria.Order;
28+
import javax.persistence.criteria.Predicate;
29+
import javax.persistence.criteria.Root;
30+
import javax.persistence.criteria.Selection;
31+
import javax.persistence.criteria.Subquery;
32+
import java.util.ArrayList;
33+
import java.util.Arrays;
34+
import java.util.Collections;
35+
import java.util.List;
36+
import java.util.function.BiFunction;
37+
import java.util.stream.Collectors;
38+
import java.util.stream.Stream;
39+
4140
@Stateless
4241
@LocalBean
4342
public class CaseListCriteriaBuilder {
@@ -219,7 +218,9 @@ private List<Expression<?>> getIndexDetailOrders(SortProperty sortProperty, Root
219218

220219
switch (sortProperty.propertyName) {
221220
case CaseIndexDetailedDto.CITY:
222-
case CaseIndexDetailedDto.ADDRESS:
221+
case CaseIndexDetailedDto.STREET:
222+
case CaseIndexDetailedDto.HOUSE_NUMBER:
223+
case CaseIndexDetailedDto.ADDITIONAL_INFORMATION:
223224
case CaseIndexDetailedDto.POSTAL_CODE:
224225
return Collections.singletonList(joins.getAddress().get(sortProperty.propertyName));
225226
case CaseIndexDetailedDto.PHONE:

0 commit comments

Comments
 (0)