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

Commit f34d4a5

Browse files
author
barnabartha
committed
SORMAS-Foundation#3368 - add validations to campaign form data
1 parent 608f228 commit f34d4a5

5 files changed

Lines changed: 29 additions & 4 deletions

File tree

sormas-api/src/main/java/de/symeda/sormas/api/campaign/CampaignDto.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public class CampaignDto extends EntityDto {
2121
public static final String START_DATE = "startDate";
2222
public static final String END_DATE = "endDate";
2323
public static final String CREATING_USER = "creatingUser";
24+
public static final String CAMPAIGN_FORM_METAS = "campaignFormMetas";
2425

2526
private String name;
2627
private String description;

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
@@ -17,6 +17,8 @@ public interface Validations {
1717
String campaignDashboardChartIdDoesNotExist = "campaignDashboardChartIdDoesNotExist";
1818
String campaignDashboardChartPercentage = "campaignDashboardChartPercentage";
1919
String campaignDashboardChartValueNull = "campaignDashboardChartValueNull";
20+
String campaignDashboardDataFormValueDuplicate = "campaignDashboardDataFormValueDuplicate";
21+
String campaignDashboardDataFormValueNull = "campaignDashboardDataFormValueNull";
2022
String campaignFormDependingOnNotFound = "campaignFormDependingOnNotFound";
2123
String campaignFormDependingOnValuesMissing = "campaignFormDependingOnValuesMissing";
2224
String campaignFormElementDuplicateId = "campaignFormElementDuplicateId";

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,8 @@ campaignFormTranslationLanguageCodeRequired = All translations must specify a la
112112
campaignFormElementDuplicateId = Field IDs need to be unique, but the campaign form contains at least two fields with ID %s.
113113
errorsInForm = There are errors in the form you tried to save. Please check the fields highlighted in red and make sure to only enter valid values.
114114
campaignFormInvalidIdInListElements = The ID %s in the campaign form list definition is not associated to any element of the form.
115+
campaignDashboardDataFormValueNull = Campaign dashboard data form element is missing!
116+
campaignDashboardDataFormValueDuplicate = Campaign dashboard data form element must be unique!
115117
campaignDashboardChartPercentage = Value must be a number that is multiple of 5!
116118
campaignDashboardChartValueNull = Campaign dashboard elements %s of campaign %s are missing!
117119
campaignDashboardChartIdDoesNotExist = Diagram %s from campaign %s does not exist!

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -264,8 +264,17 @@ protected void validate(CampaignDto campaignDto) {
264264
I18nProperties
265265
.getValidationError(Validations.campaignDashboardChartValueNull, CampaignDashboardElement.WIDTH, campaignDto.getName()));
266266
}
267-
268267
}
268+
269+
campaignDto.getCampaignFormMetas().forEach(campaignFormMetaReferenceDto -> {
270+
if (campaignFormMetaReferenceDto == null || campaignFormMetaReferenceDto.getUuid() == null) {
271+
throw new ValidationRuntimeException(
272+
I18nProperties.getValidationError(
273+
Validations.campaignDashboardDataFormValueNull,
274+
CampaignDto.CAMPAIGN_FORM_METAS,
275+
campaignDto.getName()));
276+
}
277+
});
269278
}
270279
}
271280

sormas-ui/src/main/java/de/symeda/sormas/ui/campaign/campaigns/CampaignFormsGridComponent.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.ArrayList;
44
import java.util.List;
5+
import java.util.UUID;
56

67
import com.vaadin.data.Binder;
78
import com.vaadin.ui.Button;
@@ -12,6 +13,7 @@
1213
import de.symeda.sormas.api.i18n.Captions;
1314
import de.symeda.sormas.api.i18n.I18nProperties;
1415
import de.symeda.sormas.api.i18n.Strings;
16+
import de.symeda.sormas.api.i18n.Validations;
1517
import de.symeda.sormas.ui.utils.AbstractEditableGrid;
1618

1719
@SuppressWarnings("serial")
@@ -29,7 +31,7 @@ public CampaignFormsGridComponent(
2931
protected Button.ClickListener newRowEvent() {
3032
return event -> {
3133
final ArrayList<CampaignFormMetaReferenceDto> gridItems = getItems();
32-
gridItems.add(new CampaignFormMetaReferenceDto());
34+
gridItems.add(new CampaignFormMetaReferenceDto(UUID.randomUUID().toString(), ""));
3335
grid.setItems(gridItems);
3436
};
3537
}
@@ -39,11 +41,20 @@ protected Binder<CampaignFormMetaReferenceDto> addColumnsBinder(List<CampaignFor
3941
final Binder<CampaignFormMetaReferenceDto> binder = new Binder<>();
4042

4143
ComboBox<CampaignFormMetaReferenceDto> formCombo = new ComboBox<>(Strings.entityCampaignDataForm, allElements);
42-
Binder.Binding<CampaignFormMetaReferenceDto, CampaignFormMetaReferenceDto> formBind = binder
43-
.bind(formCombo, campaignFormMetaReferenceDto -> campaignFormMetaReferenceDto, (bindedCampaignFormMeta, selectedCampaignFormMeta) -> {
44+
45+
Binder.Binding<CampaignFormMetaReferenceDto, CampaignFormMetaReferenceDto> formBind = binder.forField(formCombo)
46+
.withValidator(
47+
campaignFormMetaReferenceDto -> campaignFormMetaReferenceDto != null && campaignFormMetaReferenceDto.getUuid() != null,
48+
I18nProperties.getValidationError(Validations.campaignDashboardDataFormValueNull))
49+
.withValidator(campaignFormMetaReferenceDto -> {
50+
ArrayList<CampaignFormMetaReferenceDto> items = getItems();
51+
return !items.contains(campaignFormMetaReferenceDto);
52+
}, I18nProperties.getValidationError(Validations.campaignDashboardDataFormValueDuplicate))
53+
.bind(campaignFormMetaReferenceDto -> campaignFormMetaReferenceDto, (bindedCampaignFormMeta, selectedCampaignFormMeta) -> {
4454
bindedCampaignFormMeta.setUuid(selectedCampaignFormMeta.getUuid());
4555
bindedCampaignFormMeta.setCaption(selectedCampaignFormMeta.getCaption());
4656
});
57+
formCombo.setEmptySelectionAllowed(false);
4758
Grid.Column<CampaignFormMetaReferenceDto, String> formColumn =
4859
grid.addColumn(campaignFormMetaReferenceDto -> campaignFormMetaReferenceDto.getCaption())
4960
.setCaption(I18nProperties.getString(Strings.entityCampaignDataForm));

0 commit comments

Comments
 (0)