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

Commit 15a3049

Browse files
Merge pull request SORMAS-Foundation#3347 from hzi-braunschweig/bug-3260-case_generation_should_respect_disease_and_country_annotations
fixed SORMAS-Foundation#3260
2 parents 8f03159 + 284b4a2 commit 15a3049

1 file changed

Lines changed: 33 additions & 19 deletions

File tree

sormas-ui/src/main/java/de/symeda/sormas/ui/configuration/DevModeView.java

Lines changed: 33 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,23 @@
1717
*******************************************************************************/
1818
package de.symeda.sormas.ui.configuration;
1919

20+
import java.lang.reflect.InvocationTargetException;
21+
import java.lang.reflect.Method;
22+
import java.time.LocalDate;
23+
import java.time.LocalDateTime;
24+
import java.time.ZoneId;
25+
import java.time.temporal.ChronoUnit;
26+
import java.util.ArrayList;
27+
import java.util.Arrays;
28+
import java.util.Date;
29+
import java.util.HashMap;
30+
import java.util.List;
31+
import java.util.Map;
32+
import java.util.Optional;
33+
import java.util.Random;
34+
import java.util.concurrent.ThreadLocalRandom;
35+
import java.util.stream.Collectors;
36+
2037
import com.vaadin.data.Binder;
2138
import com.vaadin.data.converter.StringToIntegerConverter;
2239
import com.vaadin.icons.VaadinIcons;
@@ -30,6 +47,7 @@
3047
import com.vaadin.ui.Label;
3148
import com.vaadin.ui.TextField;
3249
import com.vaadin.ui.VerticalLayout;
50+
3351
import de.symeda.sormas.api.Disease;
3452
import de.symeda.sormas.api.EntityDto;
3553
import de.symeda.sormas.api.FacadeProvider;
@@ -57,6 +75,9 @@
5775
import de.symeda.sormas.api.user.UserReferenceDto;
5876
import de.symeda.sormas.api.utils.DateHelper;
5977
import de.symeda.sormas.api.utils.SortProperty;
78+
import de.symeda.sormas.api.utils.fieldvisibility.FieldVisibilityCheckers;
79+
import de.symeda.sormas.api.utils.fieldvisibility.checkers.CountryFieldVisibilityChecker;
80+
import de.symeda.sormas.api.utils.fieldvisibility.checkers.DiseaseFieldVisibilityChecker;
6081
import de.symeda.sormas.api.visit.VisitDto;
6182
import de.symeda.sormas.api.visit.VisitStatus;
6283
import de.symeda.sormas.ui.UserProvider;
@@ -65,23 +86,6 @@
6586
import de.symeda.sormas.ui.utils.DateFormatHelper;
6687
import de.symeda.sormas.ui.utils.DateHelper8;
6788

68-
import java.lang.reflect.InvocationTargetException;
69-
import java.lang.reflect.Method;
70-
import java.time.LocalDate;
71-
import java.time.LocalDateTime;
72-
import java.time.ZoneId;
73-
import java.time.temporal.ChronoUnit;
74-
import java.util.ArrayList;
75-
import java.util.Arrays;
76-
import java.util.Date;
77-
import java.util.HashMap;
78-
import java.util.List;
79-
import java.util.Map;
80-
import java.util.Optional;
81-
import java.util.Random;
82-
import java.util.concurrent.ThreadLocalRandom;
83-
import java.util.stream.Collectors;
84-
8589
public class DevModeView extends AbstractConfigurationView {
8690

8791
private static final long serialVersionUID = -6589135368637794263L;
@@ -93,6 +97,8 @@ public class DevModeView extends AbstractConfigurationView {
9397
private Binder<CaseGenerationConfig> caseGeneratorConfigBinder = new Binder<>();
9498
private Binder<ContactGenerationConfig> contactGeneratorConfigBinder = new Binder<>();
9599

100+
private FieldVisibilityCheckers fieldVisibilityCheckers;
101+
96102
public DevModeView() {
97103

98104
super(VIEW_NAME);
@@ -337,8 +343,10 @@ private void fillEntity(EntityDto entity, LocalDateTime referenceDateTime) {
337343
Class<? extends EntityDto> entityClass = entity.getClass();
338344
List<Method> setters = setters(entityClass);
339345
for (Method setter : setters) {
340-
if (randomPercent(40)) {
341-
continue; // leave some empty/default
346+
String propertyId = setter.getName().substring(3, 4).toLowerCase() + setter.getName().substring(4);
347+
// leave some empty/default
348+
if (randomPercent(40) || !fieldVisibilityCheckers.isVisible(entityClass, propertyId)) {
349+
continue;
342350
}
343351
Class<?> parameterType = setter.getParameterTypes()[0];
344352
// doesn't make sense
@@ -434,6 +442,9 @@ private void generateCases() {
434442
disease = random(diseases);
435443
}
436444

445+
fieldVisibilityCheckers = new FieldVisibilityCheckers().add(new DiseaseFieldVisibilityChecker(disease))
446+
.add(new CountryFieldVisibilityChecker(FacadeProvider.getConfigFacade().getCountryLocale()));
447+
437448
LocalDateTime referenceDateTime = getReferenceDateTime(i, config.getCaseCount(), baseOffset, disease, config.getStartDate(), daysBetween);
438449

439450
// person
@@ -500,6 +511,9 @@ private void generateContacts() {
500511
disease = random(diseases);
501512
}
502513

514+
fieldVisibilityCheckers = new FieldVisibilityCheckers().add(new DiseaseFieldVisibilityChecker(disease))
515+
.add(new CountryFieldVisibilityChecker(FacadeProvider.getConfigFacade().getCountryLocale()));
516+
503517
LocalDateTime referenceDateTime =
504518
getReferenceDateTime(i, config.getContactCount(), baseOffset, disease, config.getStartDate(), daysBetween);
505519

0 commit comments

Comments
 (0)