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

Commit 33f72f4

Browse files
authored
Merge pull request SORMAS-Foundation#4086 from hzi-braunschweig/3360_handle-missing-uuids
SORMAS-Foundation#3360 REST] handle missing UUID in EntityDTOs gracefully
2 parents 1c07278 + f584ab8 commit 33f72f4

53 files changed

Lines changed: 237 additions & 530 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

sormas-backend/src/main/java/de/symeda/sormas/backend/action/ActionFacadeEjb.java

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

20-
import java.sql.Timestamp;
2120
import java.util.Collections;
2221
import java.util.Date;
2322
import java.util.List;
@@ -65,18 +64,7 @@ public Action fromDto(ActionDto source, boolean checkChangeDate) {
6564
return null;
6665
}
6766

68-
boolean creation = false;
69-
Action target = actionService.getByUuid(source.getUuid());
70-
if (target == null) {
71-
creation = true;
72-
target = new Action();
73-
target.setUuid(source.getUuid());
74-
if (source.getCreationDate() != null) {
75-
target.setCreationDate(new Timestamp(source.getCreationDate().getTime()));
76-
}
77-
}
78-
79-
DtoHelper.validateDto(source, target, checkChangeDate);
67+
Action target = DtoHelper.fillOrBuildEntity(source, actionService.getByUuid(source.getUuid()), Action::new, checkChangeDate);
8068

