1717 *******************************************************************************/
1818package 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+
2037import com .vaadin .data .Binder ;
2138import com .vaadin .data .converter .StringToIntegerConverter ;
2239import com .vaadin .icons .VaadinIcons ;
3047import com .vaadin .ui .Label ;
3148import com .vaadin .ui .TextField ;
3249import com .vaadin .ui .VerticalLayout ;
50+
3351import de .symeda .sormas .api .Disease ;
3452import de .symeda .sormas .api .EntityDto ;
3553import de .symeda .sormas .api .FacadeProvider ;
5775import de .symeda .sormas .api .user .UserReferenceDto ;
5876import de .symeda .sormas .api .utils .DateHelper ;
5977import 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 ;
6081import de .symeda .sormas .api .visit .VisitDto ;
6182import de .symeda .sormas .api .visit .VisitStatus ;
6283import de .symeda .sormas .ui .UserProvider ;
6586import de .symeda .sormas .ui .utils .DateFormatHelper ;
6687import 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-
8589public 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