From cdfa350e82cb13494abdffe6921390af2fd68979 Mon Sep 17 00:00:00 2001 From: annabakouli Date: Fri, 1 Dec 2017 16:09:46 +0200 Subject: [PATCH] model serialization workflow between admin and user --- .../src/app/models/DataField/DataField.ts | 6 + dmp-admin/src/app/services/rest-base.ts | 2 +- .../src/main/java/managers/AdminManager.java | 8 +- .../src/main/java/managers/UserManager.java | 23 +++ .../components/datasetprofile/Field.java | 2 +- .../components/datasetprofile/FieldSet.java | 85 ++++++++++ .../components/datasetprofile/Group.java | 118 +++++++++++++ .../components/datasetprofile/Section.java | 92 +++++++++++ .../{ => admin}/composite/DatasetProfile.java | 5 +- .../java/models/components/commons/Rule.java | 3 +- .../models/user/components/commons/Rule.java | 43 +++++ .../user/components/datasetprofile/Field.java | 155 ++++++++++++++++++ .../components/datasetprofile/FieldSet.java | 2 +- .../components/datasetprofile/Group.java | 2 +- .../components/datasetprofile/Section.java | 2 +- .../models/user/composite/DatasetProfile.java | 42 +++++ .../src/main/java/rest/entities/Admin.java | 6 +- .../entities/DatasetProfileController.java | 42 +++++ .../java/utilities/builders/ModelBuilder.java | 3 + .../helpers/ModelBuilderCollector.java | 89 +++++++++- .../autocomplete-remote.component.html | 9 +- ...amic-field-boolean-decision.component.html | 2 + .../dynamic-field-checkbox.html | 3 +- .../dynamic-field-dropdown.html | 2 + .../dynamic-field-radiobox.component.html | 2 + .../dynamic-field-textbox/field-textbox.html | 2 + .../dynamic-form-field.component.html | 6 +- 27 files changed, 726 insertions(+), 30 deletions(-) create mode 100644 dmp-admin/src/app/models/DataField/DataField.ts create mode 100644 dmp-backend/src/main/java/managers/UserManager.java rename dmp-backend/src/main/java/models/{ => admin}/components/datasetprofile/Field.java (98%) create mode 100644 dmp-backend/src/main/java/models/admin/components/datasetprofile/FieldSet.java create mode 100644 dmp-backend/src/main/java/models/admin/components/datasetprofile/Group.java create mode 100644 dmp-backend/src/main/java/models/admin/components/datasetprofile/Section.java rename dmp-backend/src/main/java/models/{ => admin}/composite/DatasetProfile.java (91%) create mode 100644 dmp-backend/src/main/java/models/user/components/commons/Rule.java create mode 100644 dmp-backend/src/main/java/models/user/components/datasetprofile/Field.java rename dmp-backend/src/main/java/models/{ => user}/components/datasetprofile/FieldSet.java (98%) rename dmp-backend/src/main/java/models/{ => user}/components/datasetprofile/Group.java (98%) rename dmp-backend/src/main/java/models/{ => user}/components/datasetprofile/Section.java (98%) create mode 100644 dmp-backend/src/main/java/models/user/composite/DatasetProfile.java create mode 100644 dmp-backend/src/main/java/rest/entities/DatasetProfileController.java diff --git a/dmp-admin/src/app/models/DataField/DataField.ts b/dmp-admin/src/app/models/DataField/DataField.ts new file mode 100644 index 000000000..bc252285f --- /dev/null +++ b/dmp-admin/src/app/models/DataField/DataField.ts @@ -0,0 +1,6 @@ +import { FormGenerator } from '../interfaces/FormGenerator'; +import { Serializable } from '../interfaces/Serializable'; +import { FormGroup } from '@angular/forms' +export abstract class DataField implements Serializable,FormGenerator{ + +} \ No newline at end of file diff --git a/dmp-admin/src/app/services/rest-base.ts b/dmp-admin/src/app/services/rest-base.ts index f880af294..bc80e0cae 100644 --- a/dmp-admin/src/app/services/rest-base.ts +++ b/dmp-admin/src/app/services/rest-base.ts @@ -18,7 +18,7 @@ export class RestBase { /* */ protocol: string = "http"; - hostname: string = "dionysus.di.uoa.gr"; + hostname: string = "localhost"; port: number = 8080; webappname: string = "dmp-backend"; restpath: string = "rest"; diff --git a/dmp-backend/src/main/java/managers/AdminManager.java b/dmp-backend/src/main/java/managers/AdminManager.java index 648f1120b..b47e31adc 100644 --- a/dmp-backend/src/main/java/managers/AdminManager.java +++ b/dmp-backend/src/main/java/managers/AdminManager.java @@ -13,8 +13,8 @@ import entities.DatasetProfileViewstyle; import entities.xmlmodels.modeldefinition.FieldGroup; import entities.xmlmodels.viewstyledefinition.Section; import entities.xmlmodels.viewstyledefinition.ViewStyleModel; -import models.components.datasetprofile.FieldSet; -import models.composite.DatasetProfile; +import models.admin.components.datasetprofile.FieldSet; +import models.admin.composite.DatasetProfile; import utilities.builders.ModelBuilder; import utilities.builders.XmlBuilder; import utilities.helpers.ModelBuilderCollector; @@ -52,7 +52,7 @@ public class AdminManager { return datasetProfileViewstyle; } - public static models.composite.DatasetProfile generateDatasetProfileModel(entities.DatasetProfile profile){ + public static models.admin.composite.DatasetProfile generateDatasetProfileModel(entities.DatasetProfile profile){ Document viewStyleDoc = XmlBuilder.fromXml(profile.getViewstyle().getDefinition()); Element root = (Element)viewStyleDoc.getDocumentElement(); entities.xmlmodels.viewstyledefinition.ViewStyleModel viewstyle= new entities.xmlmodels.viewstyledefinition.ViewStyleModel().fromXml(root); @@ -61,7 +61,7 @@ public class AdminManager { root = (Element)profileDoc.getDocumentElement(); entities.xmlmodels.modeldefinition.FieldGroup fieldGroup = new entities.xmlmodels.modeldefinition.FieldGroup().fromXml(root); - models.composite.DatasetProfile datasetprofile = new models.composite.DatasetProfile(); + models.admin.composite.DatasetProfile datasetprofile = new models.admin.composite.DatasetProfile(); datasetprofile.buildProfile(fieldGroup, viewstyle); return datasetprofile; diff --git a/dmp-backend/src/main/java/managers/UserManager.java b/dmp-backend/src/main/java/managers/UserManager.java new file mode 100644 index 000000000..5d1f76f46 --- /dev/null +++ b/dmp-backend/src/main/java/managers/UserManager.java @@ -0,0 +1,23 @@ +package managers; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import utilities.builders.XmlBuilder; + +public class UserManager { + public static models.user.composite.DatasetProfile generateDatasetProfileModel(entities.DatasetProfile profile){ + Document viewStyleDoc = XmlBuilder.fromXml(profile.getViewstyle().getDefinition()); + Element root = (Element)viewStyleDoc.getDocumentElement(); + entities.xmlmodels.viewstyledefinition.ViewStyleModel viewstyle= new entities.xmlmodels.viewstyledefinition.ViewStyleModel().fromXml(root); + + Document profileDoc = XmlBuilder.fromXml(profile.getDefinition()); + root = (Element)profileDoc.getDocumentElement(); + entities.xmlmodels.modeldefinition.FieldGroup fieldGroup = new entities.xmlmodels.modeldefinition.FieldGroup().fromXml(root); + + models.user.composite.DatasetProfile datasetprofile = new models.user.composite.DatasetProfile(); + datasetprofile.buildProfile(fieldGroup, viewstyle); + + return datasetprofile; + } +} diff --git a/dmp-backend/src/main/java/models/components/datasetprofile/Field.java b/dmp-backend/src/main/java/models/admin/components/datasetprofile/Field.java similarity index 98% rename from dmp-backend/src/main/java/models/components/datasetprofile/Field.java rename to dmp-backend/src/main/java/models/admin/components/datasetprofile/Field.java index 49af20a28..6801a59e2 100644 --- a/dmp-backend/src/main/java/models/components/datasetprofile/Field.java +++ b/dmp-backend/src/main/java/models/admin/components/datasetprofile/Field.java @@ -1,4 +1,4 @@ -package models.components.datasetprofile; +package models.admin.components.datasetprofile; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/dmp-backend/src/main/java/models/admin/components/datasetprofile/FieldSet.java b/dmp-backend/src/main/java/models/admin/components/datasetprofile/FieldSet.java new file mode 100644 index 000000000..95253df40 --- /dev/null +++ b/dmp-backend/src/main/java/models/admin/components/datasetprofile/FieldSet.java @@ -0,0 +1,85 @@ +package models.admin.components.datasetprofile; + +import java.util.LinkedList; +import java.util.List; + +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; + +import models.components.commons.Multiplicity; +import utilities.ModelDefinition; +import utilities.ViewStyleDefinition; +import utilities.builders.ModelBuilder; + +public class FieldSet implements ModelDefinition,ViewStyleDefinition{ + private String id; + private int ordinal; + private Multiplicity multiplicity; + private List fields; + + public List getFields() { + return fields; + } + + public void setFields(List fields) { + this.fields = fields; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public int getOrdinal() { + return ordinal; + } + + public void setOrdinal(int ordinal) { + this.ordinal = ordinal; + } + + public Multiplicity getMultiplicity() { + return multiplicity; + } + + public void setMultiplicity(Multiplicity multiplicity) { + this.multiplicity = multiplicity; + } + + @Override + public entities.xmlmodels.modeldefinition.FieldSet toDatabaseDefinition(entities.xmlmodels.modeldefinition.FieldSet fieldSet) { + fieldSet.setId(this.id); + fieldSet.setOrdinal(this.ordinal); + List modelfields = new ModelBuilder().toModelDefinition(this.fields, entities.xmlmodels.modeldefinition.Field.class); + fieldSet.setFields(modelfields); + fieldSet.setMultiplicity(this.multiplicity); + return fieldSet; + } + + @Override + public void fromDatabaseDefinition(entities.xmlmodels.modeldefinition.FieldSet item) { + this.id = item.getId(); + this.ordinal = item.getOrdinal(); + this.multiplicity = item.getMultiplicity(); + } + + @Override + public entities.xmlmodels.viewstyledefinition.FieldSet toDatabaseDefinition(entities.xmlmodels.viewstyledefinition.FieldSet item) { + List viewStylefields = new ModelBuilder().toViewStyleDefinition(this.fields, entities.xmlmodels.viewstyledefinition.Field.class); + item.setFields(viewStylefields); + item.setId(this.id); + item.setOrdinal(this.ordinal); + return item; + } + + @Override + public void fromDatabaseDefinition(entities.xmlmodels.viewstyledefinition.FieldSet item) { + this.fields = new ModelBuilder().fromViewStyleDefinition(item.getFields(), Field.class); + this.id = item.getId(); + this.ordinal = item.getOrdinal(); + } + + +} diff --git a/dmp-backend/src/main/java/models/admin/components/datasetprofile/Group.java b/dmp-backend/src/main/java/models/admin/components/datasetprofile/Group.java new file mode 100644 index 000000000..fbdf009d1 --- /dev/null +++ b/dmp-backend/src/main/java/models/admin/components/datasetprofile/Group.java @@ -0,0 +1,118 @@ +package models.admin.components.datasetprofile; + +import java.util.List; + +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper; + +import entities.xmlmodels.viewstyledefinition.FieldGroup; +import utilities.ModelDefinition; +import utilities.ViewStyleDefinition; +import utilities.builders.ModelBuilder; + +public class Group implements ModelDefinition,ViewStyleDefinition{ + private String id; + private String title; + private String section; + private String value; + private int ordinal; + private String description; + private String extendedDescription; + private boolean defaultVisibility; + private int page; + private List
compositeFields; + + public String getId() { + return id; + } + public void setId(String id) { + this.id = id; + } + public String getTitle() { + return title; + } + public void setTitle(String title) { + this.title = title; + } + public String getSection() { + return section; + } + public void setSection(String section) { + this.section = section; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + public String getDescription() { + return description; + } + public void setDescription(String description) { + this.description = description; + } + public String getExtendedDescription() { + return extendedDescription; + } + public void setExtendedDescription(String extendedDescription) { + this.extendedDescription = extendedDescription; + } + public boolean isDefaultVisibility() { + return defaultVisibility; + } + public void setDefaultVisibility(boolean defaultVisibility) { + this.defaultVisibility = defaultVisibility; + } + public int getPage() { + return page; + } + public void setPage(int page) { + this.page = page; + } + public List
getCompositeFields() { + return compositeFields; + } + public void setCompositeFields(List
compositeFields) { + this.compositeFields = compositeFields; + } + + public int getOrdinal() { + return ordinal; + } + public void setOrdinal(int ordinal) { + this.ordinal = ordinal; + } + @Override + public entities.xmlmodels.viewstyledefinition.FieldGroup toDatabaseDefinition(FieldGroup item) { + item.setDefaultVisibility(this.defaultVisibility); + item.setDescription(this.description); + item.setExtendedDescription(this.extendedDescription); + item.setFieldSets(new ModelBuilder().toViewStyleDefinition(this.compositeFields, entities.xmlmodels.viewstyledefinition.FieldSet.class)); + item.setId(this.id); + item.setOrdinal(this.ordinal); + item.setPage(this.page); + item.setTitle(this.title); + return item; + } + @Override + public void fromDatabaseDefinition(FieldGroup item) { + this.defaultVisibility = item.isDefaultVisibility(); + this.description = item.getDescription(); + this.extendedDescription = item.getExtendedDescription(); + this.compositeFields = new ModelBuilder().fromViewStyleDefinition(item.getFieldSets(), FieldSet.class); + this.id = item.getId(); + this.ordinal = item.getOrdinal(); + this.page = item.getPage(); + this.title = item.getTitle(); + } + @Override + public entities.xmlmodels.modeldefinition.FieldGroup toDatabaseDefinition(entities.xmlmodels.modeldefinition.FieldGroup item) { + item.setFieldSets(new ModelBuilder().toModelDefinition(this.compositeFields, entities.xmlmodels.modeldefinition.FieldSet.class)); + return item; + } + @Override + public void fromDatabaseDefinition(entities.xmlmodels.modeldefinition.FieldGroup item) { + // TODO Auto-generated method stub + + } +} diff --git a/dmp-backend/src/main/java/models/admin/components/datasetprofile/Section.java b/dmp-backend/src/main/java/models/admin/components/datasetprofile/Section.java new file mode 100644 index 000000000..c5fb60326 --- /dev/null +++ b/dmp-backend/src/main/java/models/admin/components/datasetprofile/Section.java @@ -0,0 +1,92 @@ +package models.admin.components.datasetprofile; + +import java.util.List; + +import utilities.ModelDefinition; +import utilities.ViewStyleDefinition; +import utilities.builders.ModelBuilder; + +public class Section implements ViewStyleDefinition{ + private List
sections; + private List fieldGroups; + private Boolean defaultVisibility; + private int page; + private int ordinal; + private String id; + private String title; + private String description; + public List
getSections() { + return sections; + } + public void setSections(List
sections) { + this.sections = sections; + } + public List getFieldGroups() { + return fieldGroups; + } + public void setFieldGroups(List fieldGroups) { + this.fieldGroups = fieldGroups; + } + public Boolean getDefaultVisibility() { + return defaultVisibility; + } + public void setDefaultVisibility(Boolean defaultVisibility) { + this.defaultVisibility = defaultVisibility; + } + public int getPage() { + return page; + } + public void setPage(int page) { + this.page = page; + } + public String getId() { + return id; + } + public void setId(String id) { + this.id = id; + } + public String getTitle() { + return title; + } + public void setTitle(String title) { + this.title = title; + } + public String getDescription() { + return description; + } + public void setDescription(String description) { + this.description = description; + } + + public int getOrdinal() { + return ordinal; + } + public void setOrdinal(int ordinal) { + this.ordinal = ordinal; + } + @Override + public entities.xmlmodels.viewstyledefinition.Section toDatabaseDefinition(entities.xmlmodels.viewstyledefinition.Section item) { + item.setDefaultVisibility(this.defaultVisibility); + item.setDescription(this.description); + if(this.fieldGroups!=null)item.setFieldGroups(new ModelBuilder().toViewStyleDefinition(this.fieldGroups, entities.xmlmodels.viewstyledefinition.FieldGroup.class)); + item.setId(this.id); + item.setOrdinal(this.ordinal); + item.setPage(this.page); + if(this.sections!=null)item.setSections(new ModelBuilder().toViewStyleDefinition(this.sections, entities.xmlmodels.viewstyledefinition.Section.class)); + item.setTitle(this.title); + return item; + } + @Override + public void fromDatabaseDefinition(entities.xmlmodels.viewstyledefinition.Section item) { + this.defaultVisibility = item.isDefaultVisibility(); + this.description = item.getDescription(); + this.fieldGroups = new ModelBuilder().fromViewStyleDefinition(item.getFieldGroups(),Group.class); + this.id = item.getId(); + this.ordinal = item.getOrdinal(); + this.page = item.getPage(); + this.sections = new ModelBuilder().fromViewStyleDefinition(item.getSections(),Section.class); + this.title = item.getTitle(); + } + + +} diff --git a/dmp-backend/src/main/java/models/composite/DatasetProfile.java b/dmp-backend/src/main/java/models/admin/composite/DatasetProfile.java similarity index 91% rename from dmp-backend/src/main/java/models/composite/DatasetProfile.java rename to dmp-backend/src/main/java/models/admin/composite/DatasetProfile.java index ffd4166cd..9c613bae6 100644 --- a/dmp-backend/src/main/java/models/composite/DatasetProfile.java +++ b/dmp-backend/src/main/java/models/admin/composite/DatasetProfile.java @@ -1,11 +1,12 @@ -package models.composite; +package models.admin.composite; -import models.components.datasetprofile.*; import utilities.builders.ModelBuilder; import utilities.helpers.ModelBuilderCollector; import java.util.List; +import models.admin.components.datasetprofile.*; + public class DatasetProfile { private List
sections; diff --git a/dmp-backend/src/main/java/models/components/commons/Rule.java b/dmp-backend/src/main/java/models/components/commons/Rule.java index 6e297d0e5..a4d78c024 100644 --- a/dmp-backend/src/main/java/models/components/commons/Rule.java +++ b/dmp-backend/src/main/java/models/components/commons/Rule.java @@ -3,9 +3,10 @@ package models.components.commons; import org.w3c.dom.Document; import org.w3c.dom.Element; +import entities.xmlmodels.modeldefinition.DatabaseModelDefinition; import utilities.XmlSerializable; -public class Rule implements XmlSerializable{ +public class Rule implements XmlSerializable,DatabaseModelDefinition{ private String ruleType; private String target; private String ruleStyle; diff --git a/dmp-backend/src/main/java/models/user/components/commons/Rule.java b/dmp-backend/src/main/java/models/user/components/commons/Rule.java new file mode 100644 index 000000000..c538a0d3f --- /dev/null +++ b/dmp-backend/src/main/java/models/user/components/commons/Rule.java @@ -0,0 +1,43 @@ +package models.user.components.commons; + +import utilities.ModelDefinition; + +public class Rule { + private String sourceField; + private String targetField; + private String requiredValue; + private String type; + + public String getSourceField() { + return sourceField; + } + public void setSourceField(String sourceField) { + this.sourceField = sourceField; + } + public String getTargetField() { + return targetField; + } + public void setTargetField(String targetField) { + this.targetField = targetField; + } + public String getRequiredValue() { + return requiredValue; + } + public void setRequiredValue(String requiredValue) { + this.requiredValue = requiredValue; + } + public String getType() { + return type; + } + public void setType(String type) { + this.type = type; + } + + public Rule fromDefinitionRule(models.components.commons.Rule rule){ + this.targetField = rule.getTarget(); + this.requiredValue = rule.getValue(); + this.type = rule.getRuleStyle(); + return this; + } + +} diff --git a/dmp-backend/src/main/java/models/user/components/datasetprofile/Field.java b/dmp-backend/src/main/java/models/user/components/datasetprofile/Field.java new file mode 100644 index 000000000..6d9806628 --- /dev/null +++ b/dmp-backend/src/main/java/models/user/components/datasetprofile/Field.java @@ -0,0 +1,155 @@ +package models.user.components.datasetprofile; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty; +import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement; + +import models.components.commons.DefaultValue; +import models.components.commons.Multiplicity; +import models.components.commons.ViewStyle; +import models.components.commons.Visibility; +import utilities.ModelDefinition; +import utilities.ViewStyleDefinition; +import utilities.builders.ModelBuilder; + +public class Field implements ModelDefinition,ViewStyleDefinition{ + private String id; + private int ordinal; + private String title; + private String value; + private String description; + private String extendedDescription; + private ViewStyle viewStyle; + private String datatype; + private boolean defaultVisibility; + private int page; + private DefaultValue defaultValue; + private Multiplicity multiplicity; + private Object data; + + public String getId() { + return id; + } + public void setId(String id) { + this.id = id; + } + + public int getOrdinal(){ + return ordinal; + } + + public void setOrdinal(int ordinal){ + this.ordinal = ordinal; + } + public String getTitle() { + return title; + } + public void setTitle(String title) { + this.title = title; + } + public String getValue() { + return value; + } + public void setValue(String value) { + this.value = value; + } + public String getDescription() { + return description; + } + public void setDescription(String description) { + this.description = description; + } + public String getExtendedDescription() { + return extendedDescription; + } + public void setExtendedDescription(String extendedDescription) { + this.extendedDescription = extendedDescription; + } + public ViewStyle getViewStyle() { + return viewStyle; + } + public void setViewStyle(ViewStyle viewStyle) { + this.viewStyle = viewStyle; + } + public boolean isDefaultVisibility() { + return defaultVisibility; + } + public void setDefaultVisibility(boolean defaultVisibility) { + this.defaultVisibility = defaultVisibility; + } + public int getPage() { + return page; + } + public void setPage(int page) { + this.page = page; + } + + public DefaultValue getDefaultValue() { + return defaultValue; + } + public void setDefaultValue(DefaultValue defaultValue) { + this.defaultValue = defaultValue; + } + public String getDatatype() { + return datatype; + } + public void setDatatype(String datatype) { + this.datatype = datatype; + } + + public Multiplicity getMultiplicity() { + return multiplicity; + } + public void setMultiplicity(Multiplicity multiplicity) { + this.multiplicity = multiplicity; + } + + public Object getData() { + return data; + } + public void setData(Object data) { + this.data = data; + } + + + @Override + public entities.xmlmodels.modeldefinition.Field toDatabaseDefinition(entities.xmlmodels.modeldefinition.Field field) { + field.setDatatype(this.datatype); + field.setDefaultValue(this.defaultValue); + field.setId(this.id); + field.setMultiplicity(this.multiplicity); + field.setOrdinal(this.ordinal); + return field; + } + @Override + public void fromDatabaseDefinition(entities.xmlmodels.modeldefinition.Field item) { + this.datatype = item.getDatatype(); + this.defaultValue = item.getDefaultValue(); + this.multiplicity = item.getMultiplicity(); + } + @Override + public entities.xmlmodels.viewstyledefinition.Field toDatabaseDefinition(entities.xmlmodels.viewstyledefinition.Field field) { + field.setDefaultVisibility(this.defaultVisibility); + field.setDescription(this.description); + field.setExtendedDescription(this.extendedDescription); + field.setId(this.id); + field.setOrdinal(this.ordinal); + field.setTitle(this.title); + field.setViewStyle(this.viewStyle); + field.setData(new ModelBuilder().toFieldData(data, this.viewStyle.getRenderStyle())); + return field; + } + @Override + public void fromDatabaseDefinition(entities.xmlmodels.viewstyledefinition.Field item) { + this.defaultVisibility = item.isDefaultVisibility(); + this.description = item.getDescription(); + this.extendedDescription = item.getExtendedDescription(); + this.id = item.getId(); + this.ordinal = item.getOrdinal(); + this.title = item.getTitle(); + this.viewStyle = item.getViewStyle(); + this.data = item.getData(); + } + +} \ No newline at end of file diff --git a/dmp-backend/src/main/java/models/components/datasetprofile/FieldSet.java b/dmp-backend/src/main/java/models/user/components/datasetprofile/FieldSet.java similarity index 98% rename from dmp-backend/src/main/java/models/components/datasetprofile/FieldSet.java rename to dmp-backend/src/main/java/models/user/components/datasetprofile/FieldSet.java index f703dae33..fca59c0c4 100644 --- a/dmp-backend/src/main/java/models/components/datasetprofile/FieldSet.java +++ b/dmp-backend/src/main/java/models/user/components/datasetprofile/FieldSet.java @@ -1,4 +1,4 @@ -package models.components.datasetprofile; +package models.user.components.datasetprofile; import java.util.LinkedList; import java.util.List; diff --git a/dmp-backend/src/main/java/models/components/datasetprofile/Group.java b/dmp-backend/src/main/java/models/user/components/datasetprofile/Group.java similarity index 98% rename from dmp-backend/src/main/java/models/components/datasetprofile/Group.java rename to dmp-backend/src/main/java/models/user/components/datasetprofile/Group.java index 819db6409..f92fdd62b 100644 --- a/dmp-backend/src/main/java/models/components/datasetprofile/Group.java +++ b/dmp-backend/src/main/java/models/user/components/datasetprofile/Group.java @@ -1,4 +1,4 @@ -package models.components.datasetprofile; +package models.user.components.datasetprofile; import java.util.List; diff --git a/dmp-backend/src/main/java/models/components/datasetprofile/Section.java b/dmp-backend/src/main/java/models/user/components/datasetprofile/Section.java similarity index 98% rename from dmp-backend/src/main/java/models/components/datasetprofile/Section.java rename to dmp-backend/src/main/java/models/user/components/datasetprofile/Section.java index f10605aee..ee796a0d7 100644 --- a/dmp-backend/src/main/java/models/components/datasetprofile/Section.java +++ b/dmp-backend/src/main/java/models/user/components/datasetprofile/Section.java @@ -1,4 +1,4 @@ -package models.components.datasetprofile; +package models.user.components.datasetprofile; import java.util.List; diff --git a/dmp-backend/src/main/java/models/user/composite/DatasetProfile.java b/dmp-backend/src/main/java/models/user/composite/DatasetProfile.java new file mode 100644 index 000000000..7bd23da17 --- /dev/null +++ b/dmp-backend/src/main/java/models/user/composite/DatasetProfile.java @@ -0,0 +1,42 @@ +package models.user.composite; + +import utilities.builders.ModelBuilder; +import utilities.helpers.ModelBuilderCollector; + +import java.util.List; + +import models.user.components.datasetprofile.*; +import models.user.components.commons.Rule; + +public class DatasetProfile { + private List
sections; + private List rules; + public List
getSections() { + return sections; + } + + public void setSections(List
sections) { + this.sections = sections; + } + + + public List getRules() { + return rules; + } + + public void setRules(List rules) { + this.rules = rules; + } + + public void buildProfile(entities.xmlmodels.modeldefinition.FieldGroup fieldGroup,entities.xmlmodels.viewstyledefinition.ViewStyleModel viewStyle){ + this.sections = new ModelBuilder().fromViewStyleDefinition(viewStyle.getSections(), Section.class); + updateProfile(fieldGroup,viewStyle); + } + + private void updateProfile(entities.xmlmodels.modeldefinition.FieldGroup fieldGroup,entities.xmlmodels.viewstyledefinition.ViewStyleModel viewStyle){ + ModelBuilderCollector.mapUserSections(sections, fieldGroup.getFieldSets()); + this.rules = ModelBuilderCollector.collectRules(viewStyle.getSections()); + + } + +} diff --git a/dmp-backend/src/main/java/rest/entities/Admin.java b/dmp-backend/src/main/java/rest/entities/Admin.java index 856e61be5..c94db349c 100644 --- a/dmp-backend/src/main/java/rest/entities/Admin.java +++ b/dmp-backend/src/main/java/rest/entities/Admin.java @@ -30,8 +30,8 @@ import entities.DatasetProfileViewstyle; import entities.xmlmodels.modeldefinition.FieldGroup; import entities.xmlmodels.viewstyledefinition.Section; import managers.AdminManager; -import models.components.datasetprofile.FieldSet; -import models.composite.DatasetProfile; +import models.admin.components.datasetprofile.FieldSet; +import models.admin.composite.DatasetProfile; import utilities.builders.ModelBuilder; import utilities.builders.XmlBuilder; import utilities.helpers.ModelBuilderCollector; @@ -66,7 +66,7 @@ public class Admin { public ResponseEntity get(@PathVariable String id){ try{ entities.DatasetProfile profile = datasetProfileDao.read(UUID.fromString(id)); - models.composite.DatasetProfile datasetprofile = AdminManager.generateDatasetProfileModel(profile); + models.admin.composite.DatasetProfile datasetprofile = AdminManager.generateDatasetProfileModel(profile); return ResponseEntity.status(HttpStatus.OK).body(datasetprofile); }catch(Exception ex){ ex.printStackTrace(); diff --git a/dmp-backend/src/main/java/rest/entities/DatasetProfileController.java b/dmp-backend/src/main/java/rest/entities/DatasetProfileController.java new file mode 100644 index 000000000..dd7acb517 --- /dev/null +++ b/dmp-backend/src/main/java/rest/entities/DatasetProfileController.java @@ -0,0 +1,42 @@ +package rest.entities; + +import java.util.List; +import java.util.UUID; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import dao.entities.DatasetProfileDao; +import dao.entities.DatasetProfileRulesetDao; +import dao.entities.DatasetProfileViewstyleDao; +import helpers.SerializerProvider; +import managers.AdminManager; +import managers.UserManager; + +@RestController +@CrossOrigin +public class DatasetProfileController { + + @Autowired private DatasetProfileDao datasetProfileDao; + @Autowired private DatasetProfileRulesetDao datasetProfileRulesetDao; + @Autowired private DatasetProfileViewstyleDao datasetProfileViewstyleDao; + + @RequestMapping(method = RequestMethod.GET, value = { "/datasetprofile/get/{id}" }, produces="application/json") + public ResponseEntity get(@PathVariable String id){ + try { + entities.DatasetProfile profile = datasetProfileDao.read(UUID.fromString(id)); + models.user.composite.DatasetProfile datasetprofile = UserManager.generateDatasetProfileModel(profile); + + return ResponseEntity.status(HttpStatus.OK).body(datasetprofile); + } + catch(Exception ex) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Serialization issue: "+ex.getMessage()); + } + } +} diff --git a/dmp-backend/src/main/java/utilities/builders/ModelBuilder.java b/dmp-backend/src/main/java/utilities/builders/ModelBuilder.java index 88fceea5c..09524d9ab 100644 --- a/dmp-backend/src/main/java/utilities/builders/ModelBuilder.java +++ b/dmp-backend/src/main/java/utilities/builders/ModelBuilder.java @@ -70,4 +70,7 @@ public class ModelBuilder { if(type.equals("freetext"))return null; return null; } + + + } diff --git a/dmp-backend/src/main/java/utilities/helpers/ModelBuilderCollector.java b/dmp-backend/src/main/java/utilities/helpers/ModelBuilderCollector.java index de49ce1e2..693a6f22f 100644 --- a/dmp-backend/src/main/java/utilities/helpers/ModelBuilderCollector.java +++ b/dmp-backend/src/main/java/utilities/helpers/ModelBuilderCollector.java @@ -10,10 +10,11 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.xml.XmlMapper; -import models.components.datasetprofile.FieldSet; -import models.components.datasetprofile.Group; -import models.components.datasetprofile.Section; -import models.composite.DatasetProfile; +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 { @@ -36,7 +37,7 @@ public class ModelBuilderCollector { return fieldGroups; } - public static void mapSections(List sections,List fieldGroups){ + public static void mapSections(List sections,List fieldGroups){ for(Section section: sections){ if(!section.getSections().isEmpty()){ mapSections(section.getSections(),fieldGroups); @@ -50,7 +51,7 @@ public class ModelBuilderCollector { return; } - private static void mapCompositeFields(List fieldSets,List fieldGroups){ + private static void mapCompositeFields(List fieldSets,List fieldGroups){ for(FieldSet fieldSet: fieldSets){ if(!fieldSet.getFields().isEmpty()){ mapFields(fieldSet.getFields(),fieldGroups); @@ -64,9 +65,9 @@ public class ModelBuilderCollector { return; } - private static void mapFields(List fields,List fieldGroups){ + private static void mapFields(List fields,List fieldGroups){ - for(models.components.datasetprofile.Field fielditem: fields){ + 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())){ @@ -78,4 +79,76 @@ public class ModelBuilderCollector { } return; } + + public static void mapUserSections(List sections,List 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 fieldSets,List 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 fields,List 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 collectRules(List sections){ + List 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 getRulesFromField(String id,List rules){ + List modelRules = new LinkedList(); + for(models.components.commons.Rule rule : rules){ + Rule modelRule = new Rule().fromDefinitionRule(rule); + modelRule.setSourceField(id); + modelRules.add(modelRule); + } + return modelRules; + } + } diff --git a/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-autocomplete/autocomplete-remote.component.html b/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-autocomplete/autocomplete-remote.component.html index 9476988dc..cc7bfc7e9 100644 --- a/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-autocomplete/autocomplete-remote.component.html +++ b/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-autocomplete/autocomplete-remote.component.html @@ -1,5 +1,6 @@ -
- - -
+ +
{{field.extendedDescription}}
+ + + \ No newline at end of file diff --git a/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-boolean-decision/dynamic-field-boolean-decision.component.html b/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-boolean-decision/dynamic-field-boolean-decision.component.html index 121286071..011d7b413 100644 --- a/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-boolean-decision/dynamic-field-boolean-decision.component.html +++ b/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-boolean-decision/dynamic-field-boolean-decision.component.html @@ -1,4 +1,6 @@
+ +
{{field.extendedDescription}}
Yes
No
\ No newline at end of file diff --git a/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-checkbox/dynamic-field-checkbox.html b/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-checkbox/dynamic-field-checkbox.html index 19f506eaf..df499a335 100644 --- a/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-checkbox/dynamic-field-checkbox.html +++ b/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-checkbox/dynamic-field-checkbox.html @@ -1,5 +1,6 @@
- + +
{{field.extendedDescription}}
\ No newline at end of file diff --git a/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-dropdown/dynamic-field-dropdown.html b/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-dropdown/dynamic-field-dropdown.html index c175f323d..28eaae771 100644 --- a/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-dropdown/dynamic-field-dropdown.html +++ b/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-dropdown/dynamic-field-dropdown.html @@ -1,4 +1,6 @@
+ +
{{field.extendedDescription}}
diff --git a/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-radiobox/dynamic-field-radiobox.component.html b/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-radiobox/dynamic-field-radiobox.component.html index 7ad83def8..130d96d9f 100644 --- a/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-radiobox/dynamic-field-radiobox.component.html +++ b/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-radiobox/dynamic-field-radiobox.component.html @@ -1,4 +1,6 @@
+ +
{{field.extendedDescription}}
{{option.label}}
diff --git a/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-textbox/field-textbox.html b/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-textbox/field-textbox.html index c11f1aa1d..6e32c23c1 100644 --- a/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-textbox/field-textbox.html +++ b/dmp-frontend/src/app/form/dynamic-fields/dynamic-field-textbox/field-textbox.html @@ -1 +1,3 @@ + +
{{field.extendedDescription}}
\ No newline at end of file diff --git a/dmp-frontend/src/app/form/dynamic-fields/dynamic-form-field.component.html b/dmp-frontend/src/app/form/dynamic-fields/dynamic-form-field.component.html index d57eafe53..7945c060a 100644 --- a/dmp-frontend/src/app/form/dynamic-fields/dynamic-form-field.component.html +++ b/dmp-frontend/src/app/form/dynamic-fields/dynamic-form-field.component.html @@ -29,10 +29,12 @@
- -
{{field.extendedDescription}}
+ +
+ +
{{field.extendedDescription}}