8169
target.setLastModifiedBy(userService.getByReferenceDto(source.getLastModifiedBy()));
8270
target.setReply(source.getReply());
@@ -85,7 +73,7 @@ public Action fromDto(ActionDto source, boolean checkChangeDate) {
8573
target.setDescription(source.getDescription());
8674
target.setPriority(source.getPriority());
8775
target.setDate(source.getDate());
88-
if (target.getActionStatus() != source.getActionStatus() && !creation) {
76+
if (target.getActionStatus() != source.getActionStatus() && target.getId() != null) {
8977
target.setStatusChangeDate(new Date());
9078
} else {
9179
target.setStatusChangeDate(source.getStatusChangeDate());
@@ -118,9 +106,7 @@ public ActionDto toDto(Action action) {
118106
ActionDto target = new ActionDto();
119107
Action source = action;
120108

121-
target.setCreationDate(source.getCreationDate());
122-
target.setChangeDate(source.getChangeDate());
123-
target.setUuid(source.getUuid());
109+
DtoHelper.fillDto(target, source);
124110

125111
target.setCreatorUser(UserFacadeEjb.toReferenceDto(source.getCreatorUser()));
126112
target.setTitle(source.getTitle());

sormas-backend/src/main/java/de/symeda/sormas/backend/campaign/CampaignFacadeEjb.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package de.symeda.sormas.backend.campaign;
22

3-
import java.sql.Timestamp;
43
import java.util.ArrayList;
54
import java.util.Collections;
65
import java.util.Comparator;
@@ -169,19 +168,10 @@ public CampaignDto saveCampaign(CampaignDto dto) {
169168
}
170169

171170
public Campaign fromDto(@NotNull CampaignDto source, boolean checkChangeDate) {
172-
173-
Campaign target = campaignService.getByUuid(source.getUuid());
174-
if (target == null) {
175-
target = new Campaign();
176-
target.setUuid(source.getUuid());
177-
if (source.getCreationDate() != null) {
178-
target.setCreationDate(new Timestamp(source.getCreationDate().getTime()));
179-
}
180-
}
181-
DtoHelper.validateDto(source, target, checkChangeDate);
182-
183171
validate(source);
184172

173+
Campaign target = DtoHelper.fillOrBuildEntity(source, campaignService.getByUuid(source.getUuid()), Campaign::new, checkChangeDate);
174+
185175
target.setCreatingUser(userService.getByReferenceDto(source.getCreatingUser()));
186176
target.setDescription(source.getDescription());
187177
target.setEndDate(source.getEndDate());

sormas-backend/src/main/java/de/symeda/sormas/backend/campaign/data/CampaignFormDataFacadeEjb.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020

2121
package de.symeda.sormas.backend.campaign.data;
2222

23-
import java.sql.Timestamp;
2423
import java.util.ArrayList;
2524
import java.util.Collections;
2625
import java.util.Date;
@@ -129,16 +128,8 @@ public class CampaignFormDataFacadeEjb implements CampaignFormDataFacade {
129128
private RegionFacadeEjb.RegionFacadeEjbLocal regionFacadeEjb;
130129

131130
public CampaignFormData fromDto(@NotNull CampaignFormDataDto source, boolean checkChangeDate) {
132-
CampaignFormData target = campaignFormDataService.getByUuid(source.getUuid());
133-
if (target == null) {
134-
target = new CampaignFormData();
135-
target.setUuid(source.getUuid());
136-
if (source.getCreationDate() != null) {
137-
target.setCreationDate(new Timestamp(source.getCreationDate().getTime()));
138-
}
139-
}
140-
141-
DtoHelper.validateDto(source, target, checkChangeDate);
131+
CampaignFormData target =
132+
DtoHelper.fillOrBuildEntity(source, campaignFormDataService.getByUuid(source.getUuid()), CampaignFormData::new, checkChangeDate);
142133

143134
target.setFormValues(source.getFormValues());
144135
target.setCampaign(campaignService.getByReferenceDto(source.getCampaign()));

sormas-backend/src/main/java/de/symeda/sormas/backend/campaign/diagram/CampaignDiagramDefinitionFacadeEjb.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package de.symeda.sormas.backend.campaign.diagram;
22

3-
import java.sql.Timestamp;
43
import java.util.List;
54
import java.util.stream.Collectors;
65

@@ -48,15 +47,8 @@ public CampaignDiagramDefinitionDto getByDiagramId(String diagramId) {
4847
}
4948

5049
public CampaignDiagramDefinition fromDto(@NotNull CampaignDiagramDefinitionDto source, boolean checkChangeDate) {
51-
CampaignDiagramDefinition target = service.getByUuid(source.getUuid());
52-
if (target == null) {
53-
target = new CampaignDiagramDefinition();
54-
target.setUuid(source.getUuid());
55-
if (source.getCreationDate() != null) {
56-
target.setCreationDate(new Timestamp(source.getCreationDate().getTime()));
57-
}
58-
}
59-
DtoHelper.validateDto(source, target, checkChangeDate);
50+
CampaignDiagramDefinition target =
51+
DtoHelper.fillOrBuildEntity(source, service.getByUuid(source.getUuid()), CampaignDiagramDefinition::new, checkChangeDate);
6052

6153
target.setDiagramId(source.getDiagramId());
6254
target.setDiagramType(source.getDiagramType());

sormas-backend/src/main/java/de/symeda/sormas/backend/campaign/form/CampaignFormMetaFacadeEjb.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package de.symeda.sormas.backend.campaign.form;
22

33
import java.io.IOException;
4-
import java.sql.Timestamp;
54
import java.util.Arrays;
65
import java.util.Collections;
76
import java.util.Comparator;
@@ -51,15 +50,7 @@ public class CampaignFormMetaFacadeEjb implements CampaignFormMetaFacade {
5150
private UserService userService;
5251

5352
public CampaignFormMeta fromDto(@NotNull CampaignFormMetaDto source, boolean checkChangeDate) {
54-
CampaignFormMeta target = service.getByUuid(source.getUuid());
55-
if (target == null) {
56-
target = new CampaignFormMeta();
57-
target.setUuid(source.getUuid());
58-
if (source.getCreationDate() != null) {
59-
target.setCreationDate(new Timestamp(source.getCreationDate().getTime()));
60-
}
61-
}
62-
DtoHelper.validateDto(source, target, checkChangeDate);
53+
CampaignFormMeta target = DtoHelper.fillOrBuildEntity(source, service.getByUuid(source.getUuid()), CampaignFormMeta::new, checkChangeDate);
6354

6455
target.setFormId(source.getFormId());
6556
target.setFormName(source.getFormName());

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

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2179,13 +2179,12 @@ public List<String> getDeletedUuidsSince(Date since) {
21792179

21802180
public Case fillOrBuildEntity(@NotNull CaseDataDto source, Case target, boolean checkChangeDate) {
21812181

2182-
if (target == null) {
2183-
target = new Case();
2184-
target.setUuid(source.getUuid());
2185-
target.setSystemCaseClassification(CaseClassification.NOT_CLASSIFIED);
2186-
}
2182+
target = DtoHelper.fillOrBuildEntity(source, target, () -> {
2183+
Case newCase = new Case();
2184+
newCase.setSystemCaseClassification(CaseClassification.NOT_CLASSIFIED);
21872185

2188-
DtoHelper.validateDto(source, target, checkChangeDate);
2186+
return newCase;
2187+
}, checkChangeDate);
21892188

21902189
target.setDisease(source.getDisease());
21912190
target.setDiseaseDetails(source.getDiseaseDetails());

sormas-backend/src/main/java/de/symeda/sormas/backend/caze/maternalhistory/MaternalHistoryFacadeEjb.java

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package de.symeda.sormas.backend.caze.maternalhistory;
22

3-
import java.sql.Timestamp;
4-
53
import javax.ejb.EJB;
64
import javax.ejb.LocalBean;
75
import javax.ejb.Stateless;
@@ -68,17 +66,7 @@ public static MaternalHistoryDto toDto(MaternalHistory source) {
6866
}
6967

7068
public MaternalHistory fromDto(@NotNull MaternalHistoryDto source, boolean checkChangeDate) {
71-
MaternalHistory target = service.getByUuid(source.getUuid());
72-
73-
if (target == null) {
74-
target = new MaternalHistory();
75-
target.setUuid(source.getUuid());
76-
if (source.getCreationDate() != null) {
77-
target.setCreationDate(new Timestamp(source.getCreationDate().getTime()));
78-
}
79-
}
80-
81-
DtoHelper.validateDto(source, target, checkChangeDate);
69+
MaternalHistory target = DtoHelper.fillOrBuildEntity(source, service.getByUuid(source.getUuid()), MaternalHistory::new, checkChangeDate);
8270

8371
target.setAgeAtBirth(source.getAgeAtBirth());
8472
target.setArthralgiaArthritis(source.getArthralgiaArthritis());

sormas-backend/src/main/java/de/symeda/sormas/backend/caze/porthealthinfo/PortHealthInfoFacadeEjb.java

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package de.symeda.sormas.backend.caze.porthealthinfo;
22

3-
import java.sql.Timestamp;
4-
53
import javax.ejb.EJB;
64
import javax.ejb.LocalBean;
75
import javax.ejb.Stateless;
@@ -52,17 +50,7 @@ public static PortHealthInfoDto toDto(PortHealthInfo source) {
5250
}
5351

5452
public PortHealthInfo fromDto(@NotNull PortHealthInfoDto source, boolean checkChangeDate) {
55-
PortHealthInfo target = service.getByUuid(source.getUuid());
56-
57-
if (target == null) {
58-
target = new PortHealthInfo();
59-
target.setUuid(source.getUuid());
60-
if (source.getCreationDate() != null) {
61-
target.setCreationDate(new Timestamp(source.getCreationDate().getTime()));
62-
}
63-
}
64-
65-
DtoHelper.validateDto(source, target, checkChangeDate);
53+
PortHealthInfo target = DtoHelper.fillOrBuildEntity(source, service.getByUuid(source.getUuid()), PortHealthInfo::new, checkChangeDate);
6654

6755
target.setAirlineName(source.getAirlineName());
6856
target.setFlightNumber(source.getFlightNumber());

sormas-backend/src/main/java/de/symeda/sormas/backend/clinicalcourse/ClinicalCourseFacadeEjb.java

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

3-
import java.sql.Timestamp;
4-
53
import javax.ejb.EJB;
64
import javax.ejb.LocalBean;
75
import javax.ejb.Stateless;
@@ -72,17 +70,7 @@ public static ClinicalCourseDto toDto(ClinicalCourse source) {
7270

7371
public ClinicalCourse fromDto(@NotNull ClinicalCourseDto source, boolean checkChangeDate) {
7472

75-
ClinicalCourse target = service.getByUuid(source.getUuid());
76-
77-
if (target == null) {
78-
target = new ClinicalCourse();
79-
target.setUuid(source.getUuid());
80-
if (source.getCreationDate() != null) {
81-
target.setCreationDate(new Timestamp(source.getCreationDate().getTime()));
82-
}
83-
}
84-
85-
DtoHelper.validateDto(source, target, checkChangeDate);
73+
ClinicalCourse target = DtoHelper.fillOrBuildEntity(source, service.getByUuid(source.getUuid()), ClinicalCourse::new, checkChangeDate);
8674

8775
if (source.getHealthConditions() != null) {
8876
target.setHealthConditions(fromHealthConditionsDto(source.getHealthConditions(), checkChangeDate));
@@ -130,17 +118,8 @@ public static HealthConditionsDto toHealthConditionsDto(HealthConditions source)
130118

131119
public HealthConditions fromHealthConditionsDto(@NotNull HealthConditionsDto source, boolean checkChangeDate) {
132120

133-
HealthConditions target = healthConditionsService.getByUuid(source.getUuid());
134-
135-
if (target == null) {
136-
target = new HealthConditions();
137-
target.setUuid(source.getUuid());
138-
if (source.getCreationDate() != null) {
139-
target.setCreationDate(new Timestamp(source.getCreationDate().getTime()));
140-
}
141-
}
142-
143-
DtoHelper.validateDto(source, target, checkChangeDate);
121+
HealthConditions target =
122+
DtoHelper.fillOrBuildEntity(source, healthConditionsService.getByUuid(source.getUuid()), HealthConditions::new, checkChangeDate);
144123

145124
target.setAsplenia(source.getAsplenia());
146125
target.setChronicHeartFailure(source.getChronicHeartFailure());

sormas-backend/src/main/java/de/symeda/sormas/backend/clinicalcourse/ClinicalVisitFacadeEjb.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package de.symeda.sormas.backend.clinicalcourse;
22

3-
import java.sql.Timestamp;
43
import java.util.Collections;
54
import java.util.Date;
65
import java.util.List;
@@ -353,15 +352,7 @@ public static ClinicalVisitDto toDto(ClinicalVisit source) {
353352
}
354353

355354
public ClinicalVisit fromDto(@NotNull ClinicalVisitDto source, ClinicalVisit target, boolean checkChangeDate) {
356-
if (target == null) {
357-
target = new ClinicalVisit();
358-
target.setUuid(source.getUuid());
359-
if (source.getCreationDate() != null) {
360-
target.setCreationDate(new Timestamp(source.getCreationDate().getTime()));
361-
}
362-
}
363-
364-
DtoHelper.validateDto(source, target, checkChangeDate);
355+
target = DtoHelper.fillOrBuildEntity(source, target, ClinicalVisit::new, checkChangeDate);
365356

366357
target.setClinicalCourse(clinicalCourseService.getByReferenceDto(source.getClinicalCourse()));
367358
target.setSymptoms(symptomsFacade.fromDto(source.getSymptoms(), checkChangeDate));

0 commit comments

Comments
 (0)