47 lines
1.5 KiB
Java
47 lines
1.5 KiB
Java
package eu.eudat.logic.utilities.helpers;
|
|
|
|
import eu.eudat.commons.types.descriptiontemplate.RuleEntity;
|
|
import eu.eudat.commons.types.descriptiontemplate.SectionEntity;
|
|
import eu.eudat.models.data.user.components.commons.Rule;
|
|
|
|
import java.util.LinkedList;
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
|
|
public class ModelBuilderCollector {
|
|
|
|
|
|
/**
|
|
* @param sectionEntities
|
|
* @return
|
|
*/
|
|
public static List<Rule> collectRules(List<SectionEntity> sectionEntities) {
|
|
List<Rule> rules = new LinkedList();
|
|
for (SectionEntity sectionEntity : sectionEntities) {
|
|
if (!sectionEntity.getSections().isEmpty()) {
|
|
rules.addAll(collectRules(sectionEntity.getSections()));
|
|
}
|
|
rules.addAll(
|
|
sectionEntity.getFieldSets().stream()
|
|
.map(fieldset -> fieldset.getFields())
|
|
.flatMap(List::stream)
|
|
.map(field -> getRulesFromField(field.getId(), field.getVisibilityRules()))
|
|
.flatMap(List::stream)
|
|
.collect(Collectors.toList()));
|
|
}
|
|
|
|
return rules;
|
|
}
|
|
|
|
private static List<Rule> getRulesFromField(String id, List<RuleEntity> rules) {
|
|
List<Rule> modelRules = new LinkedList();
|
|
for (RuleEntity rule : rules) {
|
|
Rule modelRule = new Rule().fromDefinitionRule(rule);
|
|
modelRule.setSourceField(id);
|
|
modelRules.add(modelRule);
|
|
}
|
|
return modelRules;
|
|
}
|
|
|
|
}
|