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

Commit 597b1e8

Browse files
authored
SORMAS-Foundation#2910 - Added phone number and email address validations (SORMAS-Foundation#3097)
* SORMAS-Foundation#2910 - Added phone number and email address validations in Case, Contact, Event Participant forms * SORMAS-Foundation#2910 - Removed validation from phone owner and made error message explicit * SORMAS-Foundation#2910 - Extended phone number validation to exclude letters * SORMAS-Foundation#2910 - Created a new phone number validator that exclude letters * SORMAS-Foundation#2910 - Created PhoneNumberValidator that excludes letters and moved existing one UserPhoneNumberValidator
1 parent 7f8691f commit 597b1e8

6 files changed

Lines changed: 73 additions & 18 deletions

File tree

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,11 @@ public interface Validations {
9494
String validCommunity = "validCommunity";
9595
String validDisease = "validDisease";
9696
String validDistrict = "validDistrict";
97+
String validEmailAddress = "validEmailAddress";
9798
String validFacility = "validFacility";
9899
String validFacilityType = "validFacilityType";
99100
String validPerson = "validPerson";
101+
String validPhoneNumber = "validPhoneNumber";
100102
String validPointOfEntry = "validPointOfEntry";
101103
String validRegion = "validRegion";
102104
String validReportDateTime = "validReportDateTime";

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,4 +115,6 @@ sormasToSormasContactExists=This contact already exists
115115
sormasToSormasContactCaseNotExists=The linked case does not exist
116116
sormasToSormasShareInfoMissing = Sender information is missing
117117
sormasToSormasOrganizationIdMissing = Sender organization is is missing
118-
sormasToSormasSenderNameMissing = Sender name is missing
118+
sormasToSormasSenderNameMissing = Sender name is missing
119+
validPhoneNumber = %s must be a valid phone number
120+
validEmailAddress = %s must be a valid email address

sormas-ui/src/main/java/de/symeda/sormas/ui/person/PersonEditForm.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import com.vaadin.v7.ui.DateField;
4545
import com.vaadin.v7.ui.Field;
4646
import com.vaadin.v7.ui.TextField;
47+
import com.vaadin.v7.data.validator.EmailValidator;
4748

4849
import de.symeda.sormas.api.Disease;
4950
import de.symeda.sormas.api.FacadeProvider;
@@ -77,6 +78,7 @@
7778
import de.symeda.sormas.ui.utils.ApproximateAgeValidator;
7879
import de.symeda.sormas.ui.utils.CssStyles;
7980
import de.symeda.sormas.ui.utils.DateComparisonValidator;
81+
import de.symeda.sormas.ui.utils.PhoneNumberValidator;
8082
import de.symeda.sormas.ui.utils.FieldHelper;
8183
import de.symeda.sormas.ui.utils.OutbreakFieldVisibilityChecker;
8284
import de.symeda.sormas.ui.utils.ViewMode;
@@ -253,10 +255,13 @@ protected void addFields() {
253255
PersonDto.OCCUPATION_TYPE,
254256
PersonDto.OCCUPATION_DETAILS,
255257
PersonDto.EDUCATION_TYPE,
256-
PersonDto.EDUCATION_DETAILS,
257-
PersonDto.PHONE,
258-
PersonDto.PHONE_OWNER,
259-
PersonDto.EMAIL_ADDRESS,
258+
PersonDto.EDUCATION_DETAILS);
259+
260+
TextField phoneNumber = addField(PersonDto.PHONE, TextField.class);
261+
addField(PersonDto.PHONE_OWNER, TextField.class);
262+
TextField emailAddress = addField(PersonDto.EMAIL_ADDRESS, TextField.class);
263+
264+
addFields(
260265
PersonDto.PASSPORT_NUMBER,
261266
PersonDto.NATIONAL_HEALTH_ID,
262267
PersonDto.EXTERNAL_ID);
@@ -404,6 +409,14 @@ protected void addFields() {
404409
false,
405410
I18nProperties.getValidationError(Validations.afterDate, burialDate.getCaption(), deathDate.getCaption())));
406411

