From e061448830dd32c01165db2c8b8637421f920fc5 Mon Sep 17 00:00:00 2001 From: George Kalampokis Date: Thu, 5 Nov 2020 18:32:19 +0200 Subject: [PATCH] Initial commit for the new Dataset Template Field (identifier validation) part 2 --- .../utilities/builders/ModelBuilder.java | 2 + .../commons/datafield/ValidationData.java | 42 +++++++++++++++++++ .../field-data/field-data.ts | 4 ++ .../services/utilities/enum-utils.service.ts | 1 + .../validation-data-editor-models.ts | 19 +++++++++ .../dataset-profile-editor-field.component.ts | 5 +++ dmp-frontend/src/assets/i18n/en.json | 3 +- 7 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 dmp-backend/web/src/main/java/eu/eudat/models/data/components/commons/datafield/ValidationData.java create mode 100644 dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/validation-data-editor-models.ts diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/builders/ModelBuilder.java b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/builders/ModelBuilder.java index 5b8bea223..90b1b806e 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/builders/ModelBuilder.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/utilities/builders/ModelBuilder.java @@ -94,6 +94,7 @@ public class ModelBuilder { if (type.equals("organizations")) return (FieldData) new OrganizationsData().fromData(data); if (type.equals("datasetIdentifier")) return (FieldData) new DatasetIdentifierData().fromData(data); if (type.equals("currency")) return (FieldData) new CurrencyData().fromData(data); + if (type.equals("validation")) return (FieldData) new ValidationData().fromData(data); return null; } @@ -132,6 +133,7 @@ public class ModelBuilder { if (type.equals("organizations")) return (FieldData) new OrganizationsData().fromData(data); if (type.equals("datasetIdentifier")) return (FieldData) new DatasetIdentifierData().fromData(data); if (type.equals("currency")) return (FieldData) new CurrencyData().fromData(data); + if (type.equals("validation")) return (FieldData) new ValidationData().fromData(data); return null; } } diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/components/commons/datafield/ValidationData.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/components/commons/datafield/ValidationData.java new file mode 100644 index 000000000..32d3102e8 --- /dev/null +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/components/commons/datafield/ValidationData.java @@ -0,0 +1,42 @@ +package eu.eudat.models.data.components.commons.datafield; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import java.util.HashMap; +import java.util.Map; + +public class ValidationData extends FieldData { + @Override + public ValidationData fromData(Object data) { + if (data != null) { + this.setLabel((String) ((Map) data).get("label")); + } + return this; + } + + @Override + public Object toData() { + return null; + } + + @Override + public Element toXml(Document doc) { + Element root = doc.createElement("data"); + root.setAttribute("label", this.getLabel()); + return root; + } + + @Override + public ValidationData fromXml(Element item) { + this.setLabel(item != null ? item.getAttribute("label") : ""); + return this; + } + + @Override + public Map toMap(Element item) { + HashMap dataMap = new HashMap(); + dataMap.put("label", item != null ? item.getAttribute("label") : ""); + return dataMap; + } +} diff --git a/dmp-frontend/src/app/core/model/dataset-profile-definition/field-data/field-data.ts b/dmp-frontend/src/app/core/model/dataset-profile-definition/field-data/field-data.ts index 8923345f1..eba3aa2a6 100644 --- a/dmp-frontend/src/app/core/model/dataset-profile-definition/field-data/field-data.ts +++ b/dmp-frontend/src/app/core/model/dataset-profile-definition/field-data/field-data.ts @@ -105,3 +105,7 @@ export interface DatasetIdentifierFieldData extends FieldData { export interface CurrencyFieldData extends FieldData { } + +export interface ValidationFieldData extends FieldData { + +} diff --git a/dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts b/dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts index d30f81689..ddf120849 100644 --- a/dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts +++ b/dmp-frontend/src/app/core/services/utilities/enum-utils.service.ts @@ -87,6 +87,7 @@ export class EnumUtils { case DatasetProfileFieldViewStyle.Organizations: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.ORGANIZATIONS'); case DatasetProfileFieldViewStyle.DatasetIdentifier: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.DATASET-IDENTIFIER'); case DatasetProfileFieldViewStyle.Currency: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.CURRENCY'); + case DatasetProfileFieldViewStyle.Validation: return this.language.instant('TYPES.DATASET-PROFILE-FIELD-VIEW-STYLE.VALIDATION'); } } diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/validation-data-editor-models.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/validation-data-editor-models.ts new file mode 100644 index 000000000..7fafc1486 --- /dev/null +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/admin/field-data/validation-data-editor-models.ts @@ -0,0 +1,19 @@ +import { FormGroup } from '@angular/forms'; +import { FieldDataEditorModel } from './field-data-editor-model'; +import { ValidationFieldData } from '../../../../../core/model/dataset-profile-definition/field-data/field-data'; + +export class ValidationDataEditorModel extends FieldDataEditorModel { + public label: string; + + buildForm(disabled: boolean = false, skipDisable: Array = []): FormGroup { + const formGroup = this.formBuilder.group({ + label: [{ value: this.label, disabled: (disabled && !skipDisable.includes('ValidationDataEditorModel.label')) }] + }); + return formGroup; + } + + fromModel(item: ValidationFieldData): ValidationDataEditorModel { + this.label = item.label; + return this; + } +} diff --git a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field/dataset-profile-editor-field.component.ts b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field/dataset-profile-editor-field.component.ts index c2added6f..d96993846 100644 --- a/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field/dataset-profile-editor-field.component.ts +++ b/dmp-frontend/src/app/ui/admin/dataset-profile/editor/components/field/dataset-profile-editor-field.component.ts @@ -26,6 +26,7 @@ import { OrganizationsDataEditorModel } from '../../../admin/field-data/organiza import { DatasetIdentifierDataEditorModel } from '../../../admin/field-data/dataset-identifier-data-editor-models'; import { ExternalDatasetsDataEditorModel } from '../../../admin/field-data/external-datasets-data-editor-models'; import { CurrencyDataEditorModel } from '../../../admin/field-data/currency-data-editor-models'; +import { ValidationDataEditorModel } from '../../../admin/field-data/validation-data-editor-models'; @Component({ selector: 'app-dataset-profile-editor-field-component', @@ -113,6 +114,9 @@ export class DatasetProfileEditorFieldComponent extends BaseComponent implements case DatasetProfileFieldViewStyle.Currency: this.form.addControl('data', new CurrencyDataEditorModel().buildForm()); break; + case DatasetProfileFieldViewStyle.Validation: + this.form.addControl('data', new ValidationDataEditorModel().buildForm()); + break; } } }); @@ -138,6 +142,7 @@ export class DatasetProfileEditorFieldComponent extends BaseComponent implements case DatasetProfileFieldViewStyle.Organizations: case DatasetProfileFieldViewStyle.DatasetIdentifier: case DatasetProfileFieldViewStyle.Currency: + case DatasetProfileFieldViewStyle.Validation: return false; default: return false; diff --git a/dmp-frontend/src/assets/i18n/en.json b/dmp-frontend/src/assets/i18n/en.json index f0b8b490b..01ae2a5cf 100644 --- a/dmp-frontend/src/assets/i18n/en.json +++ b/dmp-frontend/src/assets/i18n/en.json @@ -1143,7 +1143,8 @@ "RESEARCHERS": "Researchers", "ORGANIZATIONS": "Organizations", "DATASET-IDENTIFIER": "Dataset Identifier", - "CURRENCY": "Currency" + "CURRENCY": "Currency", + "VALIDATION": "Validator" }, "DATASET-PROFILE-COMBO-BOX-TYPE": { "WORD-LIST": "Word List",