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

Commit 834a0e2

Browse files
Merge pull request SORMAS-Foundation#3218 from hzi-braunschweig/3156_sormas-to-sormas-handle-other-facilities
SORMAS-Foundation#3156 handle home or other facility and other point of entry infrastructure data
2 parents e5b9405 + f3c923c commit 834a0e2

3 files changed

Lines changed: 39 additions & 13 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/facility/FacilityDto.java

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

20+
import java.util.Arrays;
2021
import java.util.Date;
22+
import java.util.List;
2123

2224
import de.symeda.sormas.api.EntityDto;
2325
import de.symeda.sormas.api.region.CommunityReferenceDto;
@@ -32,6 +34,7 @@ public class FacilityDto extends EntityDto {
3234
public static final String I18N_PREFIX = "Facility";
3335
public static final String OTHER_FACILITY_UUID = "SORMAS-CONSTID-OTHERS-FACILITY";
3436
public static final String NONE_FACILITY_UUID = "SORMAS-CONSTID-ISNONE-FACILITY";
37+
public static final List<String> CONSTANT_FACILITY_UUIDS = Arrays.asList(OTHER_FACILITY_UUID, NONE_FACILITY_UUID);
3538
public static final String OTHER_FACILITY = "OTHER_FACILITY";
3639
public static final String NO_FACILITY = "NO_FACILITY";
3740
public static final String NAME = "name";

sormas-api/src/main/java/de/symeda/sormas/api/infrastructure/PointOfEntryDto.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package de.symeda.sormas.api.infrastructure;
22

3+
import java.util.Arrays;
34
import java.util.Date;
5+
import java.util.List;
46

57
import de.symeda.sormas.api.EntityDto;
68
import de.symeda.sormas.api.region.DistrictReferenceDto;
@@ -15,6 +17,8 @@ public class PointOfEntryDto extends EntityDto {
1517
public static final String OTHER_SEAPORT_UUID = "SORMAS-CONSTID-OTHERS-SEAPORTX";
1618
public static final String OTHER_GROUND_CROSSING_UUID = "SORMAS-CONSTIG-OTHERS-GROUNDCR";
1719
public static final String OTHER_POE_UUID = "SORMAS-CONSTID-OTHERS-OTHERPOE";
20+
public static final List<String> CONSTANT_POE_UUIDS =
21+
Arrays.asList(OTHER_AIRPORT_UUID, OTHER_SEAPORT_UUID, OTHER_GROUND_CROSSING_UUID, OTHER_POE_UUID);
1822
public static final String OTHER_AIRPORT = "OTHER_AIRPORT";
1923
public static final String OTHER_SEAPORT = "OTHER_SEAPORT";
2024
public static final String OTHER_GROUND_CROSSING = "OTHER_GROUND_CROSSING";
@@ -173,4 +177,8 @@ public void setExternalID(String externalID) {
173177
public String toString() {
174178
return InfrastructureHelper.buildPointOfEntryString(getUuid(), name);
175179
}
180+
181+
public PointOfEntryReferenceDto toReference() {
182+
return new PointOfEntryReferenceDto(getUuid(), toString());
183+
}
176184
}

sormas-backend/src/main/java/de/symeda/sormas/backend/sormastosormas/SormasToSormasFacadeEjb.java

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,14 @@
6464
import de.symeda.sormas.api.contact.ContactCriteria;
6565
import de.symeda.sormas.api.contact.ContactDto;
6666
import de.symeda.sormas.api.epidata.EpiDataDto;
67+
import de.symeda.sormas.api.facility.FacilityDto;
6768
import de.symeda.sormas.api.facility.FacilityReferenceDto;
6869
import de.symeda.sormas.api.facility.FacilityType;
6970
import de.symeda.sormas.api.i18n.Captions;
7071
import de.symeda.sormas.api.i18n.I18nProperties;
7172
import de.symeda.sormas.api.i18n.Strings;
7273
import de.symeda.sormas.api.i18n.Validations;
74+
import de.symeda.sormas.api.infrastructure.PointOfEntryDto;
7375
import de.symeda.sormas.api.infrastructure.PointOfEntryReferenceDto;
7476
import de.symeda.sormas.api.location.LocationDto;
7577
import de.symeda.sormas.api.person.PersonDto;
@@ -526,26 +528,39 @@ private InfrastructureData loadLocalInfrastructure(
526528
}
527529

528530
if (facility != null) {
529-
String facilityName = facility.getCaption();
530-
FacilityReferenceDto localFacility =
531-
facilityFacade.getByNameAndType(facilityName, localDistrict, localCommunity, facilityType, false).stream().findFirst().orElse(null);
532-
533-
if (localFacility == null) {
534-
unmatchedFields.add(I18nProperties.getCaption(Captions.facility) + ": " + facilityName);
531+
String facilityUuid = facility.getUuid();
532+
if (FacilityDto.CONSTANT_FACILITY_UUIDS.contains(facilityUuid)) {
533+
infrastructureData.facility = facilityFacade.getByUuid(facilityUuid).toReference();
535534
} else {
536-
infrastructureData.facility = localFacility;
535+
String facilityName = facility.getCaption();
536+
FacilityReferenceDto localFacility = facilityFacade.getByNameAndType(facilityName, localDistrict, localCommunity, facilityType, false)
537+
.stream()
538+
.findFirst()
539+
.orElse(null);
540+
541+
if (localFacility == null) {
542+
unmatchedFields.add(I18nProperties.getCaption(Captions.facility) + ": " + facilityName);
543+
} else {
544+
infrastructureData.facility = localFacility;
545+
}
537546
}
538547
}
539548

540549
if (pointOfEntry != null) {
541-
String pointOfEntryName = pointOfEntry.getCaption();
542-
PointOfEntryReferenceDto localPointOfEntry =
543-
pointOfEntryFacade.getByName(pointOfEntryName, localDistrict, false).stream().findFirst().orElse(null);
550+
String pointOfEntryUuid = pointOfEntry.getUuid();
544551

545-
if (localPointOfEntry == null) {
546-
unmatchedFields.add(I18nProperties.getCaption(Captions.pointOfEntry) + ": " + pointOfEntryName);
552+
if (PointOfEntryDto.CONSTANT_POE_UUIDS.contains(pointOfEntryUuid)) {
553+
infrastructureData.pointOfEntry = pointOfEntryFacade.getByUuid(pointOfEntryUuid).toReference();
547554
} else {
548-
infrastructureData.pointOfEntry = localPointOfEntry;
555+
String pointOfEntryName = pointOfEntry.getCaption();
556+
PointOfEntryReferenceDto localPointOfEntry =
557+
pointOfEntryFacade.getByName(pointOfEntryName, localDistrict, false).stream().findFirst().orElse(null);
558+
559+
if (localPointOfEntry == null) {
560+
unmatchedFields.add(I18nProperties.getCaption(Captions.pointOfEntry) + ": " + pointOfEntryName);
561+
} else {
562+
infrastructureData.pointOfEntry = localPointOfEntry;
563+
}
549564
}
550565
}
551566

0 commit comments

Comments
 (0)