From 8567bcea914f169a661db6b0f0a722d46e3f8495 Mon Sep 17 00:00:00 2001 From: gkolokythas Date: Wed, 6 Nov 2019 12:05:40 +0200 Subject: [PATCH] Fixes source information and refactors "Reference" property of External References to meet the standards of the Application. (Issue #187) --- .../dao/entities/DataRepositoryDaoImpl.java | 2 +- .../dao/entities/ExternalDatasetDaoImpl.java | 4 +- .../data/dao/entities/RegistryDaoImpl.java | 2 +- .../data/dao/entities/ServiceDaoImpl.java | 2 +- .../eudat/logic/managers/DatasetManager.java | 4 +- .../eudat/logic/managers/RegistryManager.java | 3 + .../eudat/logic/managers/ServiceManager.java | 3 - .../datarepository/DataRepositoryModel.java | 31 ++++++++++- .../models/data/dataset/DataRepository.java | 34 ++++++++++-- .../eudat/models/data/dataset/Registry.java | 21 ++++++- .../eu/eudat/models/data/dataset/Service.java | 22 +++++++- .../datasetwizard/DatasetWizardModel.java | 8 +-- .../eudat/models/data/dmp/Organisation.java | 2 +- .../eu/eudat/models/data/dmp/Researcher.java | 2 +- .../externaldataset/ExternalDatasetModel.java | 24 +++++--- .../models/data/registries/RegistryModel.java | 47 +++++++++++++--- .../models/data/services/ServiceModel.java | 55 ++++++++++++++++--- .../model/data-repository/data-repository.ts | 1 + .../external-dataset/external-dataset.ts | 3 +- .../src/app/core/model/registry/registry.ts | 2 + .../dataset-wizard-editor.model.ts | 26 ++++++--- ...et-external-references-editor.component.ts | 14 ++--- 22 files changed, 248 insertions(+), 64 deletions(-) diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DataRepositoryDaoImpl.java b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DataRepositoryDaoImpl.java index 505cf40d6..4658b44f6 100644 --- a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DataRepositoryDaoImpl.java +++ b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/DataRepositoryDaoImpl.java @@ -26,7 +26,7 @@ public class DataRepositoryDaoImpl extends DatabaseAccess implem if (criteria.getLike() != null) query.where((builder, root) -> builder.or( builder.like(builder.upper(root.get("reference")), "%" + criteria.getLike().toUpperCase() + "%"), - builder.equal(builder.upper(root.get("label")), "%" + criteria.getLike().toUpperCase() + "%"))); + builder.equal(builder.upper(root.get("label")), criteria.getLike().toUpperCase()))); if (criteria.getCreationUserId() != null) query.where((builder, root) -> builder.equal(root.get("creationUser").get("id"), criteria.getCreationUserId())); return query; diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/ExternalDatasetDaoImpl.java b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/ExternalDatasetDaoImpl.java index 76b1ec4f7..9461faaca 100644 --- a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/ExternalDatasetDaoImpl.java +++ b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/ExternalDatasetDaoImpl.java @@ -25,7 +25,9 @@ public class ExternalDatasetDaoImpl extends DatabaseAccess impl public QueryableList getWithCriteria(ExternalDatasetCriteria criteria) { QueryableList query = this.getDatabaseService().getQueryable(ExternalDataset.class); if (criteria.getLike() != null && !criteria.getLike().isEmpty()) - query.where((builder, root) -> builder.like(builder.upper(root.get("label")), "%" + criteria.getLike().toUpperCase() + "%")); + query.where((builder, root) -> builder.or( + builder.like(builder.upper(root.get("reference")), "%" + criteria.getLike().toUpperCase() + "%"), + builder.equal(builder.upper(root.get("label")), criteria.getLike().toUpperCase()))); return query; } diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/RegistryDaoImpl.java b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/RegistryDaoImpl.java index 679f1ef4a..c02fee715 100644 --- a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/RegistryDaoImpl.java +++ b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/RegistryDaoImpl.java @@ -27,7 +27,7 @@ public class RegistryDaoImpl extends DatabaseAccess implements Registr if (criteria.getLike() != null) query.where((builder, root) -> builder.or( builder.like(builder.upper(root.get("reference")), "%" + criteria.getLike().toUpperCase() + "%"), - builder.equal(builder.upper(root.get("label")), "%" + criteria.getLike().toUpperCase() + "%"))); + builder.equal(builder.upper(root.get("label")), criteria.getLike().toUpperCase()))); if (criteria.getCreationUserId() != null) query.where((builder, root) -> builder.equal(root.get("creationUser").get("id"), criteria.getCreationUserId())); return query; diff --git a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/ServiceDaoImpl.java b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/ServiceDaoImpl.java index 78ce36944..1843a4510 100644 --- a/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/ServiceDaoImpl.java +++ b/dmp-backend/data/src/main/java/eu/eudat/data/dao/entities/ServiceDaoImpl.java @@ -26,7 +26,7 @@ public class ServiceDaoImpl extends DatabaseAccess implements ServiceDa if (criteria.getLike() != null) query.where((builder, root) -> builder.or( builder.like(builder.upper(root.get("reference")), "%" + criteria.getLike().toUpperCase() + "%"), - builder.equal(builder.upper(root.get("label")), "%" + criteria.getLike().toUpperCase() + "%"))); + builder.equal(builder.upper(root.get("label")), criteria.getLike().toUpperCase()))); if (criteria.getCreationUserId() != null) query.where((builder, root) -> builder.equal(root.get("creationUser").get("id"), criteria.getCreationUserId())); return query; diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java index b9f6711c3..420303cb2 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/DatasetManager.java @@ -499,9 +499,9 @@ public class DatasetManager { if (dataset.getServices() != null && !dataset.getServices().isEmpty()) { for (DatasetService service : dataset.getServices()) { ServiceCriteria criteria = new ServiceCriteria(); - criteria.setLike(service.getService().getLabel()); + criteria.setLike(service.getService().getReference()); List entries = databaseRepository.getServiceDao().getWithCriteria(criteria).toList(); - if (entries != null && entries.isEmpty()) { + if (entries != null && !entries.isEmpty()) { service.setDataset(dataset); service.getService().setCreated(new Date()); service.setService(service.getService()); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/RegistryManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/RegistryManager.java index 703c417b8..9220d6221 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/RegistryManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/RegistryManager.java @@ -29,6 +29,9 @@ public class RegistryManager { } public Registry create(RegistryModel registryModel, Principal principal) throws Exception { + if (registryModel.getLabel() == null || registryModel.getAbbreviation() == null || registryModel.getUri() == null) { + throw new Exception("Missing mandatory entity."); + } Registry registry = registryModel.toDataModel(); registry.getCreationUser().setId(principal.getId()); return apiContext.getOperationsContext().getDatabaseRepository().getRegistryDao().createOrUpdate(registry); diff --git a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ServiceManager.java b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ServiceManager.java index 03c858c95..222aa3675 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ServiceManager.java +++ b/dmp-backend/web/src/main/java/eu/eudat/logic/managers/ServiceManager.java @@ -18,9 +18,6 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -/** - * Created by ikalyvas on 9/3/2018. - */ @Component public class ServiceManager { diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/datarepository/DataRepositoryModel.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/datarepository/DataRepositoryModel.java index a9167421b..200bf2d78 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/datarepository/DataRepositoryModel.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/datarepository/DataRepositoryModel.java @@ -15,11 +15,13 @@ public class DataRepositoryModel implements DataModel()); + entity.setRegistries(new HashSet<>()); for (Registry registry : this.registries) { entity.getRegistries().add(registry.toDataModel()); } } if (this.dataRepositories != null && !this.dataRepositories.isEmpty()) { - entity.setDatasetDataRepositories(new HashSet()); + entity.setDatasetDataRepositories(new HashSet<>()); for (DataRepository dataRepositoryModel : this.dataRepositories) { eu.eudat.data.entities.DataRepository dataRepository = dataRepositoryModel.toDataModel(); DatasetDataRepository datasetDataRepository = new DatasetDataRepository(); @@ -224,7 +224,7 @@ public class DatasetWizardModel implements DataModel()); + entity.setServices(new HashSet<>()); for (Service serviceModel : this.services) { eu.eudat.data.entities.Service service = serviceModel.toDataModel(); DatasetService datasetService = new DatasetService(); @@ -234,7 +234,7 @@ public class DatasetWizardModel implements DataModel()); + entity.setDatasetExternalDatasets(new HashSet<>()); for (ExternalDatasetListingModel externalDataset : this.externalDatasets) { ExternalDataset externalDatasetEntity = externalDataset.toDataModel(); DatasetExternalDataset datasetExternalDataset = new DatasetExternalDataset(); diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/dmp/Organisation.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/dmp/Organisation.java index ff4d002f5..77e6b127b 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/dmp/Organisation.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/dmp/Organisation.java @@ -53,7 +53,7 @@ public class Organisation implements DataModel { public UUID id; public String label; public String abbreviation; public Date created; public Date modified; + private String source; public UUID getId() { return id; } - public void setId(UUID id) { this.id = id; } @@ -28,7 +25,6 @@ public class ExternalDatasetModel implements DataModel { private UUID id; + private String name; private String label; + private String pid; private String abbreviation; private String uri; private Date created; private Date modified; - private String tag; + private String tag; // Api fetching the data + private String source; // Actual harvested source public UUID getId() { return id; @@ -27,6 +28,13 @@ public class RegistryModel implements DataModel { this.id = id; } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getLabel() { return label; } @@ -69,15 +77,35 @@ public class RegistryModel implements DataModel { this.tag = tag; } + public String getPid() { + return pid; + } + public void setPid(String pid) { + this.pid = pid; + } + + public String getSource() { + return source; + } + public void setSource(String source) { + this.source = source; + } + @Override public RegistryModel fromDataModel(Registry entity) { this.id = entity.getId(); this.abbreviation = entity.getAbbreviation(); this.created = entity.getCreated(); this.label = entity.getLabel(); + this.name = entity.getLabel(); this.modified = entity.getModified(); this.uri = entity.getUri(); - this.tag = "Internal"; + String source1 = entity.getReference().substring(0, entity.getReference().indexOf(":")); + if (source1.equals("dmp")) { + this.source = "Internal"; + } else { + this.source = source1; + } return this; } @@ -87,10 +115,15 @@ public class RegistryModel implements DataModel { registry.setAbbreviation(this.abbreviation); registry.setCreated(this.created != null ? this.created : new Date()); registry.setId(this.id != null ? this.id : UUID.randomUUID()); - registry.setLabel(this.label); + registry.setLabel(this.label != null ? this.label : this.name); registry.setUri(this.uri); registry.setModified(new Date()); - registry.setReference("dmpdata/" + registry.getId()); + if (this.source == null) this.source = "dmp"; + if (this.source.equals(registry.getId().toString().substring(0, this.source.length()))) { + registry.setReference(registry.getId().toString()); + } else { + registry.setReference(this.source + ":" + registry.getId()); + } registry.setStatus((short)0); registry.setCreationUser(new UserInfo()); return registry; diff --git a/dmp-backend/web/src/main/java/eu/eudat/models/data/services/ServiceModel.java b/dmp-backend/web/src/main/java/eu/eudat/models/data/services/ServiceModel.java index 9d08f402d..19359d350 100644 --- a/dmp-backend/web/src/main/java/eu/eudat/models/data/services/ServiceModel.java +++ b/dmp-backend/web/src/main/java/eu/eudat/models/data/services/ServiceModel.java @@ -7,17 +7,18 @@ import eu.eudat.models.DataModel; import java.util.Date; import java.util.UUID; -/** - * Created by ikalyvas on 9/3/2018. - */ public class ServiceModel implements DataModel { private UUID id; private String label; + private String name; + private String pid; private String abbreviation; private String uri; private Date created; private Date modified; + private String reference; private String tag; + private String source; public UUID getId() { return id; @@ -33,6 +34,20 @@ public class ServiceModel implements DataModel { this.label = label; } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + public String getPid() { + return pid; + } + public void setPid(String pid) { + this.pid = pid; + } + public String getAbbreviation() { return abbreviation; } @@ -61,6 +76,13 @@ public class ServiceModel implements DataModel { this.modified = modified; } + public String getReference() { + return reference; + } + public void setReference(String reference) { + this.reference = reference; + } + public String getTag() { return tag; } @@ -68,15 +90,28 @@ public class ServiceModel implements DataModel { this.tag = tag; } + public String getSource() { + return source; + } + public void setSource(String source) { + this.source = source; + } + @Override public ServiceModel fromDataModel(Service entity) { this.abbreviation = entity.getAbbreviation(); this.created = entity.getCreated(); this.id = entity.getId(); this.label = entity.getLabel(); + this.name = entity.getLabel(); this.modified = entity.getModified(); this.uri = entity.getUri(); - this.tag = "Internal"; + String source = entity.getReference().substring(0, entity.getReference().indexOf(":")); + if (source.equals("dmp")) { + this.source = "Internal"; + } else { + this.source = source; + } return this; } @@ -86,12 +121,18 @@ public class ServiceModel implements DataModel { service.setId(this.id != null ? this.id : UUID.randomUUID()); service.setAbbreviation(this.abbreviation); service.setCreated(this.created != null ? this.created : new Date()); - service.setLabel(this.label); + service.setLabel(this.label != null ? this.label : this.name); service.setModified(new Date()); service.setUri(this.uri); - service.setReference("innerdata/" + service.getId()); + if (this.source == null) this.source = "dmp"; + if (this.reference == null) this.reference = service.getId().toString(); + if (this.source.equals(this.reference.substring(0, this.source.length()))) { + service.setReference(this.reference); + } else { + service.setReference(this.source + ":" + this.reference); + } service.setModified(new Date()); - service.setStatus((short)0); + service.setStatus((short) 0); service.setCreationUser(new UserInfo()); return service; } diff --git a/dmp-frontend/src/app/core/model/data-repository/data-repository.ts b/dmp-frontend/src/app/core/model/data-repository/data-repository.ts index 76f5cf372..3037199c0 100644 --- a/dmp-frontend/src/app/core/model/data-repository/data-repository.ts +++ b/dmp-frontend/src/app/core/model/data-repository/data-repository.ts @@ -5,4 +5,5 @@ export interface DataRepositoryModel { uri: string; pid: string; info: string; + source: string; } diff --git a/dmp-frontend/src/app/core/model/external-dataset/external-dataset.ts b/dmp-frontend/src/app/core/model/external-dataset/external-dataset.ts index e4cff37d9..079a18b07 100644 --- a/dmp-frontend/src/app/core/model/external-dataset/external-dataset.ts +++ b/dmp-frontend/src/app/core/model/external-dataset/external-dataset.ts @@ -7,4 +7,5 @@ export interface ExternalDatasetModel { reference: String; type: ExternalDatasetType; info: String; -} \ No newline at end of file + source: String; +} diff --git a/dmp-frontend/src/app/core/model/registry/registry.ts b/dmp-frontend/src/app/core/model/registry/registry.ts index c9568466c..6658e9b57 100644 --- a/dmp-frontend/src/app/core/model/registry/registry.ts +++ b/dmp-frontend/src/app/core/model/registry/registry.ts @@ -3,7 +3,9 @@ export interface RegistryModel { abbreviation: String; definition: String; id: String; + pid: String; label: String; reference: String; uri: String; + source: String; } diff --git a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard-editor.model.ts b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard-editor.model.ts index 3f573a7a1..901113a72 100644 --- a/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard-editor.model.ts +++ b/dmp-frontend/src/app/ui/dataset/dataset-wizard/dataset-wizard-editor.model.ts @@ -219,14 +219,16 @@ export class ExternalRegistryEditorModel { public label: String; public reference: String; public uri: String; + public source: String - constructor(abbreviation?: String, definition?: String, id?: String, label?: String, reference?: String, uri?: String) { + constructor(abbreviation?: String, definition?: String, id?: String, label?: String, reference?: String, uri?: String, source?: String) { this.abbreviation = abbreviation; this.definition = definition; this.id = id; this.label = label; this.reference = reference; this.uri = uri; + this.source = source; } fromModel(item: RegistryModel): ExternalRegistryEditorModel { @@ -234,8 +236,9 @@ export class ExternalRegistryEditorModel { this.definition = item.definition; this.id = item.id; this.label = item.label; - this.reference = item.reference; + this.reference = item.pid ? item.pid : item.reference; this.uri = item.uri; + this.source = item.source return this; } @@ -247,7 +250,8 @@ export class ExternalRegistryEditorModel { label: [this.label], reference: [this.reference], uri: [this.uri], - definition: [this.definition] + definition: [this.definition], + source: [this.source] }); } } @@ -261,14 +265,16 @@ export class ExternalDatasetEditorModel { public type: ExternalDatasetType; public info: String; public validationErrorModel: ValidationErrorModel = new ValidationErrorModel(); + public source: String; - constructor(id?: string, abbreviation?: string, label?: string, reference?: string, info?: string, type?: ExternalDatasetType) { + constructor(id?: string, abbreviation?: string, label?: string, reference?: string, info?: string, type?: ExternalDatasetType, source?: String) { this.id = id; this.label = label; this.abbreviation = abbreviation; this.reference = reference; this.info = info; this.type = type; + this.source = source; } fromModel(item: ExternalDatasetModel): ExternalDatasetEditorModel { @@ -278,6 +284,7 @@ export class ExternalDatasetEditorModel { this.reference = item.reference; this.type = item.type; this.info = item.info; + this.source = item.source; return this; } @@ -288,7 +295,8 @@ export class ExternalDatasetEditorModel { label: [this.label], reference: [this.reference], type: [this.type, Validators.required], - info: [this.info] + info: [this.info], + source: [this.source] }); } } @@ -302,13 +310,15 @@ export class ExternalDataRepositoryEditorModel { public info: string; public created: Date; public modified: Date; + public source: string; - constructor(id?: string, label?: string, abbreviation?: string, uri?: string, reference?: string) { + constructor(id?: string, label?: string, abbreviation?: string, uri?: string, reference?: string, source?: string) { this.id = id; this.label = label; this.abbreviation = abbreviation; this.uri = uri; this.reference = reference; + this.source = source; } fromModel(item: DataRepositoryModel): ExternalDataRepositoryEditorModel { @@ -318,6 +328,7 @@ export class ExternalDataRepositoryEditorModel { this.uri = item.uri; this.info = item.info; this.reference = item.pid; + this.source = item.source; return this; } @@ -328,7 +339,8 @@ export class ExternalDataRepositoryEditorModel { abbreviation: [this.abbreviation], uri: [this.uri], info: [this.info], - reference: [this.reference] + reference: [this.reference], + source: [this.source] }); } } diff --git a/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/dataset-external-references-editor.component.ts b/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/dataset-external-references-editor.component.ts index c4be05b57..8287901ff 100644 --- a/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/dataset-external-references-editor.component.ts +++ b/dmp-frontend/src/app/ui/dataset/dataset-wizard/external-references/dataset-external-references-editor.component.ts @@ -70,7 +70,7 @@ export class DatasetExternalReferencesEditorComponent extends BaseComponent impl initialItems: (type) => this.searchDatasetExternalDataRepositories('', type), displayFn: (item) => item ? item.name : null, titleFn: (item) => item ? item.name : null, - subtitleFn: (item) => item.tag ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.tag : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE') + subtitleFn: (item) => item.source ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.source : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE') }; this.externalDatasetAutoCompleteConfiguration = { @@ -86,9 +86,9 @@ export class DatasetExternalReferencesEditorComponent extends BaseComponent impl filterFn: this.searchDatasetExternalRegistries.bind(this), removeAfterSelection: true, initialItems: (type) => this.searchDatasetExternalRegistries('', type), - displayFn: (item) => item ? item.label : null, - titleFn: (item) => item ? item.label: null, - subtitleFn: (item) => item.tag ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.tag : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE') + displayFn: (item) => item ? item.name : null, + titleFn: (item) => item ? item.name : null, + subtitleFn: (item) => item.source ? this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.SOURCE:') + item.source : this.language.instant('TYPES.EXTERNAL-DATASET-TYPE.NO-SOURCE') }; this.servicesAutoCompleteConfiguration = { @@ -115,12 +115,12 @@ export class DatasetExternalReferencesEditorComponent extends BaseComponent impl } externalDatasetsOnItemChange(event) { - const externalDatasetModel = new ExternalDatasetEditorModel(event.id, event.abbreviation, event.label, event.reference); + const externalDatasetModel = new ExternalDatasetEditorModel(event.id, event.abbreviation, event.label, event.reference, event.source); (this.formGroup.get('externalDatasets')).push(externalDatasetModel.buildForm()); } registriesOnItemChange(event) { - const registryModel = new ExternalRegistryEditorModel(event.abbreviation, event.definition, event.id, event.label, event.reference, event.uri); + const registryModel = new ExternalRegistryEditorModel(event.abbreviation, event.definition, event.id, event.name, event.pid ? event.pid : event.reference, event.uri, event.source); (this.formGroup.get('registries')).push(registryModel.buildForm()); } @@ -136,7 +136,7 @@ export class DatasetExternalReferencesEditorComponent extends BaseComponent impl dataRepositoriesOnItemChange(event) { - const dataRepositoryModel = new ExternalDataRepositoryEditorModel(event.id, event.name, event.abbreviation, event.uri, event.pid); + const dataRepositoryModel = new ExternalDataRepositoryEditorModel(event.id, event.name, event.abbreviation, event.uri, event.pid, event.source); (this.formGroup.get('dataRepositories')).push(dataRepositoryModel.buildForm()); }