155 lines
5.4 KiB
Java
155 lines
5.4 KiB
Java
package utilities.helpers;
|
|
|
|
import java.util.Arrays;
|
|
import java.util.LinkedList;
|
|
import java.util.List;
|
|
import java.util.Set;
|
|
import java.util.stream.Collectors;
|
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
|
|
|
|
import models.admin.components.datasetprofile.FieldSet;
|
|
import models.admin.components.datasetprofile.Group;
|
|
import models.admin.components.datasetprofile.Section;
|
|
import models.admin.composite.DatasetProfile;
|
|
import models.user.components.commons.Rule;
|
|
|
|
public class ModelBuilderCollector {
|
|
|
|
public static List<FieldSet> collectCompositeFields(List<Section> sections){
|
|
List<FieldSet> fieldGroups = new LinkedList();
|
|
for(Section section: sections){
|
|
if(!section.getSections().isEmpty()){
|
|
fieldGroups.addAll(collectCompositeFields(section.getSections()));
|
|
}
|
|
fieldGroups.addAll(
|
|
sections.stream()
|
|
.map(itemSection->itemSection.getFieldGroups())
|
|
.filter(x->x!=null)
|
|
.flatMap(List::stream)
|
|
.map(group->group.getCompositeFields())
|
|
.flatMap(List::stream)
|
|
.collect(Collectors.toList())
|
|
);
|
|
}
|
|
return fieldGroups;
|
|
}
|
|
|
|
public static void mapSections(List<models.admin.components.datasetprofile.Section> sections,List<entities.xmlmodels.modeldefinition.FieldSet> fieldGroups){
|
|
for(Section section: sections){
|
|
if(!section.getSections().isEmpty()){
|
|
mapSections(section.getSections(),fieldGroups);
|
|
}
|
|
for(Group group: section.getFieldGroups()){
|
|
if(!group.getCompositeFields().isEmpty()){
|
|
mapCompositeFields(group.getCompositeFields(),fieldGroups);
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
private static void mapCompositeFields(List<models.admin.components.datasetprofile.FieldSet> fieldSets,List<entities.xmlmodels.modeldefinition.FieldSet> fieldGroups){
|
|
for(FieldSet fieldSet: fieldSets){
|
|
if(!fieldSet.getFields().isEmpty()){
|
|
mapFields(fieldSet.getFields(),fieldGroups);
|
|
}
|
|
for(entities.xmlmodels.modeldefinition.FieldSet fieldModelSet :fieldGroups){
|
|
if(fieldSet.getId()!=null&&fieldSet.getId().equals(fieldModelSet.getId())){
|
|
fieldSet.fromDatabaseDefinition(fieldModelSet);
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
private static void mapFields(List<models.admin.components.datasetprofile.Field> fields,List<entities.xmlmodels.modeldefinition.FieldSet> fieldGroups){
|
|
|
|
for(models.admin.components.datasetprofile.Field fielditem: fields){
|
|
for(entities.xmlmodels.modeldefinition.FieldSet fieldSet:fieldGroups){
|
|
for(entities.xmlmodels.modeldefinition.Field fieldmodelitem : fieldSet.getFields()){
|
|
if(fielditem.getId()!=null&&fielditem.getId().equals(fieldmodelitem.getId())){
|
|
fielditem.fromDatabaseDefinition(fieldmodelitem);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
public static void mapUserSections(List<models.user.components.datasetprofile.Section> sections,List<entities.xmlmodels.modeldefinition.FieldSet> fieldGroups){
|
|
for(models.user.components.datasetprofile.Section section: sections){
|
|
if(!section.getSections().isEmpty()){
|
|
mapUserSections(section.getSections(),fieldGroups);
|
|
}
|
|
for(models.user.components.datasetprofile.Group group: section.getFieldGroups()){
|
|
if(!group.getCompositeFields().isEmpty()){
|
|
mapUserCompositeFields(group.getCompositeFields(),fieldGroups);
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
private static void mapUserCompositeFields(List<models.user.components.datasetprofile.FieldSet> fieldSets,List<entities.xmlmodels.modeldefinition.FieldSet> fieldGroups){
|
|
for(models.user.components.datasetprofile.FieldSet fieldSet: fieldSets){
|
|
if(!fieldSet.getFields().isEmpty()){
|
|
mapUserFields(fieldSet.getFields(),fieldGroups);
|
|
}
|
|
for(entities.xmlmodels.modeldefinition.FieldSet fieldModelSet :fieldGroups){
|
|
if(fieldSet.getId()!=null&&fieldSet.getId().equals(fieldModelSet.getId())){
|
|
fieldSet.fromDatabaseDefinition(fieldModelSet);
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
private static void mapUserFields(List<models.user.components.datasetprofile.Field> fields,List<entities.xmlmodels.modeldefinition.FieldSet> fieldGroups){
|
|
|
|
for(models.user.components.datasetprofile.Field fielditem: fields){
|
|
for(entities.xmlmodels.modeldefinition.FieldSet fieldSet:fieldGroups){
|
|
for(entities.xmlmodels.modeldefinition.Field fieldmodelitem : fieldSet.getFields()){
|
|
if(fielditem.getId()!=null&&fielditem.getId().equals(fieldmodelitem.getId())){
|
|
fielditem.fromDatabaseDefinition(fieldmodelitem);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
public static List<Rule> collectRules(List<entities.xmlmodels.viewstyledefinition.Section> sections){
|
|
List<Rule> rules = new LinkedList();
|
|
rules.addAll(
|
|
sections
|
|
.stream()
|
|
.map(section->section.getFieldGroups())
|
|
.flatMap(List::stream)
|
|
.map(group->group.getFieldSets())
|
|
.flatMap(List::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<Rule> getRulesFromField(String id,List<models.components.commons.Rule> rules){
|
|
List<Rule> modelRules = new LinkedList();
|
|
for(models.components.commons.Rule rule : rules){
|
|
Rule modelRule = new Rule().fromDefinitionRule(rule);
|
|
modelRule.setSourceField(id);
|
|
modelRules.add(modelRule);
|
|
}
|
|
return modelRules;
|
|
}
|
|
|
|
}
|