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

Commit bacfa71

Browse files
SORMAS-Foundation#2993 check for empty ISO code
1 parent c228b04 commit bacfa71

8 files changed

Lines changed: 33 additions & 4 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/i18n/Validations.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ public interface Validations {
5353
String importCommunityAlreadyExists = "importCommunityAlreadyExists";
5454
String importCommunityNotUnique = "importCommunityNotUnique";
5555
String importCountryAlreadyExists = "importCountryAlreadyExists";
56+
String importCountryEmptyIso = "importCountryEmptyIso";
5657
String importDistrictAlreadyExists = "importDistrictAlreadyExists";
5758
String importDistrictNotUnique = "importDistrictNotUnique";
5859
String importEntryCommunityNotInUsersJurisdiction = "importEntryCommunityNotInUsersJurisdiction";

sormas-api/src/main/java/de/symeda/sormas/api/region/CountryDto.java

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

3-
import javax.validation.constraints.NotBlank;
4-
import javax.validation.constraints.NotEmpty;
53
import javax.validation.constraints.Size;
64

75
import de.symeda.sormas.api.EntityDto;
@@ -20,7 +18,6 @@ public class CountryDto extends EntityDto {
2018
private String defaultName;
2119
private String externalId;
2220
@Size(min = 2, max = 3)
23-
@NotBlank
2421
private String isoCode;
2522
@Size(min = 1, max = 3)
2623
private String unoCode;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package de.symeda.sormas.api.utils;
2+
3+
/**
4+
* Thrown when an entity that is supposed to be saved has an empty value which should not be empty
5+
*/
6+
@SuppressWarnings("serial")
7+
public class EmptyValueException extends ValidationRuntimeException {
8+
9+
public EmptyValueException(String message) {
10+
super(message);
11+
}
12+
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ importInvalidDate = Invalid date in column %s; Allowed date formats are dd/MM/yy
4646
importLineTooLong = This line is longer than the header line
4747
importAreaNotUnique = Invalid value %s in column %s; Area name is not unique, make sure there is only one area with this name in the database
4848
importRegionNotUnique = Invalid value %s in column %s; Region name is not unique, make sure there is only one region with this name in the database
49+
importCountryEmptyIso = The ISO code is empty.
4950
importCountryAlreadyExists = The database already contains a country with this ISO code or this UNO code.
5051
importRegionAlreadyExists = The database already contains a region with this name.
5152
importDistrictAlreadyExists = The database already contains a district with this name in the specified region.

sormas-backend/src/main/java/de/symeda/sormas/backend/region/CountryFacadeEjb.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,13 @@
2424
import de.symeda.sormas.api.region.CountryFacade;
2525
import de.symeda.sormas.api.region.CountryIndexDto;
2626
import de.symeda.sormas.api.region.CountryReferenceDto;
27+
import de.symeda.sormas.api.utils.EmptyValueException;
2728
import de.symeda.sormas.api.utils.SortProperty;
2829
import de.symeda.sormas.api.utils.ValidationRuntimeException;
2930
import de.symeda.sormas.backend.util.DtoHelper;
3031
import de.symeda.sormas.backend.util.ModelConstants;
3132
import org.apache.commons.lang3.ObjectUtils;
33+
import org.apache.commons.lang3.StringUtils;
3234

3335
@Stateless(name = "CountryFacade")
3436
public class CountryFacadeEjb implements CountryFacade {
@@ -115,6 +117,10 @@ public long count(CountryCriteria criteria) {
115117

116118
@Override
117119
public String saveCountry(CountryDto dto) throws ValidationRuntimeException {
120+
if (StringUtils.isBlank(dto.getIsoCode())) {
121+
throw new EmptyValueException(I18nProperties.getValidationError(Validations.importCountryEmptyIso));
122+
}
123+
118124
Country country = countryService.getByUuid(dto.getUuid());
119125

120126
if (country == null

sormas-backend/src/main/resources/sql/sormas_schema.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5560,7 +5560,7 @@ CREATE TABLE country (
55605560
archived boolean not null default false,
55615561
defaultname varchar(255),
55625562
externalid varchar(255),
5563-
isocode varchar(3) unique,
5563+
isocode varchar(3) unique not null,
55645564
unocode varchar(3) unique,
55655565
primary key(id)
55665566
);

sormas-backend/src/test/java/de/symeda/sormas/backend/region/CountryFacadeEjbTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.util.Objects;
99

1010
import de.symeda.sormas.api.region.CountryIndexDto;
11+
import de.symeda.sormas.api.utils.EmptyValueException;
1112
import org.junit.Test;
1213

1314
import de.symeda.sormas.api.region.CountryCriteria;
@@ -70,6 +71,13 @@ public void testSaveCountrySuccessful() throws Exception {
7071
assertTrue(entityIsEqualToDto(actual, expected));
7172
}
7273

74+
@Test(expected = EmptyValueException.class)
75+
public void testSaveCountryIsoCodeEmpty() {
76+
CountryDto country = new CountryDto();
77+
country.setDefaultName("Romania");
78+
getCountryFacade().saveCountry(country);
79+
}
80+
7381
@Test(expected = ValidationRuntimeException.class)
7482
public void testSaveCountryIsoCodeExists() {
7583
creator.createCountry("Romania", "ROU", "642");

sormas-ui/src/main/java/de/symeda/sormas/ui/caze/importer/CountryImporter.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import javax.validation.constraints.NotBlank;
1212
import javax.validation.constraints.Size;
1313

14+
import de.symeda.sormas.api.utils.EmptyValueException;
1415
import org.apache.commons.lang3.StringUtils;
1516

1617
import com.opencsv.exceptions.CsvValidationException;
@@ -67,6 +68,9 @@ protected ImportLineResult importDataFromCsvLine(
6768
try {
6869
FacadeProvider.getCountryFacade().saveCountry(newEntityDto);
6970
return ImportLineResult.SUCCESS;
71+
} catch (EmptyValueException e) {
72+
writeImportError(values, e.getMessage());
73+
return ImportLineResult.ERROR;
7074
} catch (ValidationRuntimeException e) {
7175
writeImportError(values, e.getMessage());
7276
return ImportLineResult.DUPLICATE;

0 commit comments

Comments
 (0)