argos/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/helpers/ModelBuilderCollector.java

46 lines
1.6 KiB
Java
Raw Normal View History

2018-06-27 12:29:21 +02:00
package eu.eudat.logic.utilities.helpers;
2018-06-27 12:29:21 +02:00
import eu.eudat.models.data.user.components.commons.Rule;
2018-02-16 11:34:02 +01:00
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
public class ModelBuilderCollector {
2018-02-16 11:34:02 +01:00
/**
* @param sections
* @return
*/
2018-06-27 12:29:21 +02:00
public static List<Rule> collectRules(List<eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.Section> sections) {
2018-02-16 11:34:02 +01:00
List<Rule> rules = new LinkedList();
2018-06-27 12:29:21 +02:00
for (eu.eudat.models.data.entities.xmlmodels.datasetprofiledefinition.Section section : sections) {
2018-02-16 11:34:02 +01:00
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;
}
2018-06-27 12:29:21 +02:00
private static List<Rule> getRulesFromField(String id, List<eu.eudat.models.data.components.commons.Rule> rules) {
2018-02-16 11:34:02 +01:00
List<Rule> modelRules = new LinkedList();
2018-06-27 12:29:21 +02:00
for (eu.eudat.models.data.components.commons.Rule rule : rules) {
2018-02-16 11:34:02 +01:00
Rule modelRule = new Rule().fromDefinitionRule(rule);
modelRule.setSourceField(id);
modelRules.add(modelRule);
}
return modelRules;
}
}