package eu.eudat.utilities.helpers; import java.util.LinkedList; import java.util.List; import java.util.stream.Collectors; import eu.eudat.models.admin.components.datasetprofile.FieldSet; import eu.eudat.models.admin.components.datasetprofile.Section; import eu.eudat.models.user.components.commons.Rule; public class ModelBuilderCollector { /** * @param sections * @return */ public static List collectRules(List sections){ List rules = new LinkedList(); for(eu.eudat.entities.xmlmodels.datasetprofiledefinition.Section section: sections){ if(!section.getSections().isEmpty()){ rules.addAll(collectRules(section.getSections())); } rules.addAll( section.getFieldSets().stream() .map(fieldset->fieldset.getFields()) .flatMap(List::stream) .map(field->getRulesFromField(field.getId(),field.getVisible() .getRules())) .flatMap(List::stream) .collect(Collectors.toList())); } return rules; } private static List getRulesFromField(String id,List rules){ List modelRules = new LinkedList(); for(eu.eudat.models.components.commons.Rule rule : rules){ Rule modelRule = new Rule().fromDefinitionRule(rule); modelRule.setSourceField(id); modelRules.add(modelRule); } return modelRules; } }