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

Commit 44e9333

Browse files
author
barnabartha
committed
Merge branch 'development' into feature-3253-SendSMSToCases
2 parents 19495c0 + b119ed5 commit 44e9333

19 files changed

Lines changed: 350 additions & 96 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/campaign/diagram/CampaignDashboardElement.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
package de.symeda.sormas.api.campaign.diagram;
22

33
import java.io.Serializable;
4-
import java.util.Objects;
54

65
public class CampaignDashboardElement implements Serializable {
76

87
public static String DIAGRAM_ID = "diagramId";
98
public static String TAB_ID = "tabId";
9+
public static String SUB_TAB_ID = "subTabId";
1010
public static String ORDER = "order";
1111
public static String WIDTH = "width";
1212
public static String HEIGHT = "height";
1313

1414
private String diagramId;
1515
private String tabId;
16+
private String subTabId;
1617
private Integer order;
1718
private Integer width;
1819
private Integer height;
@@ -28,6 +29,11 @@ public CampaignDashboardElement(String diagramId, String tabId, Integer order, I
2829
this.height = height;
2930
}
3031

32+
public CampaignDashboardElement(String diagramId, String tabId, String subTabId, Integer order, Integer width, Integer height) {
33+
this(diagramId, tabId, order, width, height);
34+
this.subTabId = subTabId;
35+
}
36+
3137
public String getDiagramId() {
3238
return diagramId;
3339
}
@@ -44,6 +50,14 @@ public void setTabId(String tabId) {
4450
this.tabId = tabId;
4551
}
4652

53+
public String getSubTabId() {
54+
return subTabId;
55+
}
56+
57+
public void setSubTabId(String subTabId) {
58+
this.subTabId = subTabId;
59+
}
60+
4761
public Integer getOrder() {
4862
return order;
4963
}

sormas-api/src/main/java/de/symeda/sormas/api/campaign/diagram/CampaignDiagramDefinitionDto.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.campaign.diagram;
22

33
import de.symeda.sormas.api.EntityDto;
4+
import de.symeda.sormas.api.campaign.CampaignDto;
5+
import de.symeda.sormas.api.utils.DataHelper;
46

57
import java.util.List;
68

@@ -13,6 +15,12 @@ public class CampaignDiagramDefinitionDto extends EntityDto {
1315
private List<CampaignDiagramSeries> campaignSeriesTotal;
1416
private boolean percentageDefault;
1517

18+
public static CampaignDiagramDefinitionDto build() {
19+
CampaignDiagramDefinitionDto campaignDiagramDefinition = new CampaignDiagramDefinitionDto();
20+
campaignDiagramDefinition.setUuid(DataHelper.createUuid());
21+
return campaignDiagramDefinition;
22+
}
23+
1624
public String getDiagramId() {
1725
return diagramId;
1826
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ public interface Captions {
157157
String campaignDashboardChartHeight = "campaignDashboardChartHeight";
158158
String campaignDashboardChartWidth = "campaignDashboardChartWidth";
159159
String campaignDashboardOrder = "campaignDashboardOrder";
160+
String campaignDashboardSubTabName = "campaignDashboardSubTabName";
160161
String campaignDashboardTabName = "campaignDashboardTabName";
161162
String CampaignFormData_area = "CampaignFormData.area";
162163
String CampaignFormData_campaign = "CampaignFormData.campaign";

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/captions.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ campaignAdditionalForm=Add form
201201
campaignAdditionalChart=Add chart
202202
campaignDashboardChart=Campaign data chart
203203
campaignDashboardTabName=Tab name
204+
campaignDashboardSubTabName=Sub-tab name
204205
campaignDashboardChartWidth=Width in %
205206
campaignDashboardChartHeight=Height in %
206207
campaignDashboardOrder=Order

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: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
import java.util.Collections;
66
import java.util.Comparator;
77
import java.util.Date;
8+
import java.util.HashMap;
89
import java.util.List;
10+
import java.util.Map;
911
import java.util.Set;
1012
import java.util.stream.Collectors;
1113

@@ -200,9 +202,12 @@ public void validate(CampaignReferenceDto campaignReferenceDto) {
200202
validate(getByUuid(campaignReferenceDto.getUuid()));
201203
}
202204

203-
private void validate(CampaignDto campaignDto) {
205+
protected void validate(CampaignDto campaignDto) {
204206
final List<CampaignDashboardElement> campaignDashboardElements = campaignDto.getCampaignDashboardElements();
205207
if (campaignDashboardElements != null) {
208+
209+
final Map<String, Boolean> oneSubTabIsNotNullOrEmptyMap = new HashMap<>();
210+
206211
for (CampaignDashboardElement cde : campaignDashboardElements) {
207212
final String diagramId = cde.getDiagramId();
208213
if (diagramId == null) {
@@ -212,8 +217,8 @@ private void validate(CampaignDto campaignDto) {
212217
CampaignDashboardElement.DIAGRAM_ID,
213218
campaignDto.getName()));
214219
} else if (!campaignDiagramDefinitionFacade.exists(diagramId)) {
215-
throw new ValidationRuntimeException(
216-
I18nProperties.getValidationError(Validations.campaignDashboardChartIdDoesNotExist, diagramId, campaignDto.getName()));
220+
throw new ValidationRuntimeException(
221+
I18nProperties.getValidationError(Validations.campaignDashboardChartIdDoesNotExist, diagramId, campaignDto.getName()));
217222
}
218223

219224
if (cde.getTabId() == null) {
@@ -222,6 +227,26 @@ private void validate(CampaignDto campaignDto) {
222227
.getValidationError(Validations.campaignDashboardChartValueNull, CampaignDashboardElement.TAB_ID, campaignDto.getName()));
223228
}
224229

230+
if (cde.getSubTabId() == null || cde.getSubTabId().isEmpty()) {
231+
if (oneSubTabIsNotNullOrEmptyMap.containsKey(cde.getTabId()) && oneSubTabIsNotNullOrEmptyMap.get(cde.getTabId())) {
232+
throw new ValidationRuntimeException(
233+
I18nProperties.getValidationError(
234+
Validations.campaignDashboardChartValueNull,
235+
CampaignDashboardElement.SUB_TAB_ID,
236+
campaignDto.getName()));
237+
}
238+
oneSubTabIsNotNullOrEmptyMap.put(cde.getTabId(), false);
239+
} else {
240+
if (oneSubTabIsNotNullOrEmptyMap.containsKey(cde.getTabId()) && !oneSubTabIsNotNullOrEmptyMap.get(cde.getTabId())) {
241+
throw new ValidationRuntimeException(
242+
I18nProperties.getValidationError(
243+
Validations.campaignDashboardChartValueNull,
244+
CampaignDashboardElement.SUB_TAB_ID,
245+
campaignDto.getName()));
246+
}
247+
oneSubTabIsNotNullOrEmptyMap.put(cde.getTabId(), true);
248+
}
249+
225250
if (cde.getOrder() == null) {
226251
throw new ValidationRuntimeException(
227252
I18nProperties
@@ -239,8 +264,17 @@ private void validate(CampaignDto campaignDto) {
239264
I18nProperties
240265
.getValidationError(Validations.campaignDashboardChartValueNull, CampaignDashboardElement.WIDTH, campaignDto.getName()));
241266
}
242-
243267
}
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+
});
244278
}
245279
}
246280

@@ -292,6 +326,9 @@ public List<CampaignDashboardElement> getCampaignDashboardElements(String campai
292326
if (cde.getTabId() == null) {
293327
cde.setTabId(StringUtils.EMPTY);
294328
}
329+
if (cde.getSubTabId() == null) {
330+
cde.setSubTabId(StringUtils.EMPTY);
331+
}
295332
if (cde.getOrder() == null) {
296333
cde.setOrder(0);
297334
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ public Predicate createCriteriaFilter(CampaignFormDataCriteria criteria, Criteri
6363

6464
if (criteria.getCampaign() != null) {
6565
filter = and(cb, filter, cb.equal(campaignJoin.get(Campaign.UUID), criteria.getCampaign().getUuid()));
66+
} else {
67+
filter = and(cb, filter, cb.or(cb.equal(campaignJoin.get(Campaign.ARCHIVED), false), cb.isNull(campaignJoin.get(Campaign.ARCHIVED))));
6668
}
6769
if (criteria.getCampaignFormMeta() != null) {
6870
filter = and(cb, filter, cb.equal(campaignFormJoin.get(CampaignFormMeta.UUID), criteria.getCampaignFormMeta().getUuid()));

sormas-backend/src/test/java/de/symeda/sormas/backend/TestDataCreator.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
import de.symeda.sormas.api.campaign.CampaignReferenceDto;
3838
import de.symeda.sormas.api.campaign.data.CampaignFormDataDto;
3939
import de.symeda.sormas.api.campaign.data.CampaignFormDataEntry;
40+
import de.symeda.sormas.api.campaign.diagram.CampaignDiagramDefinitionDto;
41+
import de.symeda.sormas.api.campaign.diagram.DiagramType;
4042
import de.symeda.sormas.api.campaign.form.CampaignFormMetaDto;
4143
import de.symeda.sormas.api.campaign.form.CampaignFormMetaReferenceDto;
4244
import de.symeda.sormas.api.caze.CaseClassification;
@@ -975,6 +977,15 @@ public CampaignDto createCampaign(UserDto user) {
975977
return campaign;
976978
}
977979

980+
public CampaignDiagramDefinitionDto createCampaignDiagramDefinition(String diagramId, String diagramCaption){
981+
CampaignDiagramDefinitionDto campaignDiagramDefinition = CampaignDiagramDefinitionDto.build();
982+
campaignDiagramDefinition.setDiagramType(DiagramType.COLUMN);
983+
campaignDiagramDefinition.setDiagramId(diagramId);
984+
campaignDiagramDefinition.setDiagramCaption(diagramCaption);
985+
986+
return campaignDiagramDefinition;
987+
}
988+
978989
public CampaignFormMetaDto createCampaignForm(CampaignDto campaign) throws IOException {
979990

980991
CampaignFormMetaDto campaignForm;

0 commit comments

Comments
 (0)