412+
phoneNumber.addValidator(
413+
new PhoneNumberValidator(
414+
I18nProperties.getValidationError(Validations.validPhoneNumber, phoneNumber.getCaption())));
415+
416+
emailAddress.addValidator(
417+
new EmailValidator(
418+
I18nProperties.getValidationError(Validations.validEmailAddress, emailAddress.getCaption())));
419+
407420
// Update the list of days according to the selected month and year
408421
birthDateYear.addValueChangeListener(e -> {
409422
updateListOfDays((Integer) e.getProperty().getValue(), (Integer) birthDateMonth.getValue());

sormas-ui/src/main/java/de/symeda/sormas/ui/user/UserEditForm.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
import de.symeda.sormas.ui.utils.AbstractEditForm;
5151
import de.symeda.sormas.ui.utils.CssStyles;
5252
import de.symeda.sormas.ui.utils.FieldHelper;
53-
import de.symeda.sormas.ui.utils.PhoneNumberValidator;
53+
import de.symeda.sormas.ui.utils.UserPhoneNumberValidator;
5454

5555
public class UserEditForm extends AbstractEditForm<UserDto> {
5656

@@ -112,7 +112,7 @@ protected void addFields() {
112112
addField(UserDto.LAST_NAME, TextField.class);
113113
addField(UserDto.USER_EMAIL, TextField.class);
114114
TextField phone = addField(UserDto.PHONE, TextField.class);
115-
phone.addValidator(new PhoneNumberValidator(I18nProperties.getValidationError(Validations.phoneNumberValidation)));
115+
phone.addValidator(new UserPhoneNumberValidator(I18nProperties.getValidationError(Validations.phoneNumberValidation)));
116116
addDiseaseField(UserDto.LIMITED_DISEASE, false);
117117

118118
Label userEmailDesc = new Label(I18nProperties.getString(Strings.infoUserEmail));

sormas-ui/src/main/java/de/symeda/sormas/ui/utils/PhoneNumberValidator.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,17 @@
2222
@SuppressWarnings("serial")
2323
public class PhoneNumberValidator extends AbstractValidator<String> {
2424

25-
public PhoneNumberValidator(String errorMessage) {
26-
super(errorMessage);
27-
}
25+
public PhoneNumberValidator(String errorMessage) {
26+
super(errorMessage);
27+
}
2828

29-
@Override
30-
protected boolean isValidValue(String phoneNumber) {
31-
return phoneNumber == null || phoneNumber.isEmpty() || phoneNumber.startsWith("+");
32-
}
29+
@Override
30+
protected boolean isValidValue(String phoneNumber) {
31+
return phoneNumber == null || phoneNumber.isEmpty() || !phoneNumber.matches(".*[a-zA-Z].*");
32+
}
3333

34-
@Override
35-
public Class<String> getType() {
36-
return String.class;
37-
}
34+
@Override
35+
public Class<String> getType() {
36+
return String.class;
37+
}
3838
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
/*******************************************************************************
2+
* SORMAS® - Surveillance Outbreak Response Management & Analysis System
3+
* Copyright © 2016-2018 Helmholtz-Zentrum für Infektionsforschung GmbH (HZI)
4+
*
5+
* This program is free software: you can redistribute it and/or modify
6+
* it under the terms of the GNU General Public License as published by
7+
* the Free Software Foundation, either version 3 of the License, or
8+
* (at your option) any later version.
9+
*
10+
* This program is distributed in the hope that it will be useful,
11+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
* GNU General Public License for more details.
14+
*
15+
* You should have received a copy of the GNU General Public License
16+
* along with this program. If not, see <https://www.gnu.org/licenses/>.
17+
*******************************************************************************/
18+
package de.symeda.sormas.ui.utils;
19+
20+
import com.vaadin.v7.data.validator.AbstractValidator;
21+
22+
@SuppressWarnings("serial")
23+
public class UserPhoneNumberValidator extends AbstractValidator<String> {
24+
25+
public UserPhoneNumberValidator(String errorMessage) {
26+
super(errorMessage);
27+
}
28+
29+
@Override
30+
protected boolean isValidValue(String phoneNumber) {
31+
return phoneNumber == null || phoneNumber.isEmpty() || phoneNumber.startsWith("+");
32+
}
33+
34+
@Override
35+
public Class<String> getType() {
36+
return String.class;
37+
}
38+
}

0 commit comments

Comments
 (